All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
- [slug].vue : sommaire sticky (overflow:clip sur parent), prev/next en haut, 6 shadoks geek (pinguin+USB, web-of-trust, rubber-duck, caféine, debugger loupe, rack serveur) - Nouveaux types de sections : territoire (bouquet sweethomeCloud, 2 modèles éco, tableau matériel dépliable), projet (carte gestation) - cloud-libre.yml : section sweethomeCloud complète avec infra 50 000 hab. (~2€/an/hab) - authentification-wot.yml : trustWallet, correction WoT Duniter (Ed25519+Scrypt, sigQty=5, stepMax=3), DID/VC standards - logiciel-libre.yml : carte projet wishBounty - home.yml + numerique.yml : cloud-libre → sweethomeCloud, description RGPD/local-first - AxisBlock.vue : bulles de présentation inline dans les cards (plus de tooltip absolu) - Analytics : useTracking.ts (Umami), docker-compose.umami.yml, /api/stats fédération - nuxt.config.ts : config Umami runtime Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
41 lines
1006 B
Vue
41 lines
1006 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())
|
|
|
|
// Umami analytics — inject script only when configured
|
|
const runtimeConfig = useRuntimeConfig()
|
|
if (runtimeConfig.public.umamiWebsiteId && runtimeConfig.public.umamiUrl) {
|
|
useHead({
|
|
script: [{
|
|
src: `${runtimeConfig.public.umamiUrl}/script.js`,
|
|
defer: true,
|
|
'data-website-id': runtimeConfig.public.umamiWebsiteId,
|
|
}],
|
|
})
|
|
}
|
|
|
|
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>
|