diff --git a/packages/site/src/App.vue b/packages/site/src/App.vue index afb7588..b4baedd 100644 --- a/packages/site/src/App.vue +++ b/packages/site/src/App.vue @@ -17,6 +17,7 @@ import SecuritySection from './components/SecuritySection.vue'; import FaqSection from './components/FaqSection.vue'; import FinalCta from './components/FinalCta.vue'; import AppFooter from './components/AppFooter.vue'; +import BackToTop from './components/BackToTop.vue'; const { locale } = useI18n(); @@ -82,5 +83,6 @@ const glowStyle = { + diff --git a/packages/site/src/components/AppHeader.vue b/packages/site/src/components/AppHeader.vue index dae6e81..a38d045 100644 --- a/packages/site/src/components/AppHeader.vue +++ b/packages/site/src/components/AppHeader.vue @@ -1,4 +1,5 @@ diff --git a/packages/site/src/components/BackToTop.vue b/packages/site/src/components/BackToTop.vue new file mode 100644 index 0000000..fa1f315 --- /dev/null +++ b/packages/site/src/components/BackToTop.vue @@ -0,0 +1,65 @@ + + + + + diff --git a/packages/site/src/i18n/en.ts b/packages/site/src/i18n/en.ts index 35f1926..90b8b51 100644 --- a/packages/site/src/i18n/en.ts +++ b/packages/site/src/i18n/en.ts @@ -8,6 +8,8 @@ export default { navHow: 'How it works', navSecurity: 'Security', navFaq: 'FAQ', + navMenu: 'Menu', + backToTop: 'Back to top', themeToggle: 'Toggle theme', gitea: 'View on Gitea', heroBadge: 'Mission control for AI coding agents', diff --git a/packages/site/src/i18n/fr.ts b/packages/site/src/i18n/fr.ts index 5c0e5b7..bb7b834 100644 --- a/packages/site/src/i18n/fr.ts +++ b/packages/site/src/i18n/fr.ts @@ -8,6 +8,8 @@ export default { navHow: 'Comment ça marche', navSecurity: 'Sécurité', navFaq: 'FAQ', + navMenu: 'Menu', + backToTop: 'Revenir en haut', themeToggle: 'Changer de thème', gitea: 'Voir sur Gitea', heroBadge: 'Poste de commandement pour agents de code IA', diff --git a/packages/site/src/lib/theme.ts b/packages/site/src/lib/theme.ts index 0736fe5..a4fe7ae 100644 --- a/packages/site/src/lib/theme.ts +++ b/packages/site/src/lib/theme.ts @@ -6,8 +6,10 @@ import { computed, ref, watch, type ComputedRef } from 'vue'; export type ThemeMode = 'dark' | 'light' | 'system'; export type ResolvedTheme = 'dark' | 'light'; -// MÊME clé que l'app (packages/web/src/lib/theme.ts) : le site se présente comme aligné sur elle, et -// un visiteur qui bascule le thème ici retrouve le même sur son instance. +// Même NOM de clé que l'app (packages/web/src/lib/theme.ts), par cohérence de nommage. À noter que la +// préférence n'est pas partagée pour autant : le site et une instance Arboretum vivent sur des +// origines différentes (donc des localStorage séparés), et l'app sérialise sa valeur en JSON là où le +// site stocke la chaîne brute, lue telle quelle par le script anti-FOUC de index.html. const STORAGE_KEY = 'arb.theme'; // Doit rester synchronisé avec --color-surface-0 (style.css) : fond du + metas. const BG: Record = { dark: '#09090b', light: '#fafafa' };