diff --git a/memento-note/app/(admin)/admin/ai-test/page.tsx b/memento-note/app/(admin)/admin/ai-test/page.tsx index 976e350..973eb38 100644 --- a/memento-note/app/(admin)/admin/ai-test/page.tsx +++ b/memento-note/app/(admin)/admin/ai-test/page.tsx @@ -103,9 +103,9 @@ export default function AITestPage() { {/* 3. Chat Test - Horizontal Layout */}
-
+
- +
@@ -116,12 +116,12 @@ export default function AITestPage() {

{t('admin.aiTest.chatTestDescription')}

- Conversational - Streaming + Conversational + Streaming
-
+
diff --git a/memento-note/app/(admin)/admin/settings/admin-settings-form.tsx b/memento-note/app/(admin)/admin/settings/admin-settings-form.tsx index 14048e5..ed5d273 100644 --- a/memento-note/app/(admin)/admin/settings/admin-settings-form.tsx +++ b/memento-note/app/(admin)/admin/settings/admin-settings-form.tsx @@ -736,7 +736,7 @@ export function AdminSettingsForm({ config }: { config: Record } {/* Chat Provider */}

- đź’¬ {t('admin.ai.chatProvider')} + đź’¬ {t('admin.ai.chatProvider')}

{t('admin.ai.chatDescription')}

diff --git a/memento-note/app/(main)/layout.tsx b/memento-note/app/(main)/layout.tsx index 0c07d84..6922f1c 100644 --- a/memento-note/app/(main)/layout.tsx +++ b/memento-note/app/(main)/layout.tsx @@ -36,7 +36,7 @@ export default async function MainLayout({ -
+
{children}
diff --git a/memento-note/app/(main)/settings/data/page.tsx b/memento-note/app/(main)/settings/data/page.tsx index e7d83e4..4386fb5 100644 --- a/memento-note/app/(main)/settings/data/page.tsx +++ b/memento-note/app/(main)/settings/data/page.tsx @@ -127,7 +127,7 @@ export default function DataSettingsPage() { {/* Export card */}
-
+
diff --git a/memento-note/app/globals.css b/memento-note/app/globals.css index bb00d91..dcd8661 100644 --- a/memento-note/app/globals.css +++ b/memento-note/app/globals.css @@ -117,12 +117,10 @@ /* Architectural Grid — texture & navigation (réf. architectural-grid1) */ .memento-paper-texture { background-color: var(--background); - background-image: url("https://www.transparenttextures.com/patterns/natural-paper.png"); - background-size: auto; } html.dark .memento-paper-texture { - background-image: none; + background-color: var(--background); } .memento-sidebar-depth { @@ -353,15 +351,15 @@ html.dark .memento-active-nav { --popover-foreground: #212529; --primary: #ACB995; --primary-foreground: #F9F8F6; - --secondary: #75B2D6; + --secondary: #E9ECEF; --secondary-foreground: #212529; - --muted: #75B2D6; + --muted: #F1F3F5; --muted-foreground: rgba(33, 37, 41, 0.6); - --accent: #75B2D6; + --accent: #F8F9FA; --accent-foreground: #212529; --destructive: #E11D48; - --border: #75B2D6; - --input: #75B2D6; + --border: rgba(0, 0, 0, 0.08); + --input: rgba(0, 0, 0, 0.08); --ring: rgba(33, 37, 41, 0.3); --ai-accent: #ACB995; --pinned-gold: #F59E0B; @@ -373,7 +371,7 @@ html.dark .memento-active-nav { --sidebar-primary-foreground: #F9F8F6; --sidebar-accent: #F9F8F6; --sidebar-accent-foreground: #212529; - --sidebar-border: #75B2D6; + --sidebar-border: rgba(0, 0, 0, 0.05); --sidebar-ring: rgba(33, 37, 41, 0.2); } @@ -479,139 +477,177 @@ html.dark { } [data-theme='midnight'] { - --background: oklch(0.94 0.005 250); - /* Gris-bleu très pâle */ - --foreground: oklch(0.18 0.03 250); - /* Gris-bleu très foncé */ - --card: oklch(0.97 0.006 250); - /* Gris-bleu pâle */ - --card-foreground: oklch(0.18 0.03 250); - --primary: oklch(0.5 0.12 250); - /* Gris-bleu saturé */ - --primary-foreground: oklch(0.99 0 0); - /* Blanc */ - --secondary: oklch(0.2 0.01 250); - --secondary-foreground: oklch(0.18 0.03 250); - --muted: oklch(0.22 0.01 250); - --muted-foreground: oklch(0.55 0.02 250); - --accent: oklch(0.25 0.015 250); - --accent-foreground: oklch(0.18 0.03 250); - --destructive: oklch(0.6 0.22 25); - --border: oklch(0.82 0.015 250); - --input: oklch(0.82 0.015 250); - --ring: oklch(0.65 0.015 250); - --popover: oklch(0.97 0.006 250); - --popover-foreground: oklch(0.18 0.03 250); - --sidebar: oklch(0.9 0.01 250); - --sidebar-foreground: oklch(0.18 0.03 250); - --sidebar-primary: oklch(0.5 0.12 250); - --sidebar-primary-foreground: oklch(0.99 0 0); - --sidebar-accent: oklch(0.25 0.015 250); - --sidebar-accent-foreground: oklch(0.18 0.03 250); - --sidebar-border: oklch(0.85 0.015 250); - --sidebar-ring: oklch(0.65 0.015 250); + --background: #F8F9FA; + --foreground: #212529; + --card: #ffffff; + --card-foreground: #212529; + --primary: #ACB995; + --primary-foreground: #F8F9FA; + --secondary: #E9ECEF; + --secondary-foreground: #212529; + --muted: #F1F3F5; + --muted-foreground: rgba(33, 37, 41, 0.6); + --accent: #F8F9FA; + --accent-foreground: #212529; + --destructive: #E11D48; + --border: rgba(0, 0, 0, 0.08); + --input: rgba(0, 0, 0, 0.08); + --ring: rgba(33, 37, 41, 0.3); + --popover: #ffffff; + --popover-foreground: #212529; + --sidebar: #ffffff; + --sidebar-foreground: #212529; + --sidebar-primary: #212529; + --sidebar-primary-foreground: #F8F9FA; + --sidebar-accent: #F8F9FA; + --sidebar-accent-foreground: #212529; + --sidebar-border: rgba(0, 0, 0, 0.05); + --sidebar-ring: rgba(33, 37, 41, 0.2); } [data-theme='midnight'].dark { - --background: oklch(0.1 0.01 250); - /* Noir profond */ - --foreground: oklch(0.96 0.005 250); - /* Blanc grisâtre */ - --card: oklch(0.15 0.015 250); - /* Gris-bleu très foncé */ - --card-foreground: oklch(0.96 0.005 250); - --primary: oklch(0.6 0.12 250); - /* Gris-bleu vibrant */ - --primary-foreground: oklch(0.1 0 0); - /* Noir */ - --secondary: oklch(0.18 0.015 250); - --secondary-foreground: oklch(0.96 0.005 250); - --muted: oklch(0.2 0.015 250); - --muted-foreground: oklch(0.5 0.02 250); - --accent: oklch(0.26 0.02 250); - --accent-foreground: oklch(0.96 0.005 250); - --destructive: oklch(0.65 0.2 25); - --border: oklch(0.33 0.02 250); - --input: oklch(0.33 0.02 250); - --ring: oklch(0.55 0.02 250); - --popover: oklch(0.15 0.015 250); - --popover-foreground: oklch(0.96 0.005 250); - --sidebar: oklch(0.08 0.01 250); - --sidebar-foreground: oklch(0.96 0.005 250); - --sidebar-primary: oklch(0.6 0.12 250); - --sidebar-primary-foreground: oklch(0.1 0 0); - --sidebar-accent: oklch(0.22 0.02 250); - --sidebar-accent-foreground: oklch(0.96 0.005 250); - --sidebar-border: oklch(0.3 0.02 250); - --sidebar-ring: oklch(0.55 0.02 250); + --background: #1C1C1C; + --foreground: #F8F9FA; + --card: #252525; + --card-foreground: #F8F9FA; + --primary: #ACB995; + --primary-foreground: #1C1C1C; + --secondary: #2A2A2A; + --secondary-foreground: #F8F9FA; + --muted: #222222; + --muted-foreground: rgba(248, 249, 250, 0.5); + --accent: #2A2A2A; + --accent-foreground: #F8F9FA; + --destructive: #E11D48; + --border: rgba(255, 255, 255, 0.1); + --input: rgba(255, 255, 255, 0.1); + --ring: rgba(255, 255, 255, 0.2); + --popover: #252525; + --popover-foreground: #F8F9FA; + --sidebar: #181818; + --sidebar-foreground: #F8F9FA; + --sidebar-primary: #F8F9FA; + --sidebar-primary-foreground: #1C1C1C; + --sidebar-accent: #2A2A2A; + --sidebar-accent-foreground: #F8F9FA; + --sidebar-border: rgba(255, 255, 255, 0.08); + --sidebar-ring: rgba(255, 255, 255, 0.15); } [data-theme='blue'] { - --background: oklch(0.985 0.005 225); - /* Blanc légèrement bleuté */ - --foreground: oklch(0.18 0.035 225); - /* Gris-bleu foncé saturé */ - --card: oklch(1 0 0); - /* Blanc pur */ - --card-foreground: oklch(0.18 0.035 225); - --primary: oklch(0.5 0.15 225); - /* Bleu vibrant */ - --primary-foreground: oklch(0.99 0 0); - /* Blanc */ - --secondary: oklch(0.93 0.008 225); - --secondary-foreground: oklch(0.18 0.035 225); - --muted: oklch(0.9 0.01 225); - --muted-foreground: oklch(0.58 0.015 225); - --accent: oklch(0.93 0.01 225); - --accent-foreground: oklch(0.18 0.035 225); - --destructive: oklch(0.6 0.2 25); - --border: oklch(0.83 0.012 225); - --input: oklch(0.83 0.012 225); - --ring: oklch(0.65 0.015 225); - --popover: oklch(1 0 0); - --popover-foreground: oklch(0.18 0.035 225); - --sidebar: oklch(0.965 0.008 225); - --sidebar-foreground: oklch(0.18 0.035 225); - --sidebar-primary: oklch(0.5 0.15 225); - --sidebar-primary-foreground: oklch(0.99 0 0); - --sidebar-accent: oklch(0.93 0.01 225); - --sidebar-accent-foreground: oklch(0.18 0.035 225); - --sidebar-border: oklch(0.87 0.012 225); - --sidebar-ring: oklch(0.65 0.015 225); + --background: #F8F9FA; + --foreground: #212529; + --card: #ffffff; + --card-foreground: #212529; + --primary: #ACB995; + --primary-foreground: #F8F9FA; + --secondary: #E9ECEF; + --secondary-foreground: #212529; + --muted: #F1F3F5; + --muted-foreground: rgba(33, 37, 41, 0.6); + --accent: #F8F9FA; + --accent-foreground: #212529; + --destructive: #E11D48; + --border: rgba(0, 0, 0, 0.08); + --input: rgba(0, 0, 0, 0.08); + --ring: rgba(33, 37, 41, 0.3); + --popover: #ffffff; + --popover-foreground: #212529; + --sidebar: #ffffff; + --sidebar-foreground: #212529; + --sidebar-primary: #212529; + --sidebar-primary-foreground: #F8F9FA; + --sidebar-accent: #F8F9FA; + --sidebar-accent-foreground: #212529; + --sidebar-border: rgba(0, 0, 0, 0.05); + --sidebar-ring: rgba(33, 37, 41, 0.2); } [data-theme='blue'].dark { - --background: oklch(0.13 0.008 225); - /* Noir légèrement bleuté */ - --foreground: oklch(0.97 0.006 225); - /* Blanc légèrement bleuté */ - --card: oklch(0.17 0.01 225); - /* Gris-bleu foncé */ - --card-foreground: oklch(0.97 0.006 225); - --primary: oklch(0.6 0.15 225); - /* Bleu vibrant plus clair */ - --primary-foreground: oklch(0.1 0 0); - /* Noir */ - --secondary: oklch(0.22 0.015 225); - --secondary-foreground: oklch(0.97 0.006 225); - --muted: oklch(0.25 0.02 225); - --muted-foreground: oklch(0.52 0.018 225); - --accent: oklch(0.28 0.025 225); - --accent-foreground: oklch(0.97 0.006 225); - --destructive: oklch(0.65 0.22 25); - --border: oklch(0.35 0.018 225); - --input: oklch(0.35 0.018 225); - --ring: oklch(0.55 0.02 225); - --popover: oklch(0.17 0.01 225); - --popover-foreground: oklch(0.97 0.006 225); - --sidebar: oklch(0.1 0.01 225); - --sidebar-foreground: oklch(0.97 0.006 225); - --sidebar-primary: oklch(0.6 0.15 225); - --sidebar-primary-foreground: oklch(0.1 0 0); - --sidebar-accent: oklch(0.25 0.025 225); - --sidebar-accent-foreground: oklch(0.97 0.006 225); - --sidebar-border: oklch(0.32 0.018 225); - --sidebar-ring: oklch(0.55 0.02 225); + --background: #1C1C1C; + --foreground: #F8F9FA; + --card: #252525; + --card-foreground: #F8F9FA; + --primary: #ACB995; + --primary-foreground: #1C1C1C; + --secondary: #2A2A2A; + --secondary-foreground: #F8F9FA; + --muted: #222222; + --muted-foreground: rgba(248, 249, 250, 0.5); + --accent: #2A2A2A; + --accent-foreground: #F8F9FA; + --destructive: #E11D48; + --border: rgba(255, 255, 255, 0.1); + --input: rgba(255, 255, 255, 0.1); + --ring: rgba(255, 255, 255, 0.2); + --popover: #252525; + --popover-foreground: #F8F9FA; + --sidebar: #181818; + --sidebar-foreground: #F8F9FA; + --sidebar-primary: #F8F9FA; + --sidebar-primary-foreground: #1C1C1C; + --sidebar-accent: #2A2A2A; + --sidebar-accent-foreground: #F8F9FA; + --sidebar-border: rgba(255, 255, 255, 0.08); + --sidebar-ring: rgba(255, 255, 255, 0.15); +} + +[data-theme='ocean'] { + --background: #F8F9FA; + --foreground: #212529; + --card: #ffffff; + --card-foreground: #212529; + --primary: #ACB995; + --primary-foreground: #F8F9FA; + --secondary: #E9ECEF; + --secondary-foreground: #212529; + --muted: #F1F3F5; + --muted-foreground: rgba(33, 37, 41, 0.6); + --accent: #F8F9FA; + --accent-foreground: #212529; + --destructive: #E11D48; + --border: rgba(0, 0, 0, 0.08); + --input: rgba(0, 0, 0, 0.08); + --ring: rgba(33, 37, 41, 0.3); + --popover: #ffffff; + --popover-foreground: #212529; + --sidebar: #ffffff; + --sidebar-foreground: #212529; + --sidebar-primary: #212529; + --sidebar-primary-foreground: #F8F9FA; + --sidebar-accent: #F8F9FA; + --sidebar-accent-foreground: #212529; + --sidebar-border: rgba(0, 0, 0, 0.05); + --sidebar-ring: rgba(33, 37, 41, 0.2); +} + +[data-theme='ocean'].dark { + --background: #1C1C1C; + --foreground: #F8F9FA; + --card: #252525; + --card-foreground: #F8F9FA; + --primary: #ACB995; + --primary-foreground: #1C1C1C; + --secondary: #2A2A2A; + --secondary-foreground: #F8F9FA; + --muted: #222222; + --muted-foreground: rgba(248, 249, 250, 0.5); + --accent: #2A2A2A; + --accent-foreground: #F8F9FA; + --destructive: #E11D48; + --border: rgba(255, 255, 255, 0.1); + --input: rgba(255, 255, 255, 0.1); + --ring: rgba(255, 255, 255, 0.2); + --popover: #252525; + --popover-foreground: #F8F9FA; + --sidebar: #181818; + --sidebar-foreground: #F8F9FA; + --sidebar-primary: #F8F9FA; + --sidebar-primary-foreground: #1C1C1C; + --sidebar-accent: #2A2A2A; + --sidebar-accent-foreground: #F8F9FA; + --sidebar-border: rgba(255, 255, 255, 0.08); + --sidebar-ring: rgba(255, 255, 255, 0.15); } [data-theme='sepia'] { @@ -922,64 +958,7 @@ html.dark { --sidebar-ring: oklch(0.6 0.02 55); } -/* Ocean — soft teal/cyan tones */ -[data-theme='ocean'] { - --background: oklch(0.97 0.01 195); - --foreground: oklch(0.22 0.02 195); - --card: oklch(0.99 0.005 195); - --card-foreground: oklch(0.22 0.02 195); - --popover: oklch(0.99 0.005 195); - --popover-foreground: oklch(0.22 0.02 195); - --primary: oklch(0.5 0.12 195); - --primary-foreground: oklch(0.99 0 0); - --secondary: oklch(0.93 0.015 195); - --secondary-foreground: oklch(0.22 0.02 195); - --muted: oklch(0.92 0.012 195); - --muted-foreground: oklch(0.55 0.02 195); - --accent: oklch(0.92 0.015 195); - --accent-foreground: oklch(0.22 0.02 195); - --destructive: oklch(0.6 0.18 25); - --border: oklch(0.85 0.015 195); - --input: oklch(0.85 0.015 195); - --ring: oklch(0.5 0.12 195); - --sidebar: oklch(0.95 0.012 195); - --sidebar-foreground: oklch(0.22 0.02 195); - --sidebar-primary: oklch(0.5 0.12 195); - --sidebar-primary-foreground: oklch(0.99 0 0); - --sidebar-accent: oklch(0.92 0.015 195); - --sidebar-accent-foreground: oklch(0.22 0.02 195); - --sidebar-border: oklch(0.88 0.015 195); - --sidebar-ring: oklch(0.6 0.015 195); -} -[data-theme='ocean'].dark { - --background: oklch(0.14 0.01 195); - --foreground: oklch(0.95 0.01 195); - --card: oklch(0.18 0.015 195); - --card-foreground: oklch(0.95 0.01 195); - --popover: oklch(0.18 0.015 195); - --popover-foreground: oklch(0.95 0.01 195); - --primary: oklch(0.6 0.1 195); - --primary-foreground: oklch(0.1 0 0); - --secondary: oklch(0.24 0.02 195); - --secondary-foreground: oklch(0.95 0.01 195); - --muted: oklch(0.22 0.015 195); - --muted-foreground: oklch(0.55 0.02 195); - --accent: oklch(0.26 0.02 195); - --accent-foreground: oklch(0.95 0.01 195); - --destructive: oklch(0.65 0.18 25); - --border: oklch(0.33 0.02 195); - --input: oklch(0.33 0.02 195); - --ring: oklch(0.6 0.02 195); - --sidebar: oklch(0.12 0.01 195); - --sidebar-foreground: oklch(0.95 0.01 195); - --sidebar-primary: oklch(0.6 0.1 195); - --sidebar-primary-foreground: oklch(0.1 0 0); - --sidebar-accent: oklch(0.26 0.02 195); - --sidebar-accent-foreground: oklch(0.95 0.01 195); - --sidebar-border: oklch(0.33 0.02 195); - --sidebar-ring: oklch(0.6 0.02 195); -} /* Sunset — warm coral/peach tones */ [data-theme='sunset'] { diff --git a/memento-note/components/ai-chat.tsx b/memento-note/components/ai-chat.tsx index df5eb7c..d2c9acd 100644 --- a/memento-note/components/ai-chat.tsx +++ b/memento-note/components/ai-chat.tsx @@ -158,7 +158,7 @@ export function AIChat({ showFloatingTrigger = true }: { showFloatingTrigger?: b return (