import { onUpdateConsentCookie, onAcceptAllConsentCookie, type ConsentCookies } from "./Cookies.telefunc"; import React, { useState, useContext, createContext } from "react"; import { usePageContext } from "vike-react/usePageContext"; import { reload } from "vike/client/router"; import { Button } from "@syntax/Button"; import { toast } from "react-toastify"; import { Toggle } from "./Toggle"; import { Link } from "./Link"; export const CookiesContext = createContext<{ cookies: { analytics: boolean; customization: boolean; }; setCookie: (cookieName: ConsentCookies, cookieValue: boolean) => void; acceptAll: () => void; isOpen: boolean; setIsOpen: (isOpen: boolean) => void; isSelectionOpen: boolean; setIsSelectionOpen: (isSelectionOpen: boolean) => void; }>({ cookies: { analytics: false, customization: false, }, setCookie: (_cookieName: ConsentCookies, _cookieValue: boolean) => {}, acceptAll: () => {}, isOpen: false, setIsOpen: () => {}, isSelectionOpen: false, setIsSelectionOpen: () => {}, }); type CookiesContainerProps = { children?: React.ReactNode; }; export function CookiesContainer(props: CookiesContainerProps) { const { cookies } = usePageContext(); const [consentCookies, setConsentCookies] = useState(cookies.consent); const [isSelectionOpen, setIsSelectionOpen] = useState(false); const [isOpen, setIsOpen] = useState(() => { return !Object.keys(cookies.consent).every((value) => value); }); const handleUpdateCookie = (cookieName: ConsentCookies, cookieValue: boolean) => { setConsentCookies((prev) => ({ ...prev, [cookieName]: cookieValue, })); toast .promise(onUpdateConsentCookie(cookieName, cookieValue), { pending: "Mise à jour des cookies...", success: "Cookies mis à jour !", error: "Erreur lors de la mise à jour des cookies", }) .then(() => { setIsOpen(false); reload(); }); }; const handleAcceptAll = () => { setConsentCookies({ analytics: true, customization: true }); toast .promise(onAcceptAllConsentCookie(), { pending: "Acceptation des cookies...", success: "Cookies acceptés !", error: "Erreur lors de l'acceptation des cookies", }) .then(() => { setIsOpen(false); setIsSelectionOpen(false); reload(); }); }; return ( {props.children} {isSelectionOpen && } {isOpen && } ); } function CookieChoices() { const cookiesContext = useContext(CookiesContext); return (

Personnalisation des cookies 🍪

cookiesContext.setCookie("analytics", checked)} /> cookiesContext.setCookie("customization", checked)} />
); } function CookieModal() { const cookiesContext = useContext(CookiesContext); return (

Coucou c'est nous...
les cookies ! 🍪

On ne t‘embête pas longtemps, on te laisse même le choix (si ça c‘est pas la classe 😎).

Si tu veux en savoir plus, tu peux consulter la page{" "} Politique de confidentialité .

); }