feat(dashboard): redesign home as action-led family archive hub (#271) #278

Merged
marcel merged 29 commits from feat/issue-271-dashboard-redesign into main 2026-04-20 07:45:17 +02:00
6 changed files with 16 additions and 10 deletions
Showing only changes of commit 18e321b1e6 - Show all commits

View File

@@ -713,7 +713,7 @@
"greeting_evening": "Guten Abend, {name}.",
"dashboard_resume_label": "Weiter, wo du aufgehört hast",
"dashboard_page_of": "Seite {page} von {pages}",
"dashboard_blocks": "{count} Abschnitte",
"dashboard_resume_cta": "Weitertranskribieren",
"dashboard_resume_other": "oder anderen Brief wählen",
"dashboard_empty_title": "Noch kein Dokument begonnen",
@@ -739,6 +739,7 @@
"pulse_uploaded": "Dokumente hochgeladen",
"feed_caption": "Kommentare & Aktivität",
"feed_show_all": "Alle anzeigen",
"feed_for_you": "für dich",
"audit_action_text_saved": "hat Text gespeichert in",

View File

@@ -713,7 +713,7 @@
"greeting_evening": "Good evening, {name}.",
"dashboard_resume_label": "Continue where you left off",
"dashboard_page_of": "Page {page} of {pages}",
"dashboard_blocks": "{count} sections",
"dashboard_resume_cta": "Continue transcribing",
"dashboard_resume_other": "or choose another document",
"dashboard_empty_title": "No document started yet",
@@ -739,6 +739,7 @@
"pulse_uploaded": "Documents uploaded",
"feed_caption": "Comments & activity",
"feed_show_all": "Show all",
"feed_for_you": "for you",
"audit_action_text_saved": "saved text in",

View File

@@ -713,7 +713,7 @@
"greeting_evening": "Buenas noches, {name}.",
"dashboard_resume_label": "Continuar donde lo dejaste",
"dashboard_page_of": "Página {page} de {pages}",
"dashboard_blocks": "{count} secciones",
"dashboard_resume_cta": "Continuar transcripción",
"dashboard_resume_other": "o elige otro documento",
"dashboard_empty_title": "Aún no has comenzado ningún documento",
@@ -739,6 +739,7 @@
"pulse_uploaded": "Documentos subidos",
"feed_caption": "Comentarios y actividad",
"feed_show_all": "Ver todo",
"feed_for_you": "para ti",
"audit_action_text_saved": "guardó texto en",

View File

@@ -67,7 +67,7 @@ const { resumeDoc }: Props = $props();
<span class="text-[#A6DAD8]"></span>
{m.dashboard_resume_label()}
·
{m.dashboard_page_of({ page: resumeDoc.page, pages: resumeDoc.pages })}
{m.dashboard_blocks({ count: resumeDoc.totalBlocks })}
</p>
<h2 class="font-serif text-[1.75rem] leading-tight text-ink">{resumeDoc.title}</h2>
@@ -91,7 +91,7 @@ const { resumeDoc }: Props = $props();
>
<div class="h-full rounded-full bg-accent" style="width:{resumeDoc.pct}%"></div>
</div>
{#each resumeDoc.collaborators.slice(0, 3) as collab (collab.initials)}
{#each resumeDoc.collaborators.slice(0, 3) as collab (collab.initials + collab.color)}
<span
class="-ml-1 inline-flex h-6 w-6 items-center justify-center rounded-full font-sans text-[10px] font-bold text-white ring-2 ring-white"
style="background:{collab.color}">{collab.initials}</span

View File

@@ -16,8 +16,7 @@ const mockResume: DashboardResumeDTO = {
title: 'Geburtsurkunde 1920',
caption: 'Max Mustermann · 1920-01-01',
excerpt: 'Hiermit wird beurkundet…',
page: 1,
pages: 4,
totalBlocks: 4,
pct: 75,
collaborators: []
};
@@ -47,4 +46,10 @@ describe('DashboardResumeStrip', () => {
const link = page.getByRole('link', { name: /Weitertranskribieren/i });
await expect.element(link).toHaveAttribute('href', '/documents/doc-123');
});
it('shows block count label', async () => {
render(DashboardResumeStrip, { resumeDoc: mockResume });
const label = page.getByText(/4 Abschnitte/i);
await expect.element(label).toBeInTheDocument();
});
});

View File

@@ -1982,9 +1982,7 @@ export interface components {
caption: string;
excerpt: string;
/** Format: int32 */
page: number;
/** Format: int32 */
pages: number;
totalBlocks: number;
/** Format: int32 */
pct: number;
thumbnailUrl?: string;