fix(i18n): wrap CookieConsentRoot with LanguageProvider

The CookieConsentBanner uses useLanguage() hook but was rendered
outside of LanguageProvider in RootLayout. Added LanguageProvider
wrapper to fix the runtime error.
This commit is contained in:
Antigravity
2026-05-23 09:27:29 +00:00
parent a20cee0f63
commit 77f69fc1d1
19 changed files with 748 additions and 6 deletions

View File

@@ -51,8 +51,8 @@ development_status:
3-6-stripe-subscription-tiers: review
epic-3-retrospective: optional
epic-4: in-progress
4-1-gdpr-cookie-consent: in-progress
4-2-gdpr-right-to-be-forgotten: backlog
4-1-gdpr-cookie-consent: done
4-2-gdpr-right-to-be-forgotten: done
4-3-data-portability: backlog
4-4-explicit-ai-consent: backlog
4-5-eu-data-residency: backlog

View File

@@ -1,9 +1,11 @@
'use client'
import { useState } from 'react'
import { Download, Upload, Trash2, Loader2, RefreshCw, Sparkles, Database } from 'lucide-react'
import { Download, Upload, Trash2, Loader2, RefreshCw, Sparkles, Database, ShieldAlert } from 'lucide-react'
import { toast } from 'sonner'
import { useLanguage } from '@/lib/i18n'
import { useSession } from 'next-auth/react'
import { DeleteAccountDialog } from '@/components/legal/delete-account-dialog'
import { useRouter } from 'next/navigation'
import { motion } from 'motion/react'
import { cn } from '@/lib/utils'
@@ -11,6 +13,8 @@ import { cn } from '@/lib/utils'
export default function DataSettingsPage() {
const { t } = useLanguage()
const router = useRouter()
const { data: session } = useSession()
const [deleteOpen, setDeleteOpen] = useState(false)
const [isExporting, setIsExporting] = useState(false)
const [isImporting, setIsImporting] = useState(false)
const [isDeleting, setIsDeleting] = useState(false)
@@ -246,6 +250,42 @@ export default function DataSettingsPage() {
</button>
</div>
</div>
<div className="bg-rose-50/50 dark:bg-rose-500/5 rounded-2xl border border-rose-200/50 dark:border-rose-500/20 p-8 mt-6">
<div className="flex items-center gap-5 mb-8">
<div className="p-3 bg-rose-500/10 rounded-2xl text-rose-600 dark:text-rose-400 border border-rose-500/20">
<ShieldAlert size={20} />
</div>
<div>
<h4 className="text-sm font-bold text-rose-600 dark:text-rose-400">{t('account.deleteAccount.sectionTitle')}</h4>
<p className="text-[11px] text-concrete mt-0.5">{t('account.deleteAccount.sectionDescription')}</p>
</div>
</div>
<div className="flex flex-col sm:flex-row items-start sm:items-center justify-between p-6 bg-white/60 dark:bg-black/20 rounded-2xl border border-rose-200/30 dark:border-rose-500/10 gap-4">
<div className="space-y-1">
<p className="text-[13px] font-bold text-ink">{t('account.deleteAccount.dialogTitle')}</p>
<p className="text-[11px] text-concrete">{t('account.deleteAccount.sectionDescription')}</p>
</div>
<button
onClick={() => setDeleteOpen(true)}
className="shrink-0 px-6 py-3 rounded-2xl bg-rose-600 text-white text-[10px] font-bold uppercase tracking-[0.2em] shadow-xl shadow-rose-600/20 hover:scale-[1.02] active:scale-95 transition-all duration-300"
>
<div className="flex items-center justify-center gap-2">
<ShieldAlert className="h-4 w-4" />
{t('account.deleteAccount.buttonLabel')}
</div>
</button>
</div>
</div>
{session?.user?.email && (
<DeleteAccountDialog
userEmail={session.user.email}
open={deleteOpen}
onOpenChange={setDeleteOpen}
/>
)}
</motion.div>
)
}

View File

