import React, { useState, useEffect } from 'react'; import { Card, CardContent, Typography, Button, Box, IconButton, Radio, RadioGroup, FormControlLabel, FormControl, FormLabel, Slide, Divider } from '@mui/material'; import CloseIcon from '@mui/icons-material/Close'; import CookieIcon from '@mui/icons-material/Cookie'; import consentService, { CONSENT_LEVELS } from '../services/consentService'; /** * Cookie consent popup component * Shows a popup for cookie consent on first visit and manages Clarity tracking */ const CookieConsentPopup = () => { const [open, setOpen] = useState(false); const [consentLevel, setConsentLevel] = useState(CONSENT_LEVELS.NECESSARY); useEffect(() => { // Check if user has already set cookie preferences const storedConsent = consentService.getStoredConsent(); if (!storedConsent) { // First visit, show the popup setOpen(true); } else { // Apply stored consent settings setConsentLevel(storedConsent.level); consentService.applyConsentSettings(storedConsent.level); } }, []); // Handle consent level change const handleConsentLevelChange = (event) => { setConsentLevel(event.target.value); }; // Save user preferences and close popup const handleSave = () => { consentService.saveConsent(consentLevel); setOpen(false); }; // Accept all cookies const handleAcceptAll = () => { const allConsent = CONSENT_LEVELS.ALL; setConsentLevel(allConsent); consentService.saveConsent(allConsent); setOpen(false); }; // Accept only necessary cookies const handleNecessaryOnly = () => { const necessaryOnly = CONSENT_LEVELS.NECESSARY; setConsentLevel(necessaryOnly); consentService.saveConsent(necessaryOnly); setOpen(false); }; // Reopen the consent popup (for testing or if user wants to change settings) // This function can be exposed via a preferences button somewhere const reopenConsentPopup = () => { setOpen(true); }; if (!open) return null; return ( Cookie Settings setOpen(false)}> We use cookies to enhance your browsing experience, provide personalized content, and analyze our traffic. Please choose your privacy settings below. Privacy Settings } label={ Necessary Cookies Only - Essential for website functionality } /> } label={ Functional Cookies - For enhanced functionality and preferences } /> } label={ Analytics Cookies - To understand how you use our website } /> } label={ All Cookies - Accept all cookies for the best experience } /> ); }; // Expose reopen function for others to use export const reopenCookieConsent = () => { const consentElement = document.getElementById('cookie-consent-reopen'); if (consentElement) { consentElement.click(); } }; export default CookieConsentPopup;