Na tej stronie
Dashboard to główny widok po zalogowaniu. Orkiestruje dane z wizyt, zadań, kalendarza i analityki.
Główny kontener - orkiestruje data hooks i DashboardScope:
| Komponent | Rola |
|---|
StickyActionsBar | Quick actions (add visit, search) |
MiniToolsPanelTabs | Tabs dla mini tools |
DashboardMainView | Główny panel z widgetami |
MyDayPanel | ”Today” summary |
Stateless panel przyjmujący: visits, insight, loading flags, dateRange.
| Komponent | Rola |
|---|
VistaInsightCard | Daily insight |
PinnedNotesBoard | Pinned notes |
TaskDashboardWidget | Task list |
Card | Generic containers |
| Komponent | Opis | Storybook |
|---|
MyDayPanel.tsx | ”Today” summary | missing |
MiniToolsDifferentialCard.tsx | Mini tools card | missing |
StickyActionsBar.tsx | Quick actions | missing |
MiniToolsPanelTabs.tsx | Mini tools tabs | missing |
| Widget | Lokalizacja | Storybook |
|---|
TaskDashboardWidget | components/tasks/ | missing |
PinnedNotesBoard | features/notes/ | missing |
| Hook/Service | Source | Purpose |
|---|
useAppointmentsList | hooks/appointments/ | Appointments data |
useVisitsList | hooks/visits/ | Visits data |
useDailyInsight | hooks/ | JSONL asset loader |
useTasks | hooks/tasks/ | Tasks data |
analyticsService | services/ | Dashboard stats |
DashboardScopeContext | contexts/ | Time range, scope |
Nowy provider w src/components/dashboard/state:
- Dashboard + ToolsTray consume one hydrated state
- Eliminuje redundantne
get_dashboard_state calls
- Usuwa window-level event wiring
| Feature | Via |
|---|
| Pinned items | useDashboardState |
| Histories | useDashboardState |
| Form state | useDashboardState |
| Scope changes | save helper (optimistic) |
| Namespace | File |
|---|
dashboard | src/i18n/locales/{pl,en}/dashboard.json |
common | src/i18n/locales/{pl,en}/common.json |
| Story | Status |
|---|
Main/Dashboard | Present (basic state) |
Main/Dashboard/MainView | Added (Default, Loading, Empty, WithDateRange) |
StickyActionsBar | Missing |
MiniToolsPanelTabs | Missing |
MyDayPanel | Missing |
TaskDashboardWidget | Missing |
PinnedNotesBoard | Missing |
- Add stories for
StickyActionsBar and MiniToolsPanelTabs
- Run depcruise for dashboard subtree
- Use knip to list unused exports
| Metric | Value |
|---|
| Files | ~12 |
| LOC | ~4,500 |
| Key Hook | useDashboardState |
subgraph Dashboard["Dashboard"]
TaskWidget[TaskDashboardWidget]
PinnedNotes[PinnedNotesBoard]
subgraph Data["Data Sources"]
WorkspaceData[useWorkspaceData<br/>visits, transcripts]
AppointmentsData[useAppointmentsList]
subgraph Backend["Backend"]
AnalyticsAPI[analyticsService]
DashView --> WorkspaceData
DashView --> AppointmentsData
PinnedNotes --> NotesData
WorkspaceData --> VisitsAPI
DashView --> AnalyticsAPI
My Day Panel pokazuje “dzisiejsze” podsumowanie:
| Sekcja | Źródło danych |
|---|
| Appointments today | useAppointmentsList |
| Tasks due today | useTasks (filter: due_at = today) |
| Pinned notes | NotesProvider |
| Quick stats | analyticsService.getDashboardStats |