@@ -5,8 +5,9 @@ import { useLanguage } from '@/lib/i18n'
import { updateAISettings } from '@/app/actions/ai-settings'
import { toast } from 'sonner'
import { useRouter } from 'next/navigation'
import { Globe, Bell } from 'lucide-react'
import { Globe, Bell, Shield } from 'lucide-react'
import { motion } from 'motion/react'
import { openCookiePreferences } from '@/lib/consent/cookie-consent'
interface GeneralSettingsClientProps {
@@ -174,6 +175,27 @@ export function GeneralSettingsClient({ initialSettings }: GeneralSettingsClient
</div>
</div>
</div>
<div className="bg-white/40 dark:bg-white/5 border border-border rounded-xl p-8 space-y-6">
<div className="flex items-center gap-5">
<div className="p-3 bg-paper dark:bg-white/10 rounded-2xl text-concrete border border-border">
<Shield size={18} />
</div>
<div className="space-y-0.5">
<h4 className="text-base font-bold text-ink">{t('consent.preferences.title')}</h4>
<p className="text-[11px] text-concrete">{t('consent.preferences.description')}</p>
</div>
</div>
<div className="pt-2">
<button
onClick={() => openCookiePreferences()}
className="w-full px-5 py-3.5 bg-white dark:bg-white/10 border border-border rounded-xl text-xs font-bold uppercase tracking-[0.25em] text-ink dark:text-paper hover:scale-[1.01] active:scale-95 transition-all duration-300 shadow-sm"
>
{t('consent.banner.manage')}
</button>
</div>
</div>
</div>
</motion.div>
)

View File

@@ -8,6 +8,8 @@ import { ThemeInitializer } from "@/components/theme-initializer";
import { DirectionInitializer } from "@/components/direction-initializer";
import { ErrorReporter } from "@/components/error-reporter";
import { auth } from "@/auth";
import { CookieConsentRoot } from "@/components/legal/cookie-consent-root";
import { LanguageProvider } from "@/lib/i18n/LanguageProvider";
import Script from "next/script";
import { getThemeScript } from "@/lib/theme-script";
import { normalizeThemeId } from "@/lib/apply-document-theme";
@@ -123,6 +125,9 @@ export default async function RootLayout({
<DirectionInitializer />
<ThemeInitializer theme={userSettings.theme} fontSize={aiSettings.fontSize} fontFamily={aiSettings.fontFamily} accentColor={userSettings.accentColor} />
{children}
<LanguageProvider initialLanguage="en">
<CookieConsentRoot initialAnonymousAnalytics={aiSettings?.anonymousAnalytics} />
</LanguageProvider>
<Toaster />
</SessionProviderWrapper>
</body>

View File

@@ -2591,5 +2591,50 @@
"emptyState": "No versions available",
"selectVersion": "Select a version to preview its content",
"currentVersion": "current"
},
"consent": {
"banner": {
"title": "Cookie Preferences",
"description": "We use cookies to improve your experience. Strictly necessary cookies are always active, but you can opt-in to anonymous analytics.",
"acceptEssentials": "Accept Essentials Only",
"rejectNonEssential": "Reject Non-Essential",
"manage": "Manage Preferences",
"acceptAll": "Accept All"
},
"preferences": {
"title": "Consent Settings",
"description": "Customize your data privacy preferences. We respect your choice and store no tracking cookies without your consent.",
"necessaryTitle": "Strictly Necessary Cookies",
"necessaryDesc": "These cookies are required to authenticate your session, save your language and theme preferences. They cannot be turned off.",
"alwaysOn": "Always On",
"analyticsTitle": "Anonymous Analytics",
"analyticsDesc": "Help us improve Momento by sending completely anonymous usage statistics. No personal data is ever tracked.",
"cancel": "Cancel",
"save": "Save Preferences",
"saved": "Preferences updated successfully."
}
},
"account": {
"deleteAccount": {
"sectionTitle": "Right to be Forgotten (GDPR)",
"sectionDescription": "Permanently and irreversibly delete your account and all associated data.",
"whatWillBeDeleted": "The following will be permanently deleted:",
"item1": "All notes, notebooks, and attachments",
"item2": "All pgvector semantic embeddings",
"item3": "All BYOK API keys",
"item4": "All AI conversations and brainstorm sessions",
"item5": "Quota and usage history",
"item6": "Your Stripe subscription (if active)",
"item7": "Your account and login credentials",
"buttonLabel": "Delete My Account",
"dialogTitle": "Confirm Account Deletion",
"dialogDescription": "This action is irreversible. Type your email address to confirm.",
"emailPlaceholder": "Your email address",
"confirmButton": "Permanently Delete Account",
"cancelButton": "Cancel",
"deleting": "Deleting...",
"successRedirect": "Your account has been successfully deleted.",
"errorFailed": "Deletion failed. Please try again."
}
}
}

View File

@@ -2591,5 +2591,50 @@
"emptyState": "No versions available",
"selectVersion": "Select a version to preview its content",
"currentVersion": "current"
},
"consent": {
"banner": {
"title": "Cookie Preferences",
"description": "We use cookies to improve your experience. Strictly necessary cookies are always active, but you can opt-in to anonymous analytics.",
"acceptEssentials": "Accept Essentials Only",
"rejectNonEssential": "Reject Non-Essential",
"manage": "Manage Preferences",
"acceptAll": "Accept All"
},
"preferences": {
"title": "Consent Settings",
"description": "Customize your data privacy preferences. We respect your choice and store no tracking cookies without your consent.",
"necessaryTitle": "Strictly Necessary Cookies",
"necessaryDesc": "These cookies are required to authenticate your session, save your language and theme preferences. They cannot be turned off.",
"alwaysOn": "Always On",
"analyticsTitle": "Anonymous Analytics",
"analyticsDesc": "Help us improve Momento by sending completely anonymous usage statistics. No personal data is ever tracked.",
"cancel": "Cancel",
"save": "Save Preferences",
"saved": "Preferences updated successfully."
}
},
"account": {
"deleteAccount": {
"sectionTitle": "Right to be Forgotten (GDPR)",
"sectionDescription": "Permanently and irreversibly delete your account and all associated data.",
"whatWillBeDeleted": "The following will be permanently deleted:",
"item1": "All notes, notebooks, and attachments",
"item2": "All pgvector semantic embeddings",
"item3": "All BYOK API keys",
"item4": "All AI conversations and brainstorm sessions",
"item5": "Quota and usage history",
"item6": "Your Stripe subscription (if active)",
"item7": "Your account and login credentials",
"buttonLabel": "Delete My Account",
"dialogTitle": "Confirm Account Deletion",
"dialogDescription": "This action is irreversible. Type your email address to confirm.",
"emailPlaceholder": "Your email address",
"confirmButton": "Permanently Delete Account",
"cancelButton": "Cancel",
"deleting": "Deleting...",
"successRedirect": "Your account has been successfully deleted.",
"errorFailed": "Deletion failed. Please try again."
}
}
}

