"use client"; import { useEffect, useState } from "react"; import Link from "next/link"; import { AnimatePresence, motion } from "motion/react"; import { Button } from "@/components/ui"; import { useI18n } from "@/i18n/i18n-provider"; export const COOKIE_CONSENT_KEY = "wabenhain-cookie-consent"; type Consent = "all" | "essential"; export function CookieConsentBanner() { const { t } = useI18n(); const [visible, setVisible] = useState(false); useEffect(() => { // Liest bewusst erst nach dem Mount aus localStorage (Browser-API, im // SSR-Markup nicht verfuegbar), um einen Hydration-Mismatch zu vermeiden. const stored = window.localStorage.getItem(COOKIE_CONSENT_KEY); // eslint-disable-next-line react-hooks/set-state-in-effect -- externe Browser-Quelle (localStorage) einmalig nach dem Mount synchronisieren if (!stored) setVisible(true); }, []); function choose(consent: Consent) { window.localStorage.setItem(COOKIE_CONSENT_KEY, consent); setVisible(false); } return ( {visible ? (

{t.cookieConsent.bannerTextBeforeLink} {t.cookieConsent.policyLinkLabel} {t.cookieConsent.bannerTextAfterLink}

) : null}
); } /** Erlaubt es, die getroffene Cookie-Auswahl auf der Cookie-Richtlinie-Seite zu widerrufen. */ export function CookieSettingsButton() { const { t } = useI18n(); return ( ); }