From 0712d9a36734562a0ca33632bbc935ad65cc6452 Mon Sep 17 00:00:00 2001 From: m Date: Wed, 25 Mar 2026 18:49:48 +0100 Subject: [PATCH] docs: design document for dashboard redesign + detail pages (t-kz-060) Comprehensive design covering: - Dashboard interactivity (click-to-filter traffic lights, clickable timeline, fixed quick actions, AI summary refresh) - New detail pages (deadline, appointment, case event) - Notes system with polymorphic table design - Case detail URL-based tab navigation - Breadcrumb navigation system - Backend API additions and data model changes - Phased implementation plan for coders --- DESIGN-dashboard-redesign.md | 665 +++++++++++++++++++++++++++++++++++ 1 file changed, 665 insertions(+) create mode 100644 DESIGN-dashboard-redesign.md diff --git a/DESIGN-dashboard-redesign.md b/DESIGN-dashboard-redesign.md new file mode 100644 index 0000000..c529038 --- /dev/null +++ b/DESIGN-dashboard-redesign.md @@ -0,0 +1,665 @@ +# Design: Dashboard Redesign + Detail Pages + +**Task:** t-kz-060 +**Author:** cronus (inventor) +**Date:** 2026-03-25 +**Status:** Design proposal + +--- + +## Problem Statement + +The current dashboard is a read-only status board. Cards show counts but don't link anywhere. Timeline items are inert. Quick actions navigate to list pages rather than creation flows. There are no detail pages for individual events, deadlines, or appointments. Notes don't exist as a first-class entity. Case detail tabs use local state instead of URL segments, breaking deep linking and back navigation. + +## Design Principles + +1. **Everything clickable goes somewhere** — no dead-end UI +2. **Breadcrumb navigation** — always know where you are, one click to go back +3. **German labels throughout** — consistent with existing convention +4. **Mobile responsive** — sidebar collapses, cards stack, touch targets >= 44px +5. **Information density over whitespace** — law firm users want data, not decoration +6. **URL-driven state** — tabs, filters, and views reflected in the URL for deep linking + +--- + +## Part 1: Dashboard Redesign + +### 1.1 Traffic Light Cards → Click-to-Filter + +**Current:** Three cards (Ueberfaellig / Diese Woche / Im Zeitplan) show counts. `onFilter` prop exists but is never wired up in `dashboard/page.tsx`. + +**Proposed:** + +Clicking a traffic light card navigates to `/fristen?status={filter}`: + +| Card | Navigation Target | +|------|------------------| +| Ueberfaellig (red) | `/fristen?status=overdue` | +| Diese Woche (amber) | `/fristen?status=this_week` | +| Im Zeitplan (green) | `/fristen?status=ok` | + +**Implementation:** +- Replace `onFilter` callback with `next/link` navigation using `href` +- `DeadlineTrafficLights` becomes a pure link-based component (no callback needed) +- `/fristen` page reads `searchParams.status` and pre-applies the filter +- The DeadlineList component already supports status filtering — just needs to read from URL + +**Changes:** +- `DeadlineTrafficLights.tsx`: Replace `