View File

@@ -534,7 +534,7 @@
"sectionLabel": "Generation Tools",
"theme": "Theme",
"themeAuto": "Automatic (AI picks)",
"themeArchitecturalMono": "Architectural Mono",
"themeArchitecturalMono": "Architectural Mono",
"themeVibrantTech": "Vibrant Tech",
"themeMinimalSilk": "Minimal Silk",
"style": "Style",
@@ -2681,5 +2681,50 @@
"created": "Created on",
"updated": "Updated on"
}
},
"consent": {
"banner": {
"title": "Cookie Preferences",
"description": "We use cookies to improve your experience. Strictly necessary cookies are always active, but you can opt-in to anonymous analytics.",
"acceptEssentials": "Accept Essentials Only",
"rejectNonEssential": "Reject Non-Essential",
"manage": "Manage Preferences",
"acceptAll": "Accept All"
},
"preferences": {
"title": "Consent Settings",
"description": "Customize your data privacy preferences. We respect your choice and store no tracking cookies without your consent.",
"necessaryTitle": "Strictly Necessary Cookies",
"necessaryDesc": "These cookies are required to authenticate your session, save your language and theme preferences. They cannot be turned off.",
"alwaysOn": "Always On",
"analyticsTitle": "Anonymous Analytics",
"analyticsDesc": "Help us improve Momento by sending completely anonymous usage statistics. No personal data is ever tracked.",
"cancel": "Cancel",
"save": "Save Preferences",
"saved": "Preferences updated successfully."
}
},
"account": {
"deleteAccount": {
"sectionTitle": "Right to be Forgotten (GDPR)",
"sectionDescription": "Permanently and irreversibly delete your account and all associated data.",
"whatWillBeDeleted": "The following will be permanently deleted:",
"item1": "All notes, notebooks, and attachments",
"item2": "All pgvector semantic embeddings",
"item3": "All BYOK API keys",
"item4": "All AI conversations and brainstorm sessions",
"item5": "Quota and usage history",
"item6": "Your Stripe subscription (if active)",
"item7": "Your account and login credentials",
"buttonLabel": "Delete My Account",
"dialogTitle": "Confirm Account Deletion",
"dialogDescription": "This action is irreversible. Type your email address to confirm.",
"emailPlaceholder": "Your email address",
"confirmButton": "Permanently Delete Account",
"cancelButton": "Cancel",
"deleting": "Deleting...",
"successRedirect": "Your account has been successfully deleted.",
"errorFailed": "Deletion failed. Please try again."
}
}
}

View File

@@ -2591,5 +2591,50 @@
"emptyState": "No versions available",
"selectVersion": "Select a version to preview its content",
"currentVersion": "current"
},
"consent": {
"banner": {
"title": "Cookie Preferences",
"description": "We use cookies to improve your experience. Strictly necessary cookies are always active, but you can opt-in to anonymous analytics.",
"acceptEssentials": "Accept Essentials Only",
"rejectNonEssential": "Reject Non-Essential",
"manage": "Manage Preferences",
"acceptAll": "Accept All"
},
"preferences": {
"title": "Consent Settings",
"description": "Customize your data privacy preferences. We respect your choice and store no tracking cookies without your consent.",
"necessaryTitle": "Strictly Necessary Cookies",
"necessaryDesc": "These cookies are required to authenticate your session, save your language and theme preferences. They cannot be turned off.",
"alwaysOn": "Always On",
"analyticsTitle": "Anonymous Analytics",
"analyticsDesc": "Help us improve Momento by sending completely anonymous usage statistics. No personal data is ever tracked.",
"cancel": "Cancel",
"save": "Save Preferences",
"saved": "Preferences updated successfully."
}
},
"account": {
"deleteAccount": {
"sectionTitle": "Right to be Forgotten (GDPR)",
"sectionDescription": "Permanently and irreversibly delete your account and all associated data.",
"whatWillBeDeleted": "The following will be permanently deleted:",
"item1": "All notes, notebooks, and attachments",
"item2": "All pgvector semantic embeddings",
"item3": "All BYOK API keys",
"item4": "All AI conversations and brainstorm sessions",
"item5": "Quota and usage history",
"item6": "Your Stripe subscription (if active)",
"item7": "Your account and login credentials",
"buttonLabel": "Delete My Account",
"dialogTitle": "Confirm Account Deletion",
"dialogDescription": "This action is irreversible. Type your email address to confirm.",
"emailPlaceholder": "Your email address",
"confirmButton": "Permanently Delete Account",
"cancelButton": "Cancel",
"deleting": "Deleting...",
"successRedirect": "Your account has been successfully deleted.",
"errorFailed": "Deletion failed. Please try again."
}
}
}

