diff --git a/memento-note/app/(auth)/layout.tsx b/memento-note/app/(auth)/layout.tsx index 98aa8c2..ce9069f 100644 --- a/memento-note/app/(auth)/layout.tsx +++ b/memento-note/app/(auth)/layout.tsx @@ -1,58 +1,22 @@ -'use client'; +import { headers } from 'next/headers'; +import { detectUserLanguage, parseAcceptLanguage } from '@/lib/i18n/detect-user-language'; +import { loadTranslations } from '@/lib/i18n/load-translations'; +import { LanguageProvider } from '@/lib/i18n/LanguageProvider'; +import { AuthShell } from '@/components/auth-shell'; -import { LanguageProvider, useLanguage } from '@/lib/i18n/LanguageProvider'; -import Link from 'next/link'; -import { ArrowLeft } from 'lucide-react'; - -function AuthHeader() { - const { t } = useLanguage(); - - return ( -
- -
- -
- - - -
- M -
- Memento - - -
-
- ); -} - -export default function AuthLayout({ +export default async function AuthLayout({ children, }: Readonly<{ children: React.ReactNode; }>) { + const headersList = await headers(); + const browserLang = parseAcceptLanguage(headersList.get('accept-language')); + const initialLanguage = await detectUserLanguage(browserLang); + const initialTranslations = await loadTranslations(initialLanguage); + return ( - -
-
-
- - - -
-
- {children} -

- © 2026 Memento -

-
-
-
+ + {children} ); } diff --git a/memento-note/app/layout.tsx b/memento-note/app/layout.tsx index 57143ad..b7e1907 100644 --- a/memento-note/app/layout.tsx +++ b/memento-note/app/layout.tsx @@ -42,8 +42,8 @@ const jetbrainsMono = JetBrains_Mono({ }); export const metadata: Metadata = { - title: "Memento - Your Digital Notepad", - description: "A beautiful note-taking app built with Next.js 16", + title: "Memento — Your Second Brain", + description: "A Second Brain that connects while you write. Search, brief, and act on your ideas every morning.", manifest: "/api/manifest", icons: { icon: "/icons/icon-512.svg", diff --git a/memento-note/components/auth-shell.tsx b/memento-note/components/auth-shell.tsx new file mode 100644 index 0000000..7bca554 --- /dev/null +++ b/memento-note/components/auth-shell.tsx @@ -0,0 +1,52 @@ +'use client'; + +import { useLanguage } from '@/lib/i18n/LanguageProvider'; +import Link from 'next/link'; +import { ArrowLeft } from 'lucide-react'; + +function AuthHeader() { + const { t } = useLanguage(); + + return ( +
+ +
+ +
+ + + +
+ M +
+ Memento + + +
+
+ ); +} + +export function AuthShell({ children }: { children: React.ReactNode }) { + return ( +
+
+
+ + + +
+
+ {children} +

+ © 2026 Memento +

+
+
+
+ ); +} diff --git a/memento-note/components/sidebar.tsx b/memento-note/components/sidebar.tsx index 37ec7dc..8b41ff9 100644 --- a/memento-note/components/sidebar.tsx +++ b/memento-note/components/sidebar.tsx @@ -1386,8 +1386,8 @@ export function Sidebar({ className, user }: { className?: string; user?: any }) )} aria-hidden={isImmersiveRoute && userCollapsed ? true : undefined} > - {/* ── Column 1 : Rail d'icônes (54px) — inspiré du prototype ── */} -
+ {/* ── Column 1 : Rail icône + libellé — destinations lisibles sans survol ── */} +
{/* Top : Logo + navigation */}
@@ -1425,12 +1425,12 @@ export function Sidebar({ className, user }: { className?: string; user?: any }) {/* Boutons de navigation principaux */} -
+
{([ { id: 'dashboard', icon: LayoutGrid, - label: t('nav.dashboard') || 'Dashboard', + label: t('nav.home'), onClick: () => { setActiveView('dashboard') router.replace('/home') @@ -1470,7 +1470,7 @@ export function Sidebar({ className, user }: { className?: string; user?: any }) { id: 'agents', icon: Bot, - label: t('agents.intelligenceOS') || 'Intelligence IA', + label: t('nav.agents'), onClick: () => { setActiveView('agents') router.push('/agents') @@ -1492,20 +1492,17 @@ export function Sidebar({ className, user }: { className?: string; user?: any }) aria-current={item.isActive ? 'page' : undefined} onClick={item.onClick} className={cn( - 'w-9 h-9 rounded-lg flex items-center justify-center transition-all relative group', + 'w-full rounded-lg flex flex-col items-center justify-center gap-0.5 py-1.5 px-0.5 transition-all relative', item.isActive ? 'bg-brand-accent/10 text-brand-accent border border-brand-accent/25' - : 'text-concrete hover:text-ink dark:hover:text-white hover:bg-black/[0.04] dark:hover:bg-white/[0.04]' + : 'text-ink/70 hover:text-ink dark:text-white/70 dark:hover:text-white hover:bg-black/[0.04] dark:hover:bg-white/[0.04]' )} > {item.isActive && ( -
+
)} - -