diff --git a/frontend/src/app/dashboard/DashboardSidebar.tsx b/frontend/src/app/dashboard/DashboardSidebar.tsx index e9a6f7e..a380985 100644 --- a/frontend/src/app/dashboard/DashboardSidebar.tsx +++ b/frontend/src/app/dashboard/DashboardSidebar.tsx @@ -73,15 +73,22 @@ export function DashboardSidebar() {
{user.name} {user.email} - + + {translateTier(t, user.tier)} + + {(!user.tier || user.tier === 'free') && ( + + {t('dashboard.sidebar.upgradeToPro', { defaultValue: 'Passer Pro →' })} + )} - > - {translateTier(t, user.tier)} - +
diff --git a/frontend/src/app/layout.tsx b/frontend/src/app/layout.tsx index 178ac4e..e48f9b7 100644 --- a/frontend/src/app/layout.tsx +++ b/frontend/src/app/layout.tsx @@ -7,6 +7,7 @@ import { NotificationProvider } from "@/components/ui/notification"; import { I18nProvider } from "@/lib/i18n"; import { Agentation } from "agentation"; import { GoogleOAuthProvider } from "@react-oauth/google"; +import { CookieConsent } from "@/components/ui/cookie-consent"; export const dynamic = 'force-dynamic'; @@ -33,6 +34,7 @@ export default function RootLayout({ {children} + diff --git a/frontend/src/components/ui/cookie-consent.tsx b/frontend/src/components/ui/cookie-consent.tsx new file mode 100644 index 0000000..9d184c4 --- /dev/null +++ b/frontend/src/components/ui/cookie-consent.tsx @@ -0,0 +1,65 @@ +"use client"; + +import { useState, useEffect } from "react"; +import { useTranslations } from "next-intl"; +import { motion, AnimatePresence } from "framer-motion"; +import { Button } from "@/components/ui/button"; + +const STORAGE_KEY = "cookie-consent"; + +export function CookieConsent() { + const t = useTranslations("cookieConsent"); + const [visible, setVisible] = useState(false); + + useEffect(() => { + setVisible(!localStorage.getItem(STORAGE_KEY)); + }, []); + + function acceptAll() { + localStorage.setItem(STORAGE_KEY, "all"); + setVisible(false); + } + + function essentialOnly() { + localStorage.setItem(STORAGE_KEY, "essential"); + setVisible(false); + } + + return ( + + {visible && ( + +
+
+ +
+

+ {t("title")} +

+

+ {t("description")} +

+
+ + +
+
+
+
+
+ )} +
+ ); +}