import { create, StateCreator } from 'zustand'; import { persist } from 'zustand/middleware'; export interface BuildPart { id: string; name: string; image_url: string; brand: { id: string; name: string; logo?: string; }; category: { id: string; name: string; }; offers: Array<{ price: number; url: string; vendor: { name: string; logo?: string; }; inStock?: boolean; shipping?: string; }>; } export interface BuildState { selectedParts: Record; // key: checklist component id selectPartForComponent: (componentId: string, part: BuildPart) => void; removePartForComponent: (componentId: string) => void; clearBuild: () => void; } const buildStoreCreator: StateCreator = (set) => ({ selectedParts: {}, selectPartForComponent: (componentId, part) => set((state) => ({ selectedParts: { ...state.selectedParts, [componentId]: part }, })), removePartForComponent: (componentId) => set((state) => { const updated = { ...state.selectedParts }; delete updated[componentId]; return { selectedParts: updated }; }), clearBuild: () => set({ selectedParts: {} }), }); export const useBuildStore = create()( persist(buildStoreCreator, { name: 'current-build-storage', }) );