2025-11-06 09:24:44 +01:00
|
|
|
<template>
|
2025-11-11 19:12:21 +01:00
|
|
|
<UFooter class="bg-background-200">
|
2025-11-06 09:24:44 +01:00
|
|
|
<template #left>
|
2025-11-11 19:12:21 +01:00
|
|
|
<div class="flex flex-col gap-2">
|
|
|
|
|
<p class="text-text-800 text-sm">Copyright © {{ new Date().getFullYear() }}</p>
|
|
|
|
|
<p class="text-text-800 text-sm">{{ $t('footer.versions.frontend') }}: {{ version }}</p>
|
2025-11-19 22:03:35 +01:00
|
|
|
<p class="text-text-800 text-sm">{{ $t('footer.versions.backend') }}: {{ backendVersion }}</p>
|
2025-11-11 19:12:21 +01:00
|
|
|
</div>
|
2025-11-06 09:24:44 +01:00
|
|
|
</template>
|
|
|
|
|
|
2025-11-11 19:12:21 +01:00
|
|
|
<UNavigationMenu :items="items" variant="link" :orientation="orientation" />
|
2025-11-06 09:24:44 +01:00
|
|
|
|
|
|
|
|
<template #right>
|
|
|
|
|
<UButton
|
|
|
|
|
icon="i-simple-icons-github"
|
|
|
|
|
color="neutral"
|
|
|
|
|
variant="ghost"
|
|
|
|
|
to="https://github.com/Phundrak"
|
|
|
|
|
target="_blank"
|
|
|
|
|
aria-label="GitHub"
|
|
|
|
|
/>
|
|
|
|
|
</template>
|
|
|
|
|
</UFooter>
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
<script setup lang="ts">
|
|
|
|
|
import type { NavigationMenuItem } from '@nuxt/ui';
|
2025-11-11 19:12:21 +01:00
|
|
|
import { version } from '../../package.json';
|
2025-11-06 09:24:44 +01:00
|
|
|
|
2026-02-04 15:19:08 +01:00
|
|
|
const toast = useToast();
|
2025-11-11 19:12:21 +01:00
|
|
|
const { isMobile } = useDevice();
|
|
|
|
|
const orientation = computed(() => (isMobile ? 'vertical' : 'horizontal'));
|
|
|
|
|
const { getMeta } = useBackend();
|
2025-11-19 22:03:35 +01:00
|
|
|
const { data, error, loading } = getMeta();
|
|
|
|
|
const backendVersion = computed(() =>
|
|
|
|
|
loading.value ? 'backend.loading' : data?.value?.version || $t('backend.failed'),
|
|
|
|
|
);
|
2025-11-06 09:24:44 +01:00
|
|
|
const items = computed<NavigationMenuItem[]>(() => [
|
|
|
|
|
{
|
|
|
|
|
label: $t('footer.links.source'),
|
|
|
|
|
to: 'https://labs.phundrak.com/phundrak/phundrak.com',
|
|
|
|
|
},
|
2025-11-11 19:12:21 +01:00
|
|
|
{
|
|
|
|
|
label: $t('footer.links.nuxt'),
|
|
|
|
|
to: 'https://nuxt.com/',
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
label: $t('footer.links.rust'),
|
|
|
|
|
to: 'https://rust-lang.org/',
|
|
|
|
|
},
|
2025-11-06 09:24:44 +01:00
|
|
|
]);
|
2026-02-04 15:19:08 +01:00
|
|
|
watch(error, (value) => {
|
|
|
|
|
if (value) {
|
|
|
|
|
toast.add({
|
|
|
|
|
title: $t('backend.errors.title'),
|
|
|
|
|
description: $t(value.message ?? 'backend.errors.unknown'),
|
|
|
|
|
color: 'error',
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
});
|
2025-11-06 09:24:44 +01:00
|
|
|
</script>
|