From b926bdefde60dab57137849d2cc4ad9c2cc9a9d9 Mon Sep 17 00:00:00 2001 From: Marcel Date: Wed, 10 Jun 2026 22:24:37 +0200 Subject: [PATCH] feat(geschichte-detail): render article on a reading-sheet surface card The R-2 mockup shows the article on a distinct light panel, but the impl-ref table only specified the centered container, so the page rendered flat on the canvas. Wrap the
in the standard card pattern (BackButton stays outside on the canvas) and record the sheet in both spec impl-ref tables so mockup and impl-ref agree. Closes #797 Co-Authored-By: Claude Fable 5 --- docs/specs/geschichten-reader-journey-spec.html | 3 ++- docs/specs/lesereisen-reader-spec.html | 1 + frontend/src/routes/geschichten/[id]/+page.svelte | 5 ++++- .../src/routes/geschichten/[id]/page.svelte.test.ts | 13 +++++++++++++ 4 files changed, 20 insertions(+), 2 deletions(-) diff --git a/docs/specs/geschichten-reader-journey-spec.html b/docs/specs/geschichten-reader-journey-spec.html index c30857a7..93a5a384 100644 --- a/docs/specs/geschichten-reader-journey-spec.html +++ b/docs/specs/geschichten-reader-journey-spec.html @@ -640,7 +640,8 @@ ElementWertHinweise Artikel-Container - Article containermax-w-3xl mx-auto px-4 py-10zentriert, volle Breite auf Mobile + Article containermax-w-3xl mx-auto px-4 py-8zentriert, volle Breite auf Mobile + Article sheetrounded-sm border border-line bg-surface shadow-sm px-5 py-6 sm:px-10 sm:py-10Lesebogen-Panel auf dem Canvas (siehe Mockup); BackButton bleibt außerhalb Story titlefont-family:var(--font-display);font-size:clamp(22px,4vw,32px);color:var(--navy)Fraunces, nicht fett Back button<BackButton /> aus $lib/components/BackButton.sveltehistory.back(); nicht <a href> Metazeile diff --git a/docs/specs/lesereisen-reader-spec.html b/docs/specs/lesereisen-reader-spec.html index ccde15b5..bbaa59cf 100644 --- a/docs/specs/lesereisen-reader-spec.html +++ b/docs/specs/lesereisen-reader-spec.html @@ -630,6 +630,7 @@ Seitenstruktur Bedingte Logik{#if geschichte.type === 'JOURNEY'} JourneyReader {:else} StoryReader {/if}in +page.svelte von /geschichten/[id] Artikel-Containermax-w-3xl mx-auto px-4 py-8gleich wie StoryReader + Artikel-Sheetrounded-sm border border-line bg-surface shadow-sm px-5 py-6 sm:px-10 sm:py-10Lesebogen-Panel auf dem Canvas, gleich wie Story (R-2); BackButton bleibt außerhalb Journey-Badgeinline-flex px-2 py-px rounded-sm text-[10px] font-bold uppercase tracking-widest bg-orange-50 text-orange-700 border border-orange-200 mb-2über dem Titel; nicht für STORY Titelfont-serif text-3xl text-ink leading-tight mb-4gleich wie Story Metabarflex items-center gap-3 pb-4 border-b border-subtle mb-4gleich wie Story diff --git a/frontend/src/routes/geschichten/[id]/+page.svelte b/frontend/src/routes/geschichten/[id]/+page.svelte index 4152d19b..52eaabeb 100644 --- a/frontend/src/routes/geschichten/[id]/+page.svelte +++ b/frontend/src/routes/geschichten/[id]/+page.svelte @@ -53,7 +53,10 @@ async function handleDelete() { -
+
{#if isJourney} { .toBeVisible(); }); + it('renders the article on a reading-sheet surface card (#797)', async () => { + render(GeschichtePage, { + context: new Map([[CONFIRM_KEY, createConfirmService()]]), + props: { data: baseData() } + }); + + const article = document.querySelector('article'); + expect(article).not.toBeNull(); + for (const cls of ['bg-surface', 'border-line', 'rounded-sm', 'shadow-sm']) { + expect(article!.className).toContain(cls); + } + }); + it('renders the author full name from firstName + lastName', async () => { render(GeschichtePage, { context: new Map([[CONFIRM_KEY, createConfirmService()]]),