import React, { useEffect, useMemo, useState } from 'react'; import { useTranslation } from 'react-i18next'; import { Button } from '@/components/ui/button'; import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, } from '@/components/ui/dialog'; import { Switch } from '@/components/ui/switch'; import { Separator } from '@/components/ui/separator'; import { useConsent, ConsentPreferences } from '@/contexts/consent'; const CookieBanner: React.FC = () => { const { t } = useTranslation('common'); const { showBanner, acceptAll, rejectAll, preferences, savePreferences, isPreferencesOpen, openPreferences, closePreferences, } = useConsent(); const [draftPreferences, setDraftPreferences] = useState(preferences); useEffect(() => { if (isPreferencesOpen) { setDraftPreferences(preferences); } }, [isPreferencesOpen, preferences]); const analyticsDescription = useMemo( () => t('consent.modal.analytics_desc'), [t], ); const handleSave = () => { savePreferences({ analytics: draftPreferences.analytics }); }; const handleOpenChange = (open: boolean) => { if (open) { openPreferences(); return; } closePreferences(); }; return ( <> {showBanner && !isPreferencesOpen && (

{t('consent.banner.title')}

{t('consent.banner.body')}

)} {t('consent.modal.title')} {t('consent.modal.description')}

{t('consent.modal.functional')}

{t('consent.modal.functional_desc')}

{t('consent.modal.required')}

{t('consent.modal.analytics')}

{analyticsDescription}

setDraftPreferences((prev) => ({ ...prev, analytics: checked, functional: true, })) } aria-label={t('consent.modal.analytics')} />
); }; export default CookieBanner;