feat(05-04): OffersSection component + client dashboard wiring + /admin/forecast page

- Create src/components/client/OffersSection.tsx — displays public_name, cumulative_price, accepted_total (no internal_name)
- Extend client-dashboard.tsx — import OffersSection, add Offerte Attive sidebar block conditional on view.activeOffers
- Extend client/[token]/page.tsx adapter — map activeOffers from ProjectView to ClientView
- Create src/app/admin/forecast/page.tsx — RSC with 12-month revenue table using getRevenueForecast12Months(), bar chart column, totals row, empty-state message
This commit is contained in:
2026-05-30 16:43:14 +02:00
parent c398d6de34
commit 745f8a78c0
4 changed files with 123 additions and 0 deletions
+1
View File
@@ -66,6 +66,7 @@ function projectViewToClientView(
created_at: n.created_at instanceof Date ? n.created_at.toISOString() : String(n.created_at),
})),
global_progress_pct: view.global_progress_pct,
activeOffers: view.activeOffers,
};
}