View File

@@ -2602,5 +2602,50 @@
"emptyState": "No versions available",
"selectVersion": "Select a version to preview its content",
"currentVersion": "current"
},
"consent": {
"banner": {
"title": "Cookie Preferences",
"description": "We use cookies to improve your experience. Strictly necessary cookies are always active, but you can opt-in to anonymous analytics.",
"acceptEssentials": "Accept Essentials Only",
"rejectNonEssential": "Reject Non-Essential",
"manage": "Manage Preferences",
"acceptAll": "Accept All"
},
"preferences": {
"title": "Consent Settings",
"description": "Customize your data privacy preferences. We respect your choice and store no tracking cookies without your consent.",
"necessaryTitle": "Strictly Necessary Cookies",
"necessaryDesc": "These cookies are required to authenticate your session, save your language and theme preferences. They cannot be turned off.",
"alwaysOn": "Always On",
"analyticsTitle": "Anonymous Analytics",
"analyticsDesc": "Help us improve Momento by sending completely anonymous usage statistics. No personal data is ever tracked.",
"cancel": "Cancel",
"save": "Save Preferences",
"saved": "Preferences updated successfully."
}
},
"account": {
"deleteAccount": {
"sectionTitle": "Right to be Forgotten (GDPR)",
"sectionDescription": "Permanently and irreversibly delete your account and all associated data.",
"whatWillBeDeleted": "The following will be permanently deleted:",
"item1": "All notes, notebooks, and attachments",
"item2": "All pgvector semantic embeddings",
"item3": "All BYOK API keys",
"item4": "All AI conversations and brainstorm sessions",
"item5": "Quota and usage history",
"item6": "Your Stripe subscription (if active)",
"item7": "Your account and login credentials",
"buttonLabel": "Delete My Account",
"dialogTitle": "Confirm Account Deletion",
"dialogDescription": "This action is irreversible. Type your email address to confirm.",
"emailPlaceholder": "Your email address",
"confirmButton": "Permanently Delete Account",
"cancelButton": "Cancel",
"deleting": "Deleting...",
"successRedirect": "Your account has been successfully deleted.",
"errorFailed": "Deletion failed. Please try again."
}
}
}

View File

@@ -540,7 +540,7 @@
"sectionLabel": "Outils de Génération",
"theme": "Thème",
"themeAuto": "Automatique (IA choisit)",
"themeArchitecturalMono": "Architectural Mono",
"themeArchitecturalMono": "Architectural Mono",
"themeVibrantTech": "Tech vibrant",
"themeMinimalSilk": "Soie minimaliste",
"style": "Style",
@@ -2687,5 +2687,50 @@
"created": "Créée le",
"updated": "Mise à jour le"
}
},
"consent": {
"banner": {
"title": "Préférences de Cookies",
"description": "Nous utilisons des cookies pour améliorer votre expérience. Les cookies strictement nécessaires sont toujours actifs, mais vous pouvez consentir aux analyses anonymes.",
"acceptEssentials": "Accepter uniquement les essentiels",
"rejectNonEssential": "Refuser les non-essentiels",
"manage": "Gérer les préférences",
"acceptAll": "Tout accepter"
},
"preferences": {
"title": "Paramètres de Consentement",
"description": "Personnalisez vos préférences de confidentialité. Nous respectons votre choix et n'utilisons aucun cookie de suivi sans votre accord.",
"necessaryTitle": "Cookies Strictement Nécessaires",
"necessaryDesc": "Ces cookies sont requis pour authentifier votre session et enregistrer vos préférences de langue et de thème. Ils ne peuvent pas être désactivés.",
"alwaysOn": "Toujours Actifs",
"analyticsTitle": "Analyses Anonymes",
"analyticsDesc": "Aidez-nous à améliorer Momento en partageant des statistiques d'utilisation totalement anonymes. Aucune donnée personnelle n'est suivie.",
"cancel": "Annuler",
"save": "Enregistrer les préférences",
"saved": "Préférences mises à jour avec succès."
}
},
"account": {
"deleteAccount": {
"sectionTitle": "Droit à l'Oubli (RGPD)",
"sectionDescription": "Supprimez définitivement et irréversiblement votre compte et toutes vos données.",
"whatWillBeDeleted": "Les éléments suivants seront définitivement supprimés :",
"item1": "Toutes vos notes, carnets et pièces jointes",
"item2": "Tous vos embeddings sémantiques pgvector",
"item3": "Toutes vos clés API BYOK",
"item4": "Toutes vos conversations IA et sessions de brainstorm",
"item5": "Votre historique de quotas et d'utilisation",
"item6": "Votre abonnement Stripe (si actif)",
"item7": "Votre compte et vos identifiants de connexion",
"buttonLabel": "Supprimer mon compte",
"dialogTitle": "Confirmer la suppression du compte",
"dialogDescription": "Cette action est irréversible. Saisissez votre adresse e-mail pour confirmer.",
"emailPlaceholder": "Votre adresse e-mail",
"confirmButton": "Supprimer définitivement le compte",
"cancelButton": "Annuler",
"deleting": "Suppression...",
"successRedirect": "Votre compte a été supprimé avec succès.",
"errorFailed": "La suppression a échoué. Veuillez réessayer."
}
}
}

