import { create } from 'zustand'; interface ConsentState { isInitialized: boolean; isOpen: boolean; analytics: boolean; analyticsConsent: boolean; marketing: boolean; advertising: boolean; initialize: () => void; openBanner: () => void; closeBanner: () => void; setConsent: (analytics: boolean, marketing: boolean, advertising: boolean) => void; setAnalyticsConsent: (v: boolean) => void; acceptAll: () => void; rejectOptional: () => void; } const CONSENT_KEY = 'airproject_cookie_consent_v2'; const OLD_CONSENT_KEY = 'cookie-consent'; export const useConsentStore = create((set) => ({ isInitialized: false, isOpen: false, analytics: false, analyticsConsent: false, marketing: false, advertising: false, initialize: () => { if (typeof window !== 'undefined') { let stored = localStorage.getItem(CONSENT_KEY); if (!stored) { const oldStored = localStorage.getItem(OLD_CONSENT_KEY); if (oldStored) { try { const oldParsed = JSON.parse(oldStored); const newData = { essential: true, analytics: !!oldParsed.analytics, marketing: !!oldParsed.marketing, advertising: !!oldParsed.advertising, }; stored = JSON.stringify(newData); localStorage.setItem(CONSENT_KEY, stored); localStorage.removeItem(OLD_CONSENT_KEY); } catch { } } } if (stored) { try { const parsed = JSON.parse(stored); set({ isInitialized: true, isOpen: false, analytics: !!parsed.analytics, analyticsConsent: !!parsed.analytics, marketing: !!parsed.marketing, advertising: !!parsed.advertising, }); } catch { set({ isInitialized: true, isOpen: true }); } } else { set({ isInitialized: true, isOpen: true }); } } }, openBanner: () => set({ isOpen: true }), closeBanner: () => set({ isOpen: false }), setConsent: (analytics, marketing, advertising) => { localStorage.setItem(CONSENT_KEY, JSON.stringify({ essential: true, analytics, marketing, advertising })); set({ analytics, analyticsConsent: analytics, marketing, advertising, isOpen: false }); }, setAnalyticsConsent: (v: boolean) => set({ analyticsConsent: v }), acceptAll: () => { localStorage.setItem(CONSENT_KEY, JSON.stringify({ essential: true, analytics: true, marketing: true, advertising: true })); set({ analytics: true, analyticsConsent: true, marketing: true, advertising: true, isOpen: false }); }, rejectOptional: () => { localStorage.setItem(CONSENT_KEY, JSON.stringify({ essential: true, analytics: false, marketing: false, advertising: false })); set({ analytics: false, analyticsConsent: false, marketing: false, advertising: false, isOpen: false }); } }));