File size: 1,510 Bytes
6bda4a6 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
import { create } from 'zustand';
/**
* Store Zustand pour gérer l'état global de la FontMap
* Remplace le props drilling pour les valeurs les plus problématiques
*/
export const useFontMapStore = create((set, get) => ({
// État de navigation
selectedFont: null,
hoveredFont: null,
// État de visualisation
characterSize: 1.5,
variantSizeImpact: false,
// Mode debug
debugMode: false,
// Actions pour la navigation
setSelectedFont: (font) => {
console.log('🎯 Store: Setting selectedFont to', font?.name || 'null');
set({ selectedFont: font });
},
setHoveredFont: (font) => {
console.log('🎯 Store: Setting hoveredFont to', font?.name || 'null');
set({ hoveredFont: font });
},
// Actions pour la visualisation
setCharacterSize: (size) => {
console.log('🎯 Store: Setting characterSize to', size);
set({ characterSize: size });
},
setVariantSizeImpact: (impact) => {
console.log('🎯 Store: Setting variantSizeImpact to', impact);
set({ variantSizeImpact: impact });
},
// Actions pour le debug
setDebugMode: (debug) => {
console.log('🎯 Store: Setting debugMode to', debug);
set({ debugMode: debug });
},
// Action utilitaire pour réinitialiser l'état
resetState: () => {
console.log('🎯 Store: Resetting state');
set({
selectedFont: null,
hoveredFont: null,
characterSize: 1.5,
variantSizeImpact: false,
debugMode: false
});
}
}));
|