diff --git a/src/components/reports/shared/report-empty-state.tsx b/src/components/reports/shared/report-empty-state.tsx new file mode 100644 index 00000000..ee41f905 --- /dev/null +++ b/src/components/reports/shared/report-empty-state.tsx @@ -0,0 +1,39 @@ +import Link from 'next/link'; +import type { Route } from 'next'; +import type { LucideIcon } from 'lucide-react'; + +import { Button } from '@/components/ui/button'; + +interface ReportEmptyStateProps { + icon: LucideIcon; + title: string; + body: string; + actionLabel: string; + actionHref: Route; +} + +/** + * Report-level empty state. Rendered when a report's `hasData` flag is + * false (the port has no underlying data at all), in place of the report + * body — distinct from the per-chart "no data in this window" states. + */ +export function ReportEmptyState({ + icon: Icon, + title, + body, + actionLabel, + actionHref, +}: ReportEmptyStateProps) { + return ( +
+
+ +
+

{title}

+

{body}

+ +
+ ); +}