pwa / offline mode

- @vite-pwa/sveltekit: workbox precache (incl. pdfjs worker), generated manifest, prompt-style updates via PwaUpdatePrompt toast
- prerendered routes for offline navigation, PWA icons, theme-color + apple-touch-icon
- pwa offline/update e2e suite (pnpm test:pwa, playwright.pwa.config.ts)
- datenschutz: offline/install section; prettier cleanup of shadcn components
This commit is contained in:
rehlert committed 2026-10-04 12:55:46 +02:00
1 parent b7969b4c9e
commit f09384d2e6
37 files changed
+4130 -273

No files matched your search

+8
View File
@@ -1,12 +1,18 @@
<script lang="ts">
import './layout.css';
import { pwaInfo } from 'virtual:pwa-info';
import favicon from '$lib/assets/favicon.svg';
import PwaUpdatePrompt from '$lib/components/PwaUpdatePrompt.svelte';
let { children } = $props();
</script>
<svelte:head>
<link rel="icon" href={favicon} />
{#if pwaInfo}
<!-- rendered on the client only: the manifest is part of the production build output -->
{@html pwaInfo.webManifest.linkTag}
{/if}
</svelte:head>
<div class="flex min-h-dvh flex-col">
<header style="height:72px" class="grid shrink-0 place-content-center bg-white shadow">
@@ -19,6 +25,8 @@
{@render children()}
</div>
<PwaUpdatePrompt />
<footer
class="mt-8.75 flex h-96 min-h-78.5 shrink-0 flex-col justify-end gap-15 px-4 py-8.75 text-white"
style="background-image: url('/footer.svg');background-position: top right; background-size: cover; background-repeat: no-repeat"