forked from EHV/librodrome
feat: intégration nuxt-umami + refonte logo SVG TheHeader
- nuxt-umami@3.2.1 installé, module configuré (host + website ID) - suppression injection script manuelle dans app.vue - TheHeader : logo § repassé en tracé SVG unique avec dégradé primary→accent Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
-11
@@ -20,17 +20,6 @@ onMounted(() => paletteStore.applyToDOM())
|
|||||||
const config = useRuntimeConfig()
|
const config = useRuntimeConfig()
|
||||||
const siteUrl = (config.public.siteUrl as string) || 'https://librodrome.org'
|
const siteUrl = (config.public.siteUrl as string) || 'https://librodrome.org'
|
||||||
|
|
||||||
// Umami analytics — inject script only when configured
|
|
||||||
if (config.public.umamiWebsiteId && config.public.umamiUrl) {
|
|
||||||
useHead({
|
|
||||||
script: [{
|
|
||||||
src: `${config.public.umamiUrl}/script.js`,
|
|
||||||
defer: true,
|
|
||||||
'data-website-id': config.public.umamiWebsiteId,
|
|
||||||
}],
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
// Global SEO defaults — surchargeables page par page via useSeoPage()
|
// Global SEO defaults — surchargeables page par page via useSeoPage()
|
||||||
useHead({
|
useHead({
|
||||||
titleTemplate: (title) => title ? `${title} — Le Librodrome` : 'Le Librodrome',
|
titleTemplate: (title) => title ? `${title} — Le Librodrome` : 'Le Librodrome',
|
||||||
|
|||||||
@@ -3,13 +3,21 @@
|
|||||||
<div class="container-content flex h-[var(--header-height)] items-center justify-between px-4">
|
<div class="container-content flex h-[var(--header-height)] items-center justify-between px-4">
|
||||||
<!-- Logo -->
|
<!-- Logo -->
|
||||||
<NuxtLink to="/" class="logo-link flex items-center gap-2.5">
|
<NuxtLink to="/" class="logo-link flex items-center gap-2.5">
|
||||||
<svg class="logo-icon" viewBox="0 0 64 80" fill="none" aria-hidden="true">
|
<svg class="logo-icon" viewBox="0 0 46 78" fill="none" aria-hidden="true">
|
||||||
<path d="M38 8 C28 6 18 10 18 20 C18 28 26 32 34 34 C42 36 48 40 48 48 C48 52 46 55 42 57 L44 40 C44 36 40 32 34 30 C28 28 22 24 22 18 C22 14 24 11 28 10Z" fill="currentColor" opacity="0.9"/>
|
<defs>
|
||||||
<path d="M26 72 C36 74 46 70 46 60 C46 52 38 48 30 46 C22 44 16 40 16 32 C16 28 18 25 22 23 L20 40 C20 44 24 48 30 50 C36 52 42 56 42 62 C42 66 40 69 36 70Z" fill="currentColor" opacity="0.9"/>
|
<linearGradient id="sect-grad" x1="0" y1="0" x2="0" y2="1">
|
||||||
<path d="M20 16 C20 8 28 4 36 6 C42 8 46 14 44 20" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" fill="none" opacity="0.7"/>
|
<stop offset="0%" stop-color="hsl(var(--color-primary))"/>
|
||||||
<path d="M44 64 C44 72 36 76 28 74 C22 72 18 66 20 60" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" fill="none" opacity="0.7"/>
|
<stop offset="100%" stop-color="hsl(var(--color-accent))"/>
|
||||||
<path d="M36 4 Q42 2 46 6" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" fill="none" opacity="0.5"/>
|
</linearGradient>
|
||||||
<path d="M28 76 Q22 78 18 74" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" fill="none" opacity="0.5"/>
|
</defs>
|
||||||
|
<path
|
||||||
|
d="M 33 10 C 26 7 18 7 14 11 C 8 15 7 24 10 31 C 13 38 21 40 27 44 C 33 48 38 55 35 62 C 32 69 24 72 17 70 C 10 68 8 72 10 75 C 12 78 20 79 28 76"
|
||||||
|
stroke="url(#sect-grad)"
|
||||||
|
stroke-width="5"
|
||||||
|
stroke-linecap="round"
|
||||||
|
stroke-linejoin="round"
|
||||||
|
fill="none"
|
||||||
|
/>
|
||||||
</svg>
|
</svg>
|
||||||
<span class="logo-text">{{ site?.identity.name }}</span>
|
<span class="logo-text">{{ site?.identity.name }}</span>
|
||||||
</NuxtLink>
|
</NuxtLink>
|
||||||
@@ -78,7 +86,6 @@ const allNav = computed(() => [...axes.value, ...extra.value])
|
|||||||
.logo-icon {
|
.logo-icon {
|
||||||
width: 1.6rem;
|
width: 1.6rem;
|
||||||
height: 2rem;
|
height: 2rem;
|
||||||
color: hsl(var(--color-primary));
|
|
||||||
flex-shrink: 0;
|
flex-shrink: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -15,8 +15,16 @@ export default defineNuxtConfig({
|
|||||||
'@vueuse/nuxt',
|
'@vueuse/nuxt',
|
||||||
'@nuxt/image',
|
'@nuxt/image',
|
||||||
'@nuxtjs/sitemap',
|
'@nuxtjs/sitemap',
|
||||||
|
'nuxt-umami',
|
||||||
],
|
],
|
||||||
|
|
||||||
|
umami: {
|
||||||
|
host: 'https://stats.librodrome.org',
|
||||||
|
id: '95ff616d-9ce1-47d9-bca2-f6ddc344a99a',
|
||||||
|
autoTrack: true,
|
||||||
|
ignoreLocalhost: true,
|
||||||
|
},
|
||||||
|
|
||||||
site: {
|
site: {
|
||||||
url: 'https://librodrome.org',
|
url: 'https://librodrome.org',
|
||||||
name: 'Le Librodrome',
|
name: 'Le Librodrome',
|
||||||
|
|||||||
@@ -18,6 +18,7 @@
|
|||||||
"@vueuse/nuxt": "^14.2.1",
|
"@vueuse/nuxt": "^14.2.1",
|
||||||
"better-sqlite3": "^12.6.2",
|
"better-sqlite3": "^12.6.2",
|
||||||
"nuxt": "^4.3.1",
|
"nuxt": "^4.3.1",
|
||||||
|
"nuxt-umami": "^3.2.1",
|
||||||
"pdfjs-dist": "^5.4.624",
|
"pdfjs-dist": "^5.4.624",
|
||||||
"vue": "^3.5.28",
|
"vue": "^3.5.28",
|
||||||
"vue-router": "^4.6.4",
|
"vue-router": "^4.6.4",
|
||||||
|
|||||||
Generated
+52
-4
@@ -32,6 +32,9 @@ importers:
|
|||||||
nuxt:
|
nuxt:
|
||||||
specifier: ^4.3.1
|
specifier: ^4.3.1
|
||||||
version: 4.3.1(@parcel/watcher@2.5.6)(@types/node@25.2.3)(@vue/compiler-sfc@3.5.28)(better-sqlite3@12.6.2)(cac@6.7.14)(db0@0.3.4(better-sqlite3@12.6.2))(ioredis@5.9.3)(magicast@0.5.2)(rollup@4.57.1)(terser@5.46.0)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(terser@5.46.0)(yaml@2.8.2))(yaml@2.8.2)
|
version: 4.3.1(@parcel/watcher@2.5.6)(@types/node@25.2.3)(@vue/compiler-sfc@3.5.28)(better-sqlite3@12.6.2)(cac@6.7.14)(db0@0.3.4(better-sqlite3@12.6.2))(ioredis@5.9.3)(magicast@0.5.2)(rollup@4.57.1)(terser@5.46.0)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(terser@5.46.0)(yaml@2.8.2))(yaml@2.8.2)
|
||||||
|
nuxt-umami:
|
||||||
|
specifier: ^3.2.1
|
||||||
|
version: 3.2.1(magicast@0.5.2)
|
||||||
pdfjs-dist:
|
pdfjs-dist:
|
||||||
specifier: ^5.4.624
|
specifier: ^5.4.624
|
||||||
version: 5.4.624
|
version: 5.4.624
|
||||||
@@ -765,6 +768,10 @@ packages:
|
|||||||
resolution: {integrity: sha512-otHi6gAoYXKLrp8m27ZjX1PjxOPaltQ4OiUs/BhkW995mF/vXf8SWQTw68fww+Uric0v+XgoVrP9icDi+yT6zw==}
|
resolution: {integrity: sha512-otHi6gAoYXKLrp8m27ZjX1PjxOPaltQ4OiUs/BhkW995mF/vXf8SWQTw68fww+Uric0v+XgoVrP9icDi+yT6zw==}
|
||||||
engines: {node: '>=18.20.6'}
|
engines: {node: '>=18.20.6'}
|
||||||
|
|
||||||
|
'@nuxt/kit@3.21.2':
|
||||||
|
resolution: {integrity: sha512-Bd6m6mrDrqpBEbX+g0rc66/ALd1sxlgdx5nfK9MAYO0yKLTOSK7McSYz1KcOYn3LQFCXOWfvXwaqih/b+REI1g==}
|
||||||
|
engines: {node: '>=18.12.0'}
|
||||||
|
|
||||||
'@nuxt/kit@4.3.1':
|
'@nuxt/kit@4.3.1':
|
||||||
resolution: {integrity: sha512-UjBFt72dnpc+83BV3OIbCT0YHLevJtgJCHpxMX0YRKWLDhhbcDdUse87GtsQBrjvOzK7WUNUYLDS/hQLYev5rA==}
|
resolution: {integrity: sha512-UjBFt72dnpc+83BV3OIbCT0YHLevJtgJCHpxMX0YRKWLDhhbcDdUse87GtsQBrjvOzK7WUNUYLDS/hQLYev5rA==}
|
||||||
engines: {node: '>=18.12.0'}
|
engines: {node: '>=18.12.0'}
|
||||||
@@ -3510,6 +3517,9 @@ packages:
|
|||||||
nuxt-site-config@4.0.8:
|
nuxt-site-config@4.0.8:
|
||||||
resolution: {integrity: sha512-H7wHoOJ5Z6ZnTqD5vUugaKkWZbejZ9kGmzpr2dheOaC6RdT8JafCfMrmJG7W+cyJiJJ3YmzL+bzPBW2bW6MExA==}
|
resolution: {integrity: sha512-H7wHoOJ5Z6ZnTqD5vUugaKkWZbejZ9kGmzpr2dheOaC6RdT8JafCfMrmJG7W+cyJiJJ3YmzL+bzPBW2bW6MExA==}
|
||||||
|
|
||||||
|
nuxt-umami@3.2.1:
|
||||||
|
resolution: {integrity: sha512-82cf3kcrMn4Iq0rJ2Blfl48AqLWqRubEpxOinOoxqW7taZAd5SgZcCdCj7y4qXSt0W5DhBYgaq4IboyGFHoVUQ==}
|
||||||
|
|
||||||
nuxt@4.3.1:
|
nuxt@4.3.1:
|
||||||
resolution: {integrity: sha512-bl+0rFcT5Ax16aiWFBFPyWcsTob19NTZaDL5P6t0MQdK63AtgS6fN6fwvwdbXtnTk6/YdCzlmuLzXhSM22h0OA==}
|
resolution: {integrity: sha512-bl+0rFcT5Ax16aiWFBFPyWcsTob19NTZaDL5P6t0MQdK63AtgS6fN6fwvwdbXtnTk6/YdCzlmuLzXhSM22h0OA==}
|
||||||
engines: {node: ^20.19.0 || >=22.12.0}
|
engines: {node: ^20.19.0 || >=22.12.0}
|
||||||
@@ -4019,6 +4029,9 @@ packages:
|
|||||||
remark-stringify@11.0.0:
|
remark-stringify@11.0.0:
|
||||||
resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==}
|
resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==}
|
||||||
|
|
||||||
|
request-ip@3.3.0:
|
||||||
|
resolution: {integrity: sha512-cA6Xh6e0fDBBBwH77SLJaJPBmD3nWVAcF9/XAcsrIHdjhFzFiB5aNQFytdjCGPezU3ROwrR11IddKAM08vohxA==}
|
||||||
|
|
||||||
require-directory@2.1.1:
|
require-directory@2.1.1:
|
||||||
resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==}
|
resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==}
|
||||||
engines: {node: '>=0.10.0'}
|
engines: {node: '>=0.10.0'}
|
||||||
@@ -5681,6 +5694,32 @@ snapshots:
|
|||||||
- magicast
|
- magicast
|
||||||
- uploadthing
|
- uploadthing
|
||||||
|
|
||||||
|
'@nuxt/kit@3.21.2(magicast@0.5.2)':
|
||||||
|
dependencies:
|
||||||
|
c12: 3.3.3(magicast@0.5.2)
|
||||||
|
consola: 3.4.2
|
||||||
|
defu: 6.1.7
|
||||||
|
destr: 2.0.5
|
||||||
|
errx: 0.1.0
|
||||||
|
exsolve: 1.0.8
|
||||||
|
ignore: 7.0.5
|
||||||
|
jiti: 2.6.1
|
||||||
|
klona: 2.0.6
|
||||||
|
knitwork: 1.3.0
|
||||||
|
mlly: 1.8.2
|
||||||
|
ohash: 2.0.11
|
||||||
|
pathe: 2.0.3
|
||||||
|
pkg-types: 2.3.0
|
||||||
|
rc9: 3.0.0
|
||||||
|
scule: 1.3.0
|
||||||
|
semver: 7.7.4
|
||||||
|
tinyglobby: 0.2.15
|
||||||
|
ufo: 1.6.3
|
||||||
|
unctx: 2.5.0
|
||||||
|
untyped: 2.0.0
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- magicast
|
||||||
|
|
||||||
'@nuxt/kit@4.3.1(magicast@0.5.2)':
|
'@nuxt/kit@4.3.1(magicast@0.5.2)':
|
||||||
dependencies:
|
dependencies:
|
||||||
c12: 3.3.3(magicast@0.5.2)
|
c12: 3.3.3(magicast@0.5.2)
|
||||||
@@ -6975,9 +7014,9 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
acorn: 8.15.0
|
acorn: 8.15.0
|
||||||
|
|
||||||
acorn-import-phases@1.0.4(acorn@8.15.0):
|
acorn-import-phases@1.0.4(acorn@8.16.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
acorn: 8.15.0
|
acorn: 8.16.0
|
||||||
|
|
||||||
acorn@8.15.0: {}
|
acorn@8.15.0: {}
|
||||||
|
|
||||||
@@ -8922,6 +8961,13 @@ snapshots:
|
|||||||
- vue
|
- vue
|
||||||
- zod
|
- zod
|
||||||
|
|
||||||
|
nuxt-umami@3.2.1(magicast@0.5.2):
|
||||||
|
dependencies:
|
||||||
|
'@nuxt/kit': 3.21.2(magicast@0.5.2)
|
||||||
|
request-ip: 3.3.0
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- magicast
|
||||||
|
|
||||||
nuxt@4.3.1(@parcel/watcher@2.5.6)(@types/node@25.2.3)(@vue/compiler-sfc@3.5.28)(better-sqlite3@12.6.2)(cac@6.7.14)(db0@0.3.4(better-sqlite3@12.6.2))(ioredis@5.9.3)(magicast@0.5.2)(rollup@4.57.1)(terser@5.46.0)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(terser@5.46.0)(yaml@2.8.2))(yaml@2.8.2):
|
nuxt@4.3.1(@parcel/watcher@2.5.6)(@types/node@25.2.3)(@vue/compiler-sfc@3.5.28)(better-sqlite3@12.6.2)(cac@6.7.14)(db0@0.3.4(better-sqlite3@12.6.2))(ioredis@5.9.3)(magicast@0.5.2)(rollup@4.57.1)(terser@5.46.0)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(terser@5.46.0)(yaml@2.8.2))(yaml@2.8.2):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@dxup/nuxt': 0.3.2(magicast@0.5.2)
|
'@dxup/nuxt': 0.3.2(magicast@0.5.2)
|
||||||
@@ -9686,6 +9732,8 @@ snapshots:
|
|||||||
mdast-util-to-markdown: 2.1.2
|
mdast-util-to-markdown: 2.1.2
|
||||||
unified: 11.0.5
|
unified: 11.0.5
|
||||||
|
|
||||||
|
request-ip@3.3.0: {}
|
||||||
|
|
||||||
require-directory@2.1.1: {}
|
require-directory@2.1.1: {}
|
||||||
|
|
||||||
require-from-string@2.0.2: {}
|
require-from-string@2.0.2: {}
|
||||||
@@ -10533,8 +10581,8 @@ snapshots:
|
|||||||
'@webassemblyjs/ast': 1.14.1
|
'@webassemblyjs/ast': 1.14.1
|
||||||
'@webassemblyjs/wasm-edit': 1.14.1
|
'@webassemblyjs/wasm-edit': 1.14.1
|
||||||
'@webassemblyjs/wasm-parser': 1.14.1
|
'@webassemblyjs/wasm-parser': 1.14.1
|
||||||
acorn: 8.15.0
|
acorn: 8.16.0
|
||||||
acorn-import-phases: 1.0.4(acorn@8.15.0)
|
acorn-import-phases: 1.0.4(acorn@8.16.0)
|
||||||
browserslist: 4.28.1
|
browserslist: 4.28.1
|
||||||
chrome-trace-event: 1.0.4
|
chrome-trace-event: 1.0.4
|
||||||
enhanced-resolve: 5.19.0
|
enhanced-resolve: 5.19.0
|
||||||
|
|||||||
Reference in New Issue
Block a user