Revamp app layout, theming and navigation

Refactor Layout.vue to implement a redesigned, responsive shell: new branding (SVG icon, title & subtitle), computed sidebar/footer routes, route-aware page title & description, improved footer visibility, and a mobile-friendly navigation drawer. Theme handling now uses a data-theme attribute, persistent storage, accessible labels and toggle controls. Added new image assets (icon.svg, icon.png, 404NotFound.png), global.css and documentation files (style.md, codexInfo.md), updated related plugins/routes/components, and removed the old logo.png. Also updated the favicon.
This commit is contained in:
Jonas
2026-04-17 22:55:58 +02:00
parent b9101a4582
commit 3b910850cb
15 changed files with 2113 additions and 102 deletions
+13 -1
View File
@@ -12,6 +12,7 @@ export enum Visibility {
Authorized,
Public,
Footer,
Route,
}
export interface LayoutRoute {
@@ -21,14 +22,25 @@ export interface LayoutRoute {
icon: string
disableFooter?: boolean
visible: Visibility
visibilityRoute?: string | string[]
meta?: RouteRecordRaw
}
/**
* Kurzanleitung fuer Sidebar-Sichtbarkeit:
* - `Visibility.Public`: Eintrag ist immer in der Sidebar sichtbar.
* - `Visibility.Route`: Eintrag ist nur sichtbar, wenn die aktuelle URL im angegebenen Bereich liegt.
* - Ohne `visibilityRoute` wird automatisch `path` als Bereich verwendet.
* - Szenario 1: `path: '/dash'` -> sichtbar bei `/dash` und `/dash/*`.
* - Szenario 2: `visibilityRoute: '/admin'` -> Eintrag wird nur im Admin-Bereich gezeigt.
* - Szenario 3: `visibilityRoute: ['/dash', '/projects']` -> sichtbar in beiden Bereichen.
* - `Visibility.Footer` und `Visibility.Hidden`: nicht in der Sidebar sichtbar.
*/
export const routes: LayoutRoute[] = [
{
path: '/',
name: 'Startseite',
description: 'Uebersicht der Anwendung',
description: 'Self-hosted Datei-Workspace für Hoard',
icon: 'mdi-home',
visible: Visibility.Public,
meta: {