feat(web): OfflineFallback aus @mana/shared-pwa adoptiert
Some checks are pending
CI / validate (push) Waiting to run

~25 LOC eigene Offline-Page → 5 LOC shared-Component-Use. Pattern
für alle 10 mana-Apps konsistent (Nutriphi-Pilot, dann Welle).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Till JS 2026-05-19 15:03:20 +02:00
parent 1bd1d5dcbf
commit 9c1ee67f69
3 changed files with 11 additions and 34 deletions

View file

@ -17,7 +17,7 @@
"dependencies": {
"@mana/shared-auth-sso": "0.1.0-alpha.3",
"@mana/shared-icons": "^1.0.0",
"@mana/shared-pwa": "0.1.0-alpha.3",
"@mana/shared-pwa": "0.1.0-alpha.4",
"@mana/shared-ui-2": "^0.1.0",
"@mana/themes": "^0.1.0",
"@vite-pwa/sveltekit": "^1.1.0",

View file

@ -1,31 +1,8 @@
<script lang="ts">
function goBack() {
if (typeof history !== 'undefined' && history.length > 1) {
history.back();
} else {
location.href = '/';
}
}
import { OfflineFallback } from '@mana/shared-pwa/components';
</script>
<svelte:head>
<title>Offline · Wordeck</title>
</svelte:head>
<section
class="mx-auto mt-12 max-w-md rounded-lg border bg-[hsl(var(--color-card))] border-[hsl(var(--color-border))] p-6 text-center"
>
<h1 class="text-xl font-semibold">Du bist offline</h1>
<p class="mt-2 text-sm text-[hsl(var(--color-muted-foreground))]">
Schon geladene Decks und Karten sind im Cache — Spaced-Repetition läuft
auch ohne Netz weiter (Wordeck ist text-only by design). Sync mit dem
Server passiert, sobald wieder Netz da ist.
</p>
<button
type="button"
class="mt-4 rounded-md bg-[hsl(var(--color-primary))] px-4 py-2 text-sm font-medium text-[hsl(var(--color-primary-foreground))]"
onclick={goBack}
>
Zurück
</button>
</section>
<OfflineFallback
title="Du bist offline"
body="Schon geladene Decks und Karten sind im Cache — Spaced-Repetition läuft auch ohne Netz weiter (Wordeck ist text-only by design). Sync mit dem Server passiert, sobald wieder Netz da ist."
/>

10
pnpm-lock.yaml generated
View file

@ -73,8 +73,8 @@ importers:
specifier: ^1.0.0
version: 1.0.0(svelte@5.55.5)(vite@5.4.21(@types/node@24.12.3)(lightningcss@1.32.0)(terser@5.47.1))
'@mana/shared-pwa':
specifier: 0.1.0-alpha.3
version: 0.1.0-alpha.3(@vite-pwa/sveltekit@1.1.0(@sveltejs/kit@2.59.1(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.55.5)(vite@5.4.21(@types/node@24.12.3)(lightningcss@1.32.0)(terser@5.47.1)))(svelte@5.55.5)(typescript@5.9.3)(vite@5.4.21(@types/node@24.12.3)(lightningcss@1.32.0)(terser@5.47.1)))(vite@5.4.21(@types/node@24.12.3)(lightningcss@1.32.0)(terser@5.47.1))(workbox-build@7.4.1)(workbox-window@7.4.1))(svelte@5.55.5)(vite@5.4.21(@types/node@24.12.3)(lightningcss@1.32.0)(terser@5.47.1))
specifier: 0.1.0-alpha.4
version: 0.1.0-alpha.4(@vite-pwa/sveltekit@1.1.0(@sveltejs/kit@2.59.1(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.55.5)(vite@5.4.21(@types/node@24.12.3)(lightningcss@1.32.0)(terser@5.47.1)))(svelte@5.55.5)(typescript@5.9.3)(vite@5.4.21(@types/node@24.12.3)(lightningcss@1.32.0)(terser@5.47.1)))(vite@5.4.21(@types/node@24.12.3)(lightningcss@1.32.0)(terser@5.47.1))(workbox-build@7.4.1)(workbox-window@7.4.1))(svelte@5.55.5)(vite@5.4.21(@types/node@24.12.3)(lightningcss@1.32.0)(terser@5.47.1))
'@mana/shared-ui-2':
specifier: ^0.1.0
version: 0.1.0(svelte@5.55.5)
@ -1260,8 +1260,8 @@ packages:
peerDependencies:
svelte: ^5.0.0
'@mana/shared-pwa@0.1.0-alpha.3':
resolution: {integrity: sha512-YJGbWH4BrKbr0+hi0wz5qBVyPD3124XlqxrsI/Hf2Wh0/yjgYm5hZlUkVSZTCRKnn7U4cR7K4b1eIzr0HljhgQ==}
'@mana/shared-pwa@0.1.0-alpha.4':
resolution: {integrity: sha512-FaOF3XL60edSN0ko2Bm+tBUcB3WFxVByax1MZT+8yRUskd5mwuOzmVpBs/p1lSlb51c0Kjx8VIlApyFjqcgjxA==}
hasBin: true
peerDependencies:
'@vite-pwa/sveltekit': '>=0.6.0'
@ -4401,7 +4401,7 @@ snapshots:
transitivePeerDependencies:
- vite
'@mana/shared-pwa@0.1.0-alpha.3(@vite-pwa/sveltekit@1.1.0(@sveltejs/kit@2.59.1(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.55.5)(vite@5.4.21(@types/node@24.12.3)(lightningcss@1.32.0)(terser@5.47.1)))(svelte@5.55.5)(typescript@5.9.3)(vite@5.4.21(@types/node@24.12.3)(lightningcss@1.32.0)(terser@5.47.1)))(vite@5.4.21(@types/node@24.12.3)(lightningcss@1.32.0)(terser@5.47.1))(workbox-build@7.4.1)(workbox-window@7.4.1))(svelte@5.55.5)(vite@5.4.21(@types/node@24.12.3)(lightningcss@1.32.0)(terser@5.47.1))':
'@mana/shared-pwa@0.1.0-alpha.4(@vite-pwa/sveltekit@1.1.0(@sveltejs/kit@2.59.1(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.55.5)(vite@5.4.21(@types/node@24.12.3)(lightningcss@1.32.0)(terser@5.47.1)))(svelte@5.55.5)(typescript@5.9.3)(vite@5.4.21(@types/node@24.12.3)(lightningcss@1.32.0)(terser@5.47.1)))(vite@5.4.21(@types/node@24.12.3)(lightningcss@1.32.0)(terser@5.47.1))(workbox-build@7.4.1)(workbox-window@7.4.1))(svelte@5.55.5)(vite@5.4.21(@types/node@24.12.3)(lightningcss@1.32.0)(terser@5.47.1))':
dependencies:
'@vite-pwa/sveltekit': 1.1.0(@sveltejs/kit@2.59.1(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.55.5)(vite@5.4.21(@types/node@24.12.3)(lightningcss@1.32.0)(terser@5.47.1)))(svelte@5.55.5)(typescript@5.9.3)(vite@5.4.21(@types/node@24.12.3)(lightningcss@1.32.0)(terser@5.47.1)))(vite@5.4.21(@types/node@24.12.3)(lightningcss@1.32.0)(terser@5.47.1))(workbox-build@7.4.1)(workbox-window@7.4.1)
svelte: 5.55.5