-
-
-
- {{ content?.hero.kicker }}
-
-
-
-
-
-
-
-
-
- {{ content?.hero.subtitle }}
-
-
-
-
-
- {{ content?.hero.footnote }}
-
-
-
-
-
-
- {{ content?.hero.cta.label }}
-
-
-
-
-
-
+
+
diff --git a/app/composables/useTypewriter.ts b/app/composables/useTypewriter.ts
new file mode 100644
index 0000000..117f659
--- /dev/null
+++ b/app/composables/useTypewriter.ts
@@ -0,0 +1,108 @@
+export interface TypewriterSentence {
+ text: string
+ style?: 'title' | 'citation' | 'text'
+ stays?: boolean
+ separator?: boolean
+}
+
+interface SequenceOptions {
+ holdMs?: number
+ gapMs?: number
+}
+
+export function useTypewriter(sentences: TypewriterSentence[], options: SequenceOptions = {}) {
+ const {
+ holdMs = 2400,
+ gapMs = 300,
+ } = options
+
+ const currentIndex = ref(-1)
+ const showActive = ref(false)
+ const lockedSentences = ref
([])
+ const isComplete = ref(false)
+
+ let holdTimer: ReturnType | null = null
+
+ const currentSentence = computed(() =>
+ currentIndex.value >= 0 && currentIndex.value < sentences.length
+ ? sentences[currentIndex.value]
+ : null,
+ )
+
+ function clearTimer() {
+ if (holdTimer) {
+ clearTimeout(holdTimer)
+ holdTimer = null
+ }
+ }
+
+ function showNext() {
+ const nextIdx = currentIndex.value + 1
+ if (nextIdx >= sentences.length) {
+ isComplete.value = true
+ return
+ }
+
+ currentIndex.value = nextIdx
+ const sentence = sentences[nextIdx]
+
+ if (sentence.separator) {
+ lockedSentences.value = [...lockedSentences.value, { text: '', separator: true }]
+ }
+
+ showActive.value = true
+ }
+
+ /** Called by component via @after-enter on Transition */
+ function onEntered() {
+ holdTimer = setTimeout(() => {
+ showActive.value = false
+ }, holdMs)
+ }
+
+ /** Called by component via @after-leave on Transition */
+ function onLeft() {
+ const sentence = sentences[currentIndex.value]
+ if (sentence?.stays) {
+ lockedSentences.value = [...lockedSentences.value, { ...sentence }]
+ }
+ setTimeout(showNext, gapMs)
+ }
+
+ function start() {
+ showNext()
+ }
+
+ function skipToEnd() {
+ clearTimer()
+ showActive.value = false
+
+ const locked: TypewriterSentence[] = []
+ for (const sentence of sentences) {
+ if (sentence.separator) {
+ locked.push({ text: '', separator: true })
+ }
+ if (sentence.stays) {
+ locked.push({ ...sentence })
+ }
+ }
+
+ lockedSentences.value = locked
+ currentIndex.value = sentences.length - 1
+ isComplete.value = true
+ }
+
+ onUnmounted(clearTimer)
+
+ return {
+ currentIndex: readonly(currentIndex),
+ currentSentence,
+ showActive,
+ lockedSentences: readonly(lockedSentences),
+ isComplete: readonly(isComplete),
+ onEntered,
+ onLeft,
+ start,
+ skipToEnd,
+ }
+}
diff --git a/app/pages/decision.vue b/app/pages/decision.vue
new file mode 100644
index 0000000..3a96de3
--- /dev/null
+++ b/app/pages/decision.vue
@@ -0,0 +1,104 @@
+
+
+
+
+
+
+
+
Plateforme Décision
+
+ Se donner les moyens de la décision collective.
+
+
+
+
+
+
+
+
{{ feature.title }}
+
{{ feature.text }}
+
+
+
+
+
+
+
+ Ouvrir Glibredecision
+
+
+
+ Retour à l'accueil
+
+
+
+
+
+
+
+
+
+
diff --git a/app/pages/gestation/[slug].vue b/app/pages/gestation/[slug].vue
new file mode 100644
index 0000000..2b65003
--- /dev/null
+++ b/app/pages/gestation/[slug].vue
@@ -0,0 +1,94 @@
+
+
+
+
+
+
+
+ {{ item?.label ?? 'En gestation' }}
+
+
+
+ {{ item?.description ?? 'Cette initiative est en cours de préparation.' }}
+
+
+
+
+
+
+ {{ item.presentation.title }}
+
+
+ {{ item.presentation.text }}
+
+
En cours de développement.
+
+
+
+
+
+ Retour à l'accueil
+
+
+
+
+
+
+
+
+
+
diff --git a/app/pages/index.vue b/app/pages/index.vue
index 503ed5b..06eaeec 100644
--- a/app/pages/index.vue
+++ b/app/pages/index.vue
@@ -1,8 +1,8 @@
-
-
+
+
diff --git a/site/pages/home.yml b/site/pages/home.yml
index 0c9e65a..8dfc4ca 100644
--- a/site/pages/home.yml
+++ b/site/pages/home.yml
@@ -1,62 +1,109 @@
hero:
- kicker: Autonomie collective des bassins de vie
- title: Le librodrome
- subtitle: Créer une économie ? Couvrir nos besoins pour vivre et nourrir nos plaisirs vivre. Ouverture d'une plateforme
- de productions collectives, pour facilier la création d'équipes, la préparation et la réalisation de ces
- productions.
- footnote: Ce projet est ouvert. Chaque personne qui souhaite se mobiliser pour participer à une production est invitée à
- laisser un message. Pour poser des questions ou laisser un mail.
- cta:
- label: En savoir plus sur le projet
- to: /a-propos
-book:
- kicker: Modèle économique
- title: Une économie du don — enfin concevable
- description: Un livre et quelques chansons pour une proposition de modèle économique fondé sur le don. Le livre est
- accompagné de chansons qui le racontent, un peu autrement.
- coverImage: /images/book-cover-spread.jpg
- coverAlt: Couverture — Une économie du don, enfin concevable
- cta:
- player: Présentation musicale
- pdf: Lecture du livre
-bookPresentation:
- kicker: Le livre
- title: Une économie du don — enfin concevable
- description:
- - Ce livre explore les fondements d'une économie fondée sur le don.
- - Les chansons prolongent le propos en suivant le cours des chapitres, pour le rendre plus accessible. Elles créent
- une invitation inédite et immersive à la lecture.
- cta:
- label: Sommaire
- to: /modele-eco
-songs:
- kicker: Les chansons
- title: Des chansons qui racontent le livre, du moins une partie
- description: Chaque chanson est un prolongement musical d'un ou deux chapitres. Naturellement, les chansons ne
- restituent pas l'intégralité du livre.
- cta:
- label: Voir toutes les chansons
- to: /en-musique
-cooperative:
- icon: users
- kicker: Vision
- title: Une plateforme coopérative
- description:
- - L'ouverture de cette page librodrome est le premier pas vers une plateforme de productions collectives. Un espace
- où les créateurs, producteurs et toute personne mobilisée, contribuent ensemble à faire émerger des projets de
- productions. La plateforme sera utile pour leur réalisation effective, le suivi et le retour d'expérience.
- - Ce projet est ouvert. Chaque contribution enrichit l'ensemble. Rejoignez-nous pour construire une autonomie
- collective à l'échelle des bassins de vie.
- cta:
- label: En savoir plus
- to: /a-propos
-grateWizardTeaser:
- kicker: Estimer les valeurs en DU - Les coefficients relatifs
- title: grateWizard
- description: Une webapp pour calculer des coefficients relatifs et estimer les valeurs dans une économie du don.
- Relatifs à la moyenne, à l'ancienneté, au solde net, au volume disponible.
- cta:
- launch: Lancer l'appli
- more:
- label: En savoir plus
- to: /gratewizard
+ typewriter:
+ sentences:
+ - text: "Construire une autonomie collective"
+ style: title
+ stays: false
+ - text: "à l'échelle des bassins de vie."
+ style: title
+ stays: false
+ - text: "Pousser les curseurs de l'autonomie numérique, économique et politique — et s'en donner les moyens"
+ style: title
+ stays: true
+ - text: "Il s'agit d'émancipation"
+ style: citation
+ stays: false
+ - text: "Les trois dimensions qui nous émancipent sont le numérique, l'économie et le politique"
+ style: citation
+ stays: false
+ - text: "Ce sont les 3 axes de l'espace dans lequel nous naviguons"
+ style: citation
+ stays: true
+ separator: true
+ - text: "Dans chaque dimension, nous adressons ce qui est le plus en amont"
+ style: text
+ stays: false
+ - text: "Pour le numérique, c'est le code source"
+ style: text
+ stays: false
+ - text: "Pour l'économie, c'est la création monétaire"
+ style: text
+ stays: false
+ - text: "Pour le politique, c'est la prise de décision — comment on choisit, comment on décide"
+ style: text
+ stays: true
+
+axes:
+ numerique:
+ title: Autonomie numérique
+ icon: monitor
+ items:
+ - label: Logiciel libre
+ description: Maîtriser le code source, c'est maîtriser l'outil. Le logiciel libre est la base de l'autonomie numérique.
+ to: /gestation/logiciel-libre
+ gestation: true
+ icon: code-2
+ presentation:
+ title: wishBounty
+ text: Application pour le financement fléché des développements.
+ - label: Authentification — WoT
+ description: Une toile de confiance décentralisée, sans autorité centrale. Chaque identité est certifiée par ses pairs.
+ to: /gestation/authentification-wot
+ gestation: true
+ icon: fingerprint
+ presentation:
+ title: trustWallet
+ text: Gestionnaire de confiances.
+ - label: Cloud libre
+ description: Héberger ses propres services pour ne dépendre de personne. Serveurs, noms de domaine, infrastructure.
+ to: /gestation/cloud-libre
+ gestation: true
+ icon: cloud
+ presentation:
+ title: Bouquet de services
+ text: "Un bouquet de services complet : Drive, Visio, Forum, Wiki, CMS. IA frugale localisée."
+ economie:
+ title: Autonomie économique
+ icon: coins
+ items:
+ - label: Monnaie libre
+ description: "La Ğ1 (June) : une monnaie co-créée par ses membres, sans dette ni intérêt. Le dividende universel comme base."
+ href: https://monnaie-libre.fr
+ icon: circle-dollar-sign
+ - label: Économie du don
+ description: Un livre et des chansons pour une proposition de modèle économique fondé sur le don.
+ icon: heart-handshake
+ actions:
+ - id: open-player
+ label: Présentation musicale
+ icon: play
+ - id: open-pdf
+ label: Lecture du livre
+ icon: book-open
+ - id: launch-gratewizard
+ label: grateWizard
+ icon: sparkles
+ - label: Productions collectives
+ description: Une plateforme pour faciliter la création d'équipes et la réalisation de productions à l'échelle des bassins de vie.
+ to: /gestation/productions-collectives
+ gestation: true
+ icon: users
+ politique:
+ title: Autonomie citoyenne
+ icon: landmark
+ items:
+ - label: Décision collective
+ description: Se donner les moyens de la décision collective.
+ to: /decision
+ icon: scale
+ - label: Tarifs de l'eau
+ description: Application pour obtenir justice sociale et incitation dynamique à la réduction. Permet de confier la décision à la population des communes.
+ to: /gestation/tarifs-eau
+ gestation: true
+ icon: droplets
+
+evenement:
+ title: Le librodrome,
+ subtitle: c'est également un événement.
+ to: /evenement
+ gestation: true