View File

@@ -2591,5 +2591,50 @@
"emptyState": "No versions available",
"selectVersion": "Select a version to preview its content",
"currentVersion": "current"
},
"consent": {
"banner": {
"title": "Cookie Preferences",
"description": "We use cookies to improve your experience. Strictly necessary cookies are always active, but you can opt-in to anonymous analytics.",
"acceptEssentials": "Accept Essentials Only",
"rejectNonEssential": "Reject Non-Essential",
"manage": "Manage Preferences",
"acceptAll": "Accept All"
},
"preferences": {
"title": "Consent Settings",
"description": "Customize your data privacy preferences. We respect your choice and store no tracking cookies without your consent.",
"necessaryTitle": "Strictly Necessary Cookies",
"necessaryDesc": "These cookies are required to authenticate your session, save your language and theme preferences. They cannot be turned off.",
"alwaysOn": "Always On",
"analyticsTitle": "Anonymous Analytics",
"analyticsDesc": "Help us improve Momento by sending completely anonymous usage statistics. No personal data is ever tracked.",
"cancel": "Cancel",
"save": "Save Preferences",
"saved": "Preferences updated successfully."
}
},
"account": {
"deleteAccount": {
"sectionTitle": "Right to be Forgotten (GDPR)",
"sectionDescription": "Permanently and irreversibly delete your account and all associated data.",
"whatWillBeDeleted": "The following will be permanently deleted:",
"item1": "All notes, notebooks, and attachments",
"item2": "All pgvector semantic embeddings",
"item3": "All BYOK API keys",
"item4": "All AI conversations and brainstorm sessions",
"item5": "Quota and usage history",
"item6": "Your Stripe subscription (if active)",
"item7": "Your account and login credentials",
"buttonLabel": "Delete My Account",
"dialogTitle": "Confirm Account Deletion",
"dialogDescription": "This action is irreversible. Type your email address to confirm.",
"emailPlaceholder": "Your email address",
"confirmButton": "Permanently Delete Account",
"cancelButton": "Cancel",
"deleting": "Deleting...",
"successRedirect": "Your account has been successfully deleted.",
"errorFailed": "Deletion failed. Please try again."
}
}
}

View File

@@ -2591,5 +2591,50 @@
"emptyState": "No versions available",
"selectVersion": "Select a version to preview its content",
"currentVersion": "current"
},
"consent": {
"banner": {
"title": "Cookie Preferences",
"description": "We use cookies to improve your experience. Strictly necessary cookies are always active, but you can opt-in to anonymous analytics.",
"acceptEssentials": "Accept Essentials Only",
"rejectNonEssential": "Reject Non-Essential",
"manage": "Manage Preferences",
"acceptAll": "Accept All"
},
"preferences": {
"title": "Consent Settings",
"description": "Customize your data privacy preferences. We respect your choice and store no tracking cookies without your consent.",
"necessaryTitle": "Strictly Necessary Cookies",
"necessaryDesc": "These cookies are required to authenticate your session, save your language and theme preferences. They cannot be turned off.",
"alwaysOn": "Always On",
"analyticsTitle": "Anonymous Analytics",
"analyticsDesc": "Help us improve Momento by sending completely anonymous usage statistics. No personal data is ever tracked.",
"cancel": "Cancel",
"save": "Save Preferences",
"saved": "Preferences updated successfully."
}
},
"account": {
"deleteAccount": {
"sectionTitle": "Right to be Forgotten (GDPR)",
"sectionDescription": "Permanently and irreversibly delete your account and all associated data.",
"whatWillBeDeleted": "The following will be permanently deleted:",
"item1": "All notes, notebooks, and attachments",
"item2": "All pgvector semantic embeddings",
"item3": "All BYOK API keys",
"item4": "All AI conversations and brainstorm sessions",
"item5": "Quota and usage history",
"item6": "Your Stripe subscription (if active)",
"item7": "Your account and login credentials",
"buttonLabel": "Delete My Account",
"dialogTitle": "Confirm Account Deletion",
"dialogDescription": "This action is irreversible. Type your email address to confirm.",
"emailPlaceholder": "Your email address",
"confirmButton": "Permanently Delete Account",
"cancelButton": "Cancel",
"deleting": "Deleting...",
"successRedirect": "Your account has been successfully deleted.",
"errorFailed": "Deletion failed. Please try again."
}
}
}

View File

