feat: Initial SiteFooter

This commit is contained in:
2026-03-26 11:07:07 -04:00
parent fa557c0f9e
commit 9181f91e7c
10 changed files with 90 additions and 13 deletions

View File

@@ -2,5 +2,6 @@
@import "@nuxt/ui";
@import "./containers.css";
@import "./links.css";
@import "./theme.css";
@import "./typography.css";

View File

@@ -0,0 +1,13 @@
/* Variant to target all children links without specific link or button classes */
@custom-variant links (& a:not([class*='link-']):not([class*='button-']));
/* Link styles */
@utility link-base {
@apply cursor-pointer transition;
}
@utility link-underline {
@apply link-base underline hover:decoration-primary;
}
@utility link-opacity {
@apply link-base hover:opacity-80;
}

View File

@@ -0,0 +1,15 @@
<script setup lang="ts">
const { data: siteOptions } = await useSiteOptions();
</script>
<template>
<footer class="links:link-prose bg-muted">
<div class="container py-3">
<AcfSocial
:social="siteOptions?.social"
class="flex items-center gap-1.5 links:link-opacity"
></AcfSocial>
</div>
<SiteFooterBottom />
</footer>
</template>

View File

@@ -0,0 +1,10 @@
<script setup lang="ts"></script>
<template>
<div class="bg-inverted py-1.5 text-inverted">
<div class="container flex flex-col items-center gap-3 sm:flex-row">
<SiteFooterCopyright class="sm:mr-auto" />
<SiteFooterCredits />
</div>
</div>
</template>

View File

@@ -0,0 +1,10 @@
<script setup lang="ts">
const { data: generalSettings } = await useGeneralSettings();
</script>
<template>
<div class="">
© {{ new Date().getFullYear() }}
<span v-if="generalSettings?.title">{{ generalSettings.title }}</span>
</div>
</template>

View File

@@ -0,0 +1,12 @@
<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

@@ -1,6 +1,9 @@
<template>
<div id="layout-default">
<SiteHeader />
<slot />
<UMain>
<slot />
</UMain>
<SiteFooter />
</div>
</template>

View File

@@ -9,7 +9,6 @@ const { data: node, error } = await useAsyncGraphQLQuery(
},
);
// Handle errors and missing nodes
if (!node.value) {
console.error("NodeByUri query error:", error.value);
@@ -20,7 +19,6 @@ if (!node.value) {
});
}
// Dynamically resolve component based on node type
const componentName = `Node${node.value.__typename}`;
if (!useNuxtApp().vueApp.component(componentName)) {