Add footer and improvements to navigation

This commit is contained in:
2026-04-19 18:11:44 +01:00
parent fc3e1f4149
commit 142a7408bd
4 changed files with 53 additions and 11 deletions

View File

@@ -11,6 +11,8 @@ useHead({
} }
}) })
import { version as VERSION } from '../package.json';
useSeoMeta({ useSeoMeta({
title: 'Dashboard OS', title: 'Dashboard OS',
description: 'Your personal folder browser dashboard.', description: 'Your personal folder browser dashboard.',
@@ -19,8 +21,13 @@ useSeoMeta({
<template> <template>
<UApp> <UApp>
<div class="h-screen w-screen overflow-hidden bg-gradient-to-br from-neutral-900 to-black text-white selection:bg-primary-500 selection:text-white"> <div class="h-screen w-screen flex flex-col overflow-hidden bg-gradient-to-br from-neutral-900 to-black text-white selection:bg-primary-500 selection:text-white">
<main class="flex-1 overflow-hidden">
<NuxtPage /> <NuxtPage />
</main>
<footer class="py-4 text-center text-sm text-white/50 border-t border-white/5">
Made with by Daryn van Vreden Dashlio v{{ VERSION }}
</footer>
</div> </div>
</UApp> </UApp>
</template> </template>

View File

@@ -1,14 +1,28 @@
- id: 1111-2222-3333-4444 - id: media-folder
type: folder type: folder
parentId: null parentId: null
name: Example Folder name: Media
slug: example-folder slug: media
order: 0 order: 0
- id: 5555-6666-7777-8888 - id: jellyfin
type: link type: link
parentId: null parentId: media-folder
title: Example Link title: Jellyfin
url: https://example.com url: https://jellyfin.example.com
icon: i-lucide-globe icon: i-simple-icons-jellyfin
color: "#34d399"
order: 1
- id: projects-folder
type: folder
parentId: null
name: Projects
slug: projects
order: 1
- id: gitea
type: link
parentId: projects-folder
title: Gitea
url: https://gitea.example.com
icon: i-simple-icons-gitea
color: "#34d399" color: "#34d399"
order: 1 order: 1

View File

@@ -40,6 +40,10 @@ const breadcrumbs = computed(() => {
return crumbs; return crumbs;
}); });
const backUrl = computed(() => {
if (slugPath.length <= 1) return '/';
return '/' + slugPath.slice(0, -1).join('/');
});
</script> </script>
<template> <template>
@@ -51,10 +55,26 @@ const breadcrumbs = computed(() => {
<!-- Grid --> <!-- Grid -->
<div class="flex-1 overflow-auto"> <div class="flex-1 overflow-auto">
<div class="grid grid-cols-4 md:grid-cols-6 lg:grid-cols-8 xl:grid-cols-10 gap-6"> <div class="grid grid-cols-4 md:grid-cols-6 lg:grid-cols-8 xl:grid-cols-10 gap-6">
<!-- Back Button -->
<NuxtLink
v-if="slugPath.length > 0"
:to="backUrl"
class="flex flex-col items-center justify-center p-5 rounded-2xl bg-white/10 hover:bg-white/20 backdrop-blur-md border border-white/10 transition-all cursor-pointer group select-none shadow-lg hover:shadow-xl"
>
<UIcon
name="i-lucide-arrow-left"
class="w-20 h-20 mb-3 drop-shadow-lg transition-transform group-hover:-translate-x-1 text-white/80"
/>
<span class="text-sm font-medium text-center text-white break-words line-clamp-2 w-full text-shadow">
Back
</span>
</NuxtLink>
<!-- Folder Items -->
<DesktopItem v-for="item in items" :key="item.id" :item="item" /> <DesktopItem v-for="item in items" :key="item.id" :item="item" />
</div> </div>
<div v-if="items.length === 0" class="text-white/50 flex items-center justify-center h-64 text-lg"> <div v-if="items.length === 0 && slugPath.length === 0" class="text-white/50 flex items-center justify-center h-64 text-lg">
This folder is empty. This folder is empty.
</div> </div>
</div> </div>

View File

@@ -1,5 +1,6 @@
{ {
"name": "dashlio", "name": "dashlio",
"version": "1.0.0",
"private": true, "private": true,
"type": "module", "type": "module",
"scripts": { "scripts": {