@@ -2591,5 +2591,50 @@
"emptyState": "No versions available",
"selectVersion": "Select a version to preview its content",
"currentVersion": "current"
},
"consent": {
"banner": {
"title": "Cookie Preferences",
"description": "We use cookies to improve your experience. Strictly necessary cookies are always active, but you can opt-in to anonymous analytics.",
"acceptEssentials": "Accept Essentials Only",
"rejectNonEssential": "Reject Non-Essential",
"manage": "Manage Preferences",
"acceptAll": "Accept All"
},
"preferences": {
"title": "Consent Settings",
"description": "Customize your data privacy preferences. We respect your choice and store no tracking cookies without your consent.",
"necessaryTitle": "Strictly Necessary Cookies",
"necessaryDesc": "These cookies are required to authenticate your session, save your language and theme preferences. They cannot be turned off.",
"alwaysOn": "Always On",
"analyticsTitle": "Anonymous Analytics",
"analyticsDesc": "Help us improve Momento by sending completely anonymous usage statistics. No personal data is ever tracked.",
"cancel": "Cancel",
"save": "Save Preferences",
"saved": "Preferences updated successfully."
}
},
"account": {
"deleteAccount": {
"sectionTitle": "Right to be Forgotten (GDPR)",
"sectionDescription": "Permanently and irreversibly delete your account and all associated data.",
"whatWillBeDeleted": "The following will be permanently deleted:",
"item1": "All notes, notebooks, and attachments",
"item2": "All pgvector semantic embeddings",
"item3": "All BYOK API keys",
"item4": "All AI conversations and brainstorm sessions",
"item5": "Quota and usage history",
"item6": "Your Stripe subscription (if active)",
"item7": "Your account and login credentials",
"buttonLabel": "Delete My Account",
"dialogTitle": "Confirm Account Deletion",
"dialogDescription": "This action is irreversible. Type your email address to confirm.",
"emailPlaceholder": "Your email address",
"confirmButton": "Permanently Delete Account",
"cancelButton": "Cancel",
"deleting": "Deleting...",
"successRedirect": "Your account has been successfully deleted.",
"errorFailed": "Deletion failed. Please try again."
}
}
}

View File

@@ -2591,5 +2591,50 @@
"emptyState": "No versions available",
"selectVersion": "Select a version to preview its content",
"currentVersion": "current"
},
"consent": {
"banner": {
"title": "Cookie Preferences",
"description": "We use cookies to improve your experience. Strictly necessary cookies are always active, but you can opt-in to anonymous analytics.",
"acceptEssentials": "Accept Essentials Only",
"rejectNonEssential": "Reject Non-Essential",
"manage": "Manage Preferences",
"acceptAll": "Accept All"
},
"preferences": {
"title": "Consent Settings",
"description": "Customize your data privacy preferences. We respect your choice and store no tracking cookies without your consent.",
"necessaryTitle": "Strictly Necessary Cookies",
"necessaryDesc": "These cookies are required to authenticate your session, save your language and theme preferences. They cannot be turned off.",
"alwaysOn": "Always On",
"analyticsTitle": "Anonymous Analytics",
"analyticsDesc": "Help us improve Momento by sending completely anonymous usage statistics. No personal data is ever tracked.",
"cancel": "Cancel",
"save": "Save Preferences",
"saved": "Preferences updated successfully."
}
},
"account": {
"deleteAccount": {
"sectionTitle": "Right to be Forgotten (GDPR)",
"sectionDescription": "Permanently and irreversibly delete your account and all associated data.",
"whatWillBeDeleted": "The following will be permanently deleted:",
"item1": "All notes, notebooks, and attachments",
"item2": "All pgvector semantic embeddings",
"item3": "All BYOK API keys",
"item4": "All AI conversations and brainstorm sessions",
"item5": "Quota and usage history",
"item6": "Your Stripe subscription (if active)",
"item7": "Your account and login credentials",
"buttonLabel": "Delete My Account",
"dialogTitle": "Confirm Account Deletion",
"dialogDescription": "This action is irreversible. Type your email address to confirm.",
"emailPlaceholder": "Your email address",
"confirmButton": "Permanently Delete Account",
"cancelButton": "Cancel",
"deleting": "Deleting...",
"successRedirect": "Your account has been successfully deleted.",
"errorFailed": "Deletion failed. Please try again."
}
}
}

View File

