From e619a3bd64430d2dde486ec9d180790467d57eef Mon Sep 17 00:00:00 2001 From: MechaCat02 Date: Sat, 16 May 2026 14:33:30 +0200 Subject: [PATCH] feat(ui): v0.16 features + dark mode across every page MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Wires up everything from the previous commits into actual UI surfaces, and applies Tailwind dark: variants throughout. All pages now support the 'system' / 'light' / 'dark' preference set in the onboarding step or in Mein Konto → Design. Layout & nav: - routes/+layout.svelte: initTheme(), global pin-reset SSE handler that filters by user_id and calls clearPin(), one-shot /me/context fetch on boot to hydrate privacyNote + quota. - components/BottomNav.svelte: dark variants on the frosted-glass bar. - components/UploadSheet.svelte: dark variants on backdrop, sheet, source buttons. - components/OnboardingGuide.svelte: new "Helles oder dunkles Design?" step (3-option custom-radio grid), reactive currentStep with proper type narrowing, dark variants throughout. Privacy-note nudge appears on the PIN step only when one is configured. Feed: - routes/feed/+page.svelte: diashow entry icon (tablet/desktop only), long-press → ContextSheet (Löschen for own posts, Original anzeigen for all), upload-deleted + feed-delta SSE handlers, dark variants on header, search, autocomplete, filter chips, empty states. - components/FeedListCard.svelte: long-press wireup, double-tap-to-like, data-mode-aware mediaSrc via pickMediaUrl, kebab fallback for desktop, isOwn prop, dark variants. - components/FeedGrid.svelte: long-press wireup, dark variants. - components/LightboxModal.svelte: data-mode-aware src, double-tap heart burst, dark variants on card / comments / input. - components/HashtagChips.svelte: dark variants. Account: - routes/account/+page.svelte: theme picker (3-button radio grid), data mode picker (with confirm sheet for Original), live quota widget, preformatted Datenschutzhinweis block, diashow tile (mobile only), pin now sourced from the $currentPin store so a global pin-reset clears it live, clearQueue() on explicit logout, dark variants across every card + both bottom sheets. Upload: - routes/upload/+page.svelte: per-user quota progress bar above the submit button, dark variants. Host & Admin: - routes/host/+page.svelte: PIN-reset confirm + one-time PIN modal, hosts may demote other hosts, canResetPinFor() helper, dark variants on all cards, modals, stats, toast. - routes/admin/+page.svelte: Config form rebuilt as CONFIG_GROUPS with per-field kind (number / bool / text), renders toggles for the rate-limit + quota switches and a textarea for the privacy_note; Nutzer tab gains PIN reset + hosts-may-demote-hosts wiring; same one-time PIN modal; dark variants everywhere. - routes/admin/login/+page.svelte: dark variants. Join / Recover / Export: - routes/join/+page.svelte: rename inline link to "Ich habe bereits einen Account", dark variants. - routes/recover/+page.svelte: dark variants. - routes/export/+page.svelte: dark variants on status cards + HTML guide modal. Co-Authored-By: Claude Opus 4.7 (1M context) --- frontend/src/lib/components/BottomNav.svelte | 6 +- frontend/src/lib/components/FeedGrid.svelte | 26 +- .../src/lib/components/FeedListCard.svelte | 93 +++-- .../src/lib/components/HashtagChips.svelte | 4 +- .../src/lib/components/LightboxModal.svelte | 103 +++-- .../src/lib/components/OnboardingGuide.svelte | 97 ++++- .../src/lib/components/UploadSheet.svelte | 22 +- frontend/src/routes/+layout.svelte | 47 ++- frontend/src/routes/account/+page.svelte | 336 ++++++++++++--- frontend/src/routes/admin/+page.svelte | 388 +++++++++++++----- frontend/src/routes/admin/login/+page.svelte | 16 +- frontend/src/routes/export/+page.svelte | 60 +-- frontend/src/routes/feed/+page.svelte | 175 ++++++-- frontend/src/routes/host/+page.svelte | 205 ++++++--- frontend/src/routes/join/+page.svelte | 47 ++- frontend/src/routes/recover/+page.svelte | 18 +- frontend/src/routes/upload/+page.svelte | 90 +++- 17 files changed, 1295 insertions(+), 438 deletions(-) diff --git a/frontend/src/lib/components/BottomNav.svelte b/frontend/src/lib/components/BottomNav.svelte index 6af5afd..0593bf9 100644 --- a/frontend/src/lib/components/BottomNav.svelte +++ b/frontend/src/lib/components/BottomNav.svelte @@ -9,7 +9,7 @@