feat: Initial layout with SiteHeader / SiteFooter

This commit is contained in:
2026-01-13 09:05:31 -05:00
parent ca2e660c05
commit 3d7a2b2ef6
8 changed files with 54 additions and 9 deletions

View File

@@ -0,0 +1,13 @@
<script setup lang="ts">
</script>
<template>
<UFooter id="site-footer">
<template #left>
<SiteFooterCopyright />
</template>
<template #right>
<SiteFooterCredits />
</template>
</UFooter>
</template>

View File

@@ -0,0 +1,5 @@
<template>
<div>
© {{ new Date().getFullYear() }}
</div>
</template>

View File

@@ -0,0 +1,6 @@
<template>
<div class="flex items-center gap-1">
Fait avec <UIcon name="i-lucide-heart" /> par
<ULink href="https://websimple.com" target="_blank" external title="Site web développé par Websimple">Websimple</ULink>
</div>
</template>

View File

@@ -0,0 +1,7 @@
<script setup lang="ts">
const title = "Moonshine";
</script>
<template>
<UHeader :title="title" />
</template>

View File

@@ -1,8 +1,13 @@
<script setup lang="ts"> <script setup lang="ts">
import { fr } from "@nuxt/ui/locale";
</script> </script>
<template> <template>
<div id="layout-default"> <UApp id="layout-default" :locale="fr">
<NuxtPage /> <SiteHeader />
</div> <UMain>
<slot />
</UMain>
<SiteFooter />
</UApp>
</template> </template>

View File

@@ -2,7 +2,5 @@
</script> </script>
<template> <template>
<div id="page-node-from-uri"> <div id="page-node-from-uri" />
<h1>Moonshine</h1>
</div>
</template> </template>

View File

@@ -14,6 +14,7 @@
"release": "pnpm lint && changelogen --noAuthors --release --push" "release": "pnpm lint && changelogen --noAuthors --release --push"
}, },
"dependencies": { "dependencies": {
"@iconify-json/lucide": "^1.2.84",
"@nuxt/ui": "4.3.0", "@nuxt/ui": "4.3.0",
"nuxt": "^4.2.2", "nuxt": "^4.2.2",
"tailwindcss": "^4.1.18", "tailwindcss": "^4.1.18",

View File

@@ -8,6 +8,9 @@ importers:
.: .:
dependencies: dependencies:
'@iconify-json/lucide':
specifier: ^1.2.84
version: 1.2.84
'@nuxt/ui': '@nuxt/ui':
specifier: 4.3.0 specifier: 4.3.0
version: 4.3.0(@babel/parser@7.28.6)(@floating-ui/dom@1.7.4)(@tiptap/extension-drag-handle@3.15.3(@tiptap/core@3.13.0(@tiptap/pm@3.13.0))(@tiptap/extension-collaboration@3.15.3(@tiptap/core@3.13.0(@tiptap/pm@3.13.0))(@tiptap/pm@3.13.0)(@tiptap/y-tiptap@3.0.1(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.4)(y-protocols@1.0.7(yjs@13.6.29))(yjs@13.6.29))(yjs@13.6.29))(@tiptap/extension-node-range@3.15.3(@tiptap/core@3.13.0(@tiptap/pm@3.13.0))(@tiptap/pm@3.13.0))(@tiptap/pm@3.13.0)(@tiptap/y-tiptap@3.0.1(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.4)(y-protocols@1.0.7(yjs@13.6.29))(yjs@13.6.29)))(@tiptap/extensions@3.15.3(@tiptap/core@3.13.0(@tiptap/pm@3.13.0))(@tiptap/pm@3.13.0))(change-case@5.4.4)(db0@0.3.4)(embla-carousel@8.6.0)(ioredis@5.9.1)(magicast@0.5.1)(typescript@5.9.3)(vite@7.3.1(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2))(vue-router@4.6.4(vue@3.5.26(typescript@5.9.3)))(vue@3.5.26(typescript@5.9.3)) version: 4.3.0(@babel/parser@7.28.6)(@floating-ui/dom@1.7.4)(@tiptap/extension-drag-handle@3.15.3(@tiptap/core@3.13.0(@tiptap/pm@3.13.0))(@tiptap/extension-collaboration@3.15.3(@tiptap/core@3.13.0(@tiptap/pm@3.13.0))(@tiptap/pm@3.13.0)(@tiptap/y-tiptap@3.0.1(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.4)(y-protocols@1.0.7(yjs@13.6.29))(yjs@13.6.29))(yjs@13.6.29))(@tiptap/extension-node-range@3.15.3(@tiptap/core@3.13.0(@tiptap/pm@3.13.0))(@tiptap/pm@3.13.0))(@tiptap/pm@3.13.0)(@tiptap/y-tiptap@3.0.1(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.4)(y-protocols@1.0.7(yjs@13.6.29))(yjs@13.6.29)))(@tiptap/extensions@3.15.3(@tiptap/core@3.13.0(@tiptap/pm@3.13.0))(@tiptap/pm@3.13.0))(change-case@5.4.4)(db0@0.3.4)(embla-carousel@8.6.0)(ioredis@5.9.1)(magicast@0.5.1)(typescript@5.9.3)(vite@7.3.1(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2))(vue-router@4.6.4(vue@3.5.26(typescript@5.9.3)))(vue@3.5.26(typescript@5.9.3))
@@ -17,9 +20,6 @@ importers:
tailwindcss: tailwindcss:
specifier: ^4.1.18 specifier: ^4.1.18
version: 4.1.18 version: 4.1.18
typescript:
specifier: ^5.9.3
version: 5.9.3
vue: vue:
specifier: ^3.5.26 specifier: ^3.5.26
version: 3.5.26(typescript@5.9.3) version: 3.5.26(typescript@5.9.3)
@@ -36,6 +36,9 @@ importers:
eslint: eslint:
specifier: ^9.39.2 specifier: ^9.39.2
version: 9.39.2(jiti@2.6.1) version: 9.39.2(jiti@2.6.1)
typescript:
specifier: ^5.9.3
version: 5.9.3
packages: packages:
@@ -620,6 +623,9 @@ packages:
resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==}
engines: {node: '>=18.18'} engines: {node: '>=18.18'}
'@iconify-json/lucide@1.2.84':
resolution: {integrity: sha512-m45MY1aW2swSK6Neb3J2qdZ+BxZ1VTdN7UeoXENwyMACG9bqGHWYJYxWoFzwoSnCfYLyKWTcBhesBgMd5IrUzQ==}
'@iconify/collections@1.0.638': '@iconify/collections@1.0.638':
resolution: {integrity: sha512-QP163IfZcCxwEghlKGzVZzYS2VZtdBkyc16LbqQ5s92VgL5oZ/9iQKBwLAPZihJxQb2gWtFQir5Fp25Rfs9YFw==} resolution: {integrity: sha512-QP163IfZcCxwEghlKGzVZzYS2VZtdBkyc16LbqQ5s92VgL5oZ/9iQKBwLAPZihJxQb2gWtFQir5Fp25Rfs9YFw==}
@@ -5503,6 +5509,10 @@ snapshots:
'@humanwhocodes/retry@0.4.3': {} '@humanwhocodes/retry@0.4.3': {}
'@iconify-json/lucide@1.2.84':
dependencies:
'@iconify/types': 2.0.0
'@iconify/collections@1.0.638': '@iconify/collections@1.0.638':
dependencies: dependencies:
'@iconify/types': 2.0.0 '@iconify/types': 2.0.0