- Source unique : supprime app/data/librodrome.config.yml, renomme site/ en bookplayer.config.yml - Morceaux : renommés avec slugs lisibles, fichiers audio renommés, inversion ch2↔ch3 corrigée - Chapitres : 11 fichiers .md réécrits avec le vrai contenu du livre (synthèse fidèle du PDF) - Routes : /lire → /modele-eco, /ecouter → /en-musique, redirections 301 - Admin chapitres : champs structurés (titre, description, temps lecture), compteur mots - Éditeur markdown : mode split, plein écran, support Tab, meilleur rendu aperçu - Admin morceaux : drag & drop, ajout/suppression, gestion playlist - Light mode : palettes printemps/été plus saturées et contrastées, teintes primary - Raccourcis clavier player : espace, flèches gauche/droite - Paroles : toggle supprimé, toujours visibles et scrollables - Nouvelles pages : autonomie, evenement Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
29 lines
650 B
Vue
29 lines
650 B
Vue
<template>
|
|
<div class="min-h-dvh">
|
|
<NuxtLoadingIndicator color="hsl(12, 76%, 48%)" />
|
|
<NuxtRouteAnnouncer />
|
|
|
|
<NuxtLayout>
|
|
<NuxtPage />
|
|
</NuxtLayout>
|
|
|
|
<ClientOnly>
|
|
<PlayerPersistent />
|
|
</ClientOnly>
|
|
</div>
|
|
</template>
|
|
|
|
<script setup lang="ts">
|
|
const paletteStore = usePaletteStore()
|
|
onMounted(() => paletteStore.applyToDOM())
|
|
|
|
useHead({
|
|
titleTemplate: (title) => {
|
|
return title ? `${title} — Le Librodrome` : 'Le librodrome'
|
|
},
|
|
meta: [
|
|
{ name: 'description', content: 'Une économie du don — enfin concevable. Un livre et des chansons, lecture guidée et écoute libre.' },
|
|
],
|
|
})
|
|
</script>
|