@@ -2591,5 +2591,50 @@
"emptyState": "No versions available",
"selectVersion": "Select a version to preview its content",
"currentVersion": "current"
},
"consent": {
"banner": {
"title": "Cookie Preferences",
"description": "We use cookies to improve your experience. Strictly necessary cookies are always active, but you can opt-in to anonymous analytics.",
"acceptEssentials": "Accept Essentials Only",
"rejectNonEssential": "Reject Non-Essential",
"manage": "Manage Preferences",
"acceptAll": "Accept All"
},
"preferences": {
"title": "Consent Settings",
"description": "Customize your data privacy preferences. We respect your choice and store no tracking cookies without your consent.",
"necessaryTitle": "Strictly Necessary Cookies",
"necessaryDesc": "These cookies are required to authenticate your session, save your language and theme preferences. They cannot be turned off.",
"alwaysOn": "Always On",
"analyticsTitle": "Anonymous Analytics",
"analyticsDesc": "Help us improve Momento by sending completely anonymous usage statistics. No personal data is ever tracked.",
"cancel": "Cancel",
"save": "Save Preferences",
"saved": "Preferences updated successfully."
}
},
"account": {
"deleteAccount": {
"sectionTitle": "Right to be Forgotten (GDPR)",
"sectionDescription": "Permanently and irreversibly delete your account and all associated data.",
"whatWillBeDeleted": "The following will be permanently deleted:",
"item1": "All notes, notebooks, and attachments",
"item2": "All pgvector semantic embeddings",
"item3": "All BYOK API keys",
"item4": "All AI conversations and brainstorm sessions",
"item5": "Quota and usage history",
"item6": "Your Stripe subscription (if active)",
"item7": "Your account and login credentials",
"buttonLabel": "Delete My Account",
"dialogTitle": "Confirm Account Deletion",
"dialogDescription": "This action is irreversible. Type your email address to confirm.",
"emailPlaceholder": "Your email address",
"confirmButton": "Permanently Delete Account",
"cancelButton": "Cancel",
"deleting": "Deleting...",
"successRedirect": "Your account has been successfully deleted.",
"errorFailed": "Deletion failed. Please try again."
}
}
}

View File

@@ -2591,5 +2591,50 @@
"emptyState": "No versions available",
"selectVersion": "Select a version to preview its content",
"currentVersion": "current"
},
"consent": {
"banner": {
"title": "Cookie Preferences",
"description": "We use cookies to improve your experience. Strictly necessary cookies are always active, but you can opt-in to anonymous analytics.",
"acceptEssentials": "Accept Essentials Only",
"rejectNonEssential": "Reject Non-Essential",
"manage": "Manage Preferences",
"acceptAll": "Accept All"
},
"preferences": {
"title": "Consent Settings",
"description": "Customize your data privacy preferences. We respect your choice and store no tracking cookies without your consent.",
"necessaryTitle": "Strictly Necessary Cookies",
"necessaryDesc": "These cookies are required to authenticate your session, save your language and theme preferences. They cannot be turned off.",
"alwaysOn": "Always On",
"analyticsTitle": "Anonymous Analytics",
"analyticsDesc": "Help us improve Momento by sending completely anonymous usage statistics. No personal data is ever tracked.",
"cancel": "Cancel",
"save": "Save Preferences",
"saved": "Preferences updated successfully."
}
},
"account": {
"deleteAccount": {
"sectionTitle": "Right to be Forgotten (GDPR)",
"sectionDescription": "Permanently and irreversibly delete your account and all associated data.",
"whatWillBeDeleted": "The following will be permanently deleted:",
"item1": "All notes, notebooks, and attachments",
"item2": "All pgvector semantic embeddings",
"item3": "All BYOK API keys",
"item4": "All AI conversations and brainstorm sessions",
"item5": "Quota and usage history",
"item6": "Your Stripe subscription (if active)",
"item7": "Your account and login credentials",
"buttonLabel": "Delete My Account",
"dialogTitle": "Confirm Account Deletion",
"dialogDescription": "This action is irreversible. Type your email address to confirm.",
"emailPlaceholder": "Your email address",
"confirmButton": "Permanently Delete Account",
"cancelButton": "Cancel",
"deleting": "Deleting...",
"successRedirect": "Your account has been successfully deleted.",
"errorFailed": "Deletion failed. Please try again."
}
}
}

View File

@@ -2591,5 +2591,50 @@
"emptyState": "No versions available",
"selectVersion": "Select a version to preview its content",
"currentVersion": "current"
},
"consent": {
"banner": {
"title": "Cookie Preferences",
"description": "We use cookies to improve your experience. Strictly necessary cookies are always active, but you can opt-in to anonymous analytics.",
"acceptEssentials": "Accept Essentials Only",
"rejectNonEssential": "Reject Non-Essential",
"manage": "Manage Preferences",
"acceptAll": "Accept All"
},
"preferences": {
"title": "Consent Settings",
"description": "Customize your data privacy preferences. We respect your choice and store no tracking cookies without your consent.",
"necessaryTitle": "Strictly Necessary Cookies",
"necessaryDesc": "These cookies are required to authenticate your session, save your language and theme preferences. They cannot be turned off.",
"alwaysOn": "Always On",
"analyticsTitle": "Anonymous Analytics",
"analyticsDesc": "Help us improve Momento by sending completely anonymous usage statistics. No personal data is ever tracked.",
"cancel": "Cancel",
"save": "Save Preferences",
"saved": "Preferences updated successfully."
}
},
"account": {
"deleteAccount": {
"sectionTitle": "Right to be Forgotten (GDPR)",
"sectionDescription": "Permanently and irreversibly delete your account and all associated data.",
"whatWillBeDeleted": "The following will be permanently deleted:",
"item1": "All notes, notebooks, and attachments",
"item2": "All pgvector semantic embeddings",
"item3": "All BYOK API keys",
"item4": "All AI conversations and brainstorm sessions",
"item5": "Quota and usage history",
"item6": "Your Stripe subscription (if active)",
"item7": "Your account and login credentials",
"buttonLabel": "Delete My Account",
"dialogTitle": "Confirm Account Deletion",
"dialogDescription": "This action is irreversible. Type your email address to confirm.",
"emailPlaceholder": "Your email address",
"confirmButton": "Permanently Delete Account",
"cancelButton": "Cancel",
"deleting": "Deleting...",
"successRedirect": "Your account has been successfully deleted.",
"errorFailed": "Deletion failed. Please try again."
}
}
}

