import React, { useState, useEffect } from 'react'; import { CookiePreferences, initializeAnalytics, initializeMarketing } from '@/lib/cookie-utils'; interface CookieConsentProps { onAccept?: () => void; onDecline?: () => void; onConfigure?: (preferences: CookiePreferences) => void; } const CookieConsent: React.FC = ({ onAccept, onDecline, onConfigure }) => { const [isVisible, setIsVisible] = useState(false); const [showDetails, setShowDetails] = useState(false); const [preferences, setPreferences] = useState({ necessary: true, // Всегда включены analytics: false, marketing: false, functional: false, }); useEffect(() => { // Проверяем, есть ли уже согласие в localStorage const cookieConsent = localStorage.getItem('cookieConsent'); if (!cookieConsent) { setIsVisible(true); } }, []); const handleAcceptAll = () => { const allAccepted = { necessary: true, analytics: true, marketing: true, functional: true, }; localStorage.setItem('cookieConsent', 'accepted'); localStorage.setItem('cookiePreferences', JSON.stringify(allAccepted)); // Инициализируем сервисы после согласия initializeAnalytics(); initializeMarketing(); setIsVisible(false); onAccept?.(); }; const handleDeclineAll = () => { const onlyNecessary = { necessary: true, analytics: false, marketing: false, functional: false, }; localStorage.setItem('cookieConsent', 'declined'); localStorage.setItem('cookiePreferences', JSON.stringify(onlyNecessary)); setIsVisible(false); onDecline?.(); }; const handleSavePreferences = () => { localStorage.setItem('cookieConsent', 'configured'); localStorage.setItem('cookiePreferences', JSON.stringify(preferences)); // Инициализируем сервисы согласно настройкам if (preferences.analytics) { initializeAnalytics(); } if (preferences.marketing) { initializeMarketing(); } setIsVisible(false); onConfigure?.(preferences); }; const togglePreference = (key: keyof CookiePreferences) => { if (key === 'necessary') return; // Необходимые cookies нельзя отключить setPreferences(prev => ({ ...prev, [key]: !prev[key] })); }; if (!isVisible) return null; return (
{!showDetails ? ( // Основной вид
{/* Текст согласия */}
{/* Иконка cookie */}

Мы используем файлы cookie

Наш сайт использует файлы cookie для улучшения работы сайта, персонализации контента и анализа трафика. Продолжая использовать сайт, вы соглашаетесь с нашей{' '} политикой конфиденциальности {' '}и использованием файлов cookie.

{/* Кнопки */}
) : ( // Детальный вид с настройками
{/* Заголовок */}

Настройки файлов cookie

{/* Настройки cookies */}
{/* Необходимые cookies */}

Необходимые cookies

Обязательные

Эти файлы cookie необходимы для работы сайта и не могут быть отключены.

{/* Аналитические cookies */}

Аналитические cookies

Помогают нам понять, как посетители взаимодействуют с сайтом.

{/* Маркетинговые cookies */}

Маркетинговые cookies

Используются для отслеживания посетителей и показа релевантной рекламы.

{/* Функциональные cookies */}

Функциональные cookies

Обеспечивают расширенную функциональность и персонализацию.

{/* Кнопки действий */}
)}
); }; export default CookieConsent;