diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index f550998..82a2fc2 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -48,6 +48,7 @@ Les fichiers YAML sont dans `site/pages/`, organisés en sous-dossiers par secti - Persisté en `localStorage('palette')` pour les visites suivantes - CSS : variables `--color-primary`, `--color-accent`, etc. + classe `.palette-light`/`.palette-dark` - Overrides light mode dans `main.css` (`.palette-light .text-white` → couleur adaptive) +- Admin : tous les `color: white` dans les composants admin sont remplacés par `hsl(var(--color-text))` sauf les boutons sur fond `hsl(var(--color-primary))` (`AdminSaveButton`, `.login-btn`) ## Shadoks diff --git a/README.md b/README.md index c92d8a6..6a9df21 100644 --- a/README.md +++ b/README.md @@ -48,6 +48,10 @@ site/pages/ Administration via `/admin/pages` (éditeur YAML, authentifié). +Le hero de la home (`home.yml`) supporte deux blocs dépliables : +- `approach` + `axes` : approche par dimension (numérique → code source, etc.) +- `audience` + `addressees` : à qui s'adresse le projet (collectifs, entreprises, collectivités) + ## Développement ```bash diff --git a/app/components/admin/AdminFieldText.vue b/app/components/admin/AdminFieldText.vue index 2f18ada..857e168 100644 --- a/app/components/admin/AdminFieldText.vue +++ b/app/components/admin/AdminFieldText.vue @@ -44,7 +44,7 @@ const id = computed(() => `field-${props.label.toLowerCase().replace(/\s+/g, '-' border-radius: 0.5rem; border: 1px solid hsl(var(--color-surface-light)); background: hsl(var(--color-bg)); - color: white; + color: hsl(var(--color-text)); font-size: 0.875rem; transition: border-color 0.2s; } diff --git a/app/components/admin/AdminFieldTextarea.vue b/app/components/admin/AdminFieldTextarea.vue index afddc12..a615a12 100644 --- a/app/components/admin/AdminFieldTextarea.vue +++ b/app/components/admin/AdminFieldTextarea.vue @@ -45,7 +45,7 @@ const id = computed(() => `field-${props.label.toLowerCase().replace(/\s+/g, '-' border-radius: 0.5rem; border: 1px solid hsl(var(--color-surface-light)); background: hsl(var(--color-bg)); - color: white; + color: hsl(var(--color-text)); font-size: 0.875rem; resize: vertical; min-height: 5rem; diff --git a/app/components/admin/AdminFormSection.vue b/app/components/admin/AdminFormSection.vue index bf87921..1f21fe6 100644 --- a/app/components/admin/AdminFormSection.vue +++ b/app/components/admin/AdminFormSection.vue @@ -32,7 +32,7 @@ defineProps<{ padding: 0.75rem 1rem; font-weight: 600; font-size: 0.9rem; - color: white; + color: hsl(var(--color-text)); cursor: pointer; background: hsl(var(--color-bg)); user-select: none; diff --git a/app/components/admin/AdminMarkdownEditor.vue b/app/components/admin/AdminMarkdownEditor.vue index 9a7d39e..b5183e3 100644 --- a/app/components/admin/AdminMarkdownEditor.vue +++ b/app/components/admin/AdminMarkdownEditor.vue @@ -129,7 +129,7 @@ const renderedHtml = computed(() => { } .md-tab--active { - color: white; + color: hsl(var(--color-text)); background: hsl(var(--color-surface)); } @@ -139,7 +139,7 @@ const renderedHtml = computed(() => { transition: color 0.2s; } .md-fullscreen:hover, -.md-fullscreen--active { color: white; } +.md-fullscreen--active { color: hsl(var(--color-text)); } .md-body { display: flex; @@ -171,7 +171,7 @@ const renderedHtml = computed(() => { padding: 1rem; border: none; background: hsl(var(--color-bg)); - color: white; + color: hsl(var(--color-text)); font-family: var(--font-mono, monospace); font-size: 0.85rem; line-height: 1.7; diff --git a/app/components/admin/AdminMediaBrowser.vue b/app/components/admin/AdminMediaBrowser.vue index 9417ccc..ce7d9f6 100644 --- a/app/components/admin/AdminMediaBrowser.vue +++ b/app/components/admin/AdminMediaBrowser.vue @@ -169,7 +169,7 @@ function formatSize(bytes: number): string { .media-name { font-size: 0.72rem; - color: white; + color: hsl(var(--color-text)); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; diff --git a/app/components/admin/AdminSidebar.vue b/app/components/admin/AdminSidebar.vue index 50f33b5..92452f0 100644 --- a/app/components/admin/AdminSidebar.vue +++ b/app/components/admin/AdminSidebar.vue @@ -139,7 +139,7 @@ async function logout() { .sidebar-link:hover { background: hsl(var(--color-surface)); - color: white; + color: hsl(var(--color-text)); } .sidebar-link--active { diff --git a/app/components/home/HeroSection.vue b/app/components/home/HeroSection.vue index 33d38b7..99fcb82 100644 --- a/app/components/home/HeroSection.vue +++ b/app/components/home/HeroSection.vue @@ -65,6 +65,8 @@ const hero = computed(() => { citations: Array.isArray(raw.citations) ? raw.citations : [], approach: raw.approach || '', axes: Array.isArray(raw.axes) ? raw.axes : [], + audience: raw.audience || '', + addressees: Array.isArray(raw.addressees) ? raw.addressees : [], } }) diff --git a/app/components/home/TypewriterText.vue b/app/components/home/TypewriterText.vue index 191b9a7..49e82ca 100644 --- a/app/components/home/TypewriterText.vue +++ b/app/components/home/TypewriterText.vue @@ -34,6 +34,17 @@ + + +
+

