diff --git a/frontend/messages/en.json b/frontend/messages/en.json index cca694eb..0753a6b5 100644 --- a/frontend/messages/en.json +++ b/frontend/messages/en.json @@ -441,5 +441,7 @@ "last_signed_in_ago": "Last signed in {time} ago", "invalid_client_id": "Client ID can only contain letters, numbers, underscores, and hyphens", "custom_client_id_description": "Set a custom client ID if this is required by your application. Otherwise, leave it blank to generate a random one.", - "generated": "Generated" + "generated": "Generated", + "administration": "Administration" + } diff --git a/frontend/package.json b/frontend/package.json index e68182d9..5cdabd87 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -21,6 +21,7 @@ "date-fns": "^4.1.0", "jose": "^5.10.0", "qrcode": "^1.5.4", + "runed": "^0.31.1", "sveltekit-superforms": "^2.27.1", "tailwind-merge": "^3.3.1", "zod": "^4.0.9" diff --git a/frontend/src/lib/components/header/header-avatar.svelte b/frontend/src/lib/components/header/header-avatar.svelte index 3c5a3249..7a5474a0 100644 --- a/frontend/src/lib/components/header/header-avatar.svelte +++ b/frontend/src/lib/components/header/header-avatar.svelte @@ -6,7 +6,7 @@ import WebAuthnService from '$lib/services/webauthn-service'; import userStore from '$lib/stores/user-store'; import { cachedProfilePicture } from '$lib/utils/cached-image-util'; - import { LayoutDashboard, LucideLogOut, LucideUser } from '@lucide/svelte'; + import { LucideLogOut, LucideUser } from '@lucide/svelte'; const webauthnService = new WebAuthnService(); @@ -34,9 +34,6 @@ - goto('/settings/apps')} - > {m.my_apps()} goto('/settings/account')} > {m.my_account()} diff --git a/frontend/src/lib/components/sidebar.svelte b/frontend/src/lib/components/sidebar.svelte new file mode 100644 index 00000000..d2ed211a --- /dev/null +++ b/frontend/src/lib/components/sidebar.svelte @@ -0,0 +1,157 @@ + + + diff --git a/frontend/src/routes/settings/+layout.svelte b/frontend/src/routes/settings/+layout.svelte index ff83054c..3f318d8b 100644 --- a/frontend/src/routes/settings/+layout.svelte +++ b/frontend/src/routes/settings/+layout.svelte @@ -1,11 +1,9 @@ @@ -58,35 +59,16 @@ {m.settings()} - + + +
{@render children()} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c4ecb255..1b9a00a4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -34,6 +34,9 @@ importers: qrcode: specifier: ^1.5.4 version: 1.5.4 + runed: + specifier: ^0.31.1 + version: 0.31.1(svelte@5.36.17) sveltekit-superforms: specifier: ^2.27.1 version: 2.27.1(@sveltejs/kit@2.36.3(@sveltejs/vite-plugin-svelte@6.1.0(svelte@5.36.17)(vite@7.0.6(@types/node@22.16.5)(jiti@2.5.1)(lightningcss@1.30.1)))(svelte@5.36.17)(vite@7.0.6(@types/node@22.16.5)(jiti@2.5.1)(lightningcss@1.30.1)))(@types/json-schema@7.0.15)(esbuild@0.25.8)(svelte@5.36.17)(typescript@5.8.3) @@ -1807,6 +1810,11 @@ packages: peerDependencies: svelte: ^5.7.0 + runed@0.31.1: + resolution: {integrity: sha512-v3czcTnO+EJjiPvD4dwIqfTdHLZ8oH0zJheKqAHh9QMViY7Qb29UlAMRpX7ZtHh7AFqV60KmfxaJ9QMy+L1igQ==} + peerDependencies: + svelte: ^5.7.0 + sade@1.8.1: resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} engines: {node: '>=6'} @@ -3637,6 +3645,11 @@ snapshots: esm-env: 1.2.2 svelte: 5.36.17 + runed@0.31.1(svelte@5.36.17): + dependencies: + esm-env: 1.2.2 + svelte: 5.36.17 + sade@1.8.1: dependencies: mri: 1.2.0