import { create } from 'zustand'; export interface ActiveMoodComponent { id: string; // matches MoodComponentDefinition.id intensity: number; // 1–3 } interface MoodEntryState { // The mood selected in the main screen (e.g. 'good') selectedMood: string | null; // The active components the user has added + their intensities components: ActiveMoodComponent[]; // Actions setSelectedMood: (mood: string) => void; setComponents: (components: ActiveMoodComponent[]) => void; addComponent: (id: string) => void; removeComponent: (id: string) => void; setComponentIntensity: (id: string, intensity: number) => void; reset: () => void; } export const useMoodEntryStore = create((set) => ({ selectedMood: null, components: [], setSelectedMood: (mood) => set({ selectedMood: mood }), // Used by the modal to write back the full list at once setComponents: (components) => set({ components }), addComponent: (id) => set((state) => { if (state.components.find((c) => c.id === id)) return state; return { components: [...state.components, { id, intensity: 1 }] }; }), removeComponent: (id) => set((state) => ({ components: state.components.filter((c) => c.id !== id), })), setComponentIntensity: (id, intensity) => set((state) => ({ components: state.components.map((c) => c.id === id ? { ...c, intensity } : c ), })), reset: () => set({ selectedMood: null, components: [] }), }));