{{ hero.audience }}

+
+
+
{{ item.label }}
+
{{ item.value }}
+
+
+
@@ -50,6 +61,8 @@ interface HeroData { citations: string[] approach: string axes: HeroAxis[] + audience: string + addressees: HeroAxis[] } defineProps<{ @@ -213,6 +226,12 @@ defineProps<{ text-align: center; } +.hero-audience { + margin-top: 1rem; + padding-top: 0.75rem; + border-top: 1px solid hsl(var(--color-text) / 0.07); +} + .hero-approach-text { font-family: var(--font-sans); font-size: 0.82rem; diff --git a/app/pages/admin/book/[slug].vue b/app/pages/admin/book/[slug].vue index 07781ca..b2c9d5a 100644 --- a/app/pages/admin/book/[slug].vue +++ b/app/pages/admin/book/[slug].vue @@ -219,7 +219,7 @@ async function save() { border-radius: 0.375rem; border: 1px solid hsl(var(--color-surface-light)); background: hsl(var(--color-bg)); - color: white; + color: hsl(var(--color-text)); font-size: 0.85rem; } @@ -271,7 +271,7 @@ async function save() { } .song-tag-label:hover { - color: white; + color: hsl(var(--color-text)); } .song-star { diff --git a/app/pages/admin/book/index.vue b/app/pages/admin/book/index.vue index aae4343..0704c4a 100644 --- a/app/pages/admin/book/index.vue +++ b/app/pages/admin/book/index.vue @@ -328,7 +328,7 @@ async function removeChapter(slug: string) { .chapter-title { display: block; - color: white; + color: hsl(var(--color-text)); font-weight: 500; text-decoration: none; } @@ -390,7 +390,7 @@ async function removeChapter(slug: string) { border-radius: 0.375rem; border: 1px solid hsl(var(--color-surface-light)); background: hsl(var(--color-bg)); - color: white; + color: hsl(var(--color-text)); font-size: 0.8rem; } diff --git a/app/pages/admin/login.vue b/app/pages/admin/login.vue index 3ca3996..048b986 100644 --- a/app/pages/admin/login.vue +++ b/app/pages/admin/login.vue @@ -107,7 +107,7 @@ async function login() { border-radius: 0.5rem; border: 1px solid hsl(var(--color-surface-light)); background: hsl(var(--color-bg)); - color: white; + color: hsl(var(--color-text)); font-size: 0.9rem; margin-bottom: 1.25rem; } diff --git a/app/pages/admin/messages.vue b/app/pages/admin/messages.vue index f268bda..7c5c0db 100644 --- a/app/pages/admin/messages.vue +++ b/app/pages/admin/messages.vue @@ -164,7 +164,7 @@ function formatDate(iso: string) { border-radius: 0.375rem; border: 1px solid hsl(var(--color-surface-light)); background: hsl(var(--color-bg)); - color: white; + color: hsl(var(--color-text)); font-size: 0.8rem; } @@ -189,7 +189,7 @@ function formatDate(iso: string) { .action-btn:hover { background: hsl(var(--color-surface)); - color: white; + color: hsl(var(--color-text)); } .action-btn--save { diff --git a/app/pages/admin/site.vue b/app/pages/admin/site.vue index 4764a44..6fc68a7 100644 --- a/app/pages/admin/site.vue +++ b/app/pages/admin/site.vue @@ -105,7 +105,7 @@ async function save() { border-radius: 0.375rem; border: 1px solid hsl(var(--color-surface-light)); background: hsl(var(--color-bg)); - color: white; + color: hsl(var(--color-text)); font-size: 0.8rem; } diff --git a/app/pages/admin/songs.vue b/app/pages/admin/songs.vue index f979744..ad17a53 100644 --- a/app/pages/admin/songs.vue +++ b/app/pages/admin/songs.vue @@ -202,7 +202,7 @@ async function save() { border-radius: 0.375rem; border: 1px solid hsl(var(--color-surface-light)); background: hsl(var(--color-bg)); - color: white; + color: hsl(var(--color-text)); font-size: 0.8rem; width: 100%; } diff --git a/site/pages/home.yml b/site/pages/home.yml index 025d3fe..19209a0 100644 --- a/site/pages/home.yml +++ b/site/pages/home.yml @@ -12,12 +12,20 @@ hero: - Ce sont les 3 axes de l'espace dans lequel nous naviguons. approach: Dans chaque dimension, nous adressons ce qui est le plus en amont axes: + - label: citoyenne + value: la décision - label: numérique value: le code source - label: économie value: la création monétaire - - label: citoyenne - value: la décision + audience: "Dans cet espace, nous nous adressons :" + addressees: + - label: aux collectifs et associations + value: de toutes sortes + - label: aux entreprises + value: qui veulent innover, expérimenter + - label: aux collectivités + value: qui veulent émanciper leur population book: kicker: Modèle économique title: Une économie du don — enfin concevable