diff --git a/docs/specs/geschichten-reader-journey-spec.html b/docs/specs/geschichten-reader-journey-spec.html
index f7f33102..c66fe1af 100644
--- a/docs/specs/geschichten-reader-journey-spec.html
+++ b/docs/specs/geschichten-reader-journey-spec.html
@@ -426,11 +426,11 @@
| List row | flex gap-0 border-b border-brand-sand last:border-0 hover:bg-surface | min-h-[44px] auf Mobile |
| Meta column | w-[88px] shrink-0 flex flex-col gap-1 p-3 border-r border-brand-sand | feste Breite |
| Author avatar | w-7 h-7 rounded-full text-[9px] font-bold text-white flex items-center justify-center | personAvatarColor(userId) |
- | Author name | font-sans text-xs font-semibold text-ink | |
- | Date | font-sans text-xs text-ink-3 | formatDate(publishedAt) |
+ | Author name | font-sans text-sm font-semibold text-ink | |
+ | Date | font-sans text-sm text-ink-3 | formatDate(publishedAt) |
| Person chip | inline-flex items-center gap-1 rounded-full bg-surface border border-line px-2 py-0.5 text-[10px] font-medium text-ink | links zu /persons/[id]; optional |
- | Story title | font-serif text-[15px] text-ink leading-snug mb-1 hover:text-primary | link zu /geschichten/[id] |
- | Excerpt | font-sans text-xs text-ink-3 line-clamp-2 | max. 150 Zeichen aus body |
+ | Story title | font-serif text-lg text-ink leading-snug mb-1 hover:text-primary | link zu /geschichten/[id] |
+ | Excerpt | font-sans text-sm text-ink-3 line-clamp-2 | max. 150 Zeichen aus body |
| Filter |
| Filter pill (inaktiv) | rounded-full border border-line px-3 py-1 text-xs font-semibold text-ink-2 hover:bg-muted | aria-pressed="false" |
| Filter pill (aktiv) | rounded-full bg-primary text-primary-fg px-3 py-1 text-xs font-semibold | aria-pressed="true" |
diff --git a/frontend/src/lib/geschichte/GeschichteListRow.svelte b/frontend/src/lib/geschichte/GeschichteListRow.svelte
index babfe9b7..88dd34f4 100644
--- a/frontend/src/lib/geschichte/GeschichteListRow.svelte
+++ b/frontend/src/lib/geschichte/GeschichteListRow.svelte
@@ -32,9 +32,9 @@ const authorName = $derived(formatAuthorName(geschichte.author));
>
{getInitials(authorName)}
- {authorName}
+ {authorName}
{#if publishedAt}
- {publishedAt}
+ {publishedAt}
{/if}
{#if isJourney}
{getInitials(authorName)}
- {authorName}
+ {authorName}
{#if publishedAt}
- {publishedAt}
+ {publishedAt}
{/if}
-
+
{geschichte.title}
{#if isJourney}
@@ -82,7 +82,7 @@ const authorName = $derived(formatAuthorName(geschichte.author));
{#if geschichte.body}
-
+
{plainExcerpt(geschichte.body, 150)}
{/if}
diff --git a/frontend/src/lib/geschichte/GeschichteListRow.svelte.spec.ts b/frontend/src/lib/geschichte/GeschichteListRow.svelte.spec.ts
index b06f5ae8..7cb7b360 100644
--- a/frontend/src/lib/geschichte/GeschichteListRow.svelte.spec.ts
+++ b/frontend/src/lib/geschichte/GeschichteListRow.svelte.spec.ts
@@ -25,6 +25,26 @@ describe('GeschichteListRow', () => {
.toHaveTextContent('Die Reise nach Berlin');
});
+ it('row text sizes suit the full-width list: title text-lg, excerpt/meta text-sm (#802)', async () => {
+ render(GeschichteListRow, { props: { geschichte: baseRow() } });
+
+ const title = document.querySelector('h2');
+ expect(title!.className).toContain('text-lg');
+ expect(title!.className).not.toContain('text-[15px]');
+
+ const excerpt = document.querySelector('p');
+ expect(excerpt!.className).toContain('text-sm');
+ expect(excerpt!.className).not.toContain('text-xs');
+
+ const meta = Array.from(document.querySelectorAll('span')).filter((s) =>
+ s.textContent?.includes('Anna Schmidt')
+ );
+ expect(meta.length).toBeGreaterThan(0);
+ for (const span of meta) {
+ expect(span.className).toContain('text-sm');
+ }
+ });
+
it('shows no badge for STORY type', async () => {
render(GeschichteListRow, { props: { geschichte: baseRow({ type: 'STORY' }) } });
expect(document.querySelector('[data-testid="journey-badge"]')).toBeNull();