From 648aa2a742193bd81bfd412bb7acfd1087533e49 Mon Sep 17 00:00:00 2001 From: Marcel Date: Sun, 19 Apr 2026 23:44:31 +0200 Subject: [PATCH] feat(frontend): add DocumentRow component with two-column layout, highlights, progress, contributors Co-Authored-By: Claude Sonnet 4.6 --- .../src/lib/components/DocumentRow.svelte | 173 ++++++++++++++++++ frontend/src/routes/page.svelte.spec.ts | 16 +- 2 files changed, 186 insertions(+), 3 deletions(-) create mode 100644 frontend/src/lib/components/DocumentRow.svelte diff --git a/frontend/src/lib/components/DocumentRow.svelte b/frontend/src/lib/components/DocumentRow.svelte new file mode 100644 index 00000000..61fdd652 --- /dev/null +++ b/frontend/src/lib/components/DocumentRow.svelte @@ -0,0 +1,173 @@ + + +
  • + +
    + +
    + +

    + {#each titleSegments as seg (seg.text + seg.highlight)} + {#if seg.highlight} + {seg.text} + {:else} + {seg.text} + {/if} + {/each} +

    + + + {#if snippetSegments} +

    + {#each snippetSegments as seg (seg.text + seg.highlight)} + {#if seg.highlight} + {seg.text} + {:else} + {seg.text} + {/if} + {/each} +

    + {/if} + + + + + + {#if doc.tags && doc.tags.length > 0} +
    + {#each doc.tags as tag (tag.id)} + + {/each} +
    + {/if} + + +
    +
    + {doc.documentDate ? formatDate(doc.documentDate) : '—'} +
    +
    + + +
    +
    +
    + + + +
    +
    +
  • diff --git a/frontend/src/routes/page.svelte.spec.ts b/frontend/src/routes/page.svelte.spec.ts index 4d98d0db..4fbd2b92 100644 --- a/frontend/src/routes/page.svelte.spec.ts +++ b/frontend/src/routes/page.svelte.spec.ts @@ -1,14 +1,25 @@ import { afterEach, describe, expect, it, vi } from 'vitest'; import { cleanup, render } from 'vitest-browser-svelte'; import { page } from 'vitest/browser'; +import type { components } from '$lib/generated/api'; import Page from './+page.svelte'; +type User = components['schemas']['AppUser']; + afterEach(cleanup); vi.mock('$app/navigation', () => ({ goto: vi.fn(), invalidateAll: vi.fn() })); const baseData = { - user: { firstName: 'Max' }, + user: { + id: 'u1', + email: 'max@example.com', + firstName: 'Max', + lastName: '', + groups: [], + enabled: true, + createdAt: '2024-01-01T00:00:00Z' + } as User, canWrite: true, canAnnotate: false, resumeDoc: null, @@ -48,8 +59,7 @@ describe('Home page – dashboard layout', () => { title: 'Geburtsurkunde', caption: 'Max · 1920', excerpt: 'Hiermit…', - page: 1, - pages: 3, + totalBlocks: 3, pct: 33, collaborators: [] };