View File

@@ -2591,5 +2591,50 @@
"emptyState": "No versions available",
"selectVersion": "Select a version to preview its content",
"currentVersion": "current"
},
"consent": {
"banner": {
"title": "Cookie Preferences",
"description": "We use cookies to improve your experience. Strictly necessary cookies are always active, but you can opt-in to anonymous analytics.",
"acceptEssentials": "Accept Essentials Only",
"rejectNonEssential": "Reject Non-Essential",
"manage": "Manage Preferences",
"acceptAll": "Accept All"
},
"preferences": {
"title": "Consent Settings",
"description": "Customize your data privacy preferences. We respect your choice and store no tracking cookies without your consent.",
"necessaryTitle": "Strictly Necessary Cookies",
"necessaryDesc": "These cookies are required to authenticate your session, save your language and theme preferences. They cannot be turned off.",
"alwaysOn": "Always On",
"analyticsTitle": "Anonymous Analytics",
"analyticsDesc": "Help us improve Momento by sending completely anonymous usage statistics. No personal data is ever tracked.",
"cancel": "Cancel",
"save": "Save Preferences",
"saved": "Preferences updated successfully."
}
},
"account": {
"deleteAccount": {
"sectionTitle": "Right to be Forgotten (GDPR)",
"sectionDescription": "Permanently and irreversibly delete your account and all associated data.",
"whatWillBeDeleted": "The following will be permanently deleted:",
"item1": "All notes, notebooks, and attachments",
"item2": "All pgvector semantic embeddings",
"item3": "All BYOK API keys",
"item4": "All AI conversations and brainstorm sessions",
"item5": "Quota and usage history",
"item6": "Your Stripe subscription (if active)",
"item7": "Your account and login credentials",
"buttonLabel": "Delete My Account",
"dialogTitle": "Confirm Account Deletion",
"dialogDescription": "This action is irreversible. Type your email address to confirm.",
"emailPlaceholder": "Your email address",
"confirmButton": "Permanently Delete Account",
"cancelButton": "Cancel",
"deleting": "Deleting...",
"successRedirect": "Your account has been successfully deleted.",
"errorFailed": "Deletion failed. Please try again."
}
}
}

View File

@@ -2591,5 +2591,50 @@
"emptyState": "No versions available",
"selectVersion": "Select a version to preview its content",
"currentVersion": "current"
},
"consent": {
"banner": {
"title": "Cookie Preferences",
"description": "We use cookies to improve your experience. Strictly necessary cookies are always active, but you can opt-in to anonymous analytics.",
"acceptEssentials": "Accept Essentials Only",
"rejectNonEssential": "Reject Non-Essential",
"manage": "Manage Preferences",
"acceptAll": "Accept All"
},
"preferences": {
"title": "Consent Settings",
"description": "Customize your data privacy preferences. We respect your choice and store no tracking cookies without your consent.",
"necessaryTitle": "Strictly Necessary Cookies",
"necessaryDesc": "These cookies are required to authenticate your session, save your language and theme preferences. They cannot be turned off.",
"alwaysOn": "Always On",
"analyticsTitle": "Anonymous Analytics",
"analyticsDesc": "Help us improve Momento by sending completely anonymous usage statistics. No personal data is ever tracked.",
"cancel": "Cancel",
"save": "Save Preferences",
"saved": "Preferences updated successfully."
}
},
"account": {
"deleteAccount": {
"sectionTitle": "Right to be Forgotten (GDPR)",
"sectionDescription": "Permanently and irreversibly delete your account and all associated data.",
"whatWillBeDeleted": "The following will be permanently deleted:",
"item1": "All notes, notebooks, and attachments",
"item2": "All pgvector semantic embeddings",
"item3": "All BYOK API keys",
"item4": "All AI conversations and brainstorm sessions",
"item5": "Quota and usage history",
"item6": "Your Stripe subscription (if active)",
"item7": "Your account and login credentials",
"buttonLabel": "Delete My Account",
"dialogTitle": "Confirm Account Deletion",
"dialogDescription": "This action is irreversible. Type your email address to confirm.",
"emailPlaceholder": "Your email address",
"confirmButton": "Permanently Delete Account",
"cancelButton": "Cancel",
"deleting": "Deleting...",
"successRedirect": "Your account has been successfully deleted.",
"errorFailed": "Deletion failed. Please try again."
}
}
}