'use client'; import Link from 'next/link'; import { useEffect, useState } from 'react'; const STORAGE_KEY = 'bmm-cookie-ack-v1'; /** * BMM uses only strictly-necessary cookies (session + OAuth CSRF state). Under * Swiss DSG and GDPR strictly-necessary cookies do not require opt-in consent, * only clear disclosure — this banner satisfies the disclosure obligation * without dark-pattern cookie walls or false-choice "Reject all" UIs. */ export function CookieBanner() { const [show, setShow] = useState(false); useEffect(() => { try { const ack = window.localStorage.getItem(STORAGE_KEY); if (!ack) setShow(true); } catch { // localStorage blocked (private mode etc.) — show banner anyway, it's // dismissable via a single click and never persists if storage fails. setShow(true); } }, []); function acknowledge() { try { window.localStorage.setItem(STORAGE_KEY, new Date().toISOString()); } catch { /* ignore — re-shown on next visit */ } setShow(false); } if (!show) return null; return (

We use strictly-necessary cookies for login (session token) and CSRF protection. No tracking, no analytics, no third-party cookies on this domain. Details:{' '} privacy policy .

); }