diff --git a/app/app.config.ts b/app/app.config.ts
index 287443a..77b52a4 100644
--- a/app/app.config.ts
+++ b/app/app.config.ts
@@ -6,12 +6,6 @@ export default defineAppConfig({
},
header: {
height: '4rem',
- nav: [
- { label: 'Numérique', to: '/#numerique' },
- { label: 'Économique', to: '/#economique' },
- { label: 'Citoyenne', to: '/#citoyenne' },
- { label: 'Événement', to: '/evenement' },
- ],
},
footer: {
credits: '© 2026 Le Librodrome — Productions collectives',
@@ -29,4 +23,7 @@ export default defineAppConfig({
libredecision: {
url: import.meta.dev ? 'http://localhost:3002' : 'https://decision.laplank.org',
},
+ sejeteral0: {
+ url: import.meta.dev ? 'http://localhost:3009' : 'https://collectivites.librodrome.org',
+ },
})
diff --git a/app/assets/css/main.css b/app/assets/css/main.css
index 595b7f9..a5e5974 100644
--- a/app/assets/css/main.css
+++ b/app/assets/css/main.css
@@ -5,9 +5,9 @@
:root {
--color-primary: 18 80% 45%;
--color-accent: 32 85% 50%;
- --color-bg: 20 10% 10%;
- --color-surface: 20 10% 14%;
- --color-surface-light: 20 8% 20%;
+ --color-bg: 220 12% 15%;
+ --color-surface: 220 10% 19%;
+ --color-surface-light: 220 8% 24%;
--color-text: 0 0% 100%;
--color-text-muted: 0 0% 65%;
diff --git a/app/components/home/AxisBlock.vue b/app/components/home/AxisBlock.vue
index b3deee7..c878792 100644
--- a/app/components/home/AxisBlock.vue
+++ b/app/components/home/AxisBlock.vue
@@ -3,7 +3,7 @@
@@ -16,57 +16,39 @@
class="axis-item card-surface"
:class="{ 'axis-item--gestation': item.gestation }"
>
-
-
-
-
- {{ item.label }}
-
-
- En gestation
-
-
-
- {{ item.description }}
-
-
-
-
-
-
+
+
+
+
-
-
- Découvrir
-
-
+
+ {{ item.label }}
+
+
+ En gestation
+
+
-
- {{ item.description }}
+
+
+
+
+
@@ -88,6 +70,7 @@ interface AxisItem {
gestation?: boolean
icon?: string
actions?: AxisAction[]
+ presentation?: { title: string; text: string }
}
defineProps<{
@@ -108,6 +91,22 @@ function handleAction(id: string) {
else if (id === 'open-pdf') emit('open-pdf')
else if (id === 'launch-gratewizard') emit('launch-gratewizard')
}
+
+function iconClass(name: string) {
+ return `i-lucide-${name}`
+}
+
+function itemTag(item: AxisItem) {
+ if (item.href) return 'a'
+ if (item.to) return resolveComponent('NuxtLink')
+ return 'div'
+}
+
+function itemAttrs(item: AxisItem) {
+ if (item.href) return { href: item.href, target: '_blank', rel: 'noopener noreferrer' }
+ if (item.to) return { to: item.to }
+ return {}
+}
diff --git a/app/components/home/TypewriterText.vue b/app/components/home/TypewriterText.vue
index bcb2496..1be2c19 100644
--- a/app/components/home/TypewriterText.vue
+++ b/app/components/home/TypewriterText.vue
@@ -1,36 +1,25 @@
-
+
-
+
-
-
- {{ currentSentence.text }}
-
-
+ {{ currentText }}
+
@@ -60,13 +49,11 @@ const props = defineProps<{
const stayingSentences = computed(() => props.sentences.filter(s => s.stays))
const {
- currentIndex,
- currentSentence,
- showActive,
+ currentText,
+ currentStyle,
+ isVisible,
lockedSentences,
isComplete,
- onEntered,
- onLeft,
start,
skipToEnd,
} = useTypewriter(props.sentences)
@@ -91,7 +78,7 @@ function styleClass(style?: string) {