diff --git a/docs/sprint-status.yaml b/docs/sprint-status.yaml index a9cd0c2..d637259 100644 --- a/docs/sprint-status.yaml +++ b/docs/sprint-status.yaml @@ -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 diff --git a/memento-note/app/(main)/settings/data/page.tsx b/memento-note/app/(main)/settings/data/page.tsx index 5e9c184..6469d6f 100644 --- a/memento-note/app/(main)/settings/data/page.tsx +++ b/memento-note/app/(main)/settings/data/page.tsx @@ -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() { + +
+
+
+ +
+
+

{t('account.deleteAccount.sectionTitle')}

+

{t('account.deleteAccount.sectionDescription')}

+
+
+ +
+
+

{t('account.deleteAccount.dialogTitle')}

+

{t('account.deleteAccount.sectionDescription')}

+
+ +
+
+ + {session?.user?.email && ( + + )} ) } diff --git a/memento-note/app/(main)/settings/general/general-settings-client.tsx b/memento-note/app/(main)/settings/general/general-settings-client.tsx index cb1fd0d..3de3d40 100644 --- a/memento-note/app/(main)/settings/general/general-settings-client.tsx +++ b/memento-note/app/(main)/settings/general/general-settings-client.tsx @@ -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 + +
+
+
+ +
+
+

{t('consent.preferences.title')}

+

{t('consent.preferences.description')}

+
+
+ +
+ +
+
) diff --git a/memento-note/app/layout.tsx b/memento-note/app/layout.tsx index 46e78cc..d47549c 100644 --- a/memento-note/app/layout.tsx +++ b/memento-note/app/layout.tsx @@ -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({ {children} + + + diff --git a/memento-note/locales/ar.json b/memento-note/locales/ar.json index f817437..9d5c6f6 100644 --- a/memento-note/locales/ar.json +++ b/memento-note/locales/ar.json @@ -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." + } } } \ No newline at end of file diff --git a/memento-note/locales/de.json b/memento-note/locales/de.json index abbc69f..127a926 100644 --- a/memento-note/locales/de.json +++ b/memento-note/locales/de.json @@ -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." + } } } \ No newline at end of file diff --git a/memento-note/locales/en.json b/memento-note/locales/en.json index 7f049e9..bccff4e 100644 --- a/memento-note/locales/en.json +++ b/memento-note/locales/en.json @@ -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." + } } } \ No newline at end of file diff --git a/memento-note/locales/es.json b/memento-note/locales/es.json index 6e9ee1d..dde9cc4 100644 --- a/memento-note/locales/es.json +++ b/memento-note/locales/es.json @@ -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." + } } } \ No newline at end of file diff --git a/memento-note/locales/fa.json b/memento-note/locales/fa.json index c0d9023..dfc2670 100644 --- a/memento-note/locales/fa.json +++ b/memento-note/locales/fa.json @@ -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." + } } } \ No newline at end of file diff --git a/memento-note/locales/fr.json b/memento-note/locales/fr.json index 918f96b..230991f 100644 --- a/memento-note/locales/fr.json +++ b/memento-note/locales/fr.json @@ -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." + } } } \ No newline at end of file diff --git a/memento-note/locales/hi.json b/memento-note/locales/hi.json index 1108615..6b21742 100644 --- a/memento-note/locales/hi.json +++ b/memento-note/locales/hi.json @@ -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." + } } } \ No newline at end of file diff --git a/memento-note/locales/it.json b/memento-note/locales/it.json index b3f79da..c5b5d31 100644 --- a/memento-note/locales/it.json +++ b/memento-note/locales/it.json @@ -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." + } } } \ No newline at end of file diff --git a/memento-note/locales/ja.json b/memento-note/locales/ja.json index 2d11bcd..1346f5d 100644 --- a/memento-note/locales/ja.json +++ b/memento-note/locales/ja.json @@ -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." + } } } \ No newline at end of file diff --git a/memento-note/locales/ko.json b/memento-note/locales/ko.json index 2950f81..62c302c 100644 --- a/memento-note/locales/ko.json +++ b/memento-note/locales/ko.json @@ -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." + } } } \ No newline at end of file diff --git a/memento-note/locales/nl.json b/memento-note/locales/nl.json index a40b88f..49b91f4 100644 --- a/memento-note/locales/nl.json +++ b/memento-note/locales/nl.json @@ -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." + } } } \ No newline at end of file diff --git a/memento-note/locales/pl.json b/memento-note/locales/pl.json index 72e0909..bff4360 100644 --- a/memento-note/locales/pl.json +++ b/memento-note/locales/pl.json @@ -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." + } } } \ No newline at end of file diff --git a/memento-note/locales/pt.json b/memento-note/locales/pt.json index 0b07376..1e8f607 100644 --- a/memento-note/locales/pt.json +++ b/memento-note/locales/pt.json @@ -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." + } } } \ No newline at end of file diff --git a/memento-note/locales/ru.json b/memento-note/locales/ru.json index df30027..9c383fb 100644 --- a/memento-note/locales/ru.json +++ b/memento-note/locales/ru.json @@ -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." + } } } \ No newline at end of file diff --git a/memento-note/locales/zh.json b/memento-note/locales/zh.json index 48e2be4..b63776d 100644 --- a/memento-note/locales/zh.json +++ b/memento-note/locales/zh.json @@ -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." + } } } \ No newline at end of file