@handled-ai/design-system 0.8.0 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +14 -4
- package/dist/charts/bar-chart-component.d.ts +24 -0
- package/dist/charts/bar-chart-component.js +123 -0
- package/dist/charts/bar-chart-component.js.map +1 -0
- package/dist/charts/chart-tooltip.d.ts +26 -0
- package/dist/charts/chart-tooltip.js +69 -0
- package/dist/charts/chart-tooltip.js.map +1 -0
- package/dist/charts/chart.d.ts +64 -0
- package/dist/charts/chart.js +285 -0
- package/dist/charts/chart.js.map +1 -0
- package/dist/charts/donut-chart.d.ts +21 -0
- package/dist/charts/donut-chart.js +96 -0
- package/dist/charts/donut-chart.js.map +1 -0
- package/dist/charts/index.d.ts +11 -0
- package/dist/charts/index.js +10 -0
- package/dist/charts/index.js.map +1 -0
- package/dist/charts/pipeline-overview.d.ts +76 -0
- package/dist/charts/pipeline-overview.js +372 -0
- package/dist/charts/pipeline-overview.js.map +1 -0
- package/dist/charts/sankey-chart.d.ts +52 -0
- package/dist/charts/sankey-chart.js +219 -0
- package/dist/charts/sankey-chart.js.map +1 -0
- package/dist/charts/top-line-metrics.d.ts +26 -0
- package/dist/charts/top-line-metrics.js +224 -0
- package/dist/charts/top-line-metrics.js.map +1 -0
- package/dist/charts/trend-area-chart.d.ts +21 -0
- package/dist/charts/trend-area-chart.js +150 -0
- package/dist/charts/trend-area-chart.js.map +1 -0
- package/dist/charts/volume-analysis-chart.d.ts +19 -0
- package/dist/charts/volume-analysis-chart.js +121 -0
- package/dist/charts/volume-analysis-chart.js.map +1 -0
- package/dist/components/activity-detail.d.ts +38 -0
- package/dist/components/activity-detail.js +163 -0
- package/dist/components/activity-detail.js.map +1 -0
- package/dist/components/activity-log.d.ts +21 -0
- package/dist/components/activity-log.js +61 -0
- package/dist/components/activity-log.js.map +1 -0
- package/dist/components/agent-popover.d.ts +71 -0
- package/dist/components/agent-popover.js +282 -0
- package/dist/components/agent-popover.js.map +1 -0
- package/dist/components/agent-widget.d.ts +24 -0
- package/dist/components/agent-widget.js +117 -0
- package/dist/components/agent-widget.js.map +1 -0
- package/dist/components/avatar.d.ts +13 -0
- package/dist/components/avatar.js +140 -0
- package/dist/components/avatar.js.map +1 -0
- package/dist/components/badge.d.ts +12 -0
- package/dist/components/badge.js +75 -0
- package/dist/components/badge.js.map +1 -0
- package/dist/components/button.d.ts +13 -0
- package/dist/components/button.js +83 -0
- package/dist/components/button.js.map +1 -0
- package/dist/components/card.d.ts +11 -0
- package/dist/components/card.js +119 -0
- package/dist/components/card.js.map +1 -0
- package/dist/components/contact-list.d.ts +34 -0
- package/dist/components/contact-list.js +84 -0
- package/dist/components/contact-list.js.map +1 -0
- package/dist/components/dashboard-cards.d.ts +10 -0
- package/dist/components/dashboard-cards.js +164 -0
- package/dist/components/dashboard-cards.js.map +1 -0
- package/dist/components/data-table-display.d.ts +19 -0
- package/dist/components/data-table-display.js +109 -0
- package/dist/components/data-table-display.js.map +1 -0
- package/dist/components/data-table-filter.d.ts +18 -0
- package/dist/components/data-table-filter.js +107 -0
- package/dist/components/data-table-filter.js.map +1 -0
- package/dist/components/data-table-quick-views.d.ts +13 -0
- package/dist/components/data-table-quick-views.js +90 -0
- package/dist/components/data-table-quick-views.js.map +1 -0
- package/dist/components/data-table-toolbar.d.ts +18 -0
- package/dist/components/data-table-toolbar.js +45 -0
- package/dist/components/data-table-toolbar.js.map +1 -0
- package/dist/components/data-table.d.ts +39 -0
- package/dist/components/data-table.js +821 -0
- package/dist/components/data-table.js.map +1 -0
- package/dist/components/detail-view.d.ts +44 -0
- package/dist/components/detail-view.js +165 -0
- package/dist/components/detail-view.js.map +1 -0
- package/dist/components/dialog.d.ts +19 -0
- package/dist/components/dialog.js +188 -0
- package/dist/components/dialog.js.map +1 -0
- package/dist/components/dropdown-menu.d.ts +27 -0
- package/dist/components/dropdown-menu.js +279 -0
- package/dist/components/dropdown-menu.js.map +1 -0
- package/dist/components/entity-panel.d.ts +69 -0
- package/dist/components/entity-panel.js +584 -0
- package/dist/components/entity-panel.js.map +1 -0
- package/dist/components/inbox-row.d.ts +27 -0
- package/dist/components/inbox-row.js +139 -0
- package/dist/components/inbox-row.js.map +1 -0
- package/dist/components/inbox-toolbar.d.ts +21 -0
- package/dist/components/inbox-toolbar.js +203 -0
- package/dist/components/inbox-toolbar.js.map +1 -0
- package/dist/components/input.d.ts +5 -0
- package/dist/components/input.js +50 -0
- package/dist/components/input.js.map +1 -0
- package/dist/components/insights-filter-bar.d.ts +21 -0
- package/dist/components/insights-filter-bar.js +99 -0
- package/dist/components/insights-filter-bar.js.map +1 -0
- package/dist/components/item-list-display.d.ts +22 -0
- package/dist/components/item-list-display.js +240 -0
- package/dist/components/item-list-display.js.map +1 -0
- package/dist/components/item-list-filter.d.ts +16 -0
- package/dist/components/item-list-filter.js +87 -0
- package/dist/components/item-list-filter.js.map +1 -0
- package/dist/components/item-list-toolbar.d.ts +25 -0
- package/dist/components/item-list-toolbar.js +79 -0
- package/dist/components/item-list-toolbar.js.map +1 -0
- package/dist/components/item-list.d.ts +20 -0
- package/dist/components/item-list.js +702 -0
- package/dist/components/item-list.js.map +1 -0
- package/dist/components/label.d.ts +6 -0
- package/dist/components/label.js +55 -0
- package/dist/components/label.js.map +1 -0
- package/dist/components/message.d.ts +23 -0
- package/dist/components/message.js +117 -0
- package/dist/components/message.js.map +1 -0
- package/dist/components/metric-card.d.ts +25 -0
- package/dist/components/metric-card.js +107 -0
- package/dist/components/metric-card.js.map +1 -0
- package/dist/components/performance-metrics-table.d.ts +38 -0
- package/dist/components/performance-metrics-table.js +342 -0
- package/dist/components/performance-metrics-table.js.map +1 -0
- package/dist/components/preview-list.d.ts +14 -0
- package/dist/components/preview-list.js +83 -0
- package/dist/components/preview-list.js.map +1 -0
- package/dist/components/progress.d.ts +6 -0
- package/dist/components/progress.js +69 -0
- package/dist/components/progress.js.map +1 -0
- package/dist/components/quick-action-chat-area.d.ts +24 -0
- package/dist/components/quick-action-chat-area.js +178 -0
- package/dist/components/quick-action-chat-area.js.map +1 -0
- package/dist/components/quick-action-modal.d.ts +30 -0
- package/dist/components/quick-action-modal.js +288 -0
- package/dist/components/quick-action-modal.js.map +1 -0
- package/dist/components/quick-action-sidebar-nav.d.ts +51 -0
- package/dist/components/quick-action-sidebar-nav.js +528 -0
- package/dist/components/quick-action-sidebar-nav.js.map +1 -0
- package/dist/components/recommended-actions-section.d.ts +23 -0
- package/dist/components/recommended-actions-section.js +215 -0
- package/dist/components/recommended-actions-section.js.map +1 -0
- package/dist/components/report-card.d.ts +26 -0
- package/dist/components/report-card.js +69 -0
- package/dist/components/report-card.js.map +1 -0
- package/dist/components/score-analysis-modal.d.ts +26 -0
- package/dist/components/score-analysis-modal.js +141 -0
- package/dist/components/score-analysis-modal.js.map +1 -0
- package/dist/components/score-breakdown.d.ts +17 -0
- package/dist/components/score-breakdown.js +162 -0
- package/dist/components/score-breakdown.js.map +1 -0
- package/dist/components/score-feedback.d.ts +40 -0
- package/dist/components/score-feedback.js +209 -0
- package/dist/components/score-feedback.js.map +1 -0
- package/dist/components/score-ring.d.ts +14 -0
- package/dist/components/score-ring.js +79 -0
- package/dist/components/score-ring.js.map +1 -0
- package/dist/components/scroll-area.d.ts +7 -0
- package/dist/components/scroll-area.js +101 -0
- package/dist/components/scroll-area.js.map +1 -0
- package/dist/components/select.d.ts +17 -0
- package/dist/components/select.js +228 -0
- package/dist/components/select.js.map +1 -0
- package/dist/components/separator.d.ts +6 -0
- package/dist/components/separator.js +61 -0
- package/dist/components/separator.js.map +1 -0
- package/dist/components/sheet.d.ts +16 -0
- package/dist/components/sheet.js +168 -0
- package/dist/components/sheet.js.map +1 -0
- package/dist/components/sidebar.d.ts +73 -0
- package/dist/components/sidebar.js +723 -0
- package/dist/components/sidebar.js.map +1 -0
- package/dist/components/signal-feedback-inline.d.ts +51 -0
- package/dist/components/signal-feedback-inline.js +548 -0
- package/dist/components/signal-feedback-inline.js.map +1 -0
- package/dist/components/simple-data-table.d.ts +15 -0
- package/dist/components/simple-data-table.js +91 -0
- package/dist/components/simple-data-table.js.map +1 -0
- package/dist/components/skeleton.d.ts +5 -0
- package/dist/components/skeleton.js +44 -0
- package/dist/components/skeleton.js.map +1 -0
- package/dist/components/status-badge.d.ts +10 -0
- package/dist/components/status-badge.js +82 -0
- package/dist/components/status-badge.js.map +1 -0
- package/dist/components/styled-bar-list.d.ts +20 -0
- package/dist/components/styled-bar-list.js +59 -0
- package/dist/components/styled-bar-list.js.map +1 -0
- package/dist/components/suggested-actions.d.ts +110 -0
- package/dist/components/suggested-actions.js +1538 -0
- package/dist/components/suggested-actions.js.map +1 -0
- package/dist/components/table.d.ts +12 -0
- package/dist/components/table.js +147 -0
- package/dist/components/table.js.map +1 -0
- package/dist/components/tabs.d.ts +14 -0
- package/dist/components/tabs.js +129 -0
- package/dist/components/tabs.js.map +1 -0
- package/dist/components/textarea.d.ts +5 -0
- package/dist/components/textarea.js +47 -0
- package/dist/components/textarea.js.map +1 -0
- package/dist/components/timeline-activity.d.ts +34 -0
- package/dist/components/timeline-activity.js +181 -0
- package/dist/components/timeline-activity.js.map +1 -0
- package/dist/components/tooltip.d.ts +9 -0
- package/dist/components/tooltip.js +93 -0
- package/dist/components/tooltip.js.map +1 -0
- package/dist/components/view-mode-toggle.d.ts +16 -0
- package/dist/components/view-mode-toggle.js +24 -0
- package/dist/components/view-mode-toggle.js.map +1 -0
- package/dist/hooks/use-mobile.d.ts +3 -0
- package/dist/hooks/use-mobile.js +21 -0
- package/dist/hooks/use-mobile.js.map +1 -0
- package/dist/index.d.ts +68 -1878
- package/dist/index.js +69 -10918
- package/dist/index.js.map +1 -1
- package/dist/lib/icons.d.ts +18 -0
- package/dist/lib/icons.js +21 -0
- package/dist/lib/icons.js.map +1 -0
- package/dist/lib/utils.d.ts +5 -0
- package/dist/lib/utils.js +9 -0
- package/dist/lib/utils.js.map +1 -0
- package/dist/prototype/index.d.ts +20 -0
- package/dist/prototype/index.js +8 -0
- package/dist/prototype/index.js.map +1 -0
- package/dist/prototype/prototype-accounts-view.d.ts +22 -0
- package/dist/prototype/prototype-accounts-view.js +70 -0
- package/dist/prototype/prototype-accounts-view.js.map +1 -0
- package/dist/prototype/prototype-admin-view.d.ts +21 -0
- package/dist/prototype/prototype-admin-view.js +53 -0
- package/dist/prototype/prototype-admin-view.js.map +1 -0
- package/dist/prototype/prototype-config.d.ts +226 -0
- package/dist/prototype/prototype-config.js +1 -0
- package/dist/prototype/prototype-config.js.map +1 -0
- package/dist/prototype/prototype-inbox-view.d.ts +48 -0
- package/dist/prototype/prototype-inbox-view.js +701 -0
- package/dist/prototype/prototype-inbox-view.js.map +1 -0
- package/dist/prototype/prototype-insights-view.d.ts +23 -0
- package/dist/prototype/prototype-insights-view.js +335 -0
- package/dist/prototype/prototype-insights-view.js.map +1 -0
- package/dist/prototype/prototype-shell.d.ts +40 -0
- package/dist/prototype/prototype-shell.js +190 -0
- package/dist/prototype/prototype-shell.js.map +1 -0
- package/dist/prototype/prototype-work-queue-view.d.ts +8 -0
- package/dist/prototype/prototype-work-queue-view.js +17 -0
- package/dist/prototype/prototype-work-queue-view.js.map +1 -0
- package/dist/three/agent-orb.d.ts +39 -0
- package/dist/three/agent-orb.js +500 -0
- package/dist/three/agent-orb.js.map +1 -0
- package/dist/three/index.d.ts +2 -0
- package/dist/three/index.js +2 -0
- package/dist/three/index.js.map +1 -0
- package/package.json +98 -17
- package/src/charts/bar-chart-component.tsx +150 -0
- package/src/charts/chart-tooltip.tsx +86 -0
- package/src/charts/chart.tsx +371 -0
- package/src/charts/donut-chart.tsx +112 -0
- package/src/charts/index.ts +13 -0
- package/src/charts/pipeline-overview.tsx +476 -0
- package/src/charts/sankey-chart.tsx +290 -0
- package/src/charts/top-line-metrics.tsx +261 -0
- package/src/charts/trend-area-chart.tsx +150 -0
- package/src/charts/volume-analysis-chart.tsx +124 -0
- package/src/components/activity-detail.tsx +233 -0
- package/src/components/activity-log.tsx +89 -0
- package/src/components/agent-popover.tsx +373 -0
- package/src/components/agent-widget.tsx +163 -0
- package/src/components/avatar.tsx +109 -0
- package/src/components/badge.tsx +48 -0
- package/src/components/button.tsx +59 -0
- package/src/components/card.tsx +92 -0
- package/src/components/contact-list.tsx +121 -0
- package/src/components/dashboard-cards.tsx +170 -0
- package/src/components/data-table-display.tsx +139 -0
- package/src/components/data-table-filter.tsx +138 -0
- package/src/components/data-table-quick-views.tsx +103 -0
- package/src/components/data-table-toolbar.tsx +56 -0
- package/src/components/data-table.tsx +915 -0
- package/src/components/detail-view.tsx +237 -0
- package/src/components/dialog.tsx +158 -0
- package/src/components/dropdown-menu.tsx +257 -0
- package/src/components/entity-panel.tsx +767 -0
- package/src/components/inbox-row.tsx +132 -0
- package/src/components/inbox-toolbar.tsx +213 -0
- package/src/components/input.tsx +21 -0
- package/src/components/insights-filter-bar.tsx +132 -0
- package/src/components/item-list-display.tsx +278 -0
- package/src/components/item-list-filter.tsx +118 -0
- package/src/components/item-list-toolbar.tsx +97 -0
- package/src/components/item-list.tsx +843 -0
- package/src/components/label.tsx +24 -0
- package/src/components/message.tsx +83 -0
- package/src/components/metric-card.tsx +178 -0
- package/src/components/performance-metrics-table.tsx +442 -0
- package/src/components/preview-list.tsx +62 -0
- package/src/components/progress.tsx +31 -0
- package/src/components/quick-action-chat-area.tsx +156 -0
- package/src/components/quick-action-modal.tsx +331 -0
- package/src/components/quick-action-sidebar-nav.tsx +592 -0
- package/src/components/recommended-actions-section.tsx +258 -0
- package/src/components/report-card.tsx +106 -0
- package/src/components/score-analysis-modal.tsx +172 -0
- package/src/components/score-breakdown.tsx +179 -0
- package/src/components/score-feedback.tsx +288 -0
- package/src/components/score-ring.tsx +87 -0
- package/src/components/scroll-area.tsx +58 -0
- package/src/components/select.tsx +190 -0
- package/src/components/separator.tsx +28 -0
- package/src/components/sheet.tsx +143 -0
- package/src/components/sidebar.tsx +726 -0
- package/src/components/signal-feedback-inline.tsx +591 -0
- package/src/components/simple-data-table.tsx +124 -0
- package/src/components/skeleton.tsx +15 -0
- package/src/components/status-badge.tsx +63 -0
- package/src/components/styled-bar-list.tsx +70 -0
- package/src/components/suggested-actions.tsx +1985 -0
- package/src/components/table.tsx +116 -0
- package/src/components/tabs.tsx +91 -0
- package/src/components/textarea.tsx +18 -0
- package/src/components/timeline-activity.tsx +234 -0
- package/src/components/tooltip.tsx +57 -0
- package/src/components/view-mode-toggle.tsx +39 -0
- package/src/hooks/use-mobile.ts +21 -0
- package/src/index.ts +77 -0
- package/src/lib/icons.ts +18 -0
- package/src/lib/utils.ts +6 -0
- package/src/prototype/index.ts +11 -0
- package/src/prototype/prototype-accounts-view.tsx +112 -0
- package/src/prototype/prototype-admin-view.tsx +67 -0
- package/src/prototype/prototype-config.ts +243 -0
- package/src/prototype/prototype-inbox-view.tsx +810 -0
- package/src/prototype/prototype-insights-view.tsx +379 -0
- package/src/prototype/prototype-shell.tsx +219 -0
- package/src/prototype/prototype-work-queue-view.tsx +30 -0
- package/src/styles/globals.css +299 -0
- package/src/three/agent-orb.tsx +557 -0
- package/src/three/index.ts +5 -0
- package/src/types/r3f.d.ts +8 -0
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../lib/utils.ts","../hooks/use-mobile.ts","../registry/new-york/ui/badge.tsx","../registry/new-york/ui/activity-detail.tsx","../registry/new-york/ui/activity-log.tsx","../registry/new-york/ui/avatar.tsx","../registry/new-york/ui/bar-chart-component.tsx","../registry/new-york/ui/button.tsx","../registry/new-york/ui/card.tsx","../registry/new-york/ui/chart.tsx","../registry/new-york/ui/chart-tooltip.tsx","../registry/new-york/ui/contact-list.tsx","../registry/new-york/ui/preview-list.tsx","../registry/new-york/ui/dashboard-cards.tsx","../registry/new-york/ui/dropdown-menu.tsx","../registry/new-york/ui/data-table-quick-views.tsx","../registry/new-york/ui/data-table-filter.tsx","../registry/new-york/ui/select.tsx","../registry/new-york/ui/data-table-display.tsx","../registry/new-york/ui/data-table-toolbar.tsx","../registry/new-york/ui/sheet.tsx","../registry/new-york/ui/score-ring.tsx","../registry/new-york/ui/score-breakdown.tsx","../registry/new-york/ui/signal-feedback-inline.tsx","../registry/new-york/ui/score-analysis-modal.tsx","../registry/new-york/ui/detail-view.tsx","../registry/new-york/ui/data-table.tsx","../registry/new-york/ui/dialog.tsx","../registry/new-york/ui/donut-chart.tsx","../registry/new-york/ui/input.tsx","../registry/new-york/ui/timeline-activity.tsx","../registry/new-york/ui/entity-panel.tsx","../registry/new-york/ui/inbox-row.tsx","../registry/new-york/ui/insights-filter-bar.tsx","../registry/new-york/ui/inbox-toolbar.tsx","../registry/new-york/ui/separator.tsx","../registry/new-york/ui/item-list-display.tsx","../registry/new-york/ui/item-list-filter.tsx","../registry/new-york/ui/item-list-toolbar.tsx","../registry/new-york/ui/item-list.tsx","../registry/new-york/ui/label.tsx","../registry/new-york/ui/metric-card.tsx","../registry/new-york/ui/scroll-area.tsx","../registry/new-york/ui/table.tsx","../registry/new-york/ui/performance-metrics-table.tsx","../registry/new-york/ui/tooltip.tsx","../registry/new-york/ui/pipeline-overview.tsx","../registry/new-york/ui/progress.tsx","../registry/new-york/ui/quick-action-chat-area.tsx","../registry/new-york/ui/quick-action-modal.tsx","../registry/new-york/ui/quick-action-sidebar-nav.tsx","../registry/new-york/ui/recommended-actions-section.tsx","../registry/new-york/ui/report-card.tsx","../registry/new-york/ui/sankey-chart.tsx","../registry/new-york/ui/score-feedback.tsx","../registry/new-york/ui/skeleton.tsx","../registry/new-york/ui/sidebar.tsx","../registry/new-york/ui/styled-bar-list.tsx","../registry/new-york/ui/suggested-actions.tsx","../registry/new-york/ui/tabs.tsx","../registry/new-york/ui/textarea.tsx","../registry/new-york/ui/top-line-metrics.tsx","../registry/new-york/ui/trend-area-chart.tsx","../registry/new-york/ui/view-mode-toggle.tsx","../registry/new-york/ui/volume-analysis-chart.tsx","../registry/new-york/ui/prototype-inbox-view.tsx","../registry/new-york/ui/prototype-insights-view.tsx","../registry/new-york/ui/prototype-accounts-view.tsx","../registry/new-york/ui/prototype-work-queue-view.tsx","../registry/new-york/ui/prototype-admin-view.tsx","../registry/new-york/ui/prototype-shell.tsx","../registry/new-york/ui/message.tsx","../registry/new-york/ui/status-badge.tsx","../registry/new-york/ui/simple-data-table.tsx","../registry/new-york/ui/agent-orb.tsx","../registry/new-york/ui/agent-widget.tsx","../registry/new-york/ui/agent-popover.tsx"],"names":["React","React2","React3","React4","ChevronDown","React5","AvatarPrimitive","React6","cva","Slot","React7","React8","React9","config","React10","React11","React12","React13","DropdownMenuPrimitive","React14","React15","X","React16","SelectPrimitive","React17","CheckIcon","React18","_a","_b","React19","SheetPrimitive","React20","React21","React22","React23","ExternalLink","ThumbsDown","React24","React25","ArrowLeft","HoverCardPrimitive","MessageSquare","ChevronUp","LinkIcon","React26","DialogPrimitive","React27","XIcon","React28","ResponsiveContainer","Tooltip","React29","React30","React31","Plus","Users","Briefcase","React32","Phone","Mail","React33","ChevronDownIcon","React34","User","React35","SeparatorPrimitive","React36","PopoverPrimitive","ListIcon","React37","Filter","React38","FILTER_CATEGORIES","toggleFilterValue","React39","AlertCircle","SearchX","Label","React40","React41","ArrowDown","ArrowUp","React42","ScrollAreaPrimitive","React43","React44","CheckCircle2","React45","TooltipPrimitive","React46","ArrowRight","Info","TrendingUp","React47","ProgressPrimitive","React48","React49","Building","Activity","Search","React50","React51","DollarSign","CheckSquare","Clock","ThumbsUp","React52","React53","ResponsiveSankey","React54","Root","Check","React55","React56","open","React57","positivePills","negativePills","List","_c","React59","TabsPrimitive","React60","React61","MoreHorizontal","React62","AreaChart","CartesianGrid","XAxis","YAxis","Area","React63","React64","React65","ChevronRight","Tag","Square","Eye","FileText","React66","BarChart2","MessageCircle","React67","React68","Settings","React69","React70","React71","React72","React73","useReactTable","getCoreRowModel","getSortedRowModel","flexRender","ArrowUpDown","React74","useRef","useEffect","useMemo","React75","Sparkles","React76"],"mappings":"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","file":"index.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","import * as React from \"react\";\n\nconst MOBILE_BREAKPOINT = 768;\n\nexport function useIsMobile() {\n const [isMobile, setIsMobile] = React.useState<boolean | undefined>(\n undefined,\n );\n\n React.useEffect(() => {\n const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`);\n const onChange = () => {\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);\n };\n mql.addEventListener(\"change\", onChange);\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);\n return () => mql.removeEventListener(\"change\", onChange);\n }, []);\n\n return !!isMobile;\n}\n","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { Slot } from \"radix-ui\"\n\nimport { cn } from \"../../../lib/utils\"\n\nconst badgeVariants = cva(\n \"inline-flex items-center justify-center rounded-md border border-transparent px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground [a&]:hover:bg-primary/90\",\n secondary:\n \"bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90\",\n destructive:\n \"bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60\",\n outline:\n \"border-border text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground\",\n ghost: \"[a&]:hover:bg-accent [a&]:hover:text-accent-foreground\",\n link: \"text-primary underline-offset-4 [a&]:hover:underline\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nfunction Badge({\n className,\n variant = \"default\",\n asChild = false,\n ...props\n}: React.ComponentProps<\"span\"> &\n VariantProps<typeof badgeVariants> & { asChild?: boolean }) {\n const Comp = asChild ? Slot.Root : \"span\"\n\n return (\n <Comp\n data-slot=\"badge\"\n data-variant={variant}\n className={cn(badgeVariants({ variant }), className)}\n {...props}\n />\n )\n}\n\nexport { Badge, badgeVariants }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { ArrowLeft, ExternalLink, ChevronDown, ChevronUp } from \"lucide-react\"\nimport { Button } from \"./button\"\nimport { Badge } from \"./badge\"\n\nexport interface ActivityThreadMessage {\n id: string\n sender: string\n time: string\n content: string\n isCurrent?: boolean\n to?: string\n cc?: string\n subject?: string\n}\n\nexport interface ActivityParticipant {\n name: string\n role?: string\n}\n\nexport interface ActivityDetailData {\n icon: React.ReactNode\n title: string\n details: string\n content?: string\n time: string\n source: string\n sourceIcon?: React.ReactNode\n type?: \"email\" | \"call\" | \"meeting\" | \"signal\"\n thread?: ActivityThreadMessage[]\n participants?: ActivityParticipant[]\n tags?: string[]\n externalUrl?: string\n}\n\nexport interface ActivityDetailProps {\n activity: ActivityDetailData\n onBack?: () => void\n actions?: React.ReactNode\n}\n\nfunction EmailMessage({ msg, defaultExpanded }: { msg: ActivityThreadMessage; defaultExpanded: boolean }) {\n const [expanded, setExpanded] = React.useState(defaultExpanded)\n\n return (\n <div className=\"border-b border-border/20 last:border-0\">\n <button\n onClick={() => setExpanded(!expanded)}\n className=\"w-full text-left py-2.5 hover:bg-muted/10 transition-colors\"\n >\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-2 min-w-0\">\n <span className=\"text-xs font-semibold text-foreground shrink-0\">{msg.sender}</span>\n {!expanded && (\n <span className=\"text-xs text-muted-foreground truncate\">— {msg.content.slice(0, 80)}{msg.content.length > 80 ? \"...\" : \"\"}</span>\n )}\n </div>\n <div className=\"flex items-center gap-2 shrink-0 ml-2\">\n <span className=\"text-xs text-muted-foreground/60\">{msg.time}</span>\n {expanded ? <ChevronUp className=\"w-3 h-3 text-muted-foreground/40\" /> : <ChevronDown className=\"w-3 h-3 text-muted-foreground/40\" />}\n </div>\n </div>\n </button>\n\n {expanded && (\n <div className=\"pb-3 animate-in fade-in duration-150\">\n {(msg.to || msg.cc) && (\n <div className=\"text-xs text-muted-foreground/60 space-y-0.5 mb-2\">\n {msg.to && <p>To: {msg.to}</p>}\n {msg.cc && <p>Cc: {msg.cc}</p>}\n </div>\n )}\n <div className=\"text-sm text-foreground/90 leading-relaxed whitespace-pre-line\">{msg.content}</div>\n </div>\n )}\n </div>\n )\n}\n\nexport function ActivityDetail({ activity, onBack, actions }: ActivityDetailProps) {\n const [threadExpanded, setThreadExpanded] = React.useState(false)\n const hasThread = activity.thread && activity.thread.length > 0\n const isEmail = activity.type === \"email\"\n\n return (\n <div className=\"space-y-0 animate-in fade-in slide-in-from-right-2 duration-200\">\n {/* Back + header */}\n <div className=\"flex items-center justify-between mb-4\">\n {onBack && (\n <button\n onClick={onBack}\n className=\"flex items-center gap-1.5 text-xs text-muted-foreground hover:text-foreground transition-colors\"\n >\n <ArrowLeft className=\"w-3.5 h-3.5\" />\n Back to activity\n </button>\n )}\n {activity.externalUrl && (\n <a\n href={activity.externalUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"flex items-center gap-1 text-xs text-muted-foreground hover:text-foreground transition-colors\"\n >\n Open in {activity.source}\n <ExternalLink className=\"w-3 h-3\" />\n </a>\n )}\n </div>\n\n {/* Title block */}\n <div className=\"flex items-start gap-3 pb-4 border-b border-border/30\">\n <div className=\"mt-0.5 w-8 h-8 rounded-md border border-border/60 bg-muted/30 flex items-center justify-center shrink-0 text-muted-foreground\">\n {activity.sourceIcon ?? activity.icon}\n </div>\n <div className=\"flex-1 min-w-0\">\n <h3 className=\"font-medium text-sm text-foreground leading-snug\">{activity.title}</h3>\n <p className=\"text-xs text-muted-foreground/60 mt-1\">{activity.time} · {activity.source}</p>\n </div>\n </div>\n\n {/* Tags */}\n {activity.tags && activity.tags.length > 0 && (\n <div className=\"flex flex-wrap gap-1.5 py-3 border-b border-border/30\">\n {activity.tags.map((tag) => (\n <Badge\n key={tag}\n variant=\"outline\"\n className=\"shadow-none px-2 py-0 text-[11px] font-medium text-muted-foreground border-border\"\n >\n {tag}\n </Badge>\n ))}\n </div>\n )}\n\n {/* Participants (non-email only; email shows to/cc per message) */}\n {!isEmail && activity.participants && activity.participants.length > 0 && (\n <div className=\"py-3 border-b border-border/30\">\n <span className=\"text-[11px] font-bold text-muted-foreground/70 uppercase tracking-wider\">Participants</span>\n <div className=\"mt-2 space-y-1\">\n {activity.participants.map((p, i) => (\n <div key={i} className=\"flex items-center gap-2 text-sm\">\n <span className=\"font-medium text-foreground\">{p.name}</span>\n {p.role && (\n <>\n <span className=\"text-muted-foreground/40\">·</span>\n <span className=\"text-muted-foreground\">{p.role}</span>\n </>\n )}\n </div>\n ))}\n </div>\n </div>\n )}\n\n {/* Body content (non-email, or email summary) */}\n {(!isEmail || !hasThread) && (\n <div className=\"py-4 border-b border-border/30\">\n <p className=\"text-sm text-foreground/90 leading-relaxed\">{activity.details}</p>\n {activity.content && (\n <div className=\"mt-3 text-sm text-muted-foreground leading-relaxed whitespace-pre-line\">\n {activity.content}\n </div>\n )}\n </div>\n )}\n\n {/* Email context line when thread exists */}\n {isEmail && hasThread && (\n <div className=\"py-3 border-b border-border/30\">\n <p className=\"text-sm text-muted-foreground leading-snug\">{activity.details}</p>\n </div>\n )}\n\n {/* Thread: email vs generic */}\n {hasThread && isEmail ? (\n <div className=\"py-3 border-b border-border/30\">\n <div className=\"flex items-center justify-between mb-3\">\n <span className=\"text-[11px] font-bold text-muted-foreground/70 uppercase tracking-wider\">\n {activity.thread!.length} messages\n </span>\n </div>\n <div className=\"space-y-0\">\n {activity.thread!.map((msg, i) => (\n <EmailMessage\n key={msg.id}\n msg={msg}\n defaultExpanded={i === activity.thread!.length - 1}\n />\n ))}\n </div>\n </div>\n ) : hasThread ? (\n <div className=\"py-3 border-b border-border/30\">\n <button\n onClick={() => setThreadExpanded(!threadExpanded)}\n className=\"flex items-center gap-1.5 text-[11px] font-bold text-muted-foreground/70 hover:text-foreground transition-colors uppercase tracking-wider\"\n >\n Thread · {activity.thread!.length} messages\n <ChevronDown className={`w-3.5 h-3.5 transition-transform duration-200 ${threadExpanded ? \"rotate-180\" : \"\"}`} />\n </button>\n\n {threadExpanded && (\n <div className=\"mt-3 space-y-0 animate-in fade-in slide-in-from-top-1 duration-200\">\n {activity.thread!.map((msg) => (\n <div\n key={msg.id}\n className={`py-2.5 border-b border-border/20 last:border-0 ${msg.isCurrent ? \"bg-muted/20 -mx-2 px-2 rounded-sm\" : \"\"}`}\n >\n <div className=\"flex items-center justify-between mb-1\">\n <span className=\"text-xs font-semibold text-foreground\">{msg.sender}</span>\n <span className=\"text-xs text-muted-foreground/60\">{msg.time}</span>\n </div>\n <p className=\"text-sm text-muted-foreground leading-snug\">{msg.content}</p>\n </div>\n ))}\n </div>\n )}\n </div>\n ) : null}\n\n {/* Actions */}\n {actions && (\n <div className=\"pt-4\">\n {actions}\n </div>\n )}\n </div>\n )\n}\n","import * as React from \"react\"\nimport { Activity, Scale, Heart, MessageSquare, ArrowRight, ChevronDown } from \"lucide-react\"\nimport { format } from \"date-fns\"\nimport { cn } from \"../../../lib/utils\"\n\nexport interface ActivityLogItem {\n id: string\n type: \"workout\" | \"weighin\" | \"biometric\" | \"checkin\" | string\n title: string\n details: string\n date: string\n time: string\n}\n\nexport interface ActivityLogProps {\n items: ActivityLogItem[]\n title?: string\n initialLimit?: number\n}\n\nconst getIcon = (type: string) => {\n switch (type) {\n case \"workout\":\n return <Activity size={16} className=\"text-orange-500\" />\n case \"weighin\":\n return <Scale size={16} className=\"text-blue-500\" />\n case \"biometric\":\n return <Heart size={16} className=\"text-rose-500\" />\n case \"checkin\":\n return <MessageSquare size={16} className=\"text-indigo-500\" />\n default:\n return <Activity size={16} className=\"text-gray-500\" />\n }\n}\n\nexport function ActivityRow({ item }: { item: ActivityLogItem }) {\n return (\n <div className=\"flex items-center gap-4 py-3 border-b border-gray-100 last:border-0 hover:bg-gray-50 px-2 -mx-2 rounded-md transition-colors group\">\n <div className=\"flex-shrink-0 w-8 h-8 rounded-full bg-gray-50 border border-gray-200 flex items-center justify-center\">\n {getIcon(item.type)}\n </div>\n\n <div className=\"flex-1 min-w-0 flex flex-col sm:flex-row sm:items-center gap-1 sm:gap-2\">\n <span className=\"font-medium text-sm text-gray-900\">{item.title}</span>\n <span className=\"hidden sm:inline text-gray-300\">•</span>\n <span className=\"text-xs text-gray-500 truncate\">{item.details}</span>\n\n {item.type === \"checkin\" && (\n <button className=\"ml-auto sm:ml-2 text-xs text-indigo-600 hover:text-indigo-800 font-medium flex items-center gap-0.5 opacity-0 group-hover:opacity-100 transition-opacity\">\n view <ArrowRight size={10} />\n </button>\n )}\n </div>\n\n <div className=\"text-right flex-shrink-0\">\n <div className=\"text-xs text-gray-500\">{format(new Date(item.date), \"MMM d\")}</div>\n <div className=\"text-[10px] text-gray-400\">{item.time}</div>\n </div>\n </div>\n )\n}\n\nexport function ActivityLog({ items, title = \"Recent Activity\", initialLimit = 5 }: ActivityLogProps) {\n const [limit, setLimit] = React.useState(initialLimit)\n const displayedLogs = items.slice(0, limit)\n const hasMore = limit < items.length\n\n return (\n <div className=\"bg-white rounded-xl border border-gray-200 p-6 shadow-sm\">\n <h2 className=\"text-lg font-semibold text-gray-900 mb-4\">{title}</h2>\n\n <div className=\"flex flex-col\">\n {displayedLogs.map((item) => (\n <ActivityRow key={item.id} item={item} />\n ))}\n </div>\n\n {hasMore && (\n <button\n onClick={() => setLimit((prev) => prev + 5)}\n className=\"w-full mt-4 py-2 flex items-center justify-center gap-2 text-sm text-gray-500 hover:text-gray-900 hover:bg-gray-50 rounded-md transition-colors border border-dashed border-gray-200\"\n >\n <ChevronDown size={14} />\n Show more\n </button>\n )}\n </div>\n )\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Avatar as AvatarPrimitive } from \"radix-ui\"\n\nimport { cn } from \"../../../lib/utils\"\n\nfunction Avatar({\n className,\n size = \"default\",\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Root> & {\n size?: \"default\" | \"sm\" | \"lg\"\n}) {\n return (\n <AvatarPrimitive.Root\n data-slot=\"avatar\"\n data-size={size}\n className={cn(\n \"group/avatar relative flex size-8 shrink-0 overflow-hidden rounded-full select-none data-[size=lg]:size-10 data-[size=sm]:size-6\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AvatarImage({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Image>) {\n return (\n <AvatarPrimitive.Image\n data-slot=\"avatar-image\"\n className={cn(\"aspect-square size-full\", className)}\n {...props}\n />\n )\n}\n\nfunction AvatarFallback({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Fallback>) {\n return (\n <AvatarPrimitive.Fallback\n data-slot=\"avatar-fallback\"\n className={cn(\n \"bg-muted text-muted-foreground flex size-full items-center justify-center rounded-full text-sm group-data-[size=sm]/avatar:text-xs\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AvatarBadge({ className, ...props }: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"avatar-badge\"\n className={cn(\n \"bg-primary text-primary-foreground ring-background absolute right-0 bottom-0 z-10 inline-flex items-center justify-center rounded-full ring-2 select-none\",\n \"group-data-[size=sm]/avatar:size-2 group-data-[size=sm]/avatar:[&>svg]:hidden\",\n \"group-data-[size=default]/avatar:size-2.5 group-data-[size=default]/avatar:[&>svg]:size-2\",\n \"group-data-[size=lg]/avatar:size-3 group-data-[size=lg]/avatar:[&>svg]:size-2\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AvatarGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"avatar-group\"\n className={cn(\n \"*:data-[slot=avatar]:ring-background group/avatar-group flex -space-x-2 *:data-[slot=avatar]:ring-2\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AvatarGroupCount({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"avatar-group-count\"\n className={cn(\n \"bg-muted text-muted-foreground ring-background relative flex size-8 shrink-0 items-center justify-center rounded-full text-sm ring-2 group-has-data-[size=lg]/avatar-group:size-10 group-has-data-[size=sm]/avatar-group:size-6 [&>svg]:size-4 group-has-data-[size=lg]/avatar-group:[&>svg]:size-5 group-has-data-[size=sm]/avatar-group:[&>svg]:size-3\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n Avatar,\n AvatarImage,\n AvatarFallback,\n AvatarBadge,\n AvatarGroup,\n AvatarGroupCount,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport {\n BarChart,\n Bar,\n XAxis,\n YAxis,\n CartesianGrid,\n Tooltip,\n ResponsiveContainer,\n} from \"recharts\"\n\nimport { cn } from \"../../../lib/utils\"\n\nexport interface BarSeries {\n dataKey: string\n color: string\n name?: string\n icon?: React.ComponentType<{ className?: string }>\n barSize?: number\n}\n\nexport interface BarChartComponentProps {\n data: Record<string, unknown>[]\n bars: BarSeries[]\n height?: number\n xAxisKey?: string\n showGrid?: boolean\n showLegend?: boolean\n barGap?: number\n className?: string\n}\n\nfunction CustomBarTooltip({ active, payload, label }: any) {\n if (!active || !payload?.length) return null\n\n return (\n <div className=\"rounded-lg border border-border bg-card px-3 py-2 shadow-md\">\n {label ? (\n <p className=\"mb-1.5 text-xs font-medium text-muted-foreground\">{label}</p>\n ) : null}\n <div className=\"space-y-1\">\n {payload.map((entry: any, i: number) => (\n <div key={i} className=\"flex items-center gap-2 text-xs\">\n <div\n className=\"h-2 w-2 shrink-0 rounded-full\"\n style={{ backgroundColor: entry.fill || entry.color }}\n />\n <span className=\"font-medium text-muted-foreground\">\n {entry.name}:\n </span>\n <span className=\"font-semibold text-foreground\">{entry.value}</span>\n </div>\n ))}\n </div>\n </div>\n )\n}\n\nfunction CustomLegend({ bars }: { bars: BarSeries[] }) {\n return (\n <div className=\"mt-3 flex flex-wrap items-center justify-center gap-4\">\n {bars.map((bar) => (\n <div key={bar.dataKey} className=\"flex items-center gap-1.5 text-xs\">\n {bar.icon ? (\n <bar.icon className=\"h-3.5 w-3.5 text-muted-foreground\" />\n ) : (\n <div\n className=\"h-2.5 w-2.5 shrink-0 rounded-sm\"\n style={{ backgroundColor: bar.color }}\n />\n )}\n <span className=\"font-medium text-muted-foreground\">\n {bar.name || bar.dataKey}\n </span>\n </div>\n ))}\n </div>\n )\n}\n\nexport function BarChartComponent({\n data,\n bars,\n height = 280,\n xAxisKey = \"date\",\n showGrid = true,\n showLegend = true,\n barGap = 2,\n className,\n}: BarChartComponentProps) {\n return (\n <div className={cn(\"w-full\", className)}>\n <div style={{ height }}>\n <ResponsiveContainer\n width=\"100%\"\n height=\"100%\"\n debounce={1}\n minWidth={1}\n minHeight={1}\n >\n <BarChart\n data={data}\n margin={{ top: 10, right: 10, left: -20, bottom: 0 }}\n barGap={barGap}\n >\n {showGrid ? (\n <CartesianGrid\n strokeDasharray=\"3 3\"\n vertical={false}\n stroke=\"#f1f5f9\"\n />\n ) : null}\n <XAxis\n dataKey={xAxisKey}\n axisLine={false}\n tickLine={false}\n tick={{ fill: \"#64748B\", fontSize: 12 }}\n />\n <YAxis\n axisLine={false}\n tickLine={false}\n tick={{ fill: \"#64748B\", fontSize: 12 }}\n />\n <Tooltip content={<CustomBarTooltip />} cursor={false} />\n {bars.map((bar) => (\n <Bar\n key={bar.dataKey}\n dataKey={bar.dataKey}\n fill={bar.color}\n name={bar.name || bar.dataKey}\n barSize={bar.barSize ?? 12}\n />\n ))}\n </BarChart>\n </ResponsiveContainer>\n </div>\n {showLegend ? <CustomLegend bars={bars} /> : null}\n </div>\n )\n}\n","import * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../../lib/utils\"\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n {\n variants: {\n variant: {\n default:\n \"bg-primary text-primary-foreground shadow-xs hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-white shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60\",\n outline:\n \"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50\",\n secondary:\n \"bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80\",\n ghost:\n \"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-9 px-4 py-2 has-[>svg]:px-3\",\n sm: \"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5\",\n lg: \"h-10 rounded-md px-6 has-[>svg]:px-4\",\n icon: \"size-9\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nfunction Button({\n className,\n variant,\n size,\n asChild = false,\n ...props\n}: React.ComponentProps<\"button\"> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean\n }) {\n const Comp = asChild ? Slot : \"button\"\n\n return (\n <Comp\n data-slot=\"button\"\n className={cn(buttonVariants({ variant, size, className }))}\n {...props}\n />\n )\n}\n\nexport { Button, buttonVariants }\n","import * as React from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\n\nfunction Card({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card\"\n className={cn(\n \"bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CardHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-header\"\n className={cn(\n \"@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CardTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-title\"\n className={cn(\"leading-none font-semibold\", className)}\n {...props}\n />\n )\n}\n\nfunction CardDescription({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n )\n}\n\nfunction CardAction({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-action\"\n className={cn(\n \"col-start-2 row-span-2 row-start-1 self-start justify-self-end\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CardContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-content\"\n className={cn(\"px-6\", className)}\n {...props}\n />\n )\n}\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-footer\"\n className={cn(\"flex items-center px-6 [.border-t]:pt-6\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Card,\n CardHeader,\n CardFooter,\n CardTitle,\n CardAction,\n CardDescription,\n CardContent,\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as RechartsPrimitive from \"recharts\";\n\nimport { cn } from \"../../../lib/utils\";\n\n// Format: { THEME_NAME: CSS_SELECTOR }\nconst THEMES = { light: \"\", dark: \".dark\" } as const;\n\nexport type ChartConfig = {\n [k in string]: {\n label?: React.ReactNode;\n icon?: React.ComponentType;\n } & (\n | { color?: string; theme?: never }\n | { color?: never; theme: Record<keyof typeof THEMES, string> }\n );\n};\n\ntype ChartContextProps = {\n config: ChartConfig;\n};\n\nconst ChartContext = React.createContext<ChartContextProps | null>(null);\n\nfunction useChart() {\n const context = React.useContext(ChartContext);\n\n if (!context) {\n throw new Error(\"useChart must be used within a <ChartContainer />\");\n }\n\n return context;\n}\n\nfunction ChartContainer({\n id,\n className,\n children,\n config,\n ...props\n}: React.ComponentProps<\"div\"> & {\n config: ChartConfig;\n children: React.ComponentProps<\n typeof RechartsPrimitive.ResponsiveContainer\n >[\"children\"];\n}) {\n const uniqueId = React.useId();\n const chartId = `chart-${id || uniqueId.replace(/:/g, \"\")}`;\n\n return (\n <ChartContext.Provider value={{ config }}>\n <div\n data-slot=\"chart\"\n data-chart={chartId}\n className={cn(\n \"[&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border flex aspect-video justify-center text-xs [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.recharts-sector]:outline-hidden [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-surface]:outline-hidden\",\n className,\n )}\n {...props}\n >\n <ChartStyle id={chartId} config={config} />\n <RechartsPrimitive.ResponsiveContainer>\n {children}\n </RechartsPrimitive.ResponsiveContainer>\n </div>\n </ChartContext.Provider>\n );\n}\n\nconst ChartStyle = ({ id, config }: { id: string; config: ChartConfig }) => {\n const colorConfig = Object.entries(config).filter(\n ([, config]) => config.theme || config.color,\n );\n\n if (!colorConfig.length) {\n return null;\n }\n\n return (\n <style\n dangerouslySetInnerHTML={{\n __html: Object.entries(THEMES)\n .map(\n ([theme, prefix]) => `\n${prefix} [data-chart=${id}] {\n${colorConfig\n .map(([key, itemConfig]) => {\n const color =\n itemConfig.theme?.[theme as keyof typeof itemConfig.theme] ||\n itemConfig.color;\n return color ? ` --color-${key}: ${color};` : null;\n })\n .join(\"\\n\")}\n}\n`,\n )\n .join(\"\\n\"),\n }}\n />\n );\n};\n\nconst ChartTooltip = RechartsPrimitive.Tooltip;\n\ntype TooltipPayloadItem = {\n name?: string;\n value?: number | string;\n dataKey?: string;\n payload?: Record<string, unknown>;\n color?: string;\n fill?: string;\n};\n\nfunction ChartTooltipContent({\n active,\n payload,\n className,\n indicator = \"dot\",\n hideLabel = false,\n hideIndicator = false,\n label,\n labelFormatter,\n labelClassName,\n formatter,\n color,\n nameKey,\n labelKey,\n}: React.ComponentProps<\"div\"> & {\n active?: boolean;\n payload?: TooltipPayloadItem[];\n label?: string;\n labelFormatter?: (value: unknown, payload: TooltipPayloadItem[]) => React.ReactNode;\n formatter?: (value: unknown, name: string, item: TooltipPayloadItem, index: number, payload: Record<string, unknown>) => React.ReactNode;\n hideLabel?: boolean;\n hideIndicator?: boolean;\n indicator?: \"line\" | \"dot\" | \"dashed\";\n nameKey?: string;\n labelKey?: string;\n labelClassName?: string;\n color?: string;\n}) {\n const { config } = useChart();\n\n const tooltipLabel = React.useMemo(() => {\n if (hideLabel || !payload?.length) {\n return null;\n }\n\n const [item] = payload;\n const key = `${labelKey || item?.dataKey || item?.name || \"value\"}`;\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\n const value =\n !labelKey && typeof label === \"string\"\n ? config[label as keyof typeof config]?.label || label\n : itemConfig?.label;\n\n if (labelFormatter) {\n return (\n <div className={cn(\"font-medium\", labelClassName)}>\n {labelFormatter(value, payload)}\n </div>\n );\n }\n\n if (!value) {\n return null;\n }\n\n return <div className={cn(\"font-medium\", labelClassName)}>{value}</div>;\n }, [\n label,\n labelFormatter,\n payload,\n hideLabel,\n labelClassName,\n config,\n labelKey,\n ]);\n\n if (!active || !payload?.length) {\n return null;\n }\n\n const nestLabel = payload.length === 1 && indicator !== \"dot\";\n\n return (\n <div\n className={cn(\n \"border-border/50 bg-background grid min-w-[8rem] items-start gap-1.5 rounded-lg border px-2.5 py-1.5 text-xs shadow-xl\",\n className,\n )}\n >\n {!nestLabel ? tooltipLabel : null}\n <div className=\"grid gap-1.5\">\n {payload.map((item: TooltipPayloadItem, index: number) => {\n const key = `${nameKey || item.name || item.dataKey || \"value\"}`;\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\n const indicatorColor = color || item.payload?.fill || item.color;\n\n return (\n <div\n key={item.dataKey}\n className={cn(\n \"[&>svg]:text-muted-foreground flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5\",\n indicator === \"dot\" && \"items-center\",\n )}\n >\n {formatter && item?.value !== undefined && item.name ? (\n formatter(item.value, item.name, item, index, item.payload ?? {})\n ) : (\n <>\n {itemConfig?.icon ? (\n <itemConfig.icon />\n ) : (\n !hideIndicator && (\n <div\n className={cn(\n \"shrink-0 rounded-[2px] border-(--color-border) bg-(--color-bg)\",\n {\n \"h-2.5 w-2.5\": indicator === \"dot\",\n \"w-1\": indicator === \"line\",\n \"w-0 border-[1.5px] border-dashed bg-transparent\":\n indicator === \"dashed\",\n \"my-0.5\": nestLabel && indicator === \"dashed\",\n },\n )}\n style={\n {\n \"--color-bg\": indicatorColor,\n \"--color-border\": indicatorColor,\n } as React.CSSProperties\n }\n />\n )\n )}\n <div\n className={cn(\n \"flex flex-1 justify-between leading-none\",\n nestLabel ? \"items-end\" : \"items-center\",\n )}\n >\n <div className=\"grid gap-1.5\">\n {nestLabel ? tooltipLabel : null}\n <span className=\"text-muted-foreground\">\n {itemConfig?.label || item.name}\n </span>\n </div>\n {item.value && (\n <span className=\"text-foreground font-mono font-medium tabular-nums\">\n {item.value.toLocaleString()}\n </span>\n )}\n </div>\n </>\n )}\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n\nconst ChartLegend = RechartsPrimitive.Legend;\n\ntype LegendPayloadItem = { value?: string; dataKey?: string; [key: string]: unknown };\n\nfunction ChartLegendContent({\n className,\n hideIcon = false,\n payload,\n verticalAlign = \"bottom\",\n nameKey,\n}: React.ComponentProps<\"div\"> & {\n payload?: LegendPayloadItem[];\n verticalAlign?: \"top\" | \"bottom\";\n hideIcon?: boolean;\n nameKey?: string;\n}) {\n const { config } = useChart();\n\n if (!payload?.length) {\n return null;\n }\n\n return (\n <div\n className={cn(\n \"flex items-center justify-center gap-4\",\n verticalAlign === \"top\" ? \"pb-3\" : \"pt-3\",\n className,\n )}\n >\n {payload.map((item: LegendPayloadItem) => {\n const key = `${nameKey || item.dataKey || \"value\"}`;\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\n\n return (\n <div\n key={item.value}\n className={cn(\n \"[&>svg]:text-muted-foreground flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3\",\n )}\n >\n {itemConfig?.icon && !hideIcon ? (\n <itemConfig.icon />\n ) : (\n <div\n className=\"h-2 w-2 shrink-0 rounded-[2px]\"\n style={{\n backgroundColor: item.color as string | undefined,\n }}\n />\n )}\n {itemConfig?.label}\n </div>\n );\n })}\n </div>\n );\n}\n\n// Helper to extract item config from a payload.\nfunction getPayloadConfigFromPayload(\n config: ChartConfig,\n payload: unknown,\n key: string,\n) {\n if (typeof payload !== \"object\" || payload === null) {\n return undefined;\n }\n\n const payloadPayload =\n \"payload\" in payload &&\n typeof payload.payload === \"object\" &&\n payload.payload !== null\n ? payload.payload\n : undefined;\n\n let configLabelKey: string = key;\n\n if (\n key in payload &&\n typeof payload[key as keyof typeof payload] === \"string\"\n ) {\n configLabelKey = payload[key as keyof typeof payload] as string;\n } else if (\n payloadPayload &&\n key in payloadPayload &&\n typeof payloadPayload[key as keyof typeof payloadPayload] === \"string\"\n ) {\n configLabelKey = payloadPayload[\n key as keyof typeof payloadPayload\n ] as string;\n }\n\n return configLabelKey in config\n ? config[configLabelKey]\n : config[key as keyof typeof config];\n}\n\nexport {\n ChartContainer,\n ChartTooltip,\n ChartTooltipContent,\n ChartLegend,\n ChartLegendContent,\n ChartStyle,\n};\n","\"use client\"\n\nimport * as React from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\n\nexport interface ChartTooltipEntry {\n name?: string\n value?: number | string\n dataKey?: string\n color?: string\n stroke?: string\n fill?: string\n}\n\nexport interface SimpleChartTooltipProps {\n active?: boolean\n payload?: ChartTooltipEntry[]\n label?: string\n formatter?: (value: number | string, name: string) => [string, string]\n className?: string\n}\n\nexport function SimpleChartTooltip({\n active,\n payload,\n label,\n formatter,\n className,\n}: SimpleChartTooltipProps) {\n if (!active || !payload || !payload.length) {\n return null\n }\n\n return (\n <div\n className={cn(\n \"rounded-lg border border-border bg-card px-3 py-2 shadow-md\",\n className,\n )}\n style={{ fontSize: \"12px\" }}\n >\n {label ? (\n <p className=\"mb-1 text-xs font-medium text-muted-foreground\">{label}</p>\n ) : null}\n {payload.map((entry, index) => {\n const value = entry.value ?? \"\"\n const name = entry.name || entry.dataKey || \"\"\n const color = entry.color || entry.stroke || entry.fill\n\n const [displayValue, displayName] = formatter\n ? formatter(value as number | string, name)\n : [String(value), name]\n\n return (\n <div key={index} className=\"flex items-center gap-2\">\n {color ? (\n <div\n className=\"h-2 w-2 shrink-0 rounded-full\"\n style={{ backgroundColor: color }}\n />\n ) : null}\n <span className=\"text-xs font-medium text-foreground\">\n {displayName}: {displayValue}\n </span>\n </div>\n )\n })}\n </div>\n )\n}\n\nexport const CHART_TOOLTIP_STYLE: React.CSSProperties = {\n backgroundColor: \"#fff\",\n borderRadius: \"8px\",\n fontSize: \"12px\",\n padding: \"8px\",\n border: \"1px solid #e2e8f0\",\n boxShadow: \"0 4px 6px -1px rgba(0, 0, 0, 0.1)\",\n}\n\nexport const CHART_CURSOR_STYLE = {\n stroke: \"#94a3b8\",\n strokeWidth: 1,\n strokeDasharray: \"4 4\",\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Plus, X } from \"lucide-react\"\nimport { Badge } from \"./badge\"\nimport { Button } from \"./button\"\n\nexport interface ContactChannel {\n type: \"linkedin\" | \"gmail\" | \"salesforce\" | \"phone\" | \"custom\"\n icon: React.ReactNode\n label?: string\n onClick?: () => void\n}\n\nexport interface ContactItem {\n id: string\n name: string\n role: string\n badge?: {\n label: string\n color?: \"indigo\" | \"green\" | \"amber\" | \"red\" | \"muted\"\n }\n channels?: ContactChannel[]\n action?: {\n label: string\n onClick?: () => void\n }\n description?: string\n onDismiss?: () => void\n}\n\nexport interface ContactListProps {\n title?: string\n count?: string\n contacts: ContactItem[]\n onAdd?: () => void\n addLabel?: string\n}\n\nconst badgeColors: Record<string, string> = {\n indigo: \"bg-indigo-50 text-indigo-700 border-indigo-200 dark:bg-indigo-900/30 dark:text-indigo-300 dark:border-indigo-800\",\n green: \"bg-green-50 text-green-700 border-green-200 dark:bg-green-900/30 dark:text-green-300 dark:border-green-800\",\n amber: \"bg-amber-50 text-amber-700 border-amber-200 dark:bg-amber-900/30 dark:text-amber-300 dark:border-amber-800\",\n red: \"bg-red-50 text-red-700 border-red-200 dark:bg-red-900/30 dark:text-red-300 dark:border-red-800\",\n muted: \"bg-muted text-muted-foreground border-border\",\n}\n\nfunction ContactRow({ contact }: { contact: ContactItem }) {\n return (\n <div className=\"flex items-center justify-between gap-3 group py-2.5 border-b border-border/30 last:border-0 hover:bg-muted/20 -mx-2 px-2 rounded-sm transition-colors\">\n <div className=\"flex items-center gap-2.5 min-w-0\">\n {contact.badge && (\n <Badge\n variant=\"outline\"\n className={`shadow-none px-2 py-0 text-[11px] font-medium shrink-0 ${badgeColors[contact.badge.color ?? \"muted\"]}`}\n >\n {contact.badge.label}\n </Badge>\n )}\n <span className=\"font-medium text-sm text-foreground truncate\">{contact.name}</span>\n <span className=\"text-muted-foreground text-sm shrink-0\">·</span>\n <span className=\"text-muted-foreground text-sm truncate\">{contact.role}</span>\n </div>\n\n <div className=\"flex items-center gap-1 shrink-0\">\n {contact.channels?.map((ch, i) => (\n <button\n key={i}\n onClick={ch.onClick}\n className=\"h-7 w-7 flex items-center justify-center hover:bg-muted rounded-md transition-colors\"\n title={ch.label}\n >\n {ch.icon}\n </button>\n ))}\n {contact.action && (\n <Button\n size=\"sm\"\n className=\"bg-foreground text-background hover:bg-foreground/90 h-6 text-[11px] font-medium shadow-none ml-1\"\n onClick={contact.action.onClick}\n >\n <Plus className=\"w-3 h-3 mr-1\" />\n {contact.action.label}\n </Button>\n )}\n {contact.onDismiss && (\n <button\n onClick={contact.onDismiss}\n className=\"h-6 w-6 flex items-center justify-center text-muted-foreground/40 hover:text-foreground hover:bg-muted rounded-md transition-colors opacity-0 group-hover:opacity-100\"\n >\n <X className=\"w-3 h-3\" />\n </button>\n )}\n </div>\n </div>\n )\n}\n\nexport function ContactList({ title, count, contacts, onAdd, addLabel }: ContactListProps) {\n return (\n <div className=\"space-y-3\">\n <div className=\"flex items-center justify-between\">\n <h3 className=\"text-sm font-semibold text-foreground\">{title}</h3>\n <div className=\"flex items-center gap-3\">\n {count && <span className=\"text-xs text-muted-foreground\">{count}</span>}\n {onAdd && (\n <Button variant=\"ghost\" size=\"sm\" onClick={onAdd} className=\"h-7 text-xs font-medium hover:bg-muted/50\">\n <Plus className=\"w-3.5 h-3.5 mr-1\" /> {addLabel ?? \"Add\"}\n </Button>\n )}\n </div>\n </div>\n\n <div className=\"space-y-0\">\n {contacts.map((contact) => (\n <ContactRow key={contact.id} contact={contact} />\n ))}\n </div>\n </div>\n )\n}\n","import * as React from \"react\"\nimport { cn } from \"../../../lib/utils\"\n\nexport function PreviewList({\n children,\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) {\n const items = React.Children.toArray(children)\n const visibleItems = items.slice(0, 8)\n\n return (\n <div className={cn(\"flex flex-col\", className)} {...props}>\n {visibleItems}\n </div>\n )\n}\n\nexport interface PreviewListItemProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'title'> {\n icon?: React.ReactNode\n title: React.ReactNode\n subtitle?: React.ReactNode\n meta?: React.ReactNode // e.g. time, badges on the right\n action?: React.ReactNode // hover action like a \"Join\" button\n isHoverable?: boolean\n}\n\nexport const PreviewListItem = React.forwardRef<HTMLDivElement, PreviewListItemProps>(\n ({ className, icon, title, subtitle, meta, action, isHoverable = true, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\n \"flex items-center justify-between group relative bg-background transition-colors\",\n \"px-6 h-16 border-b border-border last:border-0\",\n isHoverable && \"hover:bg-muted/30 cursor-pointer\",\n className\n )}\n {...props}\n >\n <div className=\"flex items-center gap-3 overflow-hidden min-w-0 h-full py-2\">\n {icon && <div className=\"shrink-0 flex items-center justify-center\">{icon}</div>}\n <div className=\"min-w-0 flex flex-col justify-center gap-1\">\n <div className=\"text-sm font-semibold text-foreground truncate leading-snug\">{title}</div>\n {subtitle && <div className=\"text-xs text-muted-foreground truncate leading-snug\">{subtitle}</div>}\n </div>\n </div>\n\n <div className=\"flex items-center gap-4 shrink-0 pl-4\">\n {meta && <div className={cn(\"flex items-center gap-2\", action && \"group-hover:opacity-0 transition-opacity\")}>{meta}</div>}\n \n {action && (\n <div className=\"absolute right-4 opacity-0 group-hover:opacity-100 transition-opacity flex items-center bg-background/95 backdrop-blur-sm pl-2\">\n {action}\n </div>\n )}\n </div>\n </div>\n )\n }\n)\nPreviewListItem.displayName = \"PreviewListItem\"\n","import * as React from \"react\"\nimport { Card, CardHeader, CardTitle, CardContent } from \"./card\"\nimport { Button } from \"./button\"\nimport { Badge } from \"./badge\"\nimport { PreviewList, PreviewListItem } from \"./preview-list\"\nimport { Square, Clock, Video, CheckCircle2, CheckSquare, Eye } from \"lucide-react\"\n\nexport function TopTasksCard({ onViewAll }: { onViewAll?: () => void }) {\n return (\n <Card className=\"rounded-xl border border-border shadow-sm overflow-hidden gap-0 py-0\">\n <CardHeader className=\"flex flex-row items-center justify-between pt-4 pb-3 px-6 border-b border-border bg-muted/20\">\n <CardTitle className=\"text-sm font-bold tracking-tight\">Top Tasks</CardTitle>\n <Button \n variant=\"ghost\" \n size=\"sm\" \n onClick={onViewAll} \n className=\"text-xs h-7 text-brand-purple hover:text-brand-purple/80 hover:bg-brand-purple/10\"\n >\n View all tasks →\n </Button>\n </CardHeader>\n <CardContent className=\"p-0\">\n <PreviewList>\n <PreviewListItem\n icon={<Square className=\"w-4 h-4 text-muted-foreground hover:text-brand-purple transition-colors\" />}\n title=\"Follow up with Lunchclub\"\n subtitle=\"Churn Mitigation\"\n meta={\n <>\n <span className=\"text-[11px] font-medium text-muted-foreground\">Due in 2h</span>\n <Badge variant=\"destructive\" className=\"text-[10px] px-2 py-0 h-4 uppercase tracking-wider rounded-full shadow-none font-bold bg-foreground text-background hover:bg-foreground/90\">Urgent</Badge>\n </>\n }\n onClick={onViewAll}\n />\n <PreviewListItem\n icon={<Square className=\"w-4 h-4 text-muted-foreground hover:text-brand-purple transition-colors\" />}\n title=\"Outbound opportunity: CloudKitchen\"\n subtitle=\"Outbound\"\n meta={<span className=\"text-[11px] font-medium text-muted-foreground\">Due tomorrow</span>}\n onClick={onViewAll}\n />\n <PreviewListItem\n icon={<Square className=\"w-4 h-4 text-muted-foreground hover:text-brand-purple transition-colors\" />}\n title=\"New CFO welcome: Loom\"\n subtitle=\"Relationship\"\n meta={<span className=\"text-[11px] font-medium text-muted-foreground\">Due next week</span>}\n onClick={onViewAll}\n />\n </PreviewList>\n </CardContent>\n </Card>\n )\n}\n\nexport function UpcomingMeetingsCard() {\n return (\n <Card className=\"rounded-xl border border-border shadow-sm overflow-hidden gap-0 py-0\">\n <CardHeader className=\"flex flex-row items-center justify-between pt-4 pb-3 px-6 border-b border-border bg-muted/20\">\n <CardTitle className=\"text-sm font-bold tracking-tight\">Upcoming Meetings</CardTitle>\n <Button variant=\"ghost\" size=\"sm\" className=\"text-xs h-7 text-brand-purple hover:text-brand-purple/80 hover:bg-brand-purple/10\">\n View all meetings →\n </Button>\n </CardHeader>\n <CardContent className=\"p-0\">\n <PreviewList>\n <PreviewListItem\n icon={<Clock className=\"w-4 h-4 text-blue-500\" />}\n title=\"Q3 Review - Acme Corp\"\n subtitle=\"2:00 PM - 3:00 PM\"\n meta={<span className=\"text-[11px] font-medium text-blue-600 bg-blue-50 px-2 py-0.5 rounded-full\">Starts in 10 mins</span>}\n action={\n <Button size=\"sm\" variant=\"outline\" className=\"h-7 text-xs shadow-sm bg-background hover:bg-muted\">\n <Video className=\"w-3.5 h-3.5 mr-1.5\" /> Join\n </Button>\n }\n />\n <PreviewListItem\n icon={<Clock className=\"w-4 h-4 text-blue-500\" />}\n title=\"Initial Sync - Initech\"\n subtitle=\"4:30 PM - 5:00 PM\"\n action={\n <Button size=\"sm\" variant=\"outline\" className=\"h-7 text-xs shadow-sm bg-background hover:bg-muted\">\n <Video className=\"w-3.5 h-3.5 mr-1.5\" /> Join\n </Button>\n }\n />\n </PreviewList>\n </CardContent>\n </Card>\n )\n}\n\nexport function RecentlyCompletedCard() {\n return (\n <Card className=\"rounded-xl border border-border shadow-sm overflow-hidden opacity-80 bg-muted/5 gap-0 py-0\">\n <CardHeader className=\"flex flex-row items-center justify-between pt-4 pb-3 px-6 border-b border-border bg-muted/10\">\n <CardTitle className=\"text-sm font-bold tracking-tight text-muted-foreground\">Recently Completed</CardTitle>\n </CardHeader>\n <CardContent className=\"p-0\">\n <PreviewList>\n <PreviewListItem\n icon={<CheckCircle2 className=\"w-4 h-4 text-emerald-500\" />}\n title={<span className=\"text-muted-foreground font-medium\">Sync - Globex Inc</span>}\n subtitle=\"10:00 AM\"\n action={\n <Button size=\"sm\" variant=\"outline\" className=\"h-7 text-xs shadow-sm bg-background hover:bg-muted\">\n <Eye className=\"w-3.5 h-3.5 mr-1.5\" /> View\n </Button>\n }\n />\n <PreviewListItem\n icon={<CheckCircle2 className=\"w-4 h-4 text-emerald-500\" />}\n title={<span className=\"text-muted-foreground font-medium\">Check-in - Pied Piper</span>}\n subtitle=\"9:00 AM\"\n action={\n <Button size=\"sm\" variant=\"outline\" className=\"h-7 text-xs shadow-sm bg-background hover:bg-muted\">\n <Eye className=\"w-3.5 h-3.5 mr-1.5\" /> View\n </Button>\n }\n />\n </PreviewList>\n </CardContent>\n </Card>\n )\n}\n\nexport function CheckInsCard() {\n return (\n <Card className=\"rounded-xl border border-border shadow-sm overflow-hidden gap-0 py-0\">\n <CardHeader className=\"flex flex-row items-center justify-between pt-4 pb-3 px-6 border-b border-border bg-muted/20\">\n <CardTitle className=\"text-sm font-bold tracking-tight\">Today's Check-ins</CardTitle>\n </CardHeader>\n <CardContent className=\"p-0\">\n <PreviewList>\n <PreviewListItem\n icon={\n <div className=\"w-8 h-8 rounded-full bg-emerald-100 flex items-center justify-center shrink-0\">\n <CheckSquare className=\"w-4 h-4 text-emerald-600\" />\n </div>\n }\n title=\"Morning Standup\"\n subtitle=\"9:00 AM\"\n meta={<Badge variant=\"secondary\" className=\"bg-emerald-50 text-emerald-700 hover:bg-emerald-100 shadow-none border-transparent font-semibold text-[10px]\">Done</Badge>}\n action={\n <Button size=\"sm\" variant=\"outline\" className=\"h-7 text-xs shadow-sm bg-background hover:bg-muted\">\n <Eye className=\"w-3.5 h-3.5 mr-1.5\" /> View\n </Button>\n }\n />\n <PreviewListItem\n icon={\n <div className=\"w-8 h-8 rounded-full bg-muted flex items-center justify-center shrink-0\">\n <Clock className=\"w-4 h-4 text-muted-foreground\" />\n </div>\n }\n title=\"Evening Wrap-up\"\n subtitle=\"5:00 PM\"\n meta={<Badge variant=\"outline\" className=\"text-muted-foreground shadow-none font-semibold text-[10px]\">Pending</Badge>}\n action={\n <Button size=\"sm\" variant=\"outline\" className=\"h-7 text-xs shadow-sm bg-background hover:bg-muted\">\n <CheckSquare className=\"w-3.5 h-3.5 mr-1.5\" /> Complete\n </Button>\n }\n />\n </PreviewList>\n </CardContent>\n </Card>\n )\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from \"lucide-react\"\nimport { DropdownMenu as DropdownMenuPrimitive } from \"radix-ui\"\n\nimport { cn } from \"../../../lib/utils\"\n\nfunction DropdownMenu({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Root>) {\n return <DropdownMenuPrimitive.Root data-slot=\"dropdown-menu\" {...props} />\n}\n\nfunction DropdownMenuPortal({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Portal>) {\n return (\n <DropdownMenuPrimitive.Portal data-slot=\"dropdown-menu-portal\" {...props} />\n )\n}\n\nfunction DropdownMenuTrigger({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Trigger>) {\n return (\n <DropdownMenuPrimitive.Trigger\n data-slot=\"dropdown-menu-trigger\"\n {...props}\n />\n )\n}\n\nfunction DropdownMenuContent({\n className,\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Content>) {\n return (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n data-slot=\"dropdown-menu-content\"\n sideOffset={sideOffset}\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 max-h-(--radix-dropdown-menu-content-available-height) min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md\",\n className\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n )\n}\n\nfunction DropdownMenuGroup({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Group>) {\n return (\n <DropdownMenuPrimitive.Group data-slot=\"dropdown-menu-group\" {...props} />\n )\n}\n\nfunction DropdownMenuItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean\n variant?: \"default\" | \"destructive\"\n}) {\n return (\n <DropdownMenuPrimitive.Item\n data-slot=\"dropdown-menu-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuCheckboxItem({\n className,\n children,\n checked,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.CheckboxItem>) {\n return (\n <DropdownMenuPrimitive.CheckboxItem\n data-slot=\"dropdown-menu-checkbox-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n checked={checked}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n )\n}\n\nfunction DropdownMenuRadioGroup({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioGroup>) {\n return (\n <DropdownMenuPrimitive.RadioGroup\n data-slot=\"dropdown-menu-radio-group\"\n {...props}\n />\n )\n}\n\nfunction DropdownMenuRadioItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioItem>) {\n return (\n <DropdownMenuPrimitive.RadioItem\n data-slot=\"dropdown-menu-radio-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <CircleIcon className=\"size-2 fill-current\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n )\n}\n\nfunction DropdownMenuLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean\n}) {\n return (\n <DropdownMenuPrimitive.Label\n data-slot=\"dropdown-menu-label\"\n data-inset={inset}\n className={cn(\n \"px-2 py-1.5 text-sm font-medium data-[inset]:pl-8\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Separator>) {\n return (\n <DropdownMenuPrimitive.Separator\n data-slot=\"dropdown-menu-separator\"\n className={cn(\"bg-border -mx-1 my-1 h-px\", className)}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"dropdown-menu-shortcut\"\n className={cn(\n \"text-muted-foreground ml-auto text-xs tracking-widest\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuSub({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Sub>) {\n return <DropdownMenuPrimitive.Sub data-slot=\"dropdown-menu-sub\" {...props} />\n}\n\nfunction DropdownMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubTrigger> & {\n inset?: boolean\n}) {\n return (\n <DropdownMenuPrimitive.SubTrigger\n data-slot=\"dropdown-menu-sub-trigger\"\n data-inset={inset}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto size-4\" />\n </DropdownMenuPrimitive.SubTrigger>\n )\n}\n\nfunction DropdownMenuSubContent({\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubContent>) {\n return (\n <DropdownMenuPrimitive.SubContent\n data-slot=\"dropdown-menu-sub-content\"\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n DropdownMenu,\n DropdownMenuPortal,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuLabel,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubTrigger,\n DropdownMenuSubContent,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { ChevronDown, X } from \"lucide-react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from \"./dropdown-menu\"\n\nexport type DataTableQuickViewValue = string | null\n\ninterface DataTableQuickViewsProps {\n quickViews: string[]\n moreViews: string[]\n activeView: DataTableQuickViewValue\n onViewChange: (next: DataTableQuickViewValue) => void\n className?: string\n}\n\nexport function DataTableQuickViews({\n quickViews,\n moreViews,\n activeView,\n onViewChange,\n className,\n}: DataTableQuickViewsProps) {\n const isMoreActive = Boolean(activeView && moreViews.includes(activeView))\n\n return (\n <div\n className={cn(\n \"flex items-center gap-2 overflow-x-auto border-b border-border px-4 pb-3 pt-2\",\n className\n )}\n >\n <span className=\"mr-1 shrink-0 text-xs font-medium text-muted-foreground/80\">\n Quick views:\n </span>\n\n {quickViews.map((view) => {\n const isActive = activeView === view\n return (\n <button\n key={view}\n onClick={() => onViewChange(isActive ? null : view)}\n className={cn(\n \"whitespace-nowrap rounded-full border px-3 py-1 text-xs transition-colors\",\n isActive\n ? \"border-brand-purple/30 bg-brand-purple/10 font-medium text-brand-purple\"\n : \"border-border bg-background text-muted-foreground hover:bg-muted hover:text-foreground\"\n )}\n >\n {view}\n </button>\n )\n })}\n\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <button\n className={cn(\n \"flex items-center gap-1 whitespace-nowrap rounded-full border px-3 py-1 text-xs transition-colors\",\n isMoreActive\n ? \"border-brand-purple/30 bg-brand-purple/10 font-medium text-brand-purple\"\n : \"border-border bg-background text-muted-foreground hover:bg-muted hover:text-foreground\"\n )}\n >\n {isMoreActive ? activeView : \"More...\"}\n <ChevronDown className=\"h-3 w-3 opacity-60\" />\n </button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"start\" className=\"w-56\">\n {moreViews.map((view) => (\n <DropdownMenuItem\n key={view}\n className={cn(\n \"cursor-pointer text-xs\",\n activeView === view && \"bg-brand-purple/5 font-medium text-brand-purple\"\n )}\n onSelect={() => onViewChange(view)}\n >\n {view}\n </DropdownMenuItem>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n\n {activeView ? (\n <button\n onClick={() => onViewChange(null)}\n className=\"ml-auto flex items-center gap-1 rounded-md px-2 py-1 text-xs text-muted-foreground transition-colors hover:bg-muted hover:text-foreground\"\n >\n <X className=\"h-3 w-3\" />\n Clear\n </button>\n ) : null}\n </div>\n )\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { ListFilter, Search } from \"lucide-react\"\n\nimport { Button } from \"./button\"\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuTrigger,\n} from \"./dropdown-menu\"\n\nexport interface DataTableFilterCategory {\n id: string\n label: string\n icon: React.ComponentType<{ className?: string }>\n options: string[]\n}\n\ninterface DataTableFilterProps {\n categories: DataTableFilterCategory[]\n selectedFilters: Record<string, string[]>\n onToggleFilter: (categoryId: string, option: string) => void\n}\n\nexport function DataTableFilter({\n categories,\n selectedFilters,\n onToggleFilter,\n}: DataTableFilterProps) {\n const [query, setQuery] = React.useState(\"\")\n\n const visibleCategories = React.useMemo(() => {\n const normalized = query.trim().toLowerCase()\n if (!normalized) {\n return categories\n }\n\n return categories.filter((category) => {\n if (category.label.toLowerCase().includes(normalized)) {\n return true\n }\n\n return category.options.some((option) =>\n option.toLowerCase().includes(normalized)\n )\n })\n }, [categories, query])\n\n const activeCount = React.useMemo(\n () =>\n Object.values(selectedFilters).reduce(\n (count, selected) => count + selected.length,\n 0\n ),\n [selectedFilters]\n )\n\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button\n variant=\"outline\"\n size=\"sm\"\n className=\"h-8 gap-2 rounded-md border-border/60 bg-background text-xs font-normal shadow-none hover:bg-muted/50\"\n >\n <ListFilter className=\"h-3.5 w-3.5\" />\n Filter\n {activeCount > 0 ? (\n <span className=\"rounded bg-muted px-1.5 py-0 text-[10px] font-semibold\">\n {activeCount}\n </span>\n ) : null}\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"start\" className=\"w-[240px] p-0\">\n <div className=\"sticky top-0 z-10 border-b border-border bg-popover p-2\">\n <div className=\"relative\">\n <Search className=\"absolute left-2 top-1/2 h-3.5 w-3.5 -translate-y-1/2 text-muted-foreground\" />\n <input\n className=\"h-8 w-full rounded-md bg-muted/50 py-1 pr-2 pl-7 text-xs outline-none transition-colors placeholder:text-muted-foreground/70 focus:bg-muted\"\n placeholder=\"Search filters...\"\n value={query}\n onChange={(event) => setQuery(event.target.value)}\n onClick={(event) => event.stopPropagation()}\n onKeyDown={(event) => event.stopPropagation()}\n />\n </div>\n </div>\n\n <div className=\"max-h-[320px] overflow-y-auto p-1\">\n {visibleCategories.map((category) => (\n <DropdownMenuSub key={category.id}>\n <DropdownMenuSubTrigger className=\"cursor-pointer py-1.5 text-xs\">\n <category.icon className=\"mr-2 h-3.5 w-3.5 text-muted-foreground\" />\n {category.label}\n </DropdownMenuSubTrigger>\n <DropdownMenuSubContent className=\"w-52 p-1\">\n {category.options.map((option) => {\n const selected =\n selectedFilters[category.id]?.includes(option) ?? false\n\n return (\n <DropdownMenuItem\n key={option}\n className=\"cursor-pointer justify-between text-xs\"\n onSelect={(event) => {\n event.preventDefault()\n onToggleFilter(category.id, option)\n }}\n >\n {option}\n {selected ? (\n <span className=\"text-[10px] font-semibold text-brand-purple\">\n Applied\n </span>\n ) : null}\n </DropdownMenuItem>\n )\n })}\n </DropdownMenuSubContent>\n </DropdownMenuSub>\n ))}\n\n {visibleCategories.length === 0 ? (\n <div className=\"p-2 text-center text-xs text-muted-foreground\">\n No filters found\n </div>\n ) : null}\n </div>\n </DropdownMenuContent>\n </DropdownMenu>\n )\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { CheckIcon, ChevronDownIcon, ChevronUpIcon } from \"lucide-react\"\nimport { Select as SelectPrimitive } from \"radix-ui\"\n\nimport { cn } from \"../../../lib/utils\"\n\nfunction Select({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Root>) {\n return <SelectPrimitive.Root data-slot=\"select\" {...props} />\n}\n\nfunction SelectGroup({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Group>) {\n return <SelectPrimitive.Group data-slot=\"select-group\" {...props} />\n}\n\nfunction SelectValue({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Value>) {\n return <SelectPrimitive.Value data-slot=\"select-value\" {...props} />\n}\n\nfunction SelectTrigger({\n className,\n size = \"default\",\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Trigger> & {\n size?: \"sm\" | \"default\"\n}) {\n return (\n <SelectPrimitive.Trigger\n data-slot=\"select-trigger\"\n data-size={size}\n className={cn(\n \"border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50 flex w-fit items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <ChevronDownIcon className=\"size-4 opacity-50\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n )\n}\n\nfunction SelectContent({\n className,\n children,\n position = \"item-aligned\",\n align = \"center\",\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Content>) {\n return (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n data-slot=\"select-content\"\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border shadow-md\",\n position === \"popper\" &&\n \"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\n className\n )}\n position={position}\n align={align}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n \"p-1\",\n position === \"popper\" &&\n \"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1\"\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n )\n}\n\nfunction SelectLabel({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Label>) {\n return (\n <SelectPrimitive.Label\n data-slot=\"select-label\"\n className={cn(\"text-muted-foreground px-2 py-1.5 text-xs\", className)}\n {...props}\n />\n )\n}\n\nfunction SelectItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Item>) {\n return (\n <SelectPrimitive.Item\n data-slot=\"select-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2\",\n className\n )}\n {...props}\n >\n <span\n data-slot=\"select-item-indicator\"\n className=\"absolute right-2 flex size-3.5 items-center justify-center\"\n >\n <SelectPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n )\n}\n\nfunction SelectSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Separator>) {\n return (\n <SelectPrimitive.Separator\n data-slot=\"select-separator\"\n className={cn(\"bg-border pointer-events-none -mx-1 my-1 h-px\", className)}\n {...props}\n />\n )\n}\n\nfunction SelectScrollUpButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollUpButton>) {\n return (\n <SelectPrimitive.ScrollUpButton\n data-slot=\"select-scroll-up-button\"\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className\n )}\n {...props}\n >\n <ChevronUpIcon className=\"size-4\" />\n </SelectPrimitive.ScrollUpButton>\n )\n}\n\nfunction SelectScrollDownButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollDownButton>) {\n return (\n <SelectPrimitive.ScrollDownButton\n data-slot=\"select-scroll-down-button\"\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className\n )}\n {...props}\n >\n <ChevronDownIcon className=\"size-4\" />\n </SelectPrimitive.ScrollDownButton>\n )\n}\n\nexport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { ArrowDown, ArrowUp, ArrowUpDown, LayoutGrid } from \"lucide-react\"\nimport type { SortingState } from \"@tanstack/react-table\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { Button } from \"./button\"\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuTrigger,\n} from \"./dropdown-menu\"\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"./select\"\n\nexport interface DataTableDisplayColumn {\n id: string\n label: string\n visible: boolean\n canHide: boolean\n}\n\ninterface DataTableDisplayProps {\n sorting: SortingState\n onSortingChange: (next: SortingState) => void\n columns: DataTableDisplayColumn[]\n onToggleColumn: (columnId: string) => void\n onReset: () => void\n}\n\nexport function DataTableDisplay({\n sorting,\n onSortingChange,\n columns,\n onToggleColumn,\n onReset,\n}: DataTableDisplayProps) {\n const sortableColumns = columns\n const currentSortId = sorting[0]?.id ?? sortableColumns[0]?.id ?? \"\"\n const isDescending = Boolean(sorting[0]?.desc)\n\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button\n variant=\"outline\"\n size=\"sm\"\n className=\"h-8 gap-2 rounded-md border-border/60 bg-background text-xs font-normal shadow-none hover:bg-muted/50\"\n >\n <LayoutGrid className=\"h-3.5 w-3.5\" />\n Display\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\" className=\"w-[320px] p-4\">\n <div className=\"space-y-4\">\n <div className=\"space-y-2\">\n <span className=\"flex items-center gap-1.5 text-xs font-semibold text-foreground\">\n <ArrowUpDown className=\"h-3.5 w-3.5\" />\n Sorting\n </span>\n <div className=\"flex items-center gap-2\">\n <Select\n value={currentSortId}\n onValueChange={(value) =>\n onSortingChange([{ id: value, desc: sorting[0]?.desc ?? false }])\n }\n >\n <SelectTrigger className=\"h-8 w-full text-xs\">\n <SelectValue placeholder=\"Sort by...\" />\n </SelectTrigger>\n <SelectContent>\n {sortableColumns.map((column) => (\n <SelectItem key={column.id} value={column.id} className=\"text-xs\">\n {column.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n <Button\n variant=\"outline\"\n size=\"icon\"\n className=\"h-8 w-8 shrink-0\"\n onClick={() =>\n onSortingChange([{ id: currentSortId, desc: !isDescending }])\n }\n disabled={!currentSortId}\n >\n {isDescending ? (\n <ArrowDown className=\"h-3.5 w-3.5\" />\n ) : (\n <ArrowUp className=\"h-3.5 w-3.5\" />\n )}\n </Button>\n </div>\n </div>\n\n <div className=\"space-y-2\">\n <span className=\"text-xs font-medium text-muted-foreground\">\n Display properties\n </span>\n <div className=\"flex flex-wrap gap-2\">\n {columns.map((column) => (\n <button\n key={column.id}\n disabled={!column.canHide}\n onClick={() => onToggleColumn(column.id)}\n className={cn(\n \"rounded-md border px-2.5 py-1 text-[11px] font-medium transition-all\",\n column.visible\n ? \"border-brand-purple/30 bg-brand-purple/10 text-brand-purple\"\n : \"border-border bg-muted/40 text-muted-foreground hover:bg-muted hover:text-foreground\",\n !column.canHide && \"cursor-not-allowed opacity-50\"\n )}\n >\n {column.label}\n </button>\n ))}\n </div>\n </div>\n\n <div className=\"mt-2 flex items-center justify-start border-t border-border pt-2\">\n <button\n className=\"text-[10px] font-medium text-muted-foreground transition-colors hover:text-foreground\"\n onClick={onReset}\n >\n Reset\n </button>\n </div>\n </div>\n </DropdownMenuContent>\n </DropdownMenu>\n )\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport type { SortingState } from \"@tanstack/react-table\"\n\nimport {\n DataTableFilter,\n type DataTableFilterCategory,\n} from \"./data-table-filter\"\nimport {\n DataTableDisplay,\n type DataTableDisplayColumn,\n} from \"./data-table-display\"\n\ninterface DataTableToolbarProps {\n categories: DataTableFilterCategory[]\n selectedFilters: Record<string, string[]>\n onToggleFilter: (categoryId: string, option: string) => void\n sorting: SortingState\n onSortingChange: (next: SortingState) => void\n displayColumns: DataTableDisplayColumn[]\n onToggleColumn: (columnId: string) => void\n onResetDisplay: () => void\n}\n\nexport function DataTableToolbar({\n categories,\n selectedFilters,\n onToggleFilter,\n sorting,\n onSortingChange,\n displayColumns,\n onToggleColumn,\n onResetDisplay,\n}: DataTableToolbarProps) {\n return (\n <div className=\"flex items-center justify-between gap-2 border-b border-border px-4 py-2\">\n <div className=\"flex items-center gap-2\">\n <DataTableFilter\n categories={categories}\n selectedFilters={selectedFilters}\n onToggleFilter={onToggleFilter}\n />\n </div>\n <div className=\"flex items-center gap-2\">\n <DataTableDisplay\n sorting={sorting}\n onSortingChange={onSortingChange}\n columns={displayColumns}\n onToggleColumn={onToggleColumn}\n onReset={onResetDisplay}\n />\n </div>\n </div>\n )\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { XIcon } from \"lucide-react\"\nimport { Dialog as SheetPrimitive } from \"radix-ui\"\n\nimport { cn } from \"../../../lib/utils\"\n\nfunction Sheet({ ...props }: React.ComponentProps<typeof SheetPrimitive.Root>) {\n return <SheetPrimitive.Root data-slot=\"sheet\" {...props} />\n}\n\nfunction SheetTrigger({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Trigger>) {\n return <SheetPrimitive.Trigger data-slot=\"sheet-trigger\" {...props} />\n}\n\nfunction SheetClose({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Close>) {\n return <SheetPrimitive.Close data-slot=\"sheet-close\" {...props} />\n}\n\nfunction SheetPortal({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Portal>) {\n return <SheetPrimitive.Portal data-slot=\"sheet-portal\" {...props} />\n}\n\nfunction SheetOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Overlay>) {\n return (\n <SheetPrimitive.Overlay\n data-slot=\"sheet-overlay\"\n className={cn(\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SheetContent({\n className,\n children,\n side = \"right\",\n showCloseButton = true,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Content> & {\n side?: \"top\" | \"right\" | \"bottom\" | \"left\"\n showCloseButton?: boolean\n}) {\n return (\n <SheetPortal>\n <SheetOverlay />\n <SheetPrimitive.Content\n data-slot=\"sheet-content\"\n className={cn(\n \"bg-background data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500\",\n side === \"right\" &&\n \"data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm\",\n side === \"left\" &&\n \"data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm\",\n side === \"top\" &&\n \"data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b\",\n side === \"bottom\" &&\n \"data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t\",\n className\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <SheetPrimitive.Close className=\"ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none\">\n <XIcon className=\"size-4\" />\n <span className=\"sr-only\">Close</span>\n </SheetPrimitive.Close>\n )}\n </SheetPrimitive.Content>\n </SheetPortal>\n )\n}\n\nfunction SheetHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sheet-header\"\n className={cn(\"flex flex-col gap-1.5 p-4\", className)}\n {...props}\n />\n )\n}\n\nfunction SheetFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sheet-footer\"\n className={cn(\"mt-auto flex flex-col gap-2 p-4\", className)}\n {...props}\n />\n )\n}\n\nfunction SheetTitle({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Title>) {\n return (\n <SheetPrimitive.Title\n data-slot=\"sheet-title\"\n className={cn(\"text-foreground font-semibold\", className)}\n {...props}\n />\n )\n}\n\nfunction SheetDescription({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Description>) {\n return (\n <SheetPrimitive.Description\n data-slot=\"sheet-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Sheet,\n SheetTrigger,\n SheetClose,\n SheetContent,\n SheetHeader,\n SheetFooter,\n SheetTitle,\n SheetDescription,\n}\n","import * as React from \"react\"\nimport { cn } from \"../../../lib/utils\"\n\nfunction getScoreColor(score: number, denominator: number) {\n const pct = (score / denominator) * 100\n if (pct >= 70) return \"text-emerald-500\"\n if (pct >= 40) return \"text-amber-500\"\n return \"text-red-500\"\n}\n\nfunction getScoreTrackColor(score: number, denominator: number) {\n const pct = (score / denominator) * 100\n if (pct >= 70) return \"text-emerald-500/15\"\n if (pct >= 40) return \"text-amber-500/15\"\n return \"text-red-500/15\"\n}\n\ninterface ScoreRingProps {\n score: number\n denominator?: number\n size?: number\n strokeWidth?: number\n className?: string\n showLabel?: boolean\n}\n\nfunction ScoreRing({\n score,\n denominator = 100,\n size = 120,\n strokeWidth = 10,\n className,\n showLabel = true,\n}: ScoreRingProps) {\n const radius = (size - strokeWidth) / 2\n const circumference = 2 * Math.PI * radius\n const pct = Math.min(score / denominator, 1)\n const offset = circumference * (1 - pct)\n\n return (\n <div className={cn(\"relative inline-flex items-center justify-center\", className)}>\n <svg\n width={size}\n height={size}\n viewBox={`0 0 ${size} ${size}`}\n className=\"-rotate-90\"\n >\n {/* Track */}\n <circle\n cx={size / 2}\n cy={size / 2}\n r={radius}\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={strokeWidth}\n className={getScoreTrackColor(score, denominator)}\n />\n {/* Fill */}\n <circle\n cx={size / 2}\n cy={size / 2}\n r={radius}\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeDasharray={circumference}\n strokeDashoffset={offset}\n className={cn(\"transition-all duration-500\", getScoreColor(score, denominator))}\n />\n </svg>\n {showLabel && (\n <div className=\"absolute inset-0 flex flex-col items-center justify-center\">\n <span className=\"text-2xl font-bold text-foreground leading-none\">\n {score}\n </span>\n <span className=\"text-xs text-muted-foreground mt-0.5\">\n /{denominator}\n </span>\n </div>\n )}\n </div>\n )\n}\n\nexport { ScoreRing, getScoreColor }\nexport type { ScoreRingProps }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { ThumbsUp, ThumbsDown } from \"lucide-react\"\nimport { cn } from \"../../../lib/utils\"\n\nexport interface ScoreFactor {\n key: string\n label: string\n score: number | null\n risk?: \"Low\" | \"Medium\" | \"High\"\n why: string\n}\n\nfunction getFactorBarColor(score: number) {\n if (score >= 70) return \"bg-emerald-500\"\n if (score >= 40) return \"bg-amber-500\"\n return \"bg-red-500\"\n}\n\nfunction getRiskBadgeStyle(risk: \"Low\" | \"Medium\" | \"High\") {\n switch (risk) {\n case \"Low\":\n return \"text-emerald-600 bg-emerald-50 dark:text-emerald-400 dark:bg-emerald-950/30\"\n case \"Medium\":\n return \"text-amber-600 bg-amber-50 dark:text-amber-400 dark:bg-amber-950/30\"\n case \"High\":\n return \"text-red-600 bg-red-50 dark:text-red-400 dark:bg-red-950/30\"\n }\n}\n\ninterface ScoreBreakdownProps {\n factors: ScoreFactor[]\n onFactorFeedback?: (factorKey: string, type: \"up\" | \"down\" | null, detail?: string) => void\n className?: string\n}\n\nfunction ScoreBreakdown({ factors, onFactorFeedback, className }: ScoreBreakdownProps) {\n const [feedback, setFeedback] = React.useState<Record<string, \"up\" | \"down\" | null>>({})\n const [feedbackText, setFeedbackText] = React.useState<Record<string, string>>({})\n const [savedText, setSavedText] = React.useState<Record<string, string>>({})\n const [editingKey, setEditingKey] = React.useState<string | null>(null)\n\n const handleFeedback = (factorKey: string, type: \"up\" | \"down\") => {\n const newState = feedback[factorKey] === type ? null : type\n setFeedback((prev) => ({ ...prev, [factorKey]: newState }))\n if (newState === null) {\n setEditingKey(null)\n onFactorFeedback?.(factorKey, null)\n } else {\n setEditingKey(factorKey)\n onFactorFeedback?.(factorKey, newState)\n }\n }\n\n const submitFeedbackText = (factorKey: string) => {\n const text = (feedbackText[factorKey] ?? \"\").trim()\n if (feedback[factorKey]) {\n onFactorFeedback?.(factorKey, feedback[factorKey]!, text || undefined)\n if (text) {\n setSavedText((prev) => ({ ...prev, [factorKey]: text }))\n }\n }\n setEditingKey(null)\n }\n\n return (\n <div className={cn(\"border border-border rounded-lg overflow-hidden divide-y divide-border/40\", className)}>\n {factors.map((factor) => {\n const feedbackState = feedback[factor.key]\n const hasThumb = feedbackState === \"up\" || feedbackState === \"down\"\n const isEditing = editingKey === factor.key\n const saved = savedText[factor.key]\n\n return (\n <div key={factor.key} className=\"px-3 py-3 space-y-1.5\">\n {/* Row 1: Factor name + score + rating buttons */}\n <div className=\"flex items-center gap-2\">\n <span className=\"text-[13px] font-semibold text-foreground flex-1\">{factor.label}</span>\n\n {factor.score !== null ? (\n <span className=\"text-xs font-bold text-foreground tabular-nums\">{factor.score}<span className=\"text-muted-foreground font-normal\">/100</span></span>\n ) : factor.risk ? (\n <span\n className={cn(\n \"text-[11px] font-semibold px-1.5 py-0.5 rounded\",\n getRiskBadgeStyle(factor.risk)\n )}\n >\n {factor.risk}\n </span>\n ) : null}\n\n <div className=\"flex items-center gap-0.5 ml-1\">\n <button\n type=\"button\"\n onClick={() => handleFeedback(factor.key, \"up\")}\n className={cn(\n \"p-1 rounded transition-colors\",\n feedbackState === \"up\"\n ? \"text-emerald-600 bg-emerald-50 dark:text-emerald-400 dark:bg-emerald-950/30\"\n : \"text-muted-foreground/40 hover:text-emerald-600 hover:bg-emerald-50/50\"\n )}\n title=\"This factor is accurate\"\n >\n <ThumbsUp className=\"w-3 h-3\" />\n </button>\n <button\n type=\"button\"\n onClick={() => handleFeedback(factor.key, \"down\")}\n className={cn(\n \"p-1 rounded transition-colors\",\n feedbackState === \"down\"\n ? \"text-red-600 bg-red-50 dark:text-red-400 dark:bg-red-950/30\"\n : \"text-muted-foreground/40 hover:text-red-600 hover:bg-red-50/50\"\n )}\n title=\"Report issue with this factor\"\n >\n <ThumbsDown className=\"w-3 h-3\" />\n </button>\n </div>\n </div>\n\n {/* Row 2: Score bar */}\n {factor.score !== null && (\n <div className=\"w-full h-1 bg-muted rounded-full overflow-hidden\">\n <div\n className={cn(\"h-full rounded-full\", getFactorBarColor(factor.score))}\n style={{ width: `${factor.score}%` }}\n />\n </div>\n )}\n\n {/* Row 3: Why text */}\n <p className=\"text-xs text-muted-foreground leading-relaxed\">{factor.why}</p>\n\n {/* Feedback input */}\n {hasThumb && isEditing && (\n <input\n type=\"text\"\n autoFocus\n value={feedbackText[factor.key] ?? \"\"}\n onChange={(e) =>\n setFeedbackText((prev) => ({ ...prev, [factor.key]: e.target.value }))\n }\n onKeyDown={(e) => {\n if (e.key === \"Enter\") submitFeedbackText(factor.key)\n if (e.key === \"Escape\") setEditingKey(null)\n }}\n onBlur={() => submitFeedbackText(factor.key)}\n placeholder={\n feedbackState === \"up\"\n ? \"What\\u2019s accurate? (optional)\"\n : \"What\\u2019s wrong? (optional)\"\n }\n className=\"w-full h-6 rounded border border-border bg-background px-2 text-[11px] text-foreground placeholder:text-muted-foreground/50 focus:outline-none focus:ring-1 focus:ring-ring\"\n />\n )}\n {hasThumb && !isEditing && saved && (\n <button\n type=\"button\"\n onClick={() => {\n setFeedbackText((prev) => ({ ...prev, [factor.key]: saved }))\n setEditingKey(factor.key)\n }}\n className=\"text-[11px] text-muted-foreground/70 hover:text-muted-foreground transition-colors text-left leading-snug\"\n >\n {saved}\n </button>\n )}\n </div>\n )\n })}\n </div>\n )\n}\n\nexport { ScoreBreakdown }\nexport type { ScoreBreakdownProps }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Check, CirclePlus, ExternalLink, Lock, ThumbsDown } from \"lucide-react\"\n\nconst dismissReasons = [\n \"Bad timing\",\n \"Inaccurate data\",\n \"Wrong account\",\n \"Already handled\",\n \"Not actionable\",\n \"Other\",\n]\n\nconst approveReasons = [\n \"Right timing\",\n \"Accurate data\",\n \"Good prospect fit\",\n \"Actionable\",\n]\n\ntype ApprovalState = \"pending\" | \"confirming\" | \"approving-feedback\" | \"dismissing\" | \"approved\" | \"dismissed\" | \"auto-approved\"\n\ninterface SignalApprovalLabels {\n approveButton?: string\n dismissButton?: string\n approvedStatus?: string\n dismissedStatus?: string\n confirmPrompt?: string\n dismissPrompt?: string\n feedbackPrompt?: string\n}\n\nconst DEFAULT_LABELS: Required<SignalApprovalLabels> = {\n approveButton: \"Approve action\",\n dismissButton: \"Not Helpful\",\n approvedStatus: \"Action Approved\",\n dismissedStatus: \"Action Dismissed\",\n confirmPrompt: \"This will approve this action for\",\n dismissPrompt: \"What\\u2019s the issue with this action?\",\n feedbackPrompt: \"Quick feedback \\u2014 what made this action useful?\",\n}\n\ninterface SignalApprovalContextValue {\n approvalState: ApprovalState\n companyName: string\n opportunityUrl?: string\n scheduledTime?: string\n labels: Required<SignalApprovalLabels>\n approve: () => void\n submitApproveFeedback: (reasons: string[], detail: string) => void\n skipApproveFeedback: () => void\n dismiss: (reasons: string[], detail: string) => void\n requestApproval: () => void\n requestDismiss: () => void\n cancel: () => void\n}\n\nconst SignalApprovalCtx = React.createContext<SignalApprovalContextValue | null>(null)\n\nexport function useSignalApproval() {\n const ctx = React.useContext(SignalApprovalCtx)\n if (!ctx) throw new Error(\"SignalApproval components must be used within SignalApproval.Root\")\n return ctx\n}\n\ninterface RootProps {\n children: React.ReactNode\n companyName: string\n opportunityUrl?: string\n scheduledTime?: string\n initialApprovalState?: ApprovalState\n labels?: SignalApprovalLabels\n onApprove?: () => void\n onApproveFeedback?: (reasons: string[], detail: string) => void\n onDismiss?: (reasons: string[], detail: string) => void\n}\n\nfunction Root({ children, companyName, opportunityUrl, scheduledTime, initialApprovalState, labels: labelOverrides, onApprove, onApproveFeedback, onDismiss }: RootProps) {\n const labels = React.useMemo(() => ({ ...DEFAULT_LABELS, ...labelOverrides }), [labelOverrides])\n const [approvalState, setApprovalState] = React.useState<ApprovalState>(initialApprovalState ?? \"pending\")\n\n const requestApproval = React.useCallback(() => {\n setApprovalState(\"confirming\")\n }, [])\n\n const requestDismiss = React.useCallback(() => {\n setApprovalState(\"dismissing\")\n }, [])\n\n const cancel = React.useCallback(() => {\n setApprovalState(\"pending\")\n }, [])\n\n const approve = React.useCallback(() => {\n setApprovalState(\"approving-feedback\")\n onApprove?.()\n }, [onApprove])\n\n const submitApproveFeedback = React.useCallback(\n (reasons: string[], detail: string) => {\n setApprovalState(\"approved\")\n onApproveFeedback?.(reasons, detail)\n },\n [onApproveFeedback]\n )\n\n const skipApproveFeedback = React.useCallback(() => {\n setApprovalState(\"approved\")\n }, [])\n\n const dismiss = React.useCallback(\n (reasons: string[], detail: string) => {\n setApprovalState(\"dismissed\")\n onDismiss?.(reasons, detail)\n },\n [onDismiss]\n )\n\n return (\n <SignalApprovalCtx.Provider\n value={{ approvalState, companyName, opportunityUrl, scheduledTime, labels, approve, submitApproveFeedback, skipApproveFeedback, dismiss, requestApproval, requestDismiss, cancel }}\n >\n {children}\n </SignalApprovalCtx.Provider>\n )\n}\n\nfunction SubmittedFeedback({\n reasons,\n detail,\n variant,\n onEdit,\n}: {\n reasons: string[]\n detail: string\n variant: \"approve\" | \"dismiss\"\n onEdit: () => void\n}) {\n if (reasons.length === 0 && !detail) return null\n const pillClass =\n variant === \"approve\"\n ? \"border-emerald-200/60 bg-emerald-50/50 text-emerald-700/70\"\n : \"border-red-200/60 bg-red-50/50 text-red-700/70\"\n\n return (\n <button\n type=\"button\"\n onClick={onEdit}\n className=\"w-full text-left space-y-1.5 group cursor-pointer\"\n >\n {reasons.length > 0 && (\n <div className=\"flex flex-wrap gap-1\">\n {reasons.map((r) => (\n <span\n key={r}\n className={`rounded-full border px-2 py-0.5 text-[10px] font-medium transition-colors group-hover:opacity-80 ${pillClass}`}\n >\n {r}\n </span>\n ))}\n </div>\n )}\n {detail && (\n <p className=\"text-[11px] text-muted-foreground/70 leading-snug group-hover:text-muted-foreground transition-colors\">{detail}</p>\n )}\n </button>\n )\n}\n\nfunction Actions() {\n const { approvalState, companyName, opportunityUrl, scheduledTime, labels, approve, submitApproveFeedback, skipApproveFeedback, dismiss, requestApproval, requestDismiss, cancel } =\n useSignalApproval()\n const [selectedReasons, setSelectedReasons] = React.useState<string[]>([])\n const [detailText, setDetailText] = React.useState(\"\")\n const [submittedFeedback, setSubmittedFeedback] = React.useState<{ reasons: string[]; detail: string } | null>(null)\n const [isEditing, setIsEditing] = React.useState(false)\n\n const otherSelected = selectedReasons.includes(\"Other\")\n const canSubmitDismiss = selectedReasons.length > 0 && (!otherSelected || detailText.trim().length > 0)\n const canSubmitApprove = selectedReasons.length > 0 || detailText.trim().length > 0\n\n const toggleReason = (reason: string) => {\n setSelectedReasons((prev) =>\n prev.includes(reason) ? prev.filter((r) => r !== reason) : [...prev, reason]\n )\n }\n\n const startEditing = () => {\n if (submittedFeedback) {\n setSelectedReasons([...submittedFeedback.reasons])\n setDetailText(submittedFeedback.detail)\n }\n setIsEditing(true)\n }\n\n const handleDismissSubmit = () => {\n if (!canSubmitDismiss) return\n const fb = { reasons: [...selectedReasons], detail: detailText.trim() }\n setSubmittedFeedback(fb)\n dismiss(selectedReasons, detailText.trim())\n setSelectedReasons([])\n setDetailText(\"\")\n setIsEditing(false)\n }\n\n const handleApproveSubmit = () => {\n const fb = { reasons: [...selectedReasons], detail: detailText.trim() }\n setSubmittedFeedback(fb)\n submitApproveFeedback(selectedReasons, detailText.trim())\n setSelectedReasons([])\n setDetailText(\"\")\n setIsEditing(false)\n }\n\n const handleEditCancel = () => {\n setSelectedReasons([])\n setDetailText(\"\")\n setIsEditing(false)\n }\n\n const handleCancel = () => {\n cancel()\n setSelectedReasons([])\n setDetailText(\"\")\n }\n\n if (approvalState === \"approved\") {\n if (isEditing) {\n return (\n <div className=\"space-y-3\">\n <div className=\"flex items-center gap-1.5 text-xs font-medium text-emerald-600 mb-2\">\n <Check className=\"h-3.5 w-3.5\" />\n {opportunityUrl ? (\n <a href={opportunityUrl} target=\"_blank\" rel=\"noopener noreferrer\" className=\"inline-flex items-center gap-1 hover:underline underline-offset-2\">\n {labels.approvedStatus} <ExternalLink className=\"h-3 w-3\" />\n </a>\n ) : (\n <span>{labels.approvedStatus}</span>\n )}\n </div>\n <p className=\"text-xs font-medium text-muted-foreground\">Edit your feedback</p>\n <div className=\"flex flex-wrap gap-1.5\">\n {approveReasons.map((reason) => {\n const selected = selectedReasons.includes(reason)\n return (\n <button key={reason} type=\"button\" onClick={() => toggleReason(reason)}\n className={`rounded-full border px-2.5 py-1 text-[11px] font-medium transition-colors ${\n selected ? \"border-emerald-200 bg-emerald-100 text-emerald-700\" : \"border-border bg-background text-muted-foreground hover:bg-muted/50 hover:text-foreground\"\n }`}>{reason}</button>\n )\n })}\n </div>\n <input type=\"text\" value={detailText} onChange={(e) => setDetailText(e.target.value)}\n onKeyDown={(e) => { if (e.key === \"Enter\" && canSubmitApprove) handleApproveSubmit() }}\n placeholder=\"Tell us more (optional)\"\n className=\"h-7 w-full rounded-md border border-border bg-muted/20 px-2.5 text-xs text-foreground placeholder:text-muted-foreground/60 focus:outline-none focus:ring-1 focus:ring-ring\" />\n <div className=\"flex items-center gap-2\">\n <button type=\"button\" onClick={handleApproveSubmit} disabled={!canSubmitApprove}\n className={`inline-flex h-7 items-center gap-1.5 rounded-md px-3 text-xs font-semibold transition-colors ${canSubmitApprove ? \"bg-foreground text-background hover:bg-foreground/90\" : \"cursor-not-allowed bg-muted text-muted-foreground\"}`}>\n Save\n </button>\n <button type=\"button\" onClick={handleEditCancel}\n className=\"inline-flex h-7 items-center rounded-md border border-border px-3 text-xs font-medium text-muted-foreground transition-colors hover:bg-muted hover:text-foreground\">\n Cancel\n </button>\n </div>\n </div>\n )\n }\n\n return (\n <div className=\"space-y-2\">\n <div className=\"flex items-center gap-1.5 text-xs font-medium text-emerald-600\">\n <Check className=\"h-3.5 w-3.5\" />\n {opportunityUrl ? (\n <a\n href={opportunityUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"inline-flex items-center gap-1 hover:underline underline-offset-2\"\n >\n Opportunity Created\n <ExternalLink className=\"h-3 w-3\" />\n </a>\n ) : (\n <span>Opportunity Created</span>\n )}\n </div>\n {submittedFeedback && (\n <SubmittedFeedback\n reasons={submittedFeedback.reasons}\n detail={submittedFeedback.detail}\n variant=\"approve\"\n onEdit={startEditing}\n />\n )}\n </div>\n )\n }\n\n if (approvalState === \"auto-approved\") {\n return (\n <div className=\"space-y-2\">\n <div className=\"flex items-center gap-1.5 text-xs font-medium text-emerald-600\">\n <Check className=\"h-3.5 w-3.5\" />\n <span>{labels.approvedStatus}</span>\n </div>\n {scheduledTime && (\n <p className=\"text-[11px] text-muted-foreground\">Scheduled: {scheduledTime}</p>\n )}\n </div>\n )\n }\n\n if (approvalState === \"approving-feedback\") {\n return (\n <div className=\"space-y-3\">\n <div className=\"flex items-center gap-1.5 text-xs font-medium text-emerald-600 mb-2\">\n <Check className=\"h-3.5 w-3.5\" />\n {opportunityUrl ? (\n <a\n href={opportunityUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"inline-flex items-center gap-1 hover:underline underline-offset-2\"\n >\n Opportunity Created\n <ExternalLink className=\"h-3 w-3\" />\n </a>\n ) : (\n <span>Opportunity Created</span>\n )}\n </div>\n <p className=\"text-xs font-medium text-muted-foreground\">{labels.feedbackPrompt}</p>\n <div className=\"flex flex-wrap gap-1.5\">\n {approveReasons.map((reason) => {\n const selected = selectedReasons.includes(reason)\n return (\n <button\n key={reason}\n type=\"button\"\n onClick={() => toggleReason(reason)}\n className={`rounded-full border px-2.5 py-1 text-[11px] font-medium transition-colors ${\n selected\n ? \"border-emerald-200 bg-emerald-100 text-emerald-700\"\n : \"border-border bg-background text-muted-foreground hover:bg-muted/50 hover:text-foreground\"\n }`}\n >\n {reason}\n </button>\n )\n })}\n </div>\n\n <input\n type=\"text\"\n value={detailText}\n onChange={(e) => setDetailText(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" && canSubmitApprove) handleApproveSubmit()\n }}\n placeholder=\"Tell us more (optional)\"\n className=\"h-7 w-full rounded-md border border-border bg-muted/20 px-2.5 text-xs text-foreground placeholder:text-muted-foreground/60 focus:outline-none focus:ring-1 focus:ring-ring\"\n />\n\n <div className=\"flex items-center gap-2\">\n <button\n type=\"button\"\n onClick={handleApproveSubmit}\n disabled={!canSubmitApprove}\n className={`inline-flex h-7 items-center gap-1.5 rounded-md px-3 text-xs font-semibold transition-colors ${\n canSubmitApprove\n ? \"bg-foreground text-background hover:bg-foreground/90\"\n : \"cursor-not-allowed bg-muted text-muted-foreground\"\n }`}\n >\n Submit\n </button>\n <button\n type=\"button\"\n onClick={skipApproveFeedback}\n className=\"inline-flex h-7 items-center rounded-md border border-border px-3 text-xs font-medium text-muted-foreground transition-colors hover:bg-muted hover:text-foreground\"\n >\n Skip\n </button>\n </div>\n </div>\n )\n }\n\n if (approvalState === \"dismissed\") {\n if (isEditing) {\n return (\n <div className=\"space-y-3\">\n <div className=\"flex items-center gap-1.5 text-xs text-muted-foreground mb-2\">\n <ThumbsDown className=\"h-3.5 w-3.5\" />\n <span>{labels.dismissedStatus}</span>\n </div>\n <p className=\"text-xs font-medium text-muted-foreground\">Edit your feedback</p>\n <div className=\"flex flex-wrap gap-1.5\">\n {dismissReasons.map((reason) => {\n const selected = selectedReasons.includes(reason)\n return (\n <button key={reason} type=\"button\" onClick={() => toggleReason(reason)}\n className={`rounded-full border px-2.5 py-1 text-[11px] font-medium transition-colors ${\n selected ? \"border-red-200 bg-red-100 text-red-700\" : \"border-border bg-background text-muted-foreground hover:bg-muted/50 hover:text-foreground\"\n }`}>{reason}</button>\n )\n })}\n </div>\n <input type=\"text\" value={detailText} onChange={(e) => setDetailText(e.target.value)}\n onKeyDown={(e) => { if (e.key === \"Enter\" && canSubmitDismiss) handleDismissSubmit() }}\n placeholder={otherSelected ? \"Please describe (required)\" : \"Provide additional feedback...\"}\n className=\"h-7 w-full rounded-md border border-border bg-muted/20 px-2.5 text-xs text-foreground placeholder:text-muted-foreground/60 focus:outline-none focus:ring-1 focus:ring-ring\" />\n <div className=\"flex items-center gap-2\">\n <button type=\"button\" onClick={handleDismissSubmit} disabled={!canSubmitDismiss}\n className={`inline-flex h-7 items-center gap-1.5 rounded-md px-3 text-xs font-semibold transition-colors ${canSubmitDismiss ? \"bg-foreground text-background hover:bg-foreground/90\" : \"cursor-not-allowed bg-muted text-muted-foreground\"}`}>\n Save\n </button>\n <button type=\"button\" onClick={handleEditCancel}\n className=\"inline-flex h-7 items-center rounded-md border border-border px-3 text-xs font-medium text-muted-foreground transition-colors hover:bg-muted hover:text-foreground\">\n Cancel\n </button>\n </div>\n </div>\n )\n }\n\n return (\n <div className=\"space-y-2\">\n <div className=\"flex items-center gap-1.5 text-xs text-muted-foreground\">\n <ThumbsDown className=\"h-3.5 w-3.5\" />\n <span>Signal Dismissed</span>\n </div>\n {submittedFeedback && (\n <SubmittedFeedback\n reasons={submittedFeedback.reasons}\n detail={submittedFeedback.detail}\n variant=\"dismiss\"\n onEdit={startEditing}\n />\n )}\n </div>\n )\n }\n\n if (approvalState === \"confirming\") {\n return (\n <div className=\"space-y-3\">\n <div className=\"rounded-md border border-border bg-muted/30 p-3\">\n <p className=\"text-sm text-foreground\">\n {labels.confirmPrompt} <strong>{companyName}</strong>. Confirm?\n </p>\n </div>\n <div className=\"flex items-center gap-2\">\n <button\n type=\"button\"\n onClick={approve}\n className=\"inline-flex h-7 items-center gap-1.5 rounded-md bg-foreground px-3 text-xs font-semibold text-background transition-colors hover:bg-foreground/90\"\n >\n <Check className=\"h-3 w-3\" />\n Confirm\n </button>\n <button\n type=\"button\"\n onClick={handleCancel}\n className=\"inline-flex h-7 items-center rounded-md border border-border px-3 text-xs font-medium text-muted-foreground transition-colors hover:bg-muted hover:text-foreground\"\n >\n Cancel\n </button>\n </div>\n </div>\n )\n }\n\n if (approvalState === \"dismissing\") {\n return (\n <div className=\"space-y-3\">\n <p className=\"text-xs font-medium text-muted-foreground\">{labels.dismissPrompt}</p>\n <div className=\"flex flex-wrap gap-1.5\">\n {dismissReasons.map((reason) => {\n const selected = selectedReasons.includes(reason)\n return (\n <button\n key={reason}\n type=\"button\"\n onClick={() => toggleReason(reason)}\n className={`rounded-full border px-2.5 py-1 text-[11px] font-medium transition-colors ${\n selected\n ? \"border-red-200 bg-red-100 text-red-700\"\n : \"border-border bg-background text-muted-foreground hover:bg-muted/50 hover:text-foreground\"\n }`}\n >\n {reason}\n </button>\n )\n })}\n </div>\n\n {(selectedReasons.length > 0 || otherSelected) && (\n <input\n type=\"text\"\n value={detailText}\n onChange={(e) => setDetailText(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" && canSubmitDismiss) handleDismissSubmit()\n }}\n placeholder={otherSelected ? \"Please describe (required)\" : \"Provide additional feedback...\"}\n className=\"h-7 w-full rounded-md border border-border bg-muted/20 px-2.5 text-xs text-foreground placeholder:text-muted-foreground/60 focus:outline-none focus:ring-1 focus:ring-ring\"\n />\n )}\n\n <div className=\"flex items-center gap-2\">\n <button\n type=\"button\"\n onClick={handleDismissSubmit}\n disabled={!canSubmitDismiss}\n className={`inline-flex h-7 items-center gap-1.5 rounded-md px-3 text-xs font-semibold transition-colors ${\n canSubmitDismiss\n ? \"bg-foreground text-background hover:bg-foreground/90\"\n : \"cursor-not-allowed bg-muted text-muted-foreground\"\n }`}\n >\n Submit\n </button>\n <button\n type=\"button\"\n onClick={handleCancel}\n className=\"inline-flex h-7 items-center rounded-md border border-border px-3 text-xs font-medium text-muted-foreground transition-colors hover:bg-muted hover:text-foreground\"\n >\n Cancel\n </button>\n </div>\n </div>\n )\n }\n\n return (\n <div className=\"flex items-center gap-2\">\n <button\n type=\"button\"\n onClick={requestApproval}\n className=\"inline-flex h-7 items-center gap-1.5 rounded-md border border-border bg-foreground px-3 text-xs font-semibold text-background shadow-none transition-colors hover:bg-foreground/90\"\n >\n <CirclePlus className=\"h-3.5 w-3.5\" />\n {labels.approveButton}\n </button>\n <button\n type=\"button\"\n onClick={requestDismiss}\n className=\"inline-flex h-7 items-center gap-1.5 rounded-md border border-border px-3 text-xs font-medium text-muted-foreground shadow-none transition-colors hover:bg-muted hover:text-foreground\"\n >\n <ThumbsDown className=\"h-3.5 w-3.5\" />\n {labels.dismissButton}\n </button>\n </div>\n )\n}\n\nfunction Gate({ children }: { children: React.ReactNode }) {\n const { approvalState } = useSignalApproval()\n const isLocked =\n approvalState === \"pending\" || approvalState === \"confirming\" || approvalState === \"dismissing\"\n\n return (\n <div className=\"relative\">\n {isLocked && (\n <div className=\"pointer-events-none absolute inset-x-0 top-4 z-10 flex justify-center\">\n <div className=\"flex items-center gap-1.5 rounded-full border border-border bg-background px-3 py-1.5 text-xs text-muted-foreground shadow-sm\">\n <Lock className=\"h-3 w-3\" />\n Approve or dismiss the signal above to unlock\n </div>\n </div>\n )}\n <div\n className={`transition-opacity duration-300 ${isLocked ? \"pointer-events-none select-none opacity-40\" : \"opacity-100\"}`}\n >\n {children}\n </div>\n </div>\n )\n}\n\nexport {\n Root as SignalApprovalRoot,\n Actions as SignalApprovalActions,\n Gate as SignalApprovalGate,\n}\nexport const SignalApproval = { Root, Actions, Gate }\nexport type { ApprovalState, SignalApprovalLabels, SignalApprovalContextValue, RootProps as SignalApprovalRootProps }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Sheet, SheetContent, SheetHeader, SheetTitle } from \"./sheet\"\nimport { Badge } from \"./badge\"\nimport { ScoreRing } from \"./score-ring\"\nimport { ScoreBreakdown, type ScoreFactor } from \"./score-breakdown\"\nimport { SignalApproval } from \"./signal-feedback-inline\"\nimport { X } from \"lucide-react\"\n\ninterface ScoreAnalysisModalProps {\n open: boolean\n onOpenChange: (open: boolean) => void\n title: string\n description: string\n score: number\n denominator?: number\n whyNow: string\n evidence: React.ReactNode[]\n factors?: ScoreFactor[]\n onFactorFeedback?: (factorKey: string, type: \"up\" | \"down\" | null, detail?: string) => void\n companyName?: string\n opportunityUrl?: string\n onApprove?: () => void\n onApproveFeedback?: (reasons: string[], detail: string) => void\n onDismiss?: (reasons: string[], detail: string) => void\n /** When true, renders as an absolute-positioned inline panel instead of a Radix Sheet portal. Useful when the component is inside a container that should not be escaped. */\n useInlinePanel?: boolean\n}\n\nfunction getScoreLabel(score: number, denominator: number) {\n const pct = (score / denominator) * 100\n if (pct >= 70) return { text: \"HIGH\", className: \"text-emerald-600\" }\n if (pct >= 40) return { text: \"MEDIUM\", className: \"text-amber-600\" }\n return { text: \"LOW\", className: \"text-red-600\" }\n}\n\nfunction ScoreAnalysisModal({\n open,\n onOpenChange,\n title,\n description,\n score,\n denominator = 100,\n whyNow,\n evidence,\n factors,\n onFactorFeedback,\n companyName = \"Account\",\n opportunityUrl,\n onApprove,\n onApproveFeedback,\n onDismiss,\n useInlinePanel = false,\n}: ScoreAnalysisModalProps) {\n const label = getScoreLabel(score, denominator)\n\n const panelContent = (\n <SignalApproval.Root\n companyName={companyName}\n opportunityUrl={opportunityUrl}\n onApprove={onApprove}\n onApproveFeedback={onApproveFeedback}\n onDismiss={onDismiss}\n >\n <div className=\"flex items-center justify-between px-6 py-4 border-b border-border shrink-0\">\n <h2 className=\"text-lg font-semibold text-foreground\">{title}</h2>\n <button\n type=\"button\"\n onClick={() => onOpenChange(false)}\n className=\"p-1.5 rounded-md text-muted-foreground hover:bg-secondary transition-colors\"\n >\n <X className=\"w-4 h-4\" />\n </button>\n </div>\n\n <div className=\"flex-1 overflow-y-auto px-6 py-6\">\n <p className=\"text-sm text-muted-foreground mb-6\">{description}</p>\n\n <div className=\"mb-8\">\n <SignalApproval.Actions />\n </div>\n\n <div className=\"space-y-6\">\n <div className=\"flex flex-col items-center gap-3\">\n <ScoreRing score={score} denominator={denominator} size={120} strokeWidth={10} />\n <Badge variant=\"outline\">\n {Math.round((score / denominator) * 100)}% Score\n {\" \\u2014 \"}\n <span className={label.className}>{label.text}</span>\n </Badge>\n </div>\n\n <div>\n <h3 className=\"font-semibold mb-2 text-sm\">Why Now</h3>\n <p className=\"text-sm text-muted-foreground leading-relaxed\">{whyNow}</p>\n </div>\n\n <div>\n <h3 className=\"font-semibold mb-2 text-sm\">Supporting Evidence</h3>\n <ul className=\"space-y-2\">\n {evidence.map((item, index) => (\n <li key={index} className=\"flex items-start gap-2 text-sm\">\n <div className=\"w-1.5 h-1.5 bg-primary rounded-full mt-2 flex-shrink-0\" />\n <span className=\"text-muted-foreground leading-relaxed\">{item}</span>\n </li>\n ))}\n </ul>\n </div>\n\n {factors && factors.length > 0 && (\n <div>\n <h3 className=\"font-semibold mb-2 text-sm\">Score Breakdown</h3>\n <ScoreBreakdown factors={factors} onFactorFeedback={onFactorFeedback} />\n </div>\n )}\n </div>\n </div>\n </SignalApproval.Root>\n )\n\n if (useInlinePanel) {\n if (!open) return null\n return (\n <div style={{ position: \"absolute\", inset: 0, zIndex: 50, pointerEvents: \"auto\", overflow: \"hidden\" }}>\n <div\n onClick={() => onOpenChange(false)}\n style={{ position: \"absolute\", inset: 0, backgroundColor: \"rgba(0,0,0,0.5)\", transition: \"opacity 200ms\" }}\n />\n <div\n style={{\n position: \"absolute\",\n top: 0,\n right: 0,\n bottom: 0,\n width: 500,\n maxWidth: \"100%\",\n zIndex: 50,\n display: \"flex\",\n flexDirection: \"column\",\n overflow: \"hidden\",\n borderLeft: \"1px solid var(--border)\",\n backgroundColor: \"var(--background, #fff)\",\n boxShadow: \"-4px 0 24px rgba(0,0,0,0.12)\",\n }}\n >\n {panelContent}\n </div>\n </div>\n )\n }\n\n return (\n <Sheet open={open} onOpenChange={onOpenChange}>\n <SheetContent\n side=\"right\"\n className=\"w-full sm:w-[500px] sm:max-w-[600px] overflow-hidden p-0 bg-background border-l border-border flex flex-col\"\n showCloseButton={false}\n >\n <SheetHeader className=\"sr-only p-0\">\n <SheetTitle>{title}</SheetTitle>\n </SheetHeader>\n {panelContent}\n </SheetContent>\n </Sheet>\n )\n}\n\nconst ScoreAnalysisPanel = ScoreAnalysisModal\n\nexport { ScoreAnalysisModal, ScoreAnalysisPanel }\nexport type { ScoreAnalysisModalProps }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { ArrowLeft, ChevronDown, ChevronUp, MessageSquare } from \"lucide-react\"\nimport { HoverCard as HoverCardPrimitive } from \"radix-ui\"\nimport { cn } from \"../../../lib/utils\"\nimport { Button } from \"./button\"\nimport { Badge } from \"./badge\"\n\nexport function DetailViewHeader({\n title,\n breadcrumbs,\n badges,\n onBack,\n}: {\n title: string\n breadcrumbs: React.ReactNode\n badges: React.ReactNode\n onBack?: () => void\n}) {\n return (\n <div className=\"flex flex-col gap-4 mb-6\">\n <div className=\"flex items-center gap-2 text-sm text-muted-foreground\">\n {onBack && (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-6 px-2 text-muted-foreground hover:text-foreground -ml-2\"\n onClick={onBack}\n >\n <ArrowLeft className=\"w-4 h-4 mr-1\" />\n Back\n </Button>\n )}\n <span className=\"text-muted-foreground/50\">·</span>\n {breadcrumbs}\n </div>\n <h1 className=\"text-2xl font-bold tracking-tight text-foreground\">{title}</h1>\n <div className=\"flex flex-wrap items-center gap-2\">{badges}</div>\n </div>\n )\n}\n\nexport function DetailViewSummary({\n title = \"Here's what I found\",\n children,\n sources,\n actions,\n}: {\n title?: string\n children: React.ReactNode\n sources?: React.ReactNode\n actions?: React.ReactNode\n}) {\n const [showSources, setShowSources] = React.useState(false)\n\n return (\n <div className=\"relative pl-4 mb-8\">\n {/* Blue left border */}\n <div className=\"absolute left-0 top-1 bottom-1 w-1 bg-brand-purple rounded-full\" />\n \n <div className=\"flex items-start justify-between mb-4 gap-3 flex-wrap\">\n <h2 className=\"text-base font-semibold text-foreground\">{title}</h2>\n {actions}\n </div>\n\n <div className=\"space-y-3 text-sm text-foreground/90\">\n {children}\n </div>\n\n {sources && (\n <div className=\"mt-4\">\n <button\n type=\"button\"\n onClick={() => setShowSources(!showSources)}\n className=\"flex items-center gap-1.5 text-[11px] font-bold text-muted-foreground/70 hover:text-foreground transition-colors uppercase tracking-wider\"\n >\n Sources\n <ChevronDown className={cn(\"w-3.5 h-3.5 transition-transform duration-200\", showSources && \"rotate-180\")} />\n </button>\n {showSources && <div className=\"mt-3\">{sources}</div>}\n </div>\n )}\n </div>\n )\n}\n\nexport type SourceDef = {\n id: number | string\n summary: string\n meta: string\n}\n\nexport function Citation({\n number,\n source,\n}: {\n number: number | string\n source?: SourceDef\n}) {\n const badge = (\n <span className=\"inline-flex items-center justify-center w-4 h-4 rounded-full bg-muted border border-border text-[9px] font-medium text-muted-foreground ml-1 align-middle cursor-pointer select-none hover:bg-foreground hover:text-background hover:border-foreground transition-all duration-150\">\n {number}\n </span>\n )\n\n if (!source) return badge\n\n return (\n <HoverCardPrimitive.Root openDelay={200} closeDelay={100}>\n <HoverCardPrimitive.Trigger asChild>{badge}</HoverCardPrimitive.Trigger>\n <HoverCardPrimitive.Portal>\n <HoverCardPrimitive.Content\n side=\"top\"\n align=\"start\"\n sideOffset={6}\n className=\"z-50 w-72 rounded-md border bg-popover p-0 text-popover-foreground shadow-md outline-hidden data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=top]:slide-in-from-bottom-2\"\n >\n <div className=\"p-3 cursor-pointer hover:bg-muted/40 rounded-md transition-colors\">\n <div className=\"text-xs text-foreground leading-relaxed\">{source.summary}</div>\n <div className=\"text-[11px] text-muted-foreground/60 mt-1.5\">{source.meta}</div>\n </div>\n </HoverCardPrimitive.Content>\n </HoverCardPrimitive.Portal>\n </HoverCardPrimitive.Root>\n )\n}\n\nexport function SourceList({ sources }: { sources: SourceDef[] }) {\n return (\n <div className=\"space-y-0.5\">\n {sources.map((source) => (\n <SourceItem key={source.id} source={source} />\n ))}\n </div>\n )\n}\n\nfunction SourceItem({ source }: { source: SourceDef }) {\n return (\n <div className=\"group flex items-start gap-3 cursor-pointer py-2.5 px-2 -mx-2 rounded-lg text-sm transition-colors hover:bg-muted/40\">\n <span className=\"flex-shrink-0 mt-0.5 w-5 text-right text-xs font-medium text-muted-foreground/50 group-hover:text-foreground/70 transition-colors\">\n {source.id}\n </span>\n <div className=\"text-muted-foreground leading-relaxed min-w-0\">\n <span>{source.summary}</span>\n <span className=\"mx-1.5 text-muted-foreground/30\">|</span>\n <span className=\"text-xs text-muted-foreground/50\">{source.meta}</span>\n </div>\n </div>\n )\n}\n\nexport function DetailViewThread({\n title,\n actionCount,\n children,\n}: {\n title: string\n actionCount?: number\n children: React.ReactNode\n}) {\n return (\n <div className=\"mt-8 border-t border-border pt-8\">\n <div className=\"flex items-center justify-between mb-4\">\n <h3 className=\"text-xs font-bold text-muted-foreground uppercase tracking-wider\">{title}</h3>\n {actionCount !== undefined && (\n <span className=\"text-sm text-muted-foreground\">{actionCount} actions</span>\n )}\n </div>\n <div className=\"rounded-xl border border-border bg-card overflow-hidden shadow-sm\">\n {children}\n </div>\n </div>\n )\n}\n\nexport function ThreadMessage({\n icon,\n subject,\n time,\n messageCount,\n threadLink,\n sender,\n senderTime,\n children,\n isExpanded = true,\n}: {\n icon?: React.ReactNode\n subject: string\n time: string\n messageCount?: number\n threadLink?: string\n sender?: string\n senderTime?: string\n children: React.ReactNode\n isExpanded?: boolean\n}) {\n return (\n <div className=\"flex flex-col\">\n {/* Header */}\n <div className=\"flex items-center justify-between p-4 border-b border-border bg-card hover:bg-muted/30 cursor-pointer\">\n <div className=\"flex items-center gap-3\">\n {icon || <MessageSquare className=\"w-4 h-4 text-muted-foreground\" />}\n <span className=\"font-semibold text-sm\">{subject}</span>\n </div>\n <div className=\"flex items-center gap-3 text-xs text-muted-foreground\">\n {time}\n <ChevronUp className=\"w-4 h-4\" />\n </div>\n </div>\n \n {/* Context info */}\n {messageCount !== undefined && (\n <div className=\"px-4 py-2 bg-muted/20 border-b border-border text-xs text-muted-foreground flex items-center gap-2\">\n {messageCount} messages in this thread ·\n {threadLink && <a href={threadLink} className=\"underline hover:text-foreground\">View thread</a>}\n </div>\n )}\n\n {/* Message Body */}\n {isExpanded && (\n <div className=\"p-4\">\n {sender && (\n <div className=\"flex items-center justify-between mb-2\">\n <span className=\"font-semibold text-sm\">{sender}</span>\n {senderTime && <span className=\"text-xs text-muted-foreground\">{senderTime}</span>}\n </div>\n )}\n <div className=\"text-sm text-foreground/90 space-y-4 leading-relaxed\">\n {children}\n </div>\n </div>\n )}\n </div>\n )\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport {\n Briefcase,\n Calendar,\n DollarSign,\n History,\n Link as LinkIcon,\n SearchX,\n TrendingUp,\n User,\n Users,\n} from \"lucide-react\"\nimport {\n createColumnHelper,\n flexRender,\n getCoreRowModel,\n getSortedRowModel,\n useReactTable,\n type SortingState,\n type VisibilityState,\n} from \"@tanstack/react-table\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { Badge } from \"./badge\"\nimport {\n DataTableQuickViews,\n type DataTableQuickViewValue,\n} from \"./data-table-quick-views\"\nimport { DataTableToolbar } from \"./data-table-toolbar\"\nimport { type DataTableFilterCategory } from \"./data-table-filter\"\nimport { ScoreAnalysisModal } from \"./score-analysis-modal\"\nimport type { ScoreFactor } from \"./score-breakdown\"\nimport { Citation, type SourceDef } from \"./detail-view\"\n\nexport type DataRow = {\n id: string\n name: string\n industry: string[]\n accountRisks: string[]\n riskScore: number\n expansionScore: number\n growthIndicators: string[]\n lastInteraction: string\n lastInteractionDays: number\n createdAt: string\n revenue: string\n headcount: string\n lastFunding: string\n owner: string\n opportunityCount: number\n productAdoptionScore: number\n}\n\nconst QUICK_VIEWS = [\n \"Balance Flight Detected\",\n \"Not Touched in 30+ Days\",\n \"Open Opportunity, Stalled\",\n \"Growth Signal Detected\",\n \"Low Product Adoption\",\n]\n\nconst MORE_QUICK_VIEWS = [\n \"Missed meeting this week\",\n \"High churn risk score\",\n \"Key contact departed\",\n \"Recent large inflow\",\n \"Dormant (no payments)\",\n \"Support tickets elevated\",\n]\n\nconst FILTER_CATEGORIES: DataTableFilterCategory[] = [\n {\n id: \"industry\",\n label: \"Industry\",\n icon: Briefcase,\n options: [\n \"Software\",\n \"E-commerce\",\n \"Financial Technology\",\n \"Workforce Management\",\n \"Artificial Intelligence\",\n \"Health Technology\",\n \"Design\",\n ],\n },\n {\n id: \"lastInteraction\",\n label: \"Last interaction\",\n icon: History,\n options: [\"1 day ago\", \"3 days ago\", \"1 week ago\", \"1 month ago\", \"2 months ago\"],\n },\n {\n id: \"createdAt\",\n label: \"Created at\",\n icon: Calendar,\n options: [\"Last 30 days\", \"Last 90 days\", \"This year\", \"Last year\"],\n },\n {\n id: \"revenue\",\n label: \"Revenue\",\n icon: DollarSign,\n options: [\"$0 - $1M\", \"$1M - $10M\", \"$10M - $50M\", \"$50M+\"],\n },\n {\n id: \"headcount\",\n label: \"Headcount\",\n icon: Users,\n options: [\"11-50\", \"51-200\", \"201-500\", \"500-1000\", \"1000+\"],\n },\n {\n id: \"lastFunding\",\n label: \"Last funding\",\n icon: TrendingUp,\n options: [\"Seed\", \"Series A\", \"Series B\", \"Series C+\", \"Undisclosed\"],\n },\n {\n id: \"owner\",\n label: \"Owner\",\n icon: User,\n options: [\"Sam Lee\", \"Alex Morgan\", \"Jordan Case\", \"Taylor Reed\"],\n },\n {\n id: \"opportunityCount\",\n label: \"Opportunity count\",\n icon: LinkIcon,\n options: [\"0\", \"1\", \"2\", \"3+\"],\n },\n]\n\nconst ROWS: DataRow[] = [\n {\n id: \"rappi\",\n name: \"Rappi\",\n industry: [\"E-commerce\", \"Food Delivery\", \"Financial Technology\"],\n accountRisks: [\"Flight Risk\", \"Low Engagement\"],\n riskScore: 65,\n expansionScore: 45,\n growthIndicators: [\"Job Openings\", \"Recent Funding\"],\n lastInteraction: \"1 week ago\",\n lastInteractionDays: 7,\n createdAt: \"This year\",\n revenue: \"$10M - $50M\",\n headcount: \"1000+\",\n lastFunding: \"Series C+\",\n owner: \"Sam Lee\",\n opportunityCount: 2,\n productAdoptionScore: 62,\n },\n {\n id: \"codeshot\",\n name: \"Codeshot\",\n industry: [\"Software\"],\n accountRisks: [\"Flight Risk\", \"Low Engagement\"],\n riskScore: 85,\n expansionScore: 20,\n growthIndicators: [],\n lastInteraction: \"2 months ago\",\n lastInteractionDays: 64,\n createdAt: \"Last year\",\n revenue: \"$1M - $10M\",\n headcount: \"201-500\",\n lastFunding: \"Series A\",\n owner: \"Alex Morgan\",\n opportunityCount: 1,\n productAdoptionScore: 31,\n },\n {\n id: \"lovi\",\n name: \"Lovi\",\n industry: [\"Artificial Intelligence\", \"Health Technology\"],\n accountRisks: [\"Low Engagement\", \"Key Contact Departure\"],\n riskScore: 55,\n expansionScore: 75,\n growthIndicators: [\"Recent Funding\", \"Headcount Expansion\"],\n lastInteraction: \"1 month ago\",\n lastInteractionDays: 36,\n createdAt: \"This year\",\n revenue: \"$10M - $50M\",\n headcount: \"500-1000\",\n lastFunding: \"Series B\",\n owner: \"Jordan Case\",\n opportunityCount: 3,\n productAdoptionScore: 38,\n },\n {\n id: \"anthropic\",\n name: \"Anthropic\",\n industry: [\"Software\"],\n accountRisks: [],\n riskScore: 25,\n expansionScore: 68,\n growthIndicators: [\"Recent Funding\", \"Headcount Expansion\"],\n lastInteraction: \"3 days ago\",\n lastInteractionDays: 3,\n createdAt: \"Last 90 days\",\n revenue: \"$50M+\",\n headcount: \"1000+\",\n lastFunding: \"Series C+\",\n owner: \"Sam Lee\",\n opportunityCount: 2,\n productAdoptionScore: 86,\n },\n {\n id: \"buildbear\",\n name: \"BuildBear\",\n industry: [\"Software\"],\n accountRisks: [],\n riskScore: 35,\n expansionScore: 92,\n growthIndicators: [\"Recent Funding\", \"Revenue Growth\"],\n lastInteraction: \"1 day ago\",\n lastInteractionDays: 1,\n createdAt: \"Last 30 days\",\n revenue: \"$1M - $10M\",\n headcount: \"51-200\",\n lastFunding: \"Seed\",\n owner: \"Taylor Reed\",\n opportunityCount: 2,\n productAdoptionScore: 91,\n },\n {\n id: \"content-mobbin\",\n name: \"Content-mobbin\",\n industry: [\"Workforce Management\"],\n accountRisks: [],\n riskScore: 28,\n expansionScore: 85,\n growthIndicators: [\"Recent Funding\", \"Headcount Expansion\"],\n lastInteraction: \"1 week ago\",\n lastInteractionDays: 9,\n createdAt: \"Last 30 days\",\n revenue: \"$0 - $1M\",\n headcount: \"11-50\",\n lastFunding: \"Seed\",\n owner: \"Taylor Reed\",\n opportunityCount: 2,\n productAdoptionScore: 77,\n },\n {\n id: \"figma\",\n name: \"Figma\",\n industry: [\"Design\", \"Software\"],\n accountRisks: [],\n riskScore: 15,\n expansionScore: 88,\n growthIndicators: [\"Headcount Expansion\", \"Job Openings\"],\n lastInteraction: \"3 days ago\",\n lastInteractionDays: 3,\n createdAt: \"This year\",\n revenue: \"$50M+\",\n headcount: \"1000+\",\n lastFunding: \"Series C+\",\n owner: \"Alex Morgan\",\n opportunityCount: 1,\n productAdoptionScore: 94,\n },\n {\n id: \"loom\",\n name: \"Loom\",\n industry: [\"Software\"],\n accountRisks: [\"Key Contact Departure\"],\n riskScore: 35,\n expansionScore: 68,\n growthIndicators: [\"Headcount Expansion\", \"Job Openings\"],\n lastInteraction: \"1 month ago\",\n lastInteractionDays: 33,\n createdAt: \"Last year\",\n revenue: \"$10M - $50M\",\n headcount: \"500-1000\",\n lastFunding: \"Series B\",\n owner: \"Jordan Case\",\n opportunityCount: 1,\n productAdoptionScore: 58,\n },\n {\n id: \"miro\",\n name: \"Miro\",\n industry: [\"Software\"],\n accountRisks: [],\n riskScore: 32,\n expansionScore: 55,\n growthIndicators: [],\n lastInteraction: \"1 week ago\",\n lastInteractionDays: 8,\n createdAt: \"This year\",\n revenue: \"$50M+\",\n headcount: \"1000+\",\n lastFunding: \"Series C+\",\n owner: \"Sam Lee\",\n opportunityCount: 0,\n productAdoptionScore: 64,\n },\n {\n id: \"webflow\",\n name: \"Webflow\",\n industry: [\"Software\"],\n accountRisks: [],\n riskScore: 25,\n expansionScore: 72,\n growthIndicators: [\"Recent Funding\", \"Headcount Expansion\"],\n lastInteraction: \"1 week ago\",\n lastInteractionDays: 10,\n createdAt: \"Last 90 days\",\n revenue: \"$10M - $50M\",\n headcount: \"500-1000\",\n lastFunding: \"Series B\",\n owner: \"Alex Morgan\",\n opportunityCount: 2,\n productAdoptionScore: 71,\n },\n]\n\ntype ScoreAnalysisData = {\n title: string\n description: string\n whyNow: string\n evidence: React.ReactNode[]\n factors: ScoreFactor[]\n}\n\nconst RISK_SOURCES: SourceDef[] = [\n { id: 1, summary: \"Weekly active users declined 12% over the past 30 days with no recovery trend.\", meta: \"Product telemetry \\u00b7 2h ago\" },\n { id: 2, summary: \"Critical support ticket #4821 has been unresolved for over 48 hours.\", meta: \"Zendesk \\u00b7 6h ago\" },\n { id: 3, summary: \"Competitor mentions detected in recent Slack conversations from the finance team.\", meta: \"Slack signal \\u00b7 1d ago\" },\n]\n\nconst EXPANSION_SOURCES: SourceDef[] = [\n { id: 1, summary: \"Treasury feature utilization is above the 85th percentile compared to peer accounts.\", meta: \"Product telemetry \\u00b7 3h ago\" },\n { id: 2, summary: \"Multiple feature requests submitted for advanced reporting and API access.\", meta: \"Zendesk \\u00b7 1d ago\" },\n { id: 3, summary: \"Finance department headcount grew from 8 to 14 in the last quarter.\", meta: \"LinkedIn signal \\u00b7 2d ago\" },\n]\n\nconst SCORE_ANALYSIS: Record<string, (row: DataRow) => ScoreAnalysisData> = {\n Risk: (row) => ({\n title: \"Risk Score Analysis\",\n description:\n \"Estimated probability of churn within the next 90 days based on activity and support signals\",\n whyNow:\n row.riskScore >= 60\n ? \"Critical risk factors detected requiring immediate intervention to prevent churn.\"\n : \"Account health is stable, but monitoring recent support interactions is recommended.\",\n evidence: [\n <>Recent decline in <span className=\"font-medium text-foreground\">weekly active users (-12%)</span> with no recovery trend<Citation number={1} source={RISK_SOURCES[0]} /></>,\n <>Unresolved <span className=\"font-medium text-foreground\">critical support ticket</span> open for over 48 hours<Citation number={2} source={RISK_SOURCES[1]} /></>,\n <>Competitor presence detected in recent conversations from finance team<Citation number={3} source={RISK_SOURCES[2]} /></>,\n ],\n factors: [\n { key: \"engagement\", label: \"Engagement drop\", score: Math.min(row.riskScore + 10, 100), why: \"Weekly active users declined 12% over past 30 days\" },\n { key: \"support\", label: \"Support load\", score: Math.min(row.riskScore + 5, 100), why: \"Unresolved critical ticket open for >48h\" },\n { key: \"competitive\", label: \"Competitive risk\", score: null, risk: row.riskScore >= 60 ? \"High\" as const : \"Low\" as const, why: \"Competitor mentions detected in recent conversations\" },\n { key: \"usage\", label: \"Product usage\", score: Math.max(100 - row.riskScore, 10), why: \"Core feature adoption remains consistent\" },\n ],\n }),\n Expansion: (row) => ({\n title: \"Expansion Score Analysis\",\n description:\n \"Likelihood of successful upsell and cross-sell opportunities based on usage and engagement\",\n whyNow:\n row.expansionScore >= 70\n ? \"Usage patterns and growth signals indicate readiness for additional product adoption.\"\n : \"Moderate expansion potential; consider targeted engagement to increase adoption.\",\n evidence: [\n <>Treasury utilization above <span className=\"font-medium text-foreground\">85th percentile</span> vs peer accounts<Citation number={1} source={EXPANSION_SOURCES[0]} /></>,\n <>Frequent <span className=\"font-medium text-foreground\">feature requests</span> for advanced reporting and API access<Citation number={2} source={EXPANSION_SOURCES[1]} /></>,\n <>Recent <span className=\"font-medium text-foreground\">team expansion</span> in finance department (8 → 14)<Citation number={3} source={EXPANSION_SOURCES[2]} /></>,\n ],\n factors: [\n { key: \"usage-depth\", label: \"Usage depth\", score: Math.min(row.expansionScore + 8, 100), why: \"Active usage across 4+ core product features\" },\n { key: \"growth\", label: \"Growth signals\", score: row.expansionScore, why: row.growthIndicators.length > 0 ? row.growthIndicators.join(\", \") + \" detected\" : \"No active growth signals\" },\n { key: \"fit\", label: \"Product fit\", score: Math.min(row.expansionScore + 12, 100), why: \"Company profile matches high-expansion ICP\" },\n { key: \"timing\", label: \"Timing\", score: null, risk: row.expansionScore >= 70 ? \"Low\" as const : \"Medium\" as const, why: \"Within typical evaluation window for upsell\" },\n ],\n }),\n}\n\nconst QUICK_VIEW_FILTERS: Record<string, (row: DataRow) => boolean> = {\n \"Balance Flight Detected\": (row) => row.riskScore >= 60,\n \"Not Touched in 30+ Days\": (row) => row.lastInteractionDays >= 30,\n \"Open Opportunity, Stalled\": (row) =>\n row.opportunityCount > 0 && row.lastInteractionDays >= 21,\n \"Growth Signal Detected\": (row) => row.expansionScore >= 70,\n \"Low Product Adoption\": (row) => row.productAdoptionScore <= 40,\n \"Missed meeting this week\": (row) => row.lastInteractionDays >= 6,\n \"High churn risk score\": (row) => row.riskScore >= 75,\n \"Key contact departed\": (row) =>\n row.accountRisks.some((risk) => risk.toLowerCase().includes(\"contact\")),\n \"Recent large inflow\": (row) => row.expansionScore >= 85,\n \"Dormant (no payments)\": (row) => row.opportunityCount === 0,\n \"Support tickets elevated\": (row) =>\n row.accountRisks.some((risk) => risk.toLowerCase().includes(\"engagement\")),\n}\n\nconst columnHelper = createColumnHelper<DataRow>()\n\nconst DEFAULT_COLUMN_VISIBILITY: VisibilityState = {\n industry: false,\n lastInteraction: false,\n revenue: false,\n headcount: false,\n lastFunding: false,\n owner: false,\n opportunityCount: false,\n}\n\nfunction getEntityColor(name: string) {\n const colors = [\n \"bg-muted text-muted-foreground\",\n \"bg-gray-100 text-gray-600\",\n \"bg-zinc-100 text-zinc-600\",\n \"bg-blue-50 text-blue-600\",\n \"bg-indigo-50 text-indigo-600\",\n \"bg-violet-50 text-violet-600\",\n ]\n\n let hash = 0\n for (let i = 0; i < name.length; i += 1) {\n hash = name.charCodeAt(i) + ((hash << 5) - hash)\n }\n return colors[Math.abs(hash) % colors.length]\n}\n\nfunction getIndustryColor(industry: string) {\n const colors: Record<string, string> = {\n \"E-commerce\": \"bg-emerald-50 text-emerald-700 border-emerald-100\",\n \"Food Delivery\": \"bg-blue-50 text-blue-700 border-blue-100\",\n \"Financial Technology\": \"bg-amber-50 text-amber-700 border-amber-100\",\n \"Workforce Management\": \"bg-violet-50 text-violet-700 border-violet-100\",\n \"Artificial Intelligence\": \"bg-rose-50 text-rose-700 border-rose-100\",\n \"Health Technology\": \"bg-orange-50 text-orange-700 border-orange-100\",\n Software: \"bg-muted text-muted-foreground border-border\",\n }\n\n return colors[industry] ?? \"bg-muted text-muted-foreground border-border\"\n}\n\nfunction toggleFilterValue(\n current: Record<string, string[]>,\n categoryId: string,\n option: string\n) {\n const currentValues = current[categoryId] ?? []\n const isActive = currentValues.includes(option)\n const nextValues = isActive\n ? currentValues.filter((value) => value !== option)\n : [...currentValues, option]\n\n return {\n ...current,\n [categoryId]: nextValues,\n }\n}\n\nfunction isRowMatchingCategoryFilter(\n row: DataRow,\n categoryId: string,\n options: string[]\n) {\n if (options.length === 0) {\n return true\n }\n\n switch (categoryId) {\n case \"industry\":\n return options.some((option) => row.industry.includes(option))\n case \"lastInteraction\":\n return options.includes(row.lastInteraction)\n case \"createdAt\":\n return options.includes(row.createdAt)\n case \"revenue\":\n return options.includes(row.revenue)\n case \"headcount\":\n return options.includes(row.headcount)\n case \"lastFunding\":\n return options.includes(row.lastFunding)\n case \"owner\":\n return options.includes(row.owner)\n case \"opportunityCount\":\n return options.some((option) => {\n if (option === \"3+\") {\n return row.opportunityCount >= 3\n }\n return row.opportunityCount === Number(option)\n })\n default:\n return true\n }\n}\n\nexport interface DataTableProps {\n onRowClick?: (row: DataRow) => void\n rows?: DataRow[]\n filterCategories?: DataTableFilterCategory[]\n quickViews?: string[]\n moreQuickViews?: string[]\n quickViewFilters?: Record<string, (row: DataRow) => boolean>\n iconMap?: { salesforce?: string }\n entityUrlBuilder?: (row: DataRow) => string\n onScoreFactorFeedback?: (account: string, scoreType: string, factorKey: string, type: \"up\" | \"down\" | null, detail?: string) => void\n onScoreApproveFeedback?: (account: string, scoreType: string, reasons: string[], detail: string) => void\n onScoreDismissFeedback?: (account: string, scoreType: string, reasons: string[], detail: string) => void\n}\n\nexport function DataTable({\n onRowClick,\n rows: rowsProp,\n filterCategories: filterCategoriesProp,\n quickViews: quickViewsProp,\n moreQuickViews: moreQuickViewsProp,\n quickViewFilters: quickViewFiltersProp,\n iconMap,\n entityUrlBuilder,\n onScoreFactorFeedback,\n onScoreApproveFeedback,\n onScoreDismissFeedback,\n}: DataTableProps = {}) {\n const resolvedRows = rowsProp ?? ROWS\n const resolvedFilterCategories = filterCategoriesProp ?? FILTER_CATEGORIES\n const resolvedQuickViews = quickViewsProp ?? QUICK_VIEWS\n const resolvedMoreQuickViews = moreQuickViewsProp ?? MORE_QUICK_VIEWS\n const resolvedQuickViewFilters = quickViewFiltersProp ?? QUICK_VIEW_FILTERS\n\n const [sorting, setSorting] = React.useState<SortingState>([])\n const [columnVisibility, setColumnVisibility] = React.useState<VisibilityState>(\n DEFAULT_COLUMN_VISIBILITY\n )\n const [selectedFilters, setSelectedFilters] = React.useState<Record<string, string[]>>(\n {}\n )\n const [activeQuickView, setActiveQuickView] =\n React.useState<DataTableQuickViewValue>(null)\n const [scoreModal, setScoreModal] = React.useState<{\n row: DataRow\n type: \"Risk\" | \"Expansion\"\n } | null>(null)\n\n React.useEffect(() => {\n if (!activeQuickView) {\n return\n }\n\n setColumnVisibility((previous) => {\n const next = { ...previous }\n if (activeQuickView.includes(\"Touched\")) {\n next.lastInteraction = true\n }\n if (activeQuickView.includes(\"Growth\")) {\n next.expansionScore = true\n }\n if (activeQuickView.includes(\"risk\") || activeQuickView.includes(\"Risk\")) {\n next.riskScore = true\n }\n return next\n })\n }, [activeQuickView])\n\n const filteredRows = React.useMemo(() => {\n return resolvedRows.filter((row) => {\n const quickViewMatches = activeQuickView\n ? (resolvedQuickViewFilters[activeQuickView]?.(row) ?? true)\n : true\n\n if (!quickViewMatches) {\n return false\n }\n\n return Object.entries(selectedFilters).every(([categoryId, options]) =>\n isRowMatchingCategoryFilter(row, categoryId, options)\n )\n })\n }, [activeQuickView, selectedFilters, resolvedRows, resolvedQuickViewFilters])\n\n const columns = React.useMemo(\n () => [\n columnHelper.accessor(\"name\", {\n header: \"Entity\",\n cell: (info) => {\n const row = info.row.original\n const sfUrl = entityUrlBuilder?.(row)\n return (\n <div className=\"flex min-w-max items-center gap-3\">\n <div\n className={cn(\n \"flex h-6 w-6 shrink-0 items-center justify-center rounded text-[10px] font-bold\",\n getEntityColor(row.name)\n )}\n >\n {row.name.slice(0, 1)}\n </div>\n <span className=\"text-sm font-medium text-foreground\">\n {row.name}\n </span>\n {iconMap?.salesforce && (\n <a\n href={sfUrl ?? \"#\"}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n onClick={(e) => e.stopPropagation()}\n className=\"shrink-0 text-muted-foreground hover:text-foreground transition-colors\"\n >\n <img src={iconMap.salesforce} alt=\"Salesforce\" className=\"w-4 h-4 object-contain\" />\n </a>\n )}\n </div>\n )\n },\n }),\n columnHelper.accessor(\"accountRisks\", {\n header: \"Risk Signals\",\n cell: (info) => {\n const risks = info.getValue()\n if (!risks.length) {\n return <span className=\"text-xs text-muted-foreground\">None</span>\n }\n\n return (\n <div className=\"flex min-w-max items-center gap-1.5\">\n {risks.slice(0, 2).map((risk) => (\n <Badge\n key={risk}\n variant=\"outline\"\n className=\"rounded-md border-red-200 bg-red-50 px-2 py-0.5 text-xs font-normal text-red-700\"\n >\n {risk}\n </Badge>\n ))}\n </div>\n )\n },\n }),\n columnHelper.accessor(\"riskScore\", {\n id: \"riskScore\",\n header: \"Risk Score\",\n cell: (info) => (\n <div\n className=\"inline-flex cursor-pointer\"\n onClick={(e) => {\n e.stopPropagation()\n setScoreModal({ row: info.row.original, type: \"Risk\" })\n }}\n >\n <Badge\n variant=\"outline\"\n className={cn(\n \"px-2 py-0.5 text-xs font-medium hover:underline decoration-dotted underline-offset-2\",\n info.getValue() >= 60\n ? \"border-red-200 bg-red-50 text-red-700\"\n : \"border-border bg-muted/50 text-foreground\"\n )}\n >\n {info.getValue()}%\n </Badge>\n </div>\n ),\n }),\n columnHelper.accessor(\"expansionScore\", {\n id: \"expansionScore\",\n header: \"Expansion Score\",\n cell: (info) => (\n <div\n className=\"inline-flex cursor-pointer\"\n onClick={(e) => {\n e.stopPropagation()\n setScoreModal({ row: info.row.original, type: \"Expansion\" })\n }}\n >\n <Badge\n variant=\"outline\"\n className={cn(\n \"px-2 py-0.5 text-xs font-medium hover:underline decoration-dotted underline-offset-2\",\n info.getValue() >= 70\n ? \"border-blue-200 bg-blue-50 text-blue-700\"\n : \"border-border bg-muted/50 text-foreground\"\n )}\n >\n {info.getValue()}%\n </Badge>\n </div>\n ),\n }),\n columnHelper.accessor(\"growthIndicators\", {\n header: \"Growth Signals\",\n cell: (info) => {\n const indicators = info.getValue()\n if (!indicators.length) {\n return <span className=\"text-xs text-muted-foreground\">None</span>\n }\n return (\n <div className=\"flex min-w-max items-center gap-1.5\">\n {indicators.slice(0, 2).map((indicator) => (\n <Badge\n key={indicator}\n variant=\"outline\"\n className=\"rounded-md border-blue-200 bg-blue-50 px-2 py-0.5 text-xs font-normal text-blue-700\"\n >\n {indicator}\n </Badge>\n ))}\n </div>\n )\n },\n }),\n columnHelper.accessor(\"industry\", {\n header: \"Industry\",\n cell: (info) => (\n <div className=\"flex min-w-max items-center gap-1.5\">\n {info.getValue().slice(0, 2).map((industry) => (\n <Badge\n key={industry}\n variant=\"outline\"\n className={cn(\n \"rounded-md px-2 py-0.5 text-xs font-normal\",\n getIndustryColor(industry)\n )}\n >\n {industry}\n </Badge>\n ))}\n </div>\n ),\n }),\n columnHelper.accessor(\"lastInteraction\", {\n header: \"Last interaction\",\n cell: (info) => <span className=\"text-sm\">{info.getValue()}</span>,\n }),\n columnHelper.accessor(\"revenue\", {\n header: \"Revenue\",\n cell: (info) => (\n <span className=\"rounded-md bg-muted/50 px-2 py-0.5 text-xs font-medium\">\n {info.getValue()}\n </span>\n ),\n }),\n columnHelper.accessor(\"headcount\", {\n header: \"Headcount\",\n cell: (info) => (\n <span className=\"rounded-md bg-muted/50 px-2 py-0.5 text-xs font-medium\">\n {info.getValue()}\n </span>\n ),\n }),\n columnHelper.accessor(\"lastFunding\", {\n header: \"Last funding\",\n cell: (info) => (\n <span className=\"rounded-md bg-muted/50 px-2 py-0.5 text-xs font-medium\">\n {info.getValue()}\n </span>\n ),\n }),\n columnHelper.accessor(\"owner\", {\n header: \"Owner\",\n cell: (info) => <span className=\"text-sm\">{info.getValue()}</span>,\n }),\n columnHelper.accessor(\"opportunityCount\", {\n header: \"Opportunity count\",\n cell: (info) => (\n <span className=\"rounded-md bg-muted/50 px-2 py-0.5 text-xs font-medium\">\n {info.getValue()}\n </span>\n ),\n }),\n ],\n [iconMap, entityUrlBuilder]\n )\n\n const table = useReactTable({\n data: filteredRows,\n columns,\n state: {\n sorting,\n columnVisibility,\n },\n onSortingChange: setSorting,\n onColumnVisibilityChange: setColumnVisibility,\n getCoreRowModel: getCoreRowModel(),\n getSortedRowModel: getSortedRowModel(),\n })\n\n const displayColumns = table.getAllLeafColumns().map((column) => {\n const header = column.columnDef.header\n const label = typeof header === \"string\" ? header : column.id\n\n return {\n id: column.id,\n label,\n visible: column.getIsVisible(),\n canHide: column.getCanHide(),\n }\n })\n\n const toggleCategoryFilter = (categoryId: string, option: string) => {\n setSelectedFilters((previous) => toggleFilterValue(previous, categoryId, option))\n }\n\n return (\n <div className=\"relative flex h-full min-h-[560px] flex-col bg-background\">\n <DataTableToolbar\n categories={resolvedFilterCategories}\n selectedFilters={selectedFilters}\n onToggleFilter={toggleCategoryFilter}\n sorting={sorting}\n onSortingChange={setSorting}\n displayColumns={displayColumns}\n onToggleColumn={(columnId) => table.getColumn(columnId)?.toggleVisibility()}\n onResetDisplay={() => setColumnVisibility(DEFAULT_COLUMN_VISIBILITY)}\n />\n\n <DataTableQuickViews\n quickViews={resolvedQuickViews}\n moreViews={resolvedMoreQuickViews}\n activeView={activeQuickView}\n onViewChange={setActiveQuickView}\n />\n\n <div className=\"relative min-h-0 flex-1 overflow-auto border-t border-border\">\n <table className=\"w-max min-w-full border-collapse text-sm\">\n <thead className=\"sticky top-0 z-10 bg-background\">\n {table.getHeaderGroups().map((headerGroup) => (\n <tr key={headerGroup.id} className=\"border-b border-border\">\n {headerGroup.headers.map((header) => (\n <th\n key={header.id}\n className=\"h-10 border-r border-border px-4 text-left text-xs font-medium text-muted-foreground/80 last:border-r-0\"\n >\n {header.isPlaceholder\n ? null\n : flexRender(\n header.column.columnDef.header,\n header.getContext()\n )}\n </th>\n ))}\n </tr>\n ))}\n </thead>\n <tbody>\n {table.getRowModel().rows.length > 0 ? (\n <>\n {table.getRowModel().rows.map((row) => (\n <tr\n key={row.id}\n onClick={() => onRowClick?.(row.original)}\n className={cn(\n \"group border-b border-border/50 transition-colors hover:bg-muted/30\",\n onRowClick && \"cursor-pointer\",\n )}\n >\n {row.getVisibleCells().map((cell) => (\n <td\n key={cell.id}\n className=\"border-r border-border/40 px-4 py-2.5 align-middle last:border-r-0\"\n >\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </td>\n ))}\n </tr>\n ))}\n <tr>\n <td\n className=\"px-4 py-2 text-xs text-muted-foreground\"\n colSpan={columns.length}\n >\n {table.getRowModel().rows.length} rows\n </td>\n </tr>\n </>\n ) : (\n <tr>\n <td colSpan={columns.length} className=\"h-52 px-4 text-center\">\n <div className=\"flex flex-col items-center gap-1 text-muted-foreground\">\n <SearchX className=\"h-7 w-7 opacity-40\" />\n <p className=\"text-sm font-medium\">No rows found</p>\n <p className=\"text-xs\">Try adjusting your filters or quick views</p>\n </div>\n </td>\n </tr>\n )}\n </tbody>\n </table>\n </div>\n\n {scoreModal && (() => {\n const data = SCORE_ANALYSIS[scoreModal.type](scoreModal.row)\n return (\n <ScoreAnalysisModal\n open\n onOpenChange={(open) => { if (!open) setScoreModal(null) }}\n title={data.title}\n description={data.description}\n score={scoreModal.type === \"Risk\" ? scoreModal.row.riskScore : scoreModal.row.expansionScore}\n whyNow={data.whyNow}\n evidence={data.evidence}\n factors={data.factors}\n onFactorFeedback={onScoreFactorFeedback\n ? (key, type, detail) => onScoreFactorFeedback(scoreModal.row.name, scoreModal.type, key, type, detail)\n : (key, type, detail) => console.log(\"Factor feedback:\", { account: scoreModal.row.name, factor: key, type, detail })\n }\n companyName={scoreModal.row.name}\n opportunityUrl={`https://acme.lightning.force.com/lightning/r/Opportunity/006${scoreModal.row.id}/view`}\n onApprove={() => console.log(\"Approved signal — creating opportunity:\", { account: scoreModal.row.name, type: scoreModal.type })}\n onApproveFeedback={onScoreApproveFeedback\n ? (reasons, detail) => onScoreApproveFeedback(scoreModal.row.name, scoreModal.type, reasons, detail)\n : (reasons, detail) => console.log(\"Approval feedback:\", { account: scoreModal.row.name, reasons, detail })\n }\n onDismiss={onScoreDismissFeedback\n ? (reasons, detail) => onScoreDismissFeedback(scoreModal.row.name, scoreModal.type, reasons, detail)\n : (reasons, detail) => console.log(\"Dismissed signal:\", { account: scoreModal.row.name, reasons, detail })\n }\n />\n )\n })()}\n </div>\n )\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { XIcon } from \"lucide-react\"\nimport { Dialog as DialogPrimitive } from \"radix-ui\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { Button } from \"./button\"\n\nfunction Dialog({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Root>) {\n return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />\n}\n\nfunction DialogTrigger({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Trigger>) {\n return <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />\n}\n\nfunction DialogPortal({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Portal>) {\n return <DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />\n}\n\nfunction DialogClose({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Close>) {\n return <DialogPrimitive.Close data-slot=\"dialog-close\" {...props} />\n}\n\nfunction DialogOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Overlay>) {\n return (\n <DialogPrimitive.Overlay\n data-slot=\"dialog-overlay\"\n className={cn(\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DialogContent({\n className,\n children,\n showCloseButton = true,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Content> & {\n showCloseButton?: boolean\n}) {\n return (\n <DialogPortal data-slot=\"dialog-portal\">\n <DialogOverlay />\n <DialogPrimitive.Content\n data-slot=\"dialog-content\"\n className={cn(\n \"bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 outline-none sm:max-w-lg\",\n className\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close\n data-slot=\"dialog-close\"\n className=\"ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\"\n >\n <XIcon />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Content>\n </DialogPortal>\n )\n}\n\nfunction DialogHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-header\"\n className={cn(\"flex flex-col gap-2 text-center sm:text-left\", className)}\n {...props}\n />\n )\n}\n\nfunction DialogFooter({\n className,\n showCloseButton = false,\n children,\n ...props\n}: React.ComponentProps<\"div\"> & {\n showCloseButton?: boolean\n}) {\n return (\n <div\n data-slot=\"dialog-footer\"\n className={cn(\n \"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end\",\n className\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close asChild>\n <Button variant=\"outline\">Close</Button>\n </DialogPrimitive.Close>\n )}\n </div>\n )\n}\n\nfunction DialogTitle({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Title>) {\n return (\n <DialogPrimitive.Title\n data-slot=\"dialog-title\"\n className={cn(\"text-lg leading-none font-semibold\", className)}\n {...props}\n />\n )\n}\n\nfunction DialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Description>) {\n return (\n <DialogPrimitive.Description\n data-slot=\"dialog-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport {\n PieChart,\n Pie,\n Cell,\n Label,\n Tooltip,\n ResponsiveContainer,\n} from \"recharts\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { CHART_TOOLTIP_STYLE } from \"./chart-tooltip\"\n\nexport interface DonutSegment {\n name: string\n value: number\n color: string\n}\n\nexport interface DonutChartProps {\n data: DonutSegment[]\n centerLabel?: string | number\n size?: number\n innerRadius?: number\n outerRadius?: number\n paddingAngle?: number\n showTooltip?: boolean\n showLegend?: boolean\n className?: string\n}\n\nexport function DonutChart({\n data,\n centerLabel,\n size = 80,\n innerRadius,\n outerRadius,\n paddingAngle = 2,\n showTooltip = true,\n showLegend = false,\n className,\n}: DonutChartProps) {\n const computedInner = innerRadius ?? Math.round(size * 0.325)\n const computedOuter = outerRadius ?? Math.round(size * 0.45)\n\n return (\n <div className={cn(\"flex items-center gap-3\", className)}>\n <div className=\"shrink-0\" style={{ height: size, width: size }}>\n <ResponsiveContainer width=\"100%\" height=\"100%\">\n <PieChart>\n {showTooltip ? (\n <Tooltip\n contentStyle={CHART_TOOLTIP_STYLE}\n itemStyle={{ color: \"#0f172a\", fontWeight: 600 }}\n formatter={(value: unknown, name: unknown) => [\n `${value}`,\n String(name),\n ]}\n />\n ) : null}\n <Pie\n data={data}\n innerRadius={computedInner}\n outerRadius={computedOuter}\n paddingAngle={paddingAngle}\n dataKey=\"value\"\n stroke=\"none\"\n >\n {data.map((entry, index) => (\n <Cell key={`cell-${index}`} fill={entry.color} />\n ))}\n {centerLabel != null ? (\n <Label\n value={String(centerLabel)}\n position=\"center\"\n className=\"fill-foreground text-lg font-bold\"\n />\n ) : null}\n </Pie>\n </PieChart>\n </ResponsiveContainer>\n </div>\n\n {showLegend ? (\n <div className=\"flex min-w-0 flex-1 flex-col gap-1.5 pl-1\">\n {data.map((d) => (\n <div\n key={d.name}\n className=\"flex items-center justify-between text-[10px]\"\n >\n <div className=\"flex min-w-0 items-center gap-1.5\">\n <div\n className=\"h-1.5 w-1.5 shrink-0 rounded-full\"\n style={{ backgroundColor: d.color }}\n />\n <span\n className=\"whitespace-nowrap font-medium text-muted-foreground\"\n title={d.name}\n >\n {d.name}\n </span>\n </div>\n <span className=\"ml-1.5 font-bold text-foreground\">{d.value}</span>\n </div>\n ))}\n </div>\n ) : null}\n </div>\n )\n}\n","import * as React from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\n\nfunction Input({ className, type, ...props }: React.ComponentProps<\"input\">) {\n return (\n <input\n type={type}\n data-slot=\"input\"\n className={cn(\n \"file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input flex h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n \"focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]\",\n \"aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Input }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"../../../lib/utils\"\nimport { ChevronDown, ChevronUp, ExternalLink } from \"lucide-react\"\n\nexport interface TimelineEvent {\n id: string\n icon: React.ReactNode\n title: React.ReactNode\n time: string\n preview?: React.ReactNode\n email?: {\n from: string\n fromEmail?: string\n to: string\n cc?: string\n bcc?: string\n date?: string\n subject?: string\n body: React.ReactNode\n }\n content?: React.ReactNode\n source?: {\n label: string\n url: string\n }\n defaultExpanded?: boolean\n isInteractive?: boolean\n onSourceClick?: () => void\n}\n\nexport interface TimelineActivityProps {\n events: TimelineEvent[]\n className?: string\n}\n\nexport function TimelineActivity({ events, className }: TimelineActivityProps) {\n return (\n <div className={cn(\"space-y-0\", className)}>\n {events.map((event, index) => (\n <TimelineItem\n key={event.id}\n event={event}\n isLast={index === events.length - 1}\n />\n ))}\n </div>\n )\n}\n\nfunction TimelineItem({ event, isLast }: { event: TimelineEvent; isLast: boolean }) {\n const [expanded, setExpanded] = React.useState(event.defaultExpanded ?? false)\n const [showAllRecipients, setShowAllRecipients] = React.useState(false)\n const hasContent = !!event.content\n const hasEmail = !!event.email\n\n return (\n <div className=\"group relative flex gap-3.5\">\n {!isLast && (\n <div className=\"absolute left-[9px] top-5 bottom-[-6px] w-px bg-border/60\" />\n )}\n\n <div className=\"relative z-10 mt-1 flex h-5 w-5 shrink-0 items-center justify-center rounded-full bg-background\">\n <div className=\"flex h-4.5 w-4.5 items-center justify-center rounded-full border border-border/60 bg-background text-muted-foreground ring-4 ring-background\">\n {event.icon}\n </div>\n </div>\n\n <div className=\"flex-1 pb-5 pt-0.5\">\n <div className=\"flex min-w-0 flex-col gap-1 sm:flex-row sm:items-start sm:justify-between\">\n <div className=\"pr-4 text-[13px] leading-relaxed text-foreground\">\n {event.title}\n </div>\n <span className=\"mt-0.5 shrink-0 whitespace-nowrap text-[11px] text-muted-foreground/70\">\n {event.time}\n </span>\n </div>\n\n {(hasContent || hasEmail) && (\n <div className=\"mt-2\">\n {event.isInteractive ? (\n hasEmail ? (\n <div className=\"overflow-hidden rounded-md border border-border/80 bg-muted/20\">\n <div\n className={cn(\n \"px-3 py-2.5 text-sm\",\n !expanded && \"cursor-pointer hover:bg-muted/30 transition-colors\"\n )}\n onClick={() => !expanded && setExpanded(true)}\n >\n {expanded && event.email ? (\n <div className=\"space-y-3\">\n <div>\n <div className=\"flex items-center justify-between gap-4\">\n <div className=\"flex min-w-0 items-baseline gap-1.5\">\n <span className=\"font-semibold text-foreground text-[13px] whitespace-nowrap\">{event.email.from}</span>\n {event.email.fromEmail && (\n <span className=\"text-muted-foreground/60 text-xs truncate\">{event.email.fromEmail}</span>\n )}\n </div>\n {event.email.date && (\n <span className=\"shrink-0 text-xs text-muted-foreground/50 whitespace-nowrap\">{event.email.date}</span>\n )}\n </div>\n <div className=\"mt-0.5 flex items-center gap-1 text-xs text-muted-foreground\">\n <span className=\"truncate\">\n To {event.email.to}\n {!showAllRecipients && (event.email.cc || event.email.bcc) ? (\n <>, ...</>\n ) : null}\n {showAllRecipients && event.email.cc ? (\n <>, {event.email.cc}</>\n ) : null}\n {showAllRecipients && event.email.bcc ? (\n <> <span className=\"text-muted-foreground/40\">bcc</span> {event.email.bcc}</>\n ) : null}\n </span>\n {(event.email.cc || event.email.bcc) && (\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation()\n setShowAllRecipients((prev) => !prev)\n }}\n className=\"shrink-0 text-muted-foreground/40 hover:text-muted-foreground transition-colors\"\n >\n <ChevronDown className={cn(\"h-3 w-3 transition-transform\", showAllRecipients && \"rotate-180\")} />\n </button>\n )}\n </div>\n </div>\n\n <div className=\"whitespace-pre-line text-sm leading-relaxed text-foreground/90\">\n {event.email.body}\n </div>\n\n <button\n onClick={(e) => {\n e.stopPropagation()\n setExpanded(false)\n }}\n className=\"mt-2 flex items-center gap-1.5 text-[11px] font-semibold uppercase tracking-wider text-muted-foreground transition-colors hover:text-foreground\"\n >\n Show less <ChevronUp className=\"h-3 w-3\" />\n </button>\n </div>\n ) : (\n <div className=\"flex items-center justify-between gap-2 text-muted-foreground\">\n <span className=\"line-clamp-1 pr-3 text-[13px]\">\n <span className=\"text-muted-foreground\">{event.email?.from}</span>\n <span className=\"mx-1.5 text-muted-foreground/40\">·</span>\n {event.email?.subject ? (\n <>\n <span className=\"text-muted-foreground\">{event.email.subject}</span>\n <span className=\"mx-1.5 text-muted-foreground/40\">·</span>\n </>\n ) : null}\n <span className=\"text-muted-foreground\">{event.preview}</span>\n </span>\n <button className=\"flex shrink-0 items-center gap-1 text-[11px] font-semibold uppercase tracking-wider transition-colors hover:text-foreground\">\n Expand <ChevronDown className=\"h-3 w-3\" />\n </button>\n </div>\n )}\n </div>\n </div>\n ) : (\n <div className=\"overflow-hidden rounded-md border border-border/80 bg-muted/20\">\n <div\n className={cn(\n \"px-3 py-2.5 text-sm\",\n !expanded && \"cursor-pointer hover:bg-muted/30 transition-colors\"\n )}\n onClick={() => !expanded && setExpanded(true)}\n >\n {expanded ? (\n <div className=\"space-y-2\">\n {event.content}\n <div className=\"mt-2 flex items-center gap-3\">\n {event.source ? (\n event.onSourceClick ? (\n <button\n type=\"button\"\n onClick={(e) => { e.stopPropagation(); event.onSourceClick?.(); }}\n className=\"mr-auto inline-flex items-center gap-1.5 text-[11px] font-semibold uppercase tracking-wider text-muted-foreground transition-colors hover:text-foreground\"\n >\n Open in {event.source.label}\n <ExternalLink className=\"h-3 w-3\" />\n </button>\n ) : (\n <a\n href={event.source.url}\n target=\"_blank\"\n rel=\"noreferrer noopener\"\n className=\"mr-auto inline-flex items-center gap-1.5 text-[11px] font-semibold uppercase tracking-wider text-muted-foreground transition-colors hover:text-foreground\"\n >\n Open in {event.source.label}\n <ExternalLink className=\"h-3 w-3\" />\n </a>\n )\n ) : null}\n <button\n onClick={(e) => { e.stopPropagation(); setExpanded(false); }}\n className=\"flex items-center gap-1.5 text-[11px] font-semibold uppercase tracking-wider text-muted-foreground transition-colors hover:text-foreground\"\n >\n Show less <ChevronUp className=\"h-3 w-3\" />\n </button>\n </div>\n </div>\n ) : (\n <div className=\"flex items-center justify-between gap-2 text-muted-foreground\">\n <span className=\"line-clamp-1 pr-3\">\n {event.preview ?? event.content}\n </span>\n <button className=\"flex shrink-0 items-center gap-1 text-[11px] font-semibold uppercase tracking-wider transition-colors hover:text-foreground\">\n Expand <ChevronDown className=\"h-3 w-3\" />\n </button>\n </div>\n )}\n </div>\n </div>\n )\n ) : (\n <div className=\"pr-2 text-sm leading-relaxed text-muted-foreground\">\n {event.content}\n </div>\n )}\n </div>\n )}\n </div>\n </div>\n )\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Sheet, SheetContent, SheetHeader, SheetTitle } from \"./sheet\"\nimport { Badge } from \"./badge\"\nimport { Button } from \"./button\"\nimport { Input } from \"./input\"\nimport {\n ArrowLeft,\n Plus,\n ExternalLink,\n Mail,\n FileText,\n MessageCircle,\n Briefcase,\n Building2,\n Users,\n Newspaper,\n X,\n Phone,\n CheckCircle2,\n ChevronDown,\n ChevronUp,\n Link as LinkIcon,\n Maximize2,\n Minimize2,\n Clock,\n CalendarDays,\n} from \"lucide-react\"\nimport { TimelineActivity, type TimelineEvent } from \"./timeline-activity\"\n\n// ---------------------------------------------------------------------------\n// EntityPanel – supports both Sheet (side panel) and fullscreen modes\n// ---------------------------------------------------------------------------\n\nexport function EntityPanel({\n isOpen,\n onClose,\n children,\n}: {\n isOpen: boolean\n onClose: (open: boolean) => void\n children?: React.ReactNode\n}) {\n const [isFullscreen, setIsFullscreen] = React.useState(false)\n\n React.useEffect(() => {\n if (!isOpen) setIsFullscreen(false)\n }, [isOpen])\n\n const handleClose = React.useCallback(() => {\n setIsFullscreen(false)\n onClose(false)\n }, [onClose])\n\n const panelContent = (\n <EntityPanelContext.Provider value={{ isFullscreen, setIsFullscreen, onClose: handleClose }}>\n {children}\n </EntityPanelContext.Provider>\n )\n\n if (isFullscreen && isOpen) {\n return (\n <div className=\"fixed inset-0 z-50 flex flex-col overflow-hidden bg-background\">\n <div className=\"flex-1 overflow-y-auto px-6 py-6\">{panelContent}</div>\n </div>\n )\n }\n\n return (\n <Sheet open={isOpen} onOpenChange={onClose}>\n <SheetContent\n side=\"right\"\n className=\"w-full sm:w-[500px] sm:max-w-[600px] overflow-hidden p-0 bg-background border-l border-border flex flex-col\"\n showCloseButton={false}\n >\n <SheetHeader className=\"sr-only p-0\">\n <SheetTitle>Entity panel</SheetTitle>\n </SheetHeader>\n <div className=\"flex-1 overflow-y-auto px-6 py-6\">{panelContent}</div>\n </SheetContent>\n </Sheet>\n )\n}\n\nconst EntityPanelContext = React.createContext<{\n isFullscreen: boolean\n setIsFullscreen: (v: boolean) => void\n onClose: () => void\n}>({\n isFullscreen: false,\n setIsFullscreen: () => {},\n onClose: () => {},\n})\n\nfunction useEntityPanel() {\n return React.useContext(EntityPanelContext)\n}\n\n// ---------------------------------------------------------------------------\n// EntityPanelHeader – MeetingDetail-inspired header bar\n// ---------------------------------------------------------------------------\n\nexport function EntityPanelHeader({\n icon,\n title,\n badgeLabel,\n subtitle,\n headerAction,\n}: {\n icon?: React.ReactNode\n title: string\n badgeLabel?: string\n subtitle?: string\n headerAction?: React.ReactNode\n}) {\n const { isFullscreen, setIsFullscreen, onClose } = useEntityPanel()\n\n return (\n <div className=\"flex items-center justify-between mb-6\">\n <div className=\"flex items-center gap-2 min-w-0\">\n {icon ?? <CalendarDays className=\"w-5 h-5 text-muted-foreground shrink-0\" />}\n <h2 className=\"text-lg font-semibold text-foreground truncate\">{title}</h2>\n {badgeLabel && (\n <Badge\n variant=\"outline\"\n className=\"text-blue-600 border-blue-300 dark:border-blue-700 dark:text-blue-400 shadow-none px-2 py-0.5 text-[11px] font-medium shrink-0\"\n >\n {badgeLabel}\n </Badge>\n )}\n </div>\n <div className=\"flex items-center gap-1 shrink-0 ml-4 text-muted-foreground\">\n {headerAction}\n <button\n type=\"button\"\n className=\"p-1.5 rounded-md hover:bg-secondary transition-colors\"\n title=\"Copy Link\"\n >\n <LinkIcon className=\"w-4 h-4\" />\n </button>\n <button\n type=\"button\"\n onClick={() => setIsFullscreen(!isFullscreen)}\n className=\"p-1.5 rounded-md hover:bg-secondary transition-colors\"\n title={isFullscreen ? \"Exit fullscreen\" : \"Fullscreen\"}\n >\n {isFullscreen ? (\n <Minimize2 className=\"w-4 h-4\" />\n ) : (\n <Maximize2 className=\"w-4 h-4\" />\n )}\n </button>\n <button\n type=\"button\"\n onClick={onClose}\n className=\"p-1.5 rounded-md hover:bg-secondary transition-colors\"\n title=\"Close\"\n >\n <X className=\"w-4 h-4\" />\n </button>\n </div>\n </div>\n )\n}\n\n// ---------------------------------------------------------------------------\n// EntityPanelTabs – Overview/Details tab bar\n// ---------------------------------------------------------------------------\n\nexport function EntityPanelTabs({\n tabs,\n activeTab,\n onTabChange,\n}: {\n tabs: { id: string; label: string }[]\n activeTab: string\n onTabChange: (id: string) => void\n}) {\n return (\n <div className=\"flex items-center gap-6 border-b border-border mb-6\">\n {tabs.map((tab) => (\n <button\n key={tab.id}\n type=\"button\"\n onClick={() => onTabChange(tab.id)}\n className={`pb-3 text-sm font-medium border-b-2 transition-colors ${\n activeTab === tab.id\n ? \"border-primary text-foreground\"\n : \"border-transparent text-muted-foreground hover:text-foreground\"\n }`}\n >\n {tab.label}\n </button>\n ))}\n </div>\n )\n}\n\n// ---------------------------------------------------------------------------\n// EntityMetadataGrid – key/value metadata rows with icons\n// ---------------------------------------------------------------------------\n\nexport interface EntityMetadataField {\n icon: React.ComponentType<{ className?: string }>\n label: string\n value: React.ReactNode\n}\n\nexport function EntityMetadataGrid({ fields }: { fields: EntityMetadataField[] }) {\n return (\n <div className=\"grid grid-cols-1 md:grid-cols-[160px_1fr] gap-y-4 gap-x-6 mb-8 text-sm\">\n {fields.map((field, idx) => (\n <React.Fragment key={idx}>\n <div className=\"flex items-center gap-2 text-muted-foreground font-medium\">\n <field.icon className=\"w-4 h-4\" />\n <span>{field.label}</span>\n </div>\n <div className=\"text-foreground\">{field.value}</div>\n </React.Fragment>\n ))}\n </div>\n )\n}\n\n// ---------------------------------------------------------------------------\n// EntitySection – clean section with title (MeetingDetail-style)\n// ---------------------------------------------------------------------------\n\nexport function EntitySection({\n title,\n children,\n action,\n}: {\n title: string\n children: React.ReactNode\n action?: React.ReactNode\n}) {\n return (\n <section className=\"mb-8\">\n <div className=\"flex items-center justify-between mb-3\">\n <h3 className=\"text-sm font-semibold text-foreground\">{title}</h3>\n {action}\n </div>\n {children}\n </section>\n )\n}\n\n// ---------------------------------------------------------------------------\n// EntityActivityItem – clean activity row (MeetingDetail-style)\n// ---------------------------------------------------------------------------\n\nexport function EntityActivityItem({\n icon,\n title,\n description,\n date,\n}: {\n icon?: React.ReactNode\n title: React.ReactNode\n description?: React.ReactNode\n date?: string\n}) {\n return (\n <div className=\"flex gap-3 text-[13px]\">\n <div className=\"mt-0.5 text-muted-foreground shrink-0\">\n {icon ?? <CalendarDays className=\"w-4 h-4\" />}\n </div>\n <div>\n <p className=\"text-foreground leading-relaxed\">{title}</p>\n {description && <p className=\"text-[11px] text-muted-foreground/70 mt-0.5\">{description}</p>}\n {date && <p className=\"text-[11px] text-muted-foreground/70 mt-0.5\">{date}</p>}\n </div>\n </div>\n )\n}\n\n// ---------------------------------------------------------------------------\n// SystemActivity – standalone section for bottom of entity panel\n// ---------------------------------------------------------------------------\n\nexport function SystemActivity() {\n return (\n <EntitySection title=\"System Activity\">\n <div className=\"space-y-4\">\n <EntityActivityItem\n title={<><span className=\"font-medium\">System</span> enriched the lead</>}\n date=\"Today at 10:15 AM\"\n />\n <EntityActivityItem\n icon={<Mail className=\"w-4 h-4\" />}\n title={<><span className=\"font-medium\">Jackie Lee</span> submitted website form</>}\n date=\"Yesterday at 3:22 PM\"\n />\n </div>\n </EntitySection>\n )\n}\n\n// ---------------------------------------------------------------------------\n// PotentialContacts – unchanged from original\n// ---------------------------------------------------------------------------\n\nexport interface EntityPanelBrandIcons {\n linkedin?: string\n gmail?: string\n slack?: string\n gdoc?: string\n}\n\nfunction EntityPanelBrandIcon({\n src,\n alt,\n className,\n fallback,\n}: {\n src?: string\n alt: string\n className: string\n fallback: React.ReactNode\n}) {\n if (!src) {\n return <>{fallback}</>\n }\n\n return <img src={src} alt={alt} className={className} />\n}\n\nexport function PotentialContacts({\n icons,\n}: {\n icons?: Pick<EntityPanelBrandIcons, \"linkedin\" | \"gmail\">\n}) {\n return (\n <div className=\"space-y-3 mb-8\">\n <div className=\"flex items-center justify-between\">\n <h3 className=\"text-sm font-semibold text-foreground\">Potential Contacts</h3>\n <span className=\"text-xs text-muted-foreground\">3 identified</span>\n </div>\n <div className=\"space-y-0 pt-1\">\n <div className=\"flex items-center justify-between gap-3 group py-2.5 border-b border-border/30 hover:bg-muted/20 -mx-2 px-2 rounded-sm transition-colors\">\n <div className=\"flex items-center gap-2.5 min-w-0\">\n <Badge variant=\"outline\" className=\"bg-indigo-50 text-indigo-700 border-indigo-200 dark:bg-indigo-900/30 dark:text-indigo-300 dark:border-indigo-800 shadow-none px-2 py-0 text-[11px] font-medium shrink-0\">Primary</Badge>\n <span className=\"font-medium text-sm text-foreground truncate\">Jackie Lee</span>\n <span className=\"text-muted-foreground text-sm shrink-0\">·</span>\n <span className=\"text-muted-foreground text-sm truncate\">VP Finance</span>\n </div>\n <div className=\"flex items-center gap-1 shrink-0\">\n <button className=\"h-7 w-7 flex items-center justify-center hover:bg-muted rounded-md transition-colors\">\n <EntityPanelBrandIcon\n src={icons?.linkedin}\n alt=\"LinkedIn\"\n className=\"w-3.5 h-3.5 object-contain\"\n fallback={<LinkIcon className=\"w-3.5 h-3.5 text-muted-foreground\" />}\n />\n </button>\n <button className=\"h-7 w-7 flex items-center justify-center hover:bg-muted rounded-md transition-colors\">\n <EntityPanelBrandIcon\n src={icons?.gmail}\n alt=\"Gmail\"\n className=\"w-3.5 h-3.5 object-contain\"\n fallback={<Mail className=\"w-3.5 h-3.5 text-muted-foreground\" />}\n />\n </button>\n <Button size=\"sm\" className=\"bg-foreground text-background hover:bg-foreground/90 h-6 text-[11px] font-medium shadow-none ml-1\">\n <Plus className=\"w-3 h-3 mr-1\" /> Add to SF\n </Button>\n </div>\n </div>\n\n <div className=\"flex items-center justify-between gap-3 group py-2.5 border-b border-border/30 hover:bg-muted/20 -mx-2 px-2 rounded-sm transition-colors\">\n <div className=\"flex items-center gap-2.5 min-w-0\">\n <Badge variant=\"outline\" className=\"bg-green-50 text-green-700 border-green-200 dark:bg-green-900/30 dark:text-green-300 dark:border-green-800 shadow-none px-2 py-0 text-[11px] font-medium shrink-0\">78%</Badge>\n <span className=\"font-medium text-sm text-foreground truncate\">Marcus Webb</span>\n <span className=\"text-muted-foreground text-sm shrink-0\">·</span>\n <span className=\"text-muted-foreground text-sm truncate\">CEO</span>\n </div>\n <div className=\"flex items-center gap-1 shrink-0\">\n <button className=\"h-7 w-7 flex items-center justify-center hover:bg-muted rounded-md transition-colors\">\n <EntityPanelBrandIcon\n src={icons?.linkedin}\n alt=\"LinkedIn\"\n className=\"w-3.5 h-3.5 object-contain\"\n fallback={<LinkIcon className=\"w-3.5 h-3.5 text-muted-foreground\" />}\n />\n </button>\n <Button size=\"sm\" className=\"bg-foreground text-background hover:bg-foreground/90 h-6 text-[11px] font-medium shadow-none ml-1\">\n <Plus className=\"w-3 h-3 mr-1\" /> Add to SF\n </Button>\n </div>\n </div>\n\n <div className=\"flex items-center justify-between gap-3 group py-2.5 border-b border-border/30 last:border-0 hover:bg-muted/20 -mx-2 px-2 rounded-sm transition-colors\">\n <div className=\"flex items-center gap-2.5 min-w-0\">\n <Badge variant=\"outline\" className=\"bg-amber-50 text-amber-700 border-amber-200 dark:bg-amber-900/30 dark:text-amber-300 dark:border-amber-800 shadow-none px-2 py-0 text-[11px] font-medium shrink-0\">65%</Badge>\n <span className=\"font-medium text-sm text-foreground truncate\">Priya Shah</span>\n <span className=\"text-muted-foreground text-sm shrink-0\">·</span>\n <span className=\"text-muted-foreground text-sm truncate\">Head of Ops</span>\n </div>\n <div className=\"flex items-center gap-1 shrink-0\">\n <button className=\"h-7 w-7 flex items-center justify-center hover:bg-muted rounded-md transition-colors\">\n <EntityPanelBrandIcon\n src={icons?.linkedin}\n alt=\"LinkedIn\"\n className=\"w-3.5 h-3.5 object-contain\"\n fallback={<LinkIcon className=\"w-3.5 h-3.5 text-muted-foreground\" />}\n />\n </button>\n <button className=\"h-7 w-7 flex items-center justify-center hover:bg-muted rounded-md transition-colors\">\n <EntityPanelBrandIcon\n src={icons?.gmail}\n alt=\"Gmail\"\n className=\"w-3.5 h-3.5 object-contain\"\n fallback={<Mail className=\"w-3.5 h-3.5 text-muted-foreground\" />}\n />\n </button>\n <Button size=\"sm\" className=\"bg-foreground text-background hover:bg-foreground/90 h-6 text-[11px] font-medium shadow-none ml-1\">\n <Plus className=\"w-3 h-3 mr-1\" /> Add to SF\n </Button>\n </div>\n </div>\n </div>\n </div>\n )\n}\n\n// ---------------------------------------------------------------------------\n// RecentActivity\n// ---------------------------------------------------------------------------\n\nexport type ActivityItem = TimelineEvent\n\nexport function RecentActivity({\n title = \"Recent Activity\",\n count = \"10 total events\",\n filters = [],\n items = [],\n}: {\n title?: string\n count?: string\n filters?: string[]\n items?: TimelineEvent[]\n}) {\n return (\n <div id=\"entity-recent-activity\" className=\"space-y-4 mb-8 scroll-m-20\">\n <div className=\"flex items-center justify-between\">\n <h3 className=\"text-sm font-semibold text-foreground\">{title}</h3>\n {count && <span className=\"text-xs text-muted-foreground\">{count}</span>}\n </div>\n\n {filters.length > 0 && (\n <div className=\"flex flex-wrap items-center gap-1.5\">\n {filters.map((filter) => (\n <Button\n key={filter}\n variant=\"outline\"\n size=\"sm\"\n className=\"h-7 text-xs rounded-md shadow-none font-medium border-border text-muted-foreground hover:text-foreground\"\n >\n {filter}\n </Button>\n ))}\n </div>\n )}\n\n <div className=\"relative\">\n <Input\n placeholder=\"Search activity...\"\n className=\"h-9 text-sm bg-background border-border shadow-none\"\n />\n </div>\n\n <div>\n <TimelineActivity events={items} />\n </div>\n </div>\n )\n}\n\n// ---------------------------------------------------------------------------\n// ConnectedApps\n// ---------------------------------------------------------------------------\n\nexport function ConnectedApps({\n icons,\n}: {\n icons?: Pick<EntityPanelBrandIcons, \"slack\" | \"gdoc\">\n}) {\n return (\n <div className=\"space-y-3 mb-8\">\n <div className=\"flex items-center justify-between\">\n <h3 className=\"text-sm font-semibold text-foreground\">Connected Apps</h3>\n <span className=\"text-xs text-muted-foreground\">3 connected</span>\n </div>\n\n <div className=\"space-y-0 pt-1\">\n <div className=\"flex items-center justify-between gap-3 group py-2.5 border-b border-border/30 hover:bg-muted/20 -mx-2 px-2 rounded-sm transition-colors\">\n <div className=\"flex items-center gap-3 min-w-0\">\n <div className=\"w-8 h-8 rounded-md border border-border/60 bg-muted/30 flex items-center justify-center shrink-0\">\n <EntityPanelBrandIcon\n src={icons?.slack}\n alt=\"Slack\"\n className=\"w-4 h-4 object-contain\"\n fallback={<MessageCircle className=\"w-4 h-4 text-muted-foreground\" />}\n />\n </div>\n <div className=\"min-w-0\">\n <p className=\"font-medium text-sm text-foreground leading-snug truncate\">#lunchclub-acmeco</p>\n <p className=\"text-xs text-muted-foreground/60\">Slack Channel</p>\n </div>\n </div>\n <div className=\"flex items-center gap-1.5 shrink-0\">\n <ExternalLink className=\"w-3 h-3 text-muted-foreground opacity-0 group-hover:opacity-100 transition-opacity\" />\n <span className=\"text-xs text-muted-foreground opacity-0 group-hover:opacity-100 transition-opacity cursor-pointer hover:text-foreground\">Open</span>\n </div>\n </div>\n\n <div className=\"flex items-center justify-between gap-3 group py-2.5 border-b border-border/30 hover:bg-muted/20 -mx-2 px-2 rounded-sm transition-colors\">\n <div className=\"flex items-center gap-3 min-w-0\">\n <div className=\"w-8 h-8 rounded-md border border-border/60 bg-muted/30 flex items-center justify-center shrink-0\">\n <EntityPanelBrandIcon\n src={icons?.gdoc}\n alt=\"Google Docs\"\n className=\"w-4 h-4 object-contain\"\n fallback={<FileText className=\"w-4 h-4 text-muted-foreground\" />}\n />\n </div>\n <div className=\"min-w-0\">\n <p className=\"font-medium text-sm text-foreground leading-snug truncate\">Account Strategy Document</p>\n <p className=\"text-xs text-muted-foreground/60\">Google Document</p>\n </div>\n </div>\n <div className=\"flex items-center gap-1.5 shrink-0\">\n <ExternalLink className=\"w-3 h-3 text-muted-foreground opacity-0 group-hover:opacity-100 transition-opacity\" />\n <span className=\"text-xs text-muted-foreground opacity-0 group-hover:opacity-100 transition-opacity cursor-pointer hover:text-foreground\">Open</span>\n </div>\n </div>\n\n <div className=\"flex items-center justify-between gap-3 group py-2.5 border-b border-border/30 last:border-0 hover:bg-muted/20 -mx-2 px-2 rounded-sm transition-colors\">\n <div className=\"flex items-center gap-3 min-w-0\">\n <div className=\"w-8 h-8 rounded-md border border-border/60 bg-muted/30 flex items-center justify-center shrink-0\">\n <FileText className=\"w-4 h-4 text-foreground\" />\n </div>\n <div className=\"min-w-0\">\n <p className=\"font-medium text-sm text-foreground leading-snug truncate\">Customer Success Playbook</p>\n <p className=\"text-xs text-muted-foreground/60\">Notion Page</p>\n </div>\n </div>\n <div className=\"flex items-center gap-1.5 shrink-0\">\n <ExternalLink className=\"w-3 h-3 text-muted-foreground opacity-0 group-hover:opacity-100 transition-opacity\" />\n <span className=\"text-xs text-muted-foreground opacity-0 group-hover:opacity-100 transition-opacity cursor-pointer hover:text-foreground\">Open</span>\n </div>\n </div>\n </div>\n </div>\n )\n}\n\n// ---------------------------------------------------------------------------\n// EntityDetails – updated with MeetingDetail-inspired metadata grid + tabs\n// ---------------------------------------------------------------------------\n\nexport function EntityDetails({ onClose }: { onClose?: () => void }) {\n const [activeTab, setActiveTab] = React.useState<\"overview\" | \"details\">(\"overview\")\n const [showMore, setShowMore] = React.useState(false)\n\n const leadFields: EntityMetadataField[] = [\n { icon: Users, label: \"Lead Name\", value: <span className=\"font-medium\">Jackie Lee</span> },\n { icon: Briefcase, label: \"Title\", value: <span className=\"font-medium\">VP Finance</span> },\n { icon: Building2, label: \"Company\", value: <span className=\"font-medium\">CloudKitchen</span> },\n { icon: Mail, label: \"Lead Source\", value: <span className=\"font-medium\">Inbound — Website form</span> },\n {\n icon: ({ className }) => (\n <div className={className}>\n <div className=\"w-3 h-3 rounded-full border-[2px] border-amber-500\" />\n </div>\n ),\n label: \"Lead Status\",\n value: (\n <Badge variant=\"outline\" className=\"text-amber-700 border-amber-200 bg-amber-50 dark:bg-amber-950 dark:text-amber-300 dark:border-amber-800 shadow-none font-medium px-2 py-0 text-[11px]\">\n New — Not Contacted\n </Badge>\n ),\n },\n { icon: Users, label: \"Lead Owner\", value: <span className=\"font-medium\">Sarah Johnson (SDR)</span> },\n {\n icon: Building2,\n label: \"Industry\",\n value: (\n <Badge variant=\"outline\" className=\"text-blue-700 border-blue-200 bg-blue-50 dark:bg-blue-950 dark:text-blue-300 dark:border-blue-800 shadow-none font-medium px-2 py-0 text-[11px]\">\n Food Tech / Logistics\n </Badge>\n ),\n },\n { icon: Users, label: \"Company Size\", value: <span className=\"font-medium\">200-500 employees</span> },\n ]\n\n const visibleFields = showMore ? leadFields : leadFields.slice(0, 6)\n\n return (\n <div className=\"space-y-0\">\n {/* Header */}\n <EntityPanelHeader\n icon={\n <div className=\"w-10 h-10 rounded-lg bg-muted flex items-center justify-center text-sm font-medium text-muted-foreground shrink-0\">\n CK\n </div>\n }\n title=\"CloudKitchen\"\n badgeLabel=\"Lead\"\n subtitle=\"Last enriched: Today at 10:15 AM\"\n />\n\n {/* Tabs */}\n <EntityPanelTabs\n tabs={[\n { id: \"overview\", label: \"Overview\" },\n { id: \"details\", label: \"Details\" },\n ]}\n activeTab={activeTab}\n onTabChange={(id) => setActiveTab(id as \"overview\" | \"details\")}\n />\n\n {activeTab === \"overview\" ? (\n <div className=\"space-y-0\">\n {/* Metadata Grid */}\n <EntityMetadataGrid fields={visibleFields} />\n\n {leadFields.length > 6 && (\n <button\n onClick={() => setShowMore(!showMore)}\n className=\"flex items-center gap-1 text-xs text-muted-foreground hover:text-foreground transition-colors mb-8\"\n >\n {showMore ? \"See less\" : \"See more\"}\n {showMore ? <ChevronUp className=\"w-3 h-3\" /> : <ChevronDown className=\"w-3 h-3\" />}\n </button>\n )}\n\n {/* Enrichment as sections */}\n <EntitySection title=\"Company Signals\">\n <ul className=\"space-y-2\">\n <li className=\"flex items-start gap-2 text-sm text-muted-foreground\">\n <span className=\"text-muted-foreground/50 mt-1 shrink-0\">•</span>\n <span>\n Recent funding: $45M Series B, 3 months ago\n <span className=\"inline-flex items-center justify-center w-4 h-4 ml-1.5 align-text-top text-[9px] font-medium text-muted-foreground bg-muted/30 border border-border/50 rounded-full\">1</span>\n </span>\n </li>\n <li className=\"flex items-start gap-2 text-sm text-muted-foreground\">\n <span className=\"text-muted-foreground/50 mt-1 shrink-0\">•</span>\n <span>\n Hiring: 3 finance/treasury roles in last 30 days\n <span className=\"inline-flex items-center justify-center w-4 h-4 ml-1.5 align-text-top text-[9px] font-medium text-muted-foreground bg-muted/30 border border-border/50 rounded-full\">2</span>\n </span>\n </li>\n <li className=\"flex items-start gap-2 text-sm text-muted-foreground\">\n <span className=\"text-muted-foreground/50 mt-1 shrink-0\">•</span>\n <span>\n Market expansion: 8 → 15 US markets planned\n <span className=\"inline-flex items-center justify-center w-4 h-4 ml-1.5 align-text-top text-[9px] font-medium text-muted-foreground bg-muted/30 border border-border/50 rounded-full\">3</span>\n </span>\n </li>\n </ul>\n </EntitySection>\n\n <EntitySection title=\"Contact Signals (Jackie Lee)\">\n <ul className=\"space-y-2\">\n <li className=\"flex items-start gap-2 text-sm text-muted-foreground\">\n <span className=\"text-muted-foreground/50 mt-1 shrink-0\">•</span>\n <span>\n Started role: 12 days ago\n <span className=\"inline-flex items-center justify-center w-4 h-4 ml-1.5 align-text-top text-[9px] font-medium text-muted-foreground bg-muted/30 border border-border/50 rounded-full\">4</span>\n </span>\n </li>\n <li className=\"flex items-start gap-2 text-sm text-muted-foreground\">\n <span className=\"text-muted-foreground/50 mt-1 shrink-0\">•</span>\n <span>\n Previous: Deel — operations/finance\n <span className=\"inline-flex items-center justify-center w-4 h-4 ml-1.5 align-text-top text-[9px] font-medium text-muted-foreground bg-muted/30 border border-border/50 rounded-full\">4</span>\n </span>\n </li>\n <li className=\"flex items-start gap-2 text-sm text-muted-foreground\">\n <span className=\"text-muted-foreground/50 mt-1 shrink-0\">•</span>\n <span>\n LinkedIn connections to existing customers: 2 detected\n <span className=\"inline-flex items-center justify-center w-4 h-4 ml-1.5 align-text-top text-[9px] font-medium text-muted-foreground bg-muted/30 border border-border/50 rounded-full\">4</span>\n </span>\n </li>\n </ul>\n </EntitySection>\n\n <SourcesToggle />\n </div>\n ) : (\n <div className=\"space-y-0\">\n <EntitySection title=\"Estimated Tech Stack\">\n <div className=\"space-y-2\">\n <div className=\"flex items-start gap-2 text-sm\">\n <span className=\"text-muted-foreground/50 mt-1 shrink-0\">•</span>\n <span className=\"text-muted-foreground min-w-[100px] shrink-0\">Banking:</span>\n <span className=\"text-muted-foreground/50 italic\">Unknown</span>\n </div>\n <div className=\"flex items-start gap-2 text-sm\">\n <span className=\"text-muted-foreground/50 mt-1 shrink-0\">•</span>\n <span className=\"text-muted-foreground min-w-[100px] shrink-0\">Corporate Cards:</span>\n <span className=\"text-foreground font-medium\">\n Brex <span className=\"text-muted-foreground font-normal\">(from job posting requirements)</span>\n <span className=\"inline-flex items-center justify-center w-4 h-4 ml-1.5 align-text-top text-[9px] font-medium text-muted-foreground bg-muted/30 border border-border/50 rounded-full\">2</span>\n </span>\n </div>\n <div className=\"flex items-start gap-2 text-sm\">\n <span className=\"text-muted-foreground/50 mt-1 shrink-0\">•</span>\n <span className=\"text-muted-foreground min-w-[100px] shrink-0\">Payroll:</span>\n <span className=\"text-foreground font-medium\">\n Gusto <span className=\"text-muted-foreground font-normal\">(from LinkedIn integrations)</span>\n <span className=\"inline-flex items-center justify-center w-4 h-4 ml-1.5 align-text-top text-[9px] font-medium text-muted-foreground bg-muted/30 border border-border/50 rounded-full\">5</span>\n </span>\n </div>\n </div>\n </EntitySection>\n </div>\n )}\n </div>\n )\n}\n\n// ---------------------------------------------------------------------------\n// SourcesToggle – collapsible sources list\n// ---------------------------------------------------------------------------\n\nfunction SourcesToggle() {\n const [expanded, setExpanded] = React.useState(false)\n\n const sources = [\n { name: \"Crunchbase\", type: \"Funding data\", lastPull: \"2h ago\" },\n { name: \"LinkedIn\", type: \"People & company\", lastPull: \"12h ago\" },\n { name: \"LinkedIn Jobs\", type: \"Hiring signals\", lastPull: \"1d ago\" },\n { name: \"PR Newswire\", type: \"News & press\", lastPull: \"6h ago\" },\n { name: \"Clearbit\", type: \"Tech stack & firmographics\", lastPull: \"2h ago\" },\n ]\n\n return (\n <div className=\"mb-8\">\n <button\n onClick={() => setExpanded(!expanded)}\n className=\"flex items-center gap-1.5 text-xs font-semibold text-muted-foreground hover:text-foreground transition-colors\"\n >\n Sources\n <ChevronDown className={`w-3.5 h-3.5 transition-transform duration-200 ${expanded ? \"rotate-180\" : \"\"}`} />\n </button>\n\n {expanded && (\n <div className=\"pt-3 space-y-2 animate-in fade-in slide-in-from-top-1 duration-200\">\n {sources.map((src, idx) => (\n <div key={idx} className=\"flex items-center justify-between text-xs text-muted-foreground py-1\">\n <div className=\"flex items-center gap-2\">\n <span className=\"inline-flex items-center justify-center w-4 h-4 text-[9px] font-medium text-muted-foreground/50 border border-border rounded-full\">\n {idx + 1}\n </span>\n <span className=\"font-medium text-foreground\">{src.name}</span>\n <span className=\"text-muted-foreground/60\">·</span>\n <span>{src.type}</span>\n </div>\n <span className=\"text-muted-foreground/50\">{src.lastPull}</span>\n </div>\n ))}\n </div>\n )}\n </div>\n )\n}\n","import * as React from \"react\"\nimport { Phone, Mail, MessageSquare, AlertCircle, ChevronDown } from \"lucide-react\"\nimport { cn } from \"../../../lib/utils\"\n\nexport interface InboxRowProps extends React.HTMLAttributes<HTMLDivElement> {\n itemId: string\n statusColor: \"red\" | \"orange\" | \"gray\"\n primaryText: string\n secondaryText: string\n tertiaryText: string\n isAtRisk?: boolean\n isSelected?: boolean\n contactMethods?: { phone?: boolean; email?: boolean; message?: boolean }\n interactionCount: number | string\n assignee: string\n status: string\n time: string\n}\n\nexport const InboxRow = React.forwardRef<HTMLDivElement, InboxRowProps>(\n (\n {\n className,\n itemId,\n statusColor,\n primaryText,\n secondaryText,\n tertiaryText,\n isAtRisk = false,\n isSelected = false,\n contactMethods = { phone: true, email: true, message: true },\n interactionCount,\n assignee,\n status,\n time,\n ...props\n },\n ref\n ) => {\n return (\n <div\n ref={ref}\n className={cn(\n \"group flex items-center gap-4 py-2.5 px-4 border-b border-border cursor-pointer transition-colors text-[13px] border-l-2\",\n isSelected\n ? \"bg-muted/30 border-l-brand-purple\"\n : \"bg-background hover:bg-muted/50 border-l-transparent\",\n className\n )}\n {...props}\n >\n <div className=\"w-[100px] shrink-0 text-muted-foreground font-mono text-xs\">\n {itemId}\n </div>\n\n <div className=\"flex-1 min-w-0 flex items-center gap-3\">\n <div\n className={cn(\"w-2 h-2 rounded-full shrink-0\", {\n \"bg-red-500\": statusColor === \"red\",\n \"bg-orange-500\": statusColor === \"orange\",\n \"bg-gray-300\": statusColor === \"gray\",\n })}\n />\n <div className=\"flex items-center gap-1.5 truncate\">\n <span className=\"font-semibold text-foreground text-sm\">{primaryText}</span>\n <span className=\"text-muted-foreground text-xs\">via {secondaryText}</span>\n <span className=\"text-muted-foreground text-xs\">→</span>\n <span className=\"text-muted-foreground text-xs\">{tertiaryText}</span>\n </div>\n </div>\n\n <div className=\"w-24 shrink-0 flex items-center justify-end px-2\">\n {isAtRisk && (\n <div className=\"flex items-center gap-1 text-red-600 bg-red-50 px-1.5 py-0.5 rounded-md text-[10px] font-semibold border border-red-100\">\n <AlertCircle className=\"w-3 h-3\" />\n At Risk\n </div>\n )}\n </div>\n\n <div className=\"flex items-center gap-2 text-muted-foreground/40 shrink-0 w-20 justify-center\">\n <Phone className={cn(\"w-3.5 h-3.5\", contactMethods.phone && \"text-muted-foreground/80\")} />\n <Mail className={cn(\"w-3.5 h-3.5\", contactMethods.email && \"text-muted-foreground/80\")} />\n <MessageSquare className={cn(\"w-3.5 h-3.5\", contactMethods.message && \"text-muted-foreground/80\")} />\n </div>\n\n <div className=\"w-12 shrink-0 flex items-center justify-center\">\n <div\n className={cn(\n \"text-[10px] font-semibold px-1.5 py-0.5 rounded border\",\n typeof interactionCount === \"string\" && interactionCount.includes(\"+\")\n ? \"bg-red-50 border-red-200 text-red-700\"\n : Number(interactionCount) > 2\n ? \"bg-yellow-50 border-yellow-200 text-yellow-700\"\n : \"bg-muted border-border text-foreground\"\n )}\n >\n {interactionCount}\n </div>\n </div>\n\n <div className=\"w-32 shrink-0 text-xs font-medium text-foreground truncate\">\n {assignee}\n </div>\n\n <div className=\"w-28 shrink-0\">\n <div className=\"inline-flex items-center bg-muted/80 px-2 py-0.5 rounded text-[10px] font-medium text-muted-foreground\">\n {status}\n </div>\n </div>\n\n <div className=\"w-24 shrink-0 text-right text-xs text-muted-foreground\">\n {time}\n </div>\n </div>\n )\n }\n)\n\nInboxRow.displayName = \"InboxRow\"\n\nexport function InboxGroupHeader({ title, count }: { title: string; count: number }) {\n return (\n <div className=\"flex items-center gap-2 py-2 px-4 bg-muted/30 border-b border-border text-[11px] font-bold text-muted-foreground uppercase tracking-wider\">\n <ChevronDown className=\"w-3.5 h-3.5\" />\n {title}\n <span className=\"bg-background border border-border px-1.5 py-0.5 rounded text-[10px]\">\n {count}\n </span>\n </div>\n )\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { CalendarIcon, ChevronDownIcon, FilterIcon } from \"lucide-react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { Button } from \"./button\"\nimport {\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from \"./dropdown-menu\"\n\nexport interface FilterDefinition {\n id: string\n label: string\n options: string[]\n defaultValue?: string\n icon?: \"calendar\" | React.ComponentType<{ className?: string }>\n}\n\nexport interface InsightsFilterBarProps {\n filters: FilterDefinition[]\n values: Record<string, string>\n onChange: (filterId: string, value: string) => void\n onClearAll?: () => void\n className?: string\n}\n\nfunction hasNonDefaultValue(\n filters: FilterDefinition[],\n values: Record<string, string>\n) {\n return filters.some((filter) => {\n const defaultVal = filter.defaultValue ?? filter.options[0] ?? \"All\"\n return values[filter.id] !== undefined && values[filter.id] !== defaultVal\n })\n}\n\nfunction InsightsFilterBar({\n filters,\n values,\n onChange,\n onClearAll,\n className,\n}: InsightsFilterBarProps) {\n const showClearAll = onClearAll && hasNonDefaultValue(filters, values)\n\n return (\n <div\n data-slot=\"insights-filter-bar\"\n className={cn(\n \"flex flex-wrap items-center gap-3 rounded-md border border-border bg-card p-4 shadow-sm\",\n className\n )}\n >\n <div className=\"flex items-center gap-2\">\n <FilterIcon className=\"h-4 w-4 text-muted-foreground\" />\n <span className=\"text-sm font-medium text-muted-foreground\">\n Filters:\n </span>\n </div>\n\n {filters.map((filter) => {\n const current = values[filter.id] ?? filter.defaultValue ?? \"All\"\n const isCheckbox = filter.options.length > 0\n\n const IconComp =\n filter.icon === \"calendar\"\n ? CalendarIcon\n : typeof filter.icon === \"function\"\n ? filter.icon\n : null\n\n return (\n <DropdownMenu key={filter.id}>\n <DropdownMenuTrigger asChild>\n <Button\n variant=\"outline\"\n size=\"sm\"\n className=\"h-8 gap-1.5 text-xs font-normal shadow-none\"\n >\n {IconComp ? (\n <IconComp className=\"h-3.5 w-3.5 text-muted-foreground\" />\n ) : null}\n {filter.label}: {current}\n <ChevronDownIcon className=\"h-3.5 w-3.5 opacity-50\" />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"start\">\n {isCheckbox\n ? filter.options.map((option) => (\n <DropdownMenuCheckboxItem\n key={option}\n checked={current === option}\n onCheckedChange={() => onChange(filter.id, option)}\n >\n {option}\n </DropdownMenuCheckboxItem>\n ))\n : filter.options.map((option) => (\n <DropdownMenuItem\n key={option}\n onSelect={() => onChange(filter.id, option)}\n >\n {option}\n </DropdownMenuItem>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n )\n })}\n\n {showClearAll ? (\n <div className=\"ml-auto\">\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-8 text-xs text-destructive hover:text-destructive\"\n onClick={onClearAll}\n >\n Clear All\n </Button>\n </div>\n ) : null}\n </div>\n )\n}\n\nexport { InsightsFilterBar }\n","\"use client\"\n\nimport * as React from \"react\"\nimport {\n User,\n Users,\n List,\n Filter,\n ChevronDown,\n X,\n Tag,\n Building,\n} from \"lucide-react\"\nimport { cn } from \"../../../lib/utils\"\nimport { Button } from \"./button\"\nimport { Badge } from \"./badge\"\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuLabel,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuTrigger,\n} from \"./dropdown-menu\"\n\nexport type AssigneeFilter = \"me\" | \"team\" | \"all\"\n\nexport interface InboxFilterCategory {\n id: string\n label: string\n icon: React.ReactNode\n options: string[]\n}\n\nexport interface InboxToolbarProps {\n assignee: AssigneeFilter\n onAssigneeChange: (value: AssigneeFilter) => void\n filterCategories: InboxFilterCategory[]\n selectedFilters: Record<string, string>\n onFilterChange: (categoryId: string, value: string) => void\n onClearFilters: () => void\n className?: string\n}\n\nconst FILTER_PILL_COLORS: Record<string, string> = {\n status: \"bg-muted text-foreground border-border hover:bg-muted/80\",\n category: \"bg-blue-50 text-blue-700 border-blue-100 hover:bg-blue-100\",\n account: \"bg-indigo-50 text-indigo-700 border-indigo-100 hover:bg-indigo-100\",\n company: \"bg-purple-50 text-purple-700 border-purple-100 hover:bg-purple-100\",\n}\n\nfunction getFilterPillColor(categoryId: string) {\n return FILTER_PILL_COLORS[categoryId] ?? FILTER_PILL_COLORS.status\n}\n\nexport function InboxToolbar({\n assignee,\n onAssigneeChange,\n filterCategories,\n selectedFilters,\n onFilterChange,\n onClearFilters,\n className,\n}: InboxToolbarProps) {\n const hasActiveFilters = Object.values(selectedFilters).some(\n (v) => v !== \"all\"\n )\n\n return (\n <div\n className={cn(\n \"flex items-center gap-2 overflow-x-auto px-4 py-2 border-b border-border\",\n className\n )}\n >\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button\n variant=\"outline\"\n size=\"sm\"\n className=\"h-7 shrink-0 gap-1.5 border-border bg-background text-xs font-medium shadow-sm\"\n >\n {assignee === \"me\" && (\n <User className=\"h-3.5 w-3.5 text-brand-purple\" />\n )}\n {assignee === \"team\" && (\n <Users className=\"h-3.5 w-3.5 text-blue-600\" />\n )}\n {assignee === \"all\" && (\n <List className=\"h-3.5 w-3.5 text-muted-foreground\" />\n )}\n <span>\n {assignee === \"me\" && \"Assigned to me\"}\n {assignee === \"team\" && \"My Team\"}\n {assignee === \"all\" && \"All Cases\"}\n </span>\n <ChevronDown className=\"h-3 w-3 opacity-50\" />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"start\" className=\"w-[180px]\">\n <DropdownMenuLabel>Assignee</DropdownMenuLabel>\n <DropdownMenuSeparator />\n <DropdownMenuRadioGroup\n value={assignee}\n onValueChange={(v) => onAssigneeChange(v as AssigneeFilter)}\n >\n <DropdownMenuRadioItem value=\"me\" className=\"gap-2 text-xs\">\n <User className=\"h-3.5 w-3.5 text-brand-purple\" />\n Assigned to me\n </DropdownMenuRadioItem>\n <DropdownMenuRadioItem value=\"team\" className=\"gap-2 text-xs\">\n <Users className=\"h-3.5 w-3.5 text-blue-600\" />\n My Team\n </DropdownMenuRadioItem>\n <DropdownMenuRadioItem value=\"all\" className=\"gap-2 text-xs\">\n <List className=\"h-3.5 w-3.5 text-muted-foreground\" />\n All Cases\n </DropdownMenuRadioItem>\n </DropdownMenuRadioGroup>\n </DropdownMenuContent>\n </DropdownMenu>\n\n <div className=\"mx-1 h-4 w-px shrink-0 bg-border\" />\n\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button\n variant=\"outline\"\n size=\"sm\"\n className=\"h-7 shrink-0 gap-1.5 border-dashed border-border bg-transparent text-xs font-medium text-muted-foreground hover:bg-muted hover:text-foreground\"\n >\n <Filter className=\"h-3.5 w-3.5\" />\n Filter\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"start\" className=\"w-[220px]\">\n <DropdownMenuLabel>Add Filter</DropdownMenuLabel>\n <DropdownMenuSeparator />\n {filterCategories.map((category) => (\n <DropdownMenuSub key={category.id}>\n <DropdownMenuSubTrigger className=\"gap-2 text-xs\">\n {category.icon}\n {category.label}\n </DropdownMenuSubTrigger>\n <DropdownMenuSubContent className=\"max-h-[300px] w-[180px] overflow-y-auto\">\n <DropdownMenuRadioGroup\n value={selectedFilters[category.id] ?? \"all\"}\n onValueChange={(v) => onFilterChange(category.id, v)}\n >\n <DropdownMenuRadioItem value=\"all\" className=\"text-xs\">\n All\n </DropdownMenuRadioItem>\n {category.options.map((option) => (\n <DropdownMenuRadioItem\n key={option}\n value={option}\n className=\"text-xs\"\n >\n {option}\n </DropdownMenuRadioItem>\n ))}\n </DropdownMenuRadioGroup>\n </DropdownMenuSubContent>\n </DropdownMenuSub>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n\n {Object.entries(selectedFilters).map(([categoryId, value]) => {\n if (value === \"all\") return null\n const category = filterCategories.find((c) => c.id === categoryId)\n if (!category) return null\n\n return (\n <Badge\n key={categoryId}\n variant=\"secondary\"\n className={cn(\n \"h-7 shrink-0 gap-1 border pl-2 pr-1 font-normal transition-colors\",\n getFilterPillColor(categoryId)\n )}\n >\n <span className=\"text-[10px] opacity-60\">{category.label}:</span>\n <span className=\"max-w-[120px] truncate text-[10px] font-medium\">\n {value}\n </span>\n <button\n type=\"button\"\n onClick={() => onFilterChange(categoryId, \"all\")}\n className=\"ml-0.5 rounded-sm p-0.5 hover:bg-foreground/10\"\n >\n <X className=\"h-2.5 w-2.5\" />\n <span className=\"sr-only\">Remove</span>\n </button>\n </Badge>\n )\n })}\n\n {hasActiveFilters && (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"ml-auto h-7 shrink-0 px-2 text-xs text-muted-foreground hover:text-foreground\"\n onClick={onClearFilters}\n >\n Clear All\n </Button>\n )}\n </div>\n )\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Separator as SeparatorPrimitive } from \"radix-ui\"\n\nimport { cn } from \"../../../lib/utils\"\n\nfunction Separator({\n className,\n orientation = \"horizontal\",\n decorative = true,\n ...props\n}: React.ComponentProps<typeof SeparatorPrimitive.Root>) {\n return (\n <SeparatorPrimitive.Root\n data-slot=\"separator\"\n decorative={decorative}\n orientation={orientation}\n className={cn(\n \"bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Separator }\n","\"use client\"\n\nimport * as React from \"react\"\nimport {\n ArrowDownAZ,\n ArrowUpAZ,\n LayoutTemplate,\n List as ListIcon,\n RotateCcw,\n SlidersHorizontal,\n} from \"lucide-react\"\nimport { Popover as PopoverPrimitive } from \"radix-ui\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { Button } from \"./button\"\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"./select\"\nimport { Separator } from \"./separator\"\n\nexport type ItemListGrouping = \"stage\" | \"owner\" | \"risk\"\nexport type ItemListViewMode = \"list\" | \"board\"\n\nexport interface ItemListDisplayState {\n viewMode: ItemListViewMode\n grouping: ItemListGrouping\n subGrouping: \"none\" | ItemListGrouping\n ordering: string\n orderingDirection: \"asc\" | \"desc\"\n showContactSignals: boolean\n showOwner: boolean\n showStatus: boolean\n}\n\ninterface ItemListDisplayProps {\n value: ItemListDisplayState\n onChange: (next: ItemListDisplayState) => void\n onReset: () => void\n}\n\nexport function ItemListDisplay({\n value,\n onChange,\n onReset,\n}: ItemListDisplayProps) {\n const toggleField = (\n field: \"showContactSignals\" | \"showOwner\" | \"showStatus\",\n ) => {\n onChange({\n ...value,\n [field]: !value[field],\n })\n }\n\n return (\n <PopoverPrimitive.Root>\n <PopoverPrimitive.Trigger asChild>\n <Button\n variant=\"outline\"\n size=\"sm\"\n className=\"h-8 gap-2 rounded-md border-border bg-background text-xs font-medium text-foreground shadow-none hover:bg-muted/50\"\n >\n <SlidersHorizontal className=\"h-3.5 w-3.5\" />\n Display\n </Button>\n </PopoverPrimitive.Trigger>\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n align=\"start\"\n sideOffset={4}\n className=\"z-50 w-[280px] rounded-lg border border-border bg-background p-4 shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\"\n >\n <div className=\"flex flex-col gap-4\">\n {/* View Toggle */}\n <div className=\"flex rounded-md bg-muted/60 p-1\">\n <button\n type=\"button\"\n onClick={() => onChange({ ...value, viewMode: \"list\" })}\n className={cn(\n \"flex flex-1 flex-col items-center justify-center gap-1.5 rounded-sm px-3 py-2 text-xs font-medium transition-all\",\n value.viewMode === \"list\"\n ? \"bg-background text-foreground shadow-sm\"\n : \"text-muted-foreground hover:text-foreground\",\n )}\n >\n <ListIcon className=\"h-4 w-4\" />\n List\n </button>\n <button\n type=\"button\"\n onClick={() => onChange({ ...value, viewMode: \"board\" })}\n className={cn(\n \"flex flex-1 flex-col items-center justify-center gap-1.5 rounded-sm px-3 py-2 text-xs font-medium transition-all\",\n value.viewMode === \"board\"\n ? \"bg-background text-foreground shadow-sm\"\n : \"text-muted-foreground hover:text-foreground\",\n )}\n >\n <LayoutTemplate className=\"h-4 w-4\" />\n Board\n </button>\n </div>\n\n <Separator />\n\n {/* Grouping Controls */}\n <div className=\"space-y-3\">\n <div className=\"grid grid-cols-[80px_1fr] items-center gap-2\">\n <span className=\"text-xs font-medium text-muted-foreground\">\n Grouping\n </span>\n <Select\n value={value.grouping}\n onValueChange={(g) =>\n onChange({ ...value, grouping: g as ItemListGrouping })\n }\n >\n <SelectTrigger className=\"h-8 text-xs\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"stage\" className=\"text-xs\">\n Stage\n </SelectItem>\n <SelectItem value=\"owner\" className=\"text-xs\">\n Assignee\n </SelectItem>\n <SelectItem value=\"risk\" className=\"text-xs\">\n Risk level\n </SelectItem>\n </SelectContent>\n </Select>\n </div>\n\n <div className=\"grid grid-cols-[80px_1fr] items-center gap-2\">\n <span className=\"text-xs font-medium text-muted-foreground\">\n Sub-grouping\n </span>\n <Select\n value={value.subGrouping}\n onValueChange={(g) =>\n onChange({\n ...value,\n subGrouping: g as \"none\" | ItemListGrouping,\n })\n }\n >\n <SelectTrigger className=\"h-8 text-xs\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"none\" className=\"text-xs\">\n No grouping\n </SelectItem>\n <SelectItem value=\"stage\" className=\"text-xs\">\n Stage\n </SelectItem>\n <SelectItem value=\"owner\" className=\"text-xs\">\n Assignee\n </SelectItem>\n <SelectItem value=\"risk\" className=\"text-xs\">\n Risk level\n </SelectItem>\n </SelectContent>\n </Select>\n </div>\n\n <div className=\"grid grid-cols-[80px_1fr_32px] items-center gap-2\">\n <span className=\"text-xs font-medium text-muted-foreground\">\n Ordering\n </span>\n <Select\n value={value.ordering}\n onValueChange={(o) => onChange({ ...value, ordering: o })}\n >\n <SelectTrigger className=\"h-8 text-xs\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"priority\" className=\"text-xs\">\n Priority\n </SelectItem>\n <SelectItem value=\"aging\" className=\"text-xs\">\n Age\n </SelectItem>\n <SelectItem value=\"name\" className=\"text-xs\">\n Name\n </SelectItem>\n </SelectContent>\n </Select>\n <Button\n variant=\"outline\"\n size=\"icon\"\n className=\"h-8 w-8\"\n onClick={() =>\n onChange({\n ...value,\n orderingDirection:\n value.orderingDirection === \"asc\" ? \"desc\" : \"asc\",\n })\n }\n >\n {value.orderingDirection === \"asc\" ? (\n <ArrowDownAZ className=\"h-3.5 w-3.5\" />\n ) : (\n <ArrowUpAZ className=\"h-3.5 w-3.5\" />\n )}\n </Button>\n </div>\n </div>\n\n <Separator />\n\n {/* Visible Row Details */}\n <div className=\"space-y-2\">\n <span className=\"text-[11px] font-semibold uppercase tracking-wide text-muted-foreground\">\n Visible row details\n </span>\n <div className=\"flex flex-wrap gap-2\">\n <button\n type=\"button\"\n onClick={() => toggleField(\"showContactSignals\")}\n className={cn(\n \"rounded-md border px-2.5 py-1 text-[11px] font-medium transition-colors\",\n value.showContactSignals\n ? \"border-emerald-300 bg-emerald-50 text-emerald-700\"\n : \"border-border bg-background text-muted-foreground hover:bg-muted\",\n )}\n >\n Contact signals\n </button>\n <button\n type=\"button\"\n onClick={() => toggleField(\"showOwner\")}\n className={cn(\n \"rounded-md border px-2.5 py-1 text-[11px] font-medium transition-colors\",\n value.showOwner\n ? \"border-emerald-300 bg-emerald-50 text-emerald-700\"\n : \"border-border bg-background text-muted-foreground hover:bg-muted\",\n )}\n >\n Assignee\n </button>\n <button\n type=\"button\"\n onClick={() => toggleField(\"showStatus\")}\n className={cn(\n \"rounded-md border px-2.5 py-1 text-[11px] font-medium transition-colors\",\n value.showStatus\n ? \"border-emerald-300 bg-emerald-50 text-emerald-700\"\n : \"border-border bg-background text-muted-foreground hover:bg-muted\",\n )}\n >\n Stage badge\n </button>\n </div>\n </div>\n\n <Separator />\n\n <button\n type=\"button\"\n onClick={onReset}\n className=\"inline-flex items-center gap-1 text-[11px] font-medium text-muted-foreground transition-colors hover:text-foreground\"\n >\n <RotateCcw className=\"h-3 w-3\" />\n Reset display settings\n </button>\n </div>\n </PopoverPrimitive.Content>\n </PopoverPrimitive.Portal>\n </PopoverPrimitive.Root>\n )\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Filter, X } from \"lucide-react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { Button } from \"./button\"\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from \"./dropdown-menu\"\n\nexport interface ItemListFilterCategory {\n id: string\n label: string\n options: string[]\n}\n\ninterface ItemListFilterProps {\n categories: ItemListFilterCategory[]\n selectedFilters: Record<string, string[]>\n onToggleFilter: (categoryId: string, option: string) => void\n onClearFilters: () => void\n}\n\nfunction getActiveFilterCount(selectedFilters: Record<string, string[]>) {\n return Object.values(selectedFilters).reduce(\n (count, values) => count + values.length,\n 0\n )\n}\n\nexport function ItemListFilter({\n categories,\n selectedFilters,\n onToggleFilter,\n onClearFilters,\n}: ItemListFilterProps) {\n const activeFilterCount = getActiveFilterCount(selectedFilters)\n\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button\n variant=\"outline\"\n size=\"sm\"\n className=\"h-8 gap-2 rounded-md border-border bg-background text-xs font-medium text-foreground shadow-none hover:bg-muted/50\"\n >\n <Filter className=\"h-3.5 w-3.5\" />\n Filter\n {activeFilterCount > 0 ? (\n <span className=\"rounded bg-muted px-1.5 py-0 text-[10px] font-semibold text-muted-foreground\">\n {activeFilterCount}\n </span>\n ) : null}\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\" className=\"w-[280px] p-3\">\n <DropdownMenuLabel className=\"px-0 text-xs font-semibold text-foreground\">\n Apply filters\n </DropdownMenuLabel>\n <DropdownMenuSeparator className=\"my-2\" />\n\n <div className=\"space-y-3\">\n {categories.map((category, index) => (\n <div key={category.id} className=\"space-y-1.5\">\n <p className=\"text-[11px] font-semibold uppercase tracking-wide text-muted-foreground\">\n {category.label}\n </p>\n <div className=\"flex flex-wrap gap-1.5\">\n {category.options.map((option) => {\n const selected =\n selectedFilters[category.id]?.includes(option) ?? false\n\n return (\n <button\n key={option}\n type=\"button\"\n onClick={() => onToggleFilter(category.id, option)}\n className={cn(\n \"rounded-md border px-2.5 py-1 text-[11px] font-medium transition-colors\",\n selected\n ? \"border-emerald-300 bg-emerald-50 text-emerald-700\"\n : \"border-border bg-background text-muted-foreground hover:bg-muted\"\n )}\n >\n {option}\n </button>\n )\n })}\n </div>\n {index < categories.length - 1 ? (\n <DropdownMenuSeparator className=\"mt-2\" />\n ) : null}\n </div>\n ))}\n </div>\n\n {activeFilterCount > 0 ? (\n <>\n <DropdownMenuSeparator className=\"my-2\" />\n <button\n type=\"button\"\n onClick={onClearFilters}\n className=\"inline-flex items-center gap-1 text-[11px] font-medium text-muted-foreground transition-colors hover:text-foreground\"\n >\n <X className=\"h-3 w-3\" />\n Clear all\n </button>\n </>\n ) : null}\n </DropdownMenuContent>\n </DropdownMenu>\n )\n}\n","\"use client\"\n\nimport * as React from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport {\n ItemListDisplay,\n type ItemListDisplayState,\n} from \"./item-list-display\"\nimport {\n ItemListFilter,\n type ItemListFilterCategory,\n} from \"./item-list-filter\"\n\nexport interface ItemListQuickView {\n id: string\n label: string\n count: number\n}\n\ninterface ItemListToolbarProps {\n quickViews: ItemListQuickView[]\n activeQuickView: string | null\n onQuickViewChange: (viewId: string | null) => void\n filterCategories: ItemListFilterCategory[]\n selectedFilters: Record<string, string[]>\n onToggleFilter: (categoryId: string, option: string) => void\n onClearFilters: () => void\n display: ItemListDisplayState\n onDisplayChange: (next: ItemListDisplayState) => void\n onResetDisplay: () => void\n searchSlot?: React.ReactNode\n}\n\nexport function ItemListToolbar({\n quickViews,\n activeQuickView,\n onQuickViewChange,\n filterCategories,\n selectedFilters,\n onToggleFilter,\n onClearFilters,\n display,\n onDisplayChange,\n onResetDisplay,\n searchSlot,\n}: ItemListToolbarProps) {\n return (\n <div className=\"flex flex-wrap items-center justify-between gap-3 border-b border-border bg-muted/20 px-4 py-3\">\n <div className=\"flex min-w-0 flex-1 items-center gap-2 overflow-x-auto\">\n {quickViews.map((quickView) => {\n const isActive = quickView.id === activeQuickView\n return (\n <button\n key={quickView.id}\n type=\"button\"\n onClick={() => onQuickViewChange(isActive ? null : quickView.id)}\n className={cn(\n \"flex shrink-0 items-center gap-1.5 rounded-md border px-2.5 py-1.5 text-xs font-medium transition-colors\",\n isActive\n ? \"border-emerald-700 bg-emerald-600 text-white\"\n : \"border-border bg-background text-muted-foreground hover:bg-muted hover:text-foreground\"\n )}\n >\n {quickView.label}\n <span\n className={cn(\n \"rounded px-1.5 py-0 text-[10px] font-semibold\",\n isActive\n ? \"bg-emerald-700/80 text-white\"\n : \"bg-muted text-muted-foreground\"\n )}\n >\n {quickView.count}\n </span>\n </button>\n )\n })}\n </div>\n\n <div className=\"flex shrink-0 items-center gap-2\">\n {searchSlot}\n <ItemListFilter\n categories={filterCategories}\n selectedFilters={selectedFilters}\n onToggleFilter={onToggleFilter}\n onClearFilters={onClearFilters}\n />\n <ItemListDisplay\n value={display}\n onChange={onDisplayChange}\n onReset={onResetDisplay}\n />\n </div>\n </div>\n )\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport {\n AlertCircle,\n ChevronDown,\n Mail,\n MessageSquare,\n Phone,\n SearchX,\n} from \"lucide-react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { Badge } from \"./badge\"\nimport {\n ItemListToolbar,\n type ItemListQuickView,\n} from \"./item-list-toolbar\"\nimport { type ItemListDisplayState } from \"./item-list-display\"\nimport { type ItemListFilterCategory } from \"./item-list-filter\"\n\ntype QueueStage =\n | \"Referrals\"\n | \"E&B Verified\"\n | \"Contacted\"\n | \"Pending Intake\"\n | \"Pending Scheduling\"\n\ntype QueueRisk = \"At Risk\" | \"Watch\" | \"Stable\"\n\ninterface QueueItem {\n id: string\n patient: string\n source: string\n specialty: string\n stage: QueueStage\n risk: QueueRisk\n attempts: number\n owner: string\n aging: string\n contactSignals: {\n phone: boolean\n email: boolean\n message: boolean\n }\n}\n\nconst QUEUE_ITEMS: QueueItem[] = [\n {\n id: \"REF-1894\",\n patient: \"James Liu\",\n source: \"Cedars\",\n specialty: \"Oncology\",\n stage: \"E&B Verified\",\n risk: \"At Risk\",\n attempts: 2,\n owner: \"Jessica Wong\",\n aging: \"Aging 18h\",\n contactSignals: { phone: true, email: false, message: false },\n },\n {\n id: \"REF-1903\",\n patient: \"Michael Brown\",\n source: \"Providence\",\n specialty: \"Orthopedics\",\n stage: \"E&B Verified\",\n risk: \"Stable\",\n attempts: 1,\n owner: \"Sarah Johnson\",\n aging: \"New today\",\n contactSignals: { phone: false, email: true, message: false },\n },\n {\n id: \"REF-1910\",\n patient: \"Samantha Rodriguez\",\n source: \"Kaiser\",\n specialty: \"Rheumatology\",\n stage: \"E&B Verified\",\n risk: \"At Risk\",\n attempts: 4,\n owner: \"Michael Chen\",\n aging: \"Aging 36h\",\n contactSignals: { phone: true, email: true, message: true },\n },\n {\n id: \"REF-1916\",\n patient: \"Christopher Davis\",\n source: \"USC\",\n specialty: \"Gastroenterology\",\n stage: \"E&B Verified\",\n risk: \"Stable\",\n attempts: 1,\n owner: \"Daniel Kim\",\n aging: \"New 6h ago\",\n contactSignals: { phone: false, email: true, message: true },\n },\n {\n id: \"REF-1924\",\n patient: \"Lisa Anderson\",\n source: \"CHLA\",\n specialty: \"Pediatric Surgery\",\n stage: \"E&B Verified\",\n risk: \"Watch\",\n attempts: 1,\n owner: \"Jennifer Davis\",\n aging: \"New 8h ago\",\n contactSignals: { phone: true, email: false, message: true },\n },\n {\n id: \"REF-1901\",\n patient: \"Sarah Chen\",\n source: \"CHLA\",\n specialty: \"Pediatrics\",\n stage: \"Contacted\",\n risk: \"Stable\",\n attempts: 1,\n owner: \"Daniel Kim\",\n aging: \"New today\",\n contactSignals: { phone: true, email: false, message: false },\n },\n {\n id: \"REF-1908\",\n patient: \"David Smith\",\n source: \"USC\",\n specialty: \"Dermatology\",\n stage: \"Contacted\",\n risk: \"Stable\",\n attempts: 2,\n owner: \"Jennifer Davis\",\n aging: \"New 3h ago\",\n contactSignals: { phone: false, email: true, message: true },\n },\n {\n id: \"REF-1913\",\n patient: \"Olivia Martinez\",\n source: \"Providence\",\n specialty: \"Cardiology\",\n stage: \"Contacted\",\n risk: \"At Risk\",\n attempts: 3,\n owner: \"Jessica Wong\",\n aging: \"Aging 24h\",\n contactSignals: { phone: true, email: true, message: false },\n },\n {\n id: \"REF-1919\",\n patient: \"Kevin Nguyen\",\n source: \"Kaiser\",\n specialty: \"Nephrology\",\n stage: \"Contacted\",\n risk: \"Stable\",\n attempts: 1,\n owner: \"Sarah Johnson\",\n aging: \"New 5h ago\",\n contactSignals: { phone: true, email: false, message: true },\n },\n {\n id: \"REF-1923\",\n patient: \"Rachel Kim\",\n source: \"UCLA Health\",\n specialty: \"Hematology\",\n stage: \"Contacted\",\n risk: \"Watch\",\n attempts: 2,\n owner: \"Michael Chen\",\n aging: \"New 7h ago\",\n contactSignals: { phone: false, email: true, message: true },\n },\n {\n id: \"REF-1926\",\n patient: \"Brian Foster\",\n source: \"Cedars\",\n specialty: \"Vascular Surgery\",\n stage: \"Contacted\",\n risk: \"Stable\",\n attempts: 1,\n owner: \"Daniel Kim\",\n aging: \"New today\",\n contactSignals: { phone: false, email: false, message: true },\n },\n {\n id: \"REF-1931\",\n patient: \"Jasmine Patel\",\n source: \"Dignity Health\",\n specialty: \"Pulmonology\",\n stage: \"Pending Intake\",\n risk: \"Watch\",\n attempts: 2,\n owner: \"Sarah Johnson\",\n aging: \"Aging 14h\",\n contactSignals: { phone: true, email: true, message: false },\n },\n {\n id: \"REF-1933\",\n patient: \"Evan Torres\",\n source: \"Sutter\",\n specialty: \"Neurology\",\n stage: \"Pending Intake\",\n risk: \"Stable\",\n attempts: 1,\n owner: \"Jessica Wong\",\n aging: \"New 2h ago\",\n contactSignals: { phone: false, email: true, message: true },\n },\n {\n id: \"REF-1940\",\n patient: \"Natalie Brooks\",\n source: \"MemorialCare\",\n specialty: \"Pain Management\",\n stage: \"Pending Scheduling\",\n risk: \"Watch\",\n attempts: 2,\n owner: \"Jennifer Davis\",\n aging: \"Aging 20h\",\n contactSignals: { phone: true, email: false, message: true },\n },\n {\n id: \"REF-1942\",\n patient: \"Carlos Rivera\",\n source: \"Providence\",\n specialty: \"Urology\",\n stage: \"Pending Scheduling\",\n risk: \"Stable\",\n attempts: 1,\n owner: \"Daniel Kim\",\n aging: \"New 5h ago\",\n contactSignals: { phone: false, email: true, message: false },\n },\n {\n id: \"REF-1946\",\n patient: \"Alyssa Wright\",\n source: \"UCLA Health\",\n specialty: \"Referrals\",\n stage: \"Referrals\",\n risk: \"Stable\",\n attempts: 1,\n owner: \"Michael Chen\",\n aging: \"New today\",\n contactSignals: { phone: false, email: true, message: true },\n },\n {\n id: \"REF-1948\",\n patient: \"Marcus Lopez\",\n source: \"Cedars\",\n specialty: \"Referrals\",\n stage: \"Referrals\",\n risk: \"At Risk\",\n attempts: 4,\n owner: \"Jessica Wong\",\n aging: \"Aging 30h\",\n contactSignals: { phone: true, email: true, message: false },\n },\n]\n\nconst STAGE_ORDER: QueueStage[] = [\n \"Referrals\",\n \"E&B Verified\",\n \"Contacted\",\n \"Pending Intake\",\n \"Pending Scheduling\",\n]\n\nconst RISK_ORDER: QueueRisk[] = [\"At Risk\", \"Watch\", \"Stable\"]\n\nconst FILTER_CATEGORIES: ItemListFilterCategory[] = [\n {\n id: \"stage\",\n label: \"Queue stage\",\n options: STAGE_ORDER,\n },\n {\n id: \"risk\",\n label: \"Risk level\",\n options: RISK_ORDER,\n },\n {\n id: \"owner\",\n label: \"Assignee\",\n options: [...new Set(QUEUE_ITEMS.map((item) => item.owner))],\n },\n]\n\ninterface QuickViewDefinition {\n id: string\n label: string\n matches: (item: QueueItem) => boolean\n}\n\nconst QUICK_VIEW_DEFINITIONS: QuickViewDefinition[] = [\n {\n id: \"referrals\",\n label: \"Referrals\",\n matches: (item) => item.stage === \"Referrals\",\n },\n {\n id: \"contact-attempted\",\n label: \"Contact Attempted\",\n matches: (item) =>\n item.stage === \"E&B Verified\" || item.stage === \"Contacted\",\n },\n {\n id: \"pending-intake\",\n label: \"Pending Intake\",\n matches: (item) => item.stage === \"Pending Intake\",\n },\n {\n id: \"pending-scheduling\",\n label: \"Pending Scheduling\",\n matches: (item) => item.stage === \"Pending Scheduling\",\n },\n {\n id: \"needs-escalation\",\n label: \"Needs Escalation\",\n matches: (item) => item.attempts >= 4 || item.risk === \"At Risk\",\n },\n]\n\nconst DEFAULT_DISPLAY_STATE: ItemListDisplayState = {\n viewMode: \"list\",\n grouping: \"stage\",\n subGrouping: \"none\",\n ordering: \"priority\",\n orderingDirection: \"desc\",\n showContactSignals: true,\n showOwner: true,\n showStatus: true,\n}\n\nfunction toggleFilterValue(\n current: Record<string, string[]>,\n categoryId: string,\n option: string,\n) {\n const selected = current[categoryId] ?? []\n const hasOption = selected.includes(option)\n\n return {\n ...current,\n [categoryId]: hasOption\n ? selected.filter((value) => value !== option)\n : [...selected, option],\n }\n}\n\nfunction matchesCategoryFilter(\n item: QueueItem,\n categoryId: string,\n selectedOptions: string[],\n) {\n if (selectedOptions.length === 0) {\n return true\n }\n\n switch (categoryId) {\n case \"stage\":\n return selectedOptions.includes(item.stage)\n case \"risk\":\n return selectedOptions.includes(item.risk)\n case \"owner\":\n return selectedOptions.includes(item.owner)\n default:\n return true\n }\n}\n\nfunction getRiskDotColor(risk: QueueRisk) {\n switch (risk) {\n case \"At Risk\":\n return \"bg-red-500\"\n case \"Watch\":\n return \"bg-orange-400\"\n case \"Stable\":\n default:\n return \"bg-muted-foreground/30\"\n }\n}\n\nconst AVATAR_COLORS = [\n \"bg-blue-100 text-blue-700\",\n \"bg-emerald-100 text-emerald-700\",\n \"bg-purple-100 text-purple-700\",\n \"bg-amber-100 text-amber-700\",\n \"bg-rose-100 text-rose-700\",\n \"bg-cyan-100 text-cyan-700\",\n]\n\nfunction getAvatarColor(name: string) {\n return AVATAR_COLORS[name.charCodeAt(0) % AVATAR_COLORS.length]\n}\n\nfunction WorkItemCard({ item, display }: { item: QueueItem; display: ItemListDisplayState }) {\n return (\n <div className=\"rounded-lg border border-border bg-card p-3 shadow-sm transition-shadow hover:shadow-md\">\n <div className=\"mb-2 flex items-center justify-between\">\n <span className=\"font-mono text-[10px] text-muted-foreground\">{item.id}</span>\n <div\n className={cn(\n \"h-2 w-2 rounded-full\",\n getRiskDotColor(item.risk),\n )}\n />\n </div>\n <div className=\"mb-1 text-sm font-medium text-foreground\">\n {item.patient}\n </div>\n <div className=\"mb-2 text-xs text-muted-foreground\">\n via {item.source} → {item.specialty}\n </div>\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-1.5\">\n {item.risk === \"At Risk\" ? (\n <Badge\n variant=\"outline\"\n className=\"h-5 gap-1 rounded-full border-red-200 bg-red-50 px-1.5 text-[10px] font-medium text-red-700 shadow-none\"\n >\n <AlertCircle className=\"h-3 w-3\" />\n At Risk\n </Badge>\n ) : null}\n <span\n className={cn(\n \"inline-flex h-5 items-center rounded border px-1.5 text-[10px] font-semibold\",\n item.attempts >= 4\n ? \"border-red-200 bg-red-50 text-red-700\"\n : item.attempts === 3\n ? \"border-amber-200 bg-amber-50 text-amber-700\"\n : \"border-border bg-muted text-muted-foreground\",\n )}\n >\n {item.attempts >= 4 ? \"4+\" : item.attempts}\n </span>\n </div>\n <span className=\"text-[11px] text-muted-foreground\">{item.aging}</span>\n </div>\n {display.showOwner ? (\n <div className=\"mt-2 flex items-center gap-1.5 border-t border-border/60 pt-2\">\n <div\n className={cn(\n \"flex h-5 w-5 items-center justify-center rounded text-[9px] font-semibold\",\n getAvatarColor(item.owner),\n )}\n >\n {item.owner.charAt(0)}\n </div>\n <span className=\"text-xs text-muted-foreground\">{item.owner}</span>\n </div>\n ) : null}\n </div>\n )\n}\n\nexport function ItemList() {\n const [selectedFilters, setSelectedFilters] = React.useState<\n Record<string, string[]>\n >({})\n const [activeQuickView, setActiveQuickView] = React.useState<string | null>(\n \"contact-attempted\",\n )\n const [display, setDisplay] =\n React.useState<ItemListDisplayState>(DEFAULT_DISPLAY_STATE)\n const [expandedGroups, setExpandedGroups] = React.useState<\n Record<string, boolean>\n >({})\n\n const quickViews = React.useMemo<ItemListQuickView[]>(\n () =>\n QUICK_VIEW_DEFINITIONS.map((definition) => ({\n id: definition.id,\n label: definition.label,\n count: QUEUE_ITEMS.filter(definition.matches).length,\n })),\n [],\n )\n\n const filteredItems = React.useMemo(() => {\n const quickViewFilter = QUICK_VIEW_DEFINITIONS.find(\n (definition) => definition.id === activeQuickView,\n )\n\n return QUEUE_ITEMS.filter((item) => {\n if (quickViewFilter && !quickViewFilter.matches(item)) {\n return false\n }\n\n return Object.entries(selectedFilters).every(([categoryId, options]) =>\n matchesCategoryFilter(item, categoryId, options),\n )\n })\n }, [activeQuickView, selectedFilters])\n\n const groupedItems = React.useMemo(() => {\n const groups = new Map<string, QueueItem[]>()\n\n for (const item of filteredItems) {\n const key =\n display.grouping === \"stage\"\n ? item.stage\n : display.grouping === \"owner\"\n ? item.owner\n : item.risk\n const current = groups.get(key) ?? []\n current.push(item)\n groups.set(key, current)\n }\n\n const entries = Array.from(groups.entries())\n\n entries.sort(([groupA], [groupB]) => {\n if (display.grouping === \"stage\") {\n return (\n STAGE_ORDER.indexOf(groupA as QueueStage) -\n STAGE_ORDER.indexOf(groupB as QueueStage)\n )\n }\n\n if (display.grouping === \"risk\") {\n return (\n RISK_ORDER.indexOf(groupA as QueueRisk) -\n RISK_ORDER.indexOf(groupB as QueueRisk)\n )\n }\n\n return groupA.localeCompare(groupB)\n })\n\n return entries.map(([group, items]) => ({\n key: group.toLowerCase().replace(/\\s+/g, \"-\"),\n label: group,\n items,\n }))\n }, [display.grouping, filteredItems])\n\n React.useEffect(() => {\n setExpandedGroups((previous) => {\n const next: Record<string, boolean> = {}\n groupedItems.forEach((group) => {\n next[group.key] = previous[group.key] ?? true\n })\n return next\n })\n }, [groupedItems])\n\n return (\n <div className=\"overflow-hidden bg-background\">\n <div className=\"border-b border-border px-6 py-4\">\n <h3 className=\"text-xl font-semibold tracking-tight text-foreground\">\n Patient Inventory\n </h3>\n </div>\n\n <ItemListToolbar\n quickViews={quickViews}\n activeQuickView={activeQuickView}\n onQuickViewChange={setActiveQuickView}\n filterCategories={FILTER_CATEGORIES}\n selectedFilters={selectedFilters}\n onToggleFilter={(categoryId, option) =>\n setSelectedFilters((previous) =>\n toggleFilterValue(previous, categoryId, option),\n )\n }\n onClearFilters={() => setSelectedFilters({})}\n display={display}\n onDisplayChange={setDisplay}\n onResetDisplay={() => setDisplay(DEFAULT_DISPLAY_STATE)}\n />\n\n <div className=\"flex-1 overflow-auto\">\n {groupedItems.length > 0 ? (\n display.viewMode === \"board\" ? (\n /* Board View */\n <div className=\"flex gap-4 overflow-x-auto p-4\">\n {groupedItems.map((group) => (\n <div\n key={group.key}\n className=\"flex w-[280px] shrink-0 flex-col\"\n >\n <div className=\"mb-3 flex items-center justify-between px-1\">\n <h4 className=\"truncate text-sm font-semibold uppercase text-muted-foreground\">\n {group.label}\n </h4>\n <span className=\"rounded-full bg-muted px-2 py-0.5 text-xs font-medium text-muted-foreground\">\n {group.items.length}\n </span>\n </div>\n <div className=\"flex flex-col gap-3\">\n {group.items.map((item) => (\n <WorkItemCard\n key={item.id}\n item={item}\n display={display}\n />\n ))}\n {group.items.length === 0 ? (\n <div className=\"flex h-24 items-center justify-center rounded-lg border-2 border-dashed border-border bg-muted/30\">\n <span className=\"text-xs text-muted-foreground/50\">\n No items\n </span>\n </div>\n ) : null}\n </div>\n </div>\n ))}\n </div>\n ) : (\n /* List View */\n groupedItems.map((group) => {\n const isExpanded = expandedGroups[group.key]\n\n return (\n <div\n key={group.key}\n className=\"last:border-b-0\"\n >\n <button\n type=\"button\"\n onClick={() =>\n setExpandedGroups((previous) => ({\n ...previous,\n [group.key]: !previous[group.key],\n }))\n }\n className=\"flex w-full cursor-pointer select-none items-center gap-2 border-b border-border bg-muted/30 px-4 py-2 text-left transition-colors hover:bg-muted/50\"\n >\n <ChevronDown\n className={cn(\n \"h-3.5 w-3.5 text-muted-foreground transition-transform\",\n !isExpanded && \"-rotate-90\",\n )}\n />\n <span className=\"text-[11px] font-bold uppercase tracking-wider text-muted-foreground\">\n {group.label}\n </span>\n <span className=\"rounded border border-border bg-background px-1.5 py-0 text-[10px] font-medium text-muted-foreground\">\n {group.items.length}\n </span>\n </button>\n\n {isExpanded ? (\n <div>\n {group.items.map((item) => (\n <div\n key={item.id}\n className=\"group flex cursor-pointer items-center gap-3 border-b border-border/50 px-4 py-2.5 text-sm transition-colors hover:bg-muted/40\"\n >\n <span className=\"w-[80px] shrink-0 font-mono text-xs text-muted-foreground/80\">\n {item.id}\n </span>\n\n <div className=\"shrink-0\">\n <div\n className={cn(\n \"h-2 w-2 rounded-full\",\n getRiskDotColor(item.risk),\n )}\n />\n </div>\n\n <div className=\"min-w-0 flex-1 truncate font-semibold text-sm text-foreground\">\n {item.patient}{\" \"}\n <span className=\"font-normal text-muted-foreground\">\n via {item.source} → {item.specialty}\n </span>\n </div>\n\n <div className=\"hidden w-[80px] shrink-0 items-center md:flex\">\n {item.risk === \"At Risk\" ? (\n <Badge\n variant=\"outline\"\n className=\"h-5 gap-1 rounded-full border-red-200 bg-red-50 px-1.5 text-[10px] font-medium text-red-700 shadow-none\"\n >\n <AlertCircle className=\"h-3 w-3\" />\n At Risk\n </Badge>\n ) : null}\n </div>\n\n {display.showContactSignals ? (\n <div className=\"hidden items-center gap-3 text-muted-foreground/40 md:flex\">\n <Phone className=\"h-3.5 w-3.5 cursor-pointer transition-colors hover:text-foreground\" />\n <Mail className=\"h-3.5 w-3.5 cursor-pointer transition-colors hover:text-foreground\" />\n <MessageSquare className=\"h-3.5 w-3.5 cursor-pointer transition-colors hover:text-foreground\" />\n </div>\n ) : null}\n\n <div className=\"hidden w-[60px] shrink-0 items-center justify-center md:flex\">\n <span\n className={cn(\n \"inline-flex h-5 items-center justify-center rounded border px-2 text-xs font-semibold\",\n item.attempts >= 4\n ? \"border-red-300 bg-red-100 text-red-700\"\n : item.attempts === 3\n ? \"border-amber-300 bg-amber-100 text-amber-700\"\n : \"border-border bg-muted text-muted-foreground\",\n )}\n >\n {item.attempts >= 4 ? \"4+\" : item.attempts}\n </span>\n </div>\n\n {display.showOwner ? (\n <div className=\"hidden w-[120px] shrink-0 items-center gap-2 lg:flex\">\n <span className=\"truncate text-xs font-medium text-foreground\">\n {item.owner}\n </span>\n </div>\n ) : null}\n\n {display.showStatus ? (\n <div className=\"hidden w-[140px] shrink-0 items-center justify-end gap-2 sm:flex\">\n <span className=\"truncate rounded bg-muted px-2 py-0.5 text-xs text-muted-foreground\">\n {item.stage}\n </span>\n </div>\n ) : null}\n\n <div className=\"w-[80px] shrink-0 text-right text-xs text-muted-foreground\">\n {item.aging}\n </div>\n </div>\n ))}\n </div>\n ) : null}\n </div>\n )\n })\n )\n ) : (\n <div className=\"flex h-56 flex-col items-center justify-center gap-1 text-muted-foreground\">\n <SearchX className=\"h-7 w-7 opacity-40\" />\n <p className=\"text-sm font-medium\">No queue items found</p>\n <p className=\"text-xs\">\n Try a different quick view or clear your filters.\n </p>\n </div>\n )}\n </div>\n </div>\n )\n}\n\n// ---------------------------------------------------------------------------\n// GroupedListView -- shared grouped row list used by ItemList and Inbox\n// ---------------------------------------------------------------------------\n\nexport interface GroupedListGroup<T> {\n key: string\n label: string\n items: T[]\n}\n\nexport interface GroupedListViewProps<T> {\n groups: GroupedListGroup<T>[]\n renderRow: (item: T, index: number) => React.ReactNode\n getItemKey: (item: T) => string\n selectedKey?: string\n onItemClick?: (item: T) => void\n emptyMessage?: string\n className?: string\n}\n\nexport function GroupedListView<T>({\n groups,\n renderRow,\n getItemKey,\n selectedKey,\n onItemClick,\n emptyMessage = \"No items found\",\n className,\n}: GroupedListViewProps<T>) {\n const [expandedGroups, setExpandedGroups] = React.useState<Record<string, boolean>>(() => {\n const init: Record<string, boolean> = {}\n groups.forEach((g) => { init[g.key] = true })\n return init\n })\n\n React.useEffect(() => {\n setExpandedGroups((prev) => {\n const next: Record<string, boolean> = {}\n groups.forEach((g) => { next[g.key] = prev[g.key] ?? true })\n return next\n })\n }, [groups])\n\n if (groups.length === 0 || groups.every((g) => g.items.length === 0)) {\n return (\n <div className={cn(\"flex h-56 flex-col items-center justify-center gap-1 text-muted-foreground\", className)}>\n <SearchX className=\"h-7 w-7 opacity-40\" />\n <p className=\"text-sm font-medium\">{emptyMessage}</p>\n </div>\n )\n }\n\n return (\n <div className={className}>\n {groups.map((group) => {\n const isExpanded = expandedGroups[group.key] ?? true\n return (\n <div key={group.key}>\n <button\n type=\"button\"\n onClick={() =>\n setExpandedGroups((prev) => ({ ...prev, [group.key]: !prev[group.key] }))\n }\n className=\"flex w-full cursor-pointer select-none items-center gap-2 border-b border-border bg-muted/30 px-4 py-2 text-left transition-colors hover:bg-muted/50\"\n >\n <ChevronDown\n className={cn(\n \"h-3.5 w-3.5 text-muted-foreground transition-transform\",\n !isExpanded && \"-rotate-90\",\n )}\n />\n <span className=\"text-[11px] font-bold uppercase tracking-wider text-muted-foreground\">\n {group.label}\n </span>\n <span className=\"rounded border border-border bg-background px-1.5 py-0 text-[10px] font-medium text-muted-foreground\">\n {group.items.length}\n </span>\n </button>\n {isExpanded &&\n group.items.map((item, idx) => {\n const key = getItemKey(item)\n return (\n <div\n key={key}\n onClick={() => onItemClick?.(item)}\n className={cn(\n \"flex items-center gap-3 px-4 py-2.5 border-b border-border/50 text-[13px] cursor-pointer transition-colors\",\n selectedKey === key\n ? \"bg-muted/30 border-l-2 border-l-primary\"\n : \"border-l-2 border-l-transparent hover:bg-muted/40\",\n )}\n >\n {renderRow(item, idx)}\n </div>\n )\n })}\n </div>\n )\n })}\n </div>\n )\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as LabelPrimitive from \"@radix-ui/react-label\"\n\nimport { cn } from \"../../../lib/utils\"\n\nfunction Label({\n className,\n ...props\n}: React.ComponentProps<typeof LabelPrimitive.Root>) {\n return (\n <LabelPrimitive.Root\n data-slot=\"label\"\n className={cn(\n \"flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Label }\n","import * as React from \"react\"\nimport { ArrowUp, ArrowDown, Info, ExternalLink } from \"lucide-react\"\nimport { cn } from \"../../../lib/utils\"\n\nexport interface MetricDataPoint {\n label: string\n value: number | string\n color?: string\n}\n\nexport interface MetricCardProps {\n title: string\n value?: string | number\n unit?: string\n subtitle?: string\n change?: { \n value: string\n direction: \"up\" | \"down\" | \"neutral\"\n isGood?: boolean // if true, up is green. if false, up is red (e.g. churn).\n }\n footerText?: string\n dataPoints?: MetricDataPoint[]\n showExternalLink?: boolean\n showInfo?: boolean\n}\n\nexport function MetricCard({\n title,\n value,\n unit,\n subtitle,\n change,\n footerText,\n dataPoints,\n showExternalLink,\n showInfo = true,\n}: MetricCardProps) {\n // SVG Donut Chart logic for variants with dataPoints\n const renderDonut = () => {\n if (!dataPoints || dataPoints.length === 0 || value === undefined) return null\n\n // Simple pseudo-donut chart logic assuming specific colors from the image\n // In a real prod environment we'd use recharts/visx, but for this standalone component\n // we can draw an SVG circle with stroke-dasharray based on the data\n const size = 80\n const strokeWidth = 12\n const radius = (size - strokeWidth) / 2\n const circumference = 2 * Math.PI * radius\n \n // Calculate total to distribute the circle\n const total = dataPoints.reduce((sum, dp) => sum + (typeof dp.value === 'number' ? dp.value : 0), 0)\n let currentOffset = 0\n\n return (\n <div className=\"relative\" style={{ width: size, height: size }}>\n <svg width={size} height={size} className=\"transform -rotate-90\">\n {dataPoints.map((dp, i) => {\n const val = typeof dp.value === 'number' ? dp.value : 0\n const percentage = val / total\n const strokeLength = percentage * circumference\n const offset = currentOffset\n currentOffset += strokeLength\n\n // Fallback colors matching the image's teal/green palette\n const colors = [\"#166534\", \"#22c55e\", \"#6ee7b7\", \"#ccfbf1\", \"#f1f5f9\"]\n const color = dp.color || colors[i % colors.length]\n\n return (\n <circle\n key={dp.label}\n cx={size / 2}\n cy={size / 2}\n r={radius}\n fill=\"none\"\n stroke={color}\n strokeWidth={strokeWidth}\n strokeDasharray={`${Math.max(strokeLength - 2, 0)} ${circumference}`}\n strokeDashoffset={-offset}\n className=\"transition-all duration-300\"\n />\n )\n })}\n </svg>\n <div className=\"absolute inset-0 flex items-center justify-center flex-col\">\n <span className=\"text-xl font-bold text-foreground leading-none\">{value}</span>\n </div>\n </div>\n )\n }\n\n return (\n <div className=\"flex flex-col rounded-xl border border-border bg-card p-5 shadow-sm h-full w-full\">\n <div className={cn(\"flex justify-between items-start\", title ? \"mb-4\" : \"mb-4\")}>\n {title ? (\n <h3 className=\"font-semibold text-sm text-foreground/80\">{title}</h3>\n ) : (\n <div className=\"flex flex-col\">\n <div className=\"flex items-baseline gap-1\">\n <span className=\"text-3xl font-bold tracking-tight text-foreground\">{value}</span>\n {unit && <span className=\"text-2xl font-bold tracking-tight text-foreground\">{unit}</span>}\n </div>\n {subtitle && (\n <p className=\"text-sm font-medium text-muted-foreground mt-2\">{subtitle}</p>\n )}\n </div>\n )}\n <div className=\"flex items-center gap-1.5 text-muted-foreground shrink-0 mt-0.5\">\n {showExternalLink && <ExternalLink className=\"w-3.5 h-3.5 cursor-pointer hover:text-foreground transition-colors\" />}\n {showInfo && <Info className=\"w-3.5 h-3.5 cursor-pointer hover:text-foreground transition-colors\" />}\n </div>\n </div>\n\n <div className=\"flex-1 flex flex-col min-w-0\">\n {dataPoints && dataPoints.length > 0 ? (\n // Donut Chart Variant\n <div className=\"flex items-center gap-4 mt-2 mb-6\">\n <div className=\"shrink-0\">\n {renderDonut()}\n </div>\n <div className=\"flex flex-col gap-2 flex-1 min-w-0\">\n {dataPoints.slice(0, 5).map((dp, i) => {\n const colors = [\"bg-[#166534]\", \"bg-[#22c55e]\", \"bg-[#6ee7b7]\", \"bg-[#ccfbf1]\", \"bg-[#f1f5f9]\"]\n return (\n <div key={dp.label} className=\"flex items-center justify-between gap-2 text-[11px] font-medium min-w-0\">\n <div className=\"flex items-center gap-1.5 text-muted-foreground min-w-0\">\n <div className={cn(\"w-1.5 h-1.5 rounded-full shrink-0\", dp.color ? \"\" : colors[i % colors.length])} style={dp.color ? { backgroundColor: dp.color } : {}} />\n <span className=\"whitespace-nowrap\">{dp.label}</span>\n </div>\n <span className=\"text-foreground font-semibold shrink-0\">{dp.value}</span>\n </div>\n )\n })}\n </div>\n </div>\n ) : title && (\n // Standard Big Number Variant (only if title exists)\n <div className=\"mb-6\">\n <div className=\"flex items-baseline gap-1\">\n <span className=\"text-4xl font-bold tracking-tight text-foreground\">{value}</span>\n {unit && <span className=\"text-2xl font-bold tracking-tight text-foreground\">{unit}</span>}\n </div>\n {subtitle && (\n <p className=\"text-sm font-medium text-muted-foreground mt-1\">{subtitle}</p>\n )}\n </div>\n )}\n\n {/* Footer section (Change indicator & extra text) */}\n <div className=\"mt-auto flex flex-col gap-1.5\">\n {change && (\n <div className=\"flex items-center gap-1\">\n {(() => {\n // Determine color based on isGood property\n // By default, up is green (good), down is red (bad)\n const isGoodDirection = change.isGood !== undefined \n ? change.isGood \n : change.direction === \"up\";\n \n const colorClass = isGoodDirection ? \"text-emerald-600\" : \"text-red-600\";\n const Icon = change.direction === \"down\" ? ArrowDown : ArrowUp;\n \n return (\n <span className={cn(\"text-xs font-semibold flex items-center gap-0.5\", colorClass)}>\n <Icon className=\"w-3 h-3 stroke-[3]\" />\n {change.value}\n </span>\n )\n })()}\n </div>\n )}\n {footerText && (\n <span className=\"text-[11px] text-muted-foreground font-medium\">{footerText}</span>\n )}\n </div>\n </div>\n </div>\n )\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { ScrollArea as ScrollAreaPrimitive } from \"radix-ui\"\n\nimport { cn } from \"../../../lib/utils\"\n\nfunction ScrollArea({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof ScrollAreaPrimitive.Root>) {\n return (\n <ScrollAreaPrimitive.Root\n data-slot=\"scroll-area\"\n className={cn(\"relative\", className)}\n {...props}\n >\n <ScrollAreaPrimitive.Viewport\n data-slot=\"scroll-area-viewport\"\n className=\"focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1\"\n >\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n )\n}\n\nfunction ScrollBar({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>) {\n return (\n <ScrollAreaPrimitive.ScrollAreaScrollbar\n data-slot=\"scroll-area-scrollbar\"\n orientation={orientation}\n className={cn(\n \"flex touch-none p-px transition-colors select-none\",\n orientation === \"vertical\" &&\n \"h-full w-2.5 border-l border-l-transparent\",\n orientation === \"horizontal\" &&\n \"h-2.5 flex-col border-t border-t-transparent\",\n className\n )}\n {...props}\n >\n <ScrollAreaPrimitive.ScrollAreaThumb\n data-slot=\"scroll-area-thumb\"\n className=\"bg-border relative flex-1 rounded-full\"\n />\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\n )\n}\n\nexport { ScrollArea, ScrollBar }\n","\"use client\"\n\nimport * as React from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\n\nfunction Table({ className, ...props }: React.ComponentProps<\"table\">) {\n return (\n <div\n data-slot=\"table-container\"\n className=\"relative w-full overflow-x-auto\"\n >\n <table\n data-slot=\"table\"\n className={cn(\"w-full caption-bottom text-sm\", className)}\n {...props}\n />\n </div>\n )\n}\n\nfunction TableHeader({ className, ...props }: React.ComponentProps<\"thead\">) {\n return (\n <thead\n data-slot=\"table-header\"\n className={cn(\"[&_tr]:border-b\", className)}\n {...props}\n />\n )\n}\n\nfunction TableBody({ className, ...props }: React.ComponentProps<\"tbody\">) {\n return (\n <tbody\n data-slot=\"table-body\"\n className={cn(\"[&_tr:last-child]:border-0\", className)}\n {...props}\n />\n )\n}\n\nfunction TableFooter({ className, ...props }: React.ComponentProps<\"tfoot\">) {\n return (\n <tfoot\n data-slot=\"table-footer\"\n className={cn(\n \"bg-muted/50 border-t font-medium [&>tr]:last:border-b-0\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TableRow({ className, ...props }: React.ComponentProps<\"tr\">) {\n return (\n <tr\n data-slot=\"table-row\"\n className={cn(\n \"hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TableHead({ className, ...props }: React.ComponentProps<\"th\">) {\n return (\n <th\n data-slot=\"table-head\"\n className={cn(\n \"text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TableCell({ className, ...props }: React.ComponentProps<\"td\">) {\n return (\n <td\n data-slot=\"table-cell\"\n className={cn(\n \"p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TableCaption({\n className,\n ...props\n}: React.ComponentProps<\"caption\">) {\n return (\n <caption\n data-slot=\"table-caption\"\n className={cn(\"text-muted-foreground mt-4 text-sm\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport {\n AlertTriangle,\n CheckCircle2,\n ChevronDown,\n ChevronLeft,\n ChevronRight,\n} from \"lucide-react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { Avatar, AvatarFallback } from \"./avatar\"\nimport { Button } from \"./button\"\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from \"./dropdown-menu\"\nimport { Input } from \"./input\"\nimport { ScrollArea, ScrollBar } from \"./scroll-area\"\nimport {\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from \"./table\"\n\nexport interface PerformanceMetricsTableRow {\n id: string\n label: string\n avatarFallback: string\n role?: string\n primaryValue: number\n primaryTarget: number\n ratePercent: number\n metricOne: number\n metricTwo: string\n metricThree: number\n metricFour: number\n}\n\nexport interface PerformanceMetricsTableSortOption {\n id: \"primary-desc\" | \"primary-asc\" | \"rate-desc\" | \"metric-four-desc\"\n label: string\n}\n\ninterface PerformanceMetricsTableProps {\n title?: string\n entityColumnLabel?: string\n primaryMetricColumnLabel?: string\n rateColumnLabel?: string\n metricOneColumnLabel?: string\n metricTwoColumnLabel?: string\n metricThreeColumnLabel?: string\n metricFourColumnLabel?: string\n viewOptions?: string[]\n roleOptions?: string[]\n sortOptions?: PerformanceMetricsTableSortOption[]\n rows?: PerformanceMetricsTableRow[]\n pageSize?: number\n searchPlaceholder?: string\n}\n\nconst DEFAULT_ROWS: PerformanceMetricsTableRow[] = [\n {\n id: \"member-1\",\n label: \"Jennifer Davis\",\n avatarFallback: \"JD\",\n role: \"Senior Coordinator\",\n primaryValue: 188,\n primaryTarget: 200,\n ratePercent: 78,\n metricOne: 256,\n metricTwo: \"8.5h\",\n metricThree: 401,\n metricFour: 42,\n },\n {\n id: \"member-2\",\n label: \"Robert Taylor\",\n avatarFallback: \"RT\",\n role: \"Coordinator\",\n primaryValue: 168,\n primaryTarget: 200,\n ratePercent: 70,\n metricOne: 210,\n metricTwo: \"7.4h\",\n metricThree: 330,\n metricFour: 36,\n },\n {\n id: \"member-3\",\n label: \"Karen Park\",\n avatarFallback: \"KP\",\n role: \"Coordinator\",\n primaryValue: 165,\n primaryTarget: 200,\n ratePercent: 68,\n metricOne: 195,\n metricTwo: \"6.9h\",\n metricThree: 298,\n metricFour: 33,\n },\n {\n id: \"member-4\",\n label: \"Alex Chen\",\n avatarFallback: \"AC\",\n role: \"Junior Coordinator\",\n primaryValue: 142,\n primaryTarget: 200,\n ratePercent: 65,\n metricOne: 201,\n metricTwo: \"7.2h\",\n metricThree: 315,\n metricFour: 29,\n },\n {\n id: \"member-5\",\n label: \"Sarah Mitchell\",\n avatarFallback: \"SM\",\n role: \"Senior Coordinator\",\n primaryValue: 130,\n primaryTarget: 200,\n ratePercent: 76,\n metricOne: 247,\n metricTwo: \"8.2h\",\n metricThree: 389,\n metricFour: 31,\n },\n {\n id: \"member-6\",\n label: \"Mike Rodriguez\",\n avatarFallback: \"MR\",\n role: \"Coordinator\",\n primaryValue: 115,\n primaryTarget: 200,\n ratePercent: 72,\n metricOne: 218,\n metricTwo: \"7.8h\",\n metricThree: 342,\n metricFour: 25,\n },\n]\n\nconst DEFAULT_SORT_OPTIONS: PerformanceMetricsTableSortOption[] = [\n { id: \"primary-desc\", label: \"Primary Metric (High to Low)\" },\n { id: \"primary-asc\", label: \"Primary Metric (Low to High)\" },\n { id: \"rate-desc\", label: \"Rate (High to Low)\" },\n { id: \"metric-four-desc\", label: \"Metric Four (High to Low)\" },\n]\n\nfunction getProgressStatus(value: number, target: number) {\n const percent = (value / target) * 100\n\n if (percent >= 80) {\n return {\n color: \"bg-emerald-500\",\n textColor: \"text-emerald-700\",\n icon: <CheckCircle2 className=\"h-3.5 w-3.5 text-emerald-600\" />,\n }\n }\n\n if (percent >= 65) {\n return {\n color: \"bg-amber-500\",\n textColor: \"text-amber-700\",\n icon: <AlertTriangle className=\"h-3.5 w-3.5 text-amber-600\" />,\n }\n }\n\n return {\n color: \"bg-red-500\",\n textColor: \"text-red-700\",\n icon: <AlertTriangle className=\"h-3.5 w-3.5 text-red-600\" />,\n }\n}\n\nfunction sortRows(\n rows: PerformanceMetricsTableRow[],\n sortId: PerformanceMetricsTableSortOption[\"id\"]\n) {\n const copy = [...rows]\n switch (sortId) {\n case \"primary-asc\":\n return copy.sort((a, b) => a.primaryValue - b.primaryValue)\n case \"rate-desc\":\n return copy.sort((a, b) => b.ratePercent - a.ratePercent)\n case \"metric-four-desc\":\n return copy.sort((a, b) => b.metricFour - a.metricFour)\n case \"primary-desc\":\n default:\n return copy.sort((a, b) => b.primaryValue - a.primaryValue)\n }\n}\n\nexport function PerformanceMetricsTable({\n title = \"Performance Table\",\n entityColumnLabel = \"Entity\",\n primaryMetricColumnLabel = \"Primary Goal\",\n rateColumnLabel = \"Rate\",\n metricOneColumnLabel = \"Metric One\",\n metricTwoColumnLabel = \"Metric Two\",\n metricThreeColumnLabel = \"Metric Three\",\n metricFourColumnLabel = \"Metric Four\",\n viewOptions = [\"By Entity\"],\n roleOptions = [\"All\", \"Senior Coordinator\", \"Coordinator\", \"Junior Coordinator\"],\n sortOptions = DEFAULT_SORT_OPTIONS,\n rows = DEFAULT_ROWS,\n pageSize = 6,\n searchPlaceholder = \"Search rows...\",\n}: PerformanceMetricsTableProps) {\n const [view, setView] = React.useState(viewOptions[0] ?? \"By Entity\")\n const [sortId, setSortId] =\n React.useState<PerformanceMetricsTableSortOption[\"id\"]>(\n sortOptions[0]?.id ?? \"primary-desc\"\n )\n const [roleFilter, setRoleFilter] = React.useState(roleOptions[0] ?? \"All\")\n const [search, setSearch] = React.useState(\"\")\n const [page, setPage] = React.useState(1)\n\n const filteredRows = React.useMemo(() => {\n const normalized = search.trim().toLowerCase()\n return rows.filter((row) => {\n if (roleFilter !== \"All\" && row.role !== roleFilter) {\n return false\n }\n if (!normalized) {\n return true\n }\n return row.label.toLowerCase().includes(normalized)\n })\n }, [roleFilter, rows, search])\n\n const sortedRows = React.useMemo(\n () => sortRows(filteredRows, sortId),\n [filteredRows, sortId]\n )\n\n const pageCount = Math.max(1, Math.ceil(sortedRows.length / pageSize))\n const start = (page - 1) * pageSize\n const paginatedRows = sortedRows.slice(start, start + pageSize)\n\n React.useEffect(() => {\n setPage(1)\n }, [search, roleFilter, sortId, view])\n\n React.useEffect(() => {\n setPage((previous) => Math.min(previous, pageCount))\n }, [pageCount])\n\n const sortLabel =\n sortOptions.find((option) => option.id === sortId)?.label ?? \"Sort\"\n\n return (\n <div className=\"overflow-hidden rounded-xl border border-border bg-card\">\n <div className=\"flex items-center justify-between border-b border-border px-4 py-3\">\n <h3 className=\"text-sm font-semibold text-foreground\">{title}</h3>\n <div className=\"flex items-center gap-2\">\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"outline\" size=\"sm\" className=\"h-8 text-xs\">\n {view}\n <ChevronDown className=\"ml-2 h-3.5 w-3.5\" />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent>\n {viewOptions.map((option) => (\n <DropdownMenuItem key={option} onClick={() => setView(option)}>\n {option}\n </DropdownMenuItem>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"outline\" size=\"sm\" className=\"h-8 text-xs\">\n Sort: {sortLabel.replace(/\\s*\\(.+\\)/, \"\")}\n <ChevronDown className=\"ml-2 h-3.5 w-3.5\" />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\" className=\"w-56\">\n {sortOptions.map((option) => (\n <DropdownMenuItem key={option.id} onClick={() => setSortId(option.id)}>\n {option.label}\n </DropdownMenuItem>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"outline\" size=\"sm\" className=\"h-8 text-xs\">\n Role: {roleFilter}\n <ChevronDown className=\"ml-2 h-3.5 w-3.5\" />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n {roleOptions.map((option) => (\n <DropdownMenuItem key={option} onClick={() => setRoleFilter(option)}>\n {option}\n </DropdownMenuItem>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n\n <Input\n value={search}\n onChange={(event) => setSearch(event.target.value)}\n placeholder={searchPlaceholder}\n className=\"h-8 w-48 text-xs\"\n />\n </div>\n </div>\n\n <ScrollArea>\n <div className=\"min-w-[1180px]\">\n <Table>\n <TableHeader className=\"bg-muted/30\">\n <TableRow className=\"hover:bg-transparent\">\n <TableHead className=\"px-4 py-3 text-xs font-semibold uppercase tracking-wider text-muted-foreground\">\n {entityColumnLabel}\n </TableHead>\n <TableHead className=\"w-[260px] px-4 py-3 text-xs font-semibold uppercase tracking-wider text-muted-foreground\">\n {primaryMetricColumnLabel}\n </TableHead>\n <TableHead className=\"px-4 py-3 text-right text-xs font-semibold uppercase tracking-wider text-muted-foreground\">\n {rateColumnLabel}\n </TableHead>\n <TableHead className=\"px-4 py-3 text-right text-xs font-semibold uppercase tracking-wider text-muted-foreground\">\n {metricOneColumnLabel}\n </TableHead>\n <TableHead className=\"px-4 py-3 text-right text-xs font-semibold uppercase tracking-wider text-muted-foreground\">\n {metricTwoColumnLabel}\n </TableHead>\n <TableHead className=\"px-4 py-3 text-right text-xs font-semibold uppercase tracking-wider text-muted-foreground\">\n {metricThreeColumnLabel}\n </TableHead>\n <TableHead className=\"px-4 py-3 text-right text-xs font-semibold uppercase tracking-wider text-muted-foreground\">\n {metricFourColumnLabel}\n </TableHead>\n </TableRow>\n </TableHeader>\n <TableBody>\n {paginatedRows.map((row) => {\n const percentage = (row.primaryValue / row.primaryTarget) * 100\n const progress = getProgressStatus(row.primaryValue, row.primaryTarget)\n\n return (\n <TableRow key={row.id} className=\"hover:bg-muted/30\">\n <TableCell className=\"px-4 py-3\">\n <div className=\"flex items-center gap-3\">\n <Avatar className=\"h-8 w-8 border border-border\">\n <AvatarFallback className=\"bg-emerald-100 text-[11px] font-medium text-emerald-700\">\n {row.avatarFallback}\n </AvatarFallback>\n </Avatar>\n <span className=\"text-sm font-medium text-foreground\">{row.label}</span>\n </div>\n </TableCell>\n\n <TableCell className=\"px-4 py-3\">\n <div className=\"flex items-center gap-2\">\n <span className=\"shrink-0\">{progress.icon}</span>\n <div className=\"w-full max-w-[180px]\">\n <div className=\"mb-1 text-sm font-bold text-foreground\">\n {row.primaryValue}/{row.primaryTarget}\n </div>\n <div className=\"h-1.5 w-full overflow-hidden rounded-full bg-muted\">\n <div\n className={cn(\"h-full rounded-full\", progress.color)}\n style={{ width: `${Math.min(100, percentage)}%` }}\n />\n </div>\n <div className={cn(\"mt-1 text-xs font-medium\", progress.textColor)}>\n {Math.round(percentage)}%\n </div>\n </div>\n </div>\n </TableCell>\n\n <TableCell className=\"px-4 py-3 text-right text-sm font-semibold text-emerald-600\">\n {row.ratePercent}%\n </TableCell>\n <TableCell className=\"px-4 py-3 text-right text-sm font-medium text-foreground\">\n {row.metricOne}\n </TableCell>\n <TableCell className=\"px-4 py-3 text-right text-sm text-muted-foreground\">\n {row.metricTwo}\n </TableCell>\n <TableCell className=\"px-4 py-3 text-right text-sm font-medium text-foreground\">\n {row.metricThree}\n </TableCell>\n <TableCell className=\"px-4 py-3 text-right text-sm font-medium text-foreground\">\n {row.metricFour}\n </TableCell>\n </TableRow>\n )\n })}\n </TableBody>\n </Table>\n </div>\n <ScrollBar orientation=\"horizontal\" />\n </ScrollArea>\n\n <div className=\"flex items-center justify-between border-t border-border bg-muted/20 px-4 py-3\">\n <span className=\"text-xs text-muted-foreground\">\n Showing {sortedRows.length === 0 ? 0 : start + 1} to{\" \"}\n {Math.min(start + pageSize, sortedRows.length)} of {sortedRows.length} rows\n </span>\n <div className=\"flex items-center gap-2\">\n <Button\n variant=\"outline\"\n size=\"sm\"\n className=\"h-7 text-xs\"\n disabled={page <= 1}\n onClick={() => setPage((previous) => Math.max(previous - 1, 1))}\n >\n <ChevronLeft className=\"mr-1 h-3.5 w-3.5\" />\n Previous\n </Button>\n <Button\n variant=\"outline\"\n size=\"sm\"\n className=\"h-7 text-xs\"\n disabled={page >= pageCount}\n onClick={() =>\n setPage((previous) => Math.min(previous + 1, pageCount))\n }\n >\n Next\n <ChevronRight className=\"ml-1 h-3.5 w-3.5\" />\n </Button>\n </div>\n </div>\n </div>\n )\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Tooltip as TooltipPrimitive } from \"radix-ui\"\n\nimport { cn } from \"../../../lib/utils\"\n\nfunction TooltipProvider({\n delayDuration = 0,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Provider>) {\n return (\n <TooltipPrimitive.Provider\n data-slot=\"tooltip-provider\"\n delayDuration={delayDuration}\n {...props}\n />\n )\n}\n\nfunction Tooltip({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Root>) {\n return <TooltipPrimitive.Root data-slot=\"tooltip\" {...props} />\n}\n\nfunction TooltipTrigger({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Trigger>) {\n return <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props} />\n}\n\nfunction TooltipContent({\n className,\n sideOffset = 0,\n children,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Content>) {\n return (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n data-slot=\"tooltip-content\"\n sideOffset={sideOffset}\n className={cn(\n \"bg-foreground text-background animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-md px-3 py-1.5 text-xs text-balance\",\n className\n )}\n {...props}\n >\n {children}\n <TooltipPrimitive.Arrow className=\"bg-foreground fill-foreground z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]\" />\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n )\n}\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { TrendingUp, Info, ArrowRight } from \"lucide-react\"\nimport { ResponsiveSankey } from \"@nivo/sankey\"\n\nimport { cn } from \"../../../lib/utils\"\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"./tooltip\"\n\nexport interface PipelineStage {\n id: string\n label: string\n count: number\n trend: string\n nextConversion: string | null\n}\n\nexport interface PipelineStageMetrics {\n medianTime: string\n avgTime: string\n dropOffs: { reason: string; count: number; pct: string }[]\n}\n\nexport interface PipelineStageTiming {\n median: string\n avg: string\n}\n\nexport interface PipelineFilterBreakdown {\n [stageId: string]: Record<string, number>\n}\n\ninterface SegmentColors {\n [key: string]: string\n}\n\nconst SEGMENT_PALETTE = [\n \"#0F4C3A\",\n \"#15803d\",\n \"#0ea5e9\",\n \"#8b5cf6\",\n \"#f59e0b\",\n \"#ef4444\",\n]\n\nconst DROP_OFF_NODES = [\n { id: \"Lost/Other\", nodeColor: \"#CBD5E1\" },\n { id: \"Coverage\", nodeColor: \"#F59E0B\" },\n { id: \"Unqualified\", nodeColor: \"#F59E0B\" },\n { id: \"No Contact\", nodeColor: \"#F59E0B\" },\n { id: \"Intake Drop\", nodeColor: \"#F59E0B\" },\n { id: \"No Show/Cancel\", nodeColor: \"#F59E0B\" },\n]\n\nfunction StageHoverCard({\n title,\n count,\n metrics,\n}: {\n title: string\n count: number | string\n metrics?: PipelineStageMetrics\n}) {\n return (\n <div className=\"w-[260px] overflow-hidden rounded-lg border border-border bg-card font-sans text-left shadow-xl\">\n <div className=\"border-b border-border p-3\">\n <div className=\"mb-0.5 text-xs font-medium text-muted-foreground\">{title}</div>\n <div className=\"text-2xl font-bold text-foreground\">{count}</div>\n </div>\n\n {metrics && (\n <div className=\"grid grid-cols-2 gap-2 border-b border-border bg-muted/30 px-3 py-2\">\n <div>\n <div className=\"text-[9px] font-semibold uppercase tracking-wider text-muted-foreground/70\">\n Median\n </div>\n <div className=\"text-xs font-bold text-foreground\">\n {metrics.medianTime}\n </div>\n </div>\n <div className=\"border-l border-border pl-2\">\n <div className=\"text-[9px] font-semibold uppercase tracking-wider text-muted-foreground/70\">\n Average\n </div>\n <div className=\"text-xs font-bold text-foreground\">\n {metrics.avgTime}\n </div>\n </div>\n </div>\n )}\n\n {metrics?.dropOffs && metrics.dropOffs.length > 0 && (\n <div className=\"p-2\">\n <div className=\"mb-1.5 px-1 text-[10px] font-semibold uppercase tracking-wide text-muted-foreground\">\n Drop-off Reasons\n </div>\n <div className=\"space-y-0.5\">\n {metrics.dropOffs.map((drop, i) => (\n <div\n key={i}\n className=\"group flex cursor-pointer items-center justify-between rounded p-1.5 text-xs transition-colors hover:bg-muted\"\n >\n <span className=\"truncate pr-2 text-muted-foreground group-hover:text-foreground\">\n {drop.reason}\n </span>\n <div className=\"flex items-center gap-1.5\">\n <span className=\"text-[10px] text-muted-foreground/70\">{drop.pct}</span>\n <span className=\"inline-flex h-4 min-w-[20px] items-center justify-center rounded border border-border bg-muted px-1 text-[9px] font-semibold text-muted-foreground group-hover:bg-muted group-hover:text-foreground\">\n {drop.count}\n </span>\n </div>\n </div>\n ))}\n </div>\n </div>\n )}\n\n <div className=\"flex cursor-pointer items-center justify-between border-t border-border bg-muted px-3 py-2 text-xs font-medium text-blue-600 transition-colors hover:bg-muted hover:text-blue-700\">\n View in Work Queue <ArrowRight className=\"h-3 w-3\" />\n </div>\n </div>\n )\n}\n\nexport interface PipelineOverviewProps {\n title?: string\n stages: PipelineStage[]\n stageMetrics: Record<string, PipelineStageMetrics>\n stageTimings: (PipelineStageTiming | null)[]\n filterOptions?: string[]\n onFilterChange?: (filterOption: string) => void\n filterBreakdowns?: Record<string, PipelineFilterBreakdown>\n countingModes?: string[]\n countingModeTooltip?: string\n /** Main pipeline flow nodes (after the first stage) */\n flowNodes?: { id: string; nodeColor: string }[]\n /** Drop-off distribution from initial stage: { \"Lost/Other\": 56, \"Coverage\": 40, ... } */\n dropOffDistribution?: Record<string, number>\n /** Flow links after the first stage (middle of pipeline onward) */\n flowLinks?: { source: string; target: string; value: number }[]\n totalReceived?: number\n /** Dollar amounts to display on terminal node labels: { \"Retained\": \"$18.2M\" } */\n nodeAmounts?: Record<string, string>\n /** Unit noun for standard node/link tooltips (e.g. \"signals\", \"accounts\"). */\n unitLabel?: string\n /** Unit noun for terminal/drop-off node tooltips (e.g. \"opportunities\"). Defaults to unitLabel. */\n terminalUnitLabel?: string\n /** Node IDs that should use terminalUnitLabel. Defaults to keys of dropOffDistribution. */\n terminalNodeIds?: string[]\n /** Sankey chart margins, merged with defaults { top: 20, right: 120, bottom: 20, left: 140 }. */\n sankeyMargin?: { top?: number; right?: number; bottom?: number; left?: number }\n /** Gap between Sankey node bar and its outside label. */\n sankeyLabelPadding?: number\n /** When true, conversion badges use `flex`; when false, `hidden xl:flex`. */\n alwaysShowConversionBadges?: boolean\n /** Color for dynamically generated drop-off nodes. */\n dropOffNodeColor?: string\n onViewInWorkQueue?: (stageId: string) => void\n className?: string\n}\n\nexport function PipelineOverview({\n title = \"Pipeline Overview\",\n stages,\n stageMetrics,\n stageTimings,\n filterOptions = [\"Facility\", \"Source\", \"Lead Source\", \"Payer\", \"Channel\"],\n onFilterChange,\n filterBreakdowns,\n countingModes = [\"Unique Patients\", \"All Referrals\"],\n countingModeTooltip = \"Patients may be referred through multiple channels. 'All Referrals' shows total volume; 'Unique Patients' deduplicates to show distinct patient counts.\",\n flowNodes = [\n { id: \"Contacted\", nodeColor: \"#2A8F7A\" },\n { id: \"Intake Sent\", nodeColor: \"#3DB4A0\" },\n { id: \"Intake Done\", nodeColor: \"#4CC9B0\" },\n { id: \"Scheduled\", nodeColor: \"#5FCFBC\" },\n { id: \"Completed\", nodeColor: \"#79E2C9\" },\n ],\n dropOffDistribution = {\n \"Lost/Other\": 56,\n Coverage: 40,\n Unqualified: 30,\n },\n flowLinks = [\n { source: \"Contacted\", target: \"Intake Sent\", value: 660 },\n { source: \"Contacted\", target: \"No Contact\", value: 60 },\n { source: \"Intake Sent\", target: \"Intake Done\", value: 612 },\n { source: \"Intake Sent\", target: \"Intake Drop\", value: 48 },\n { source: \"Intake Done\", target: \"Scheduled\", value: 612 },\n { source: \"Scheduled\", target: \"Completed\", value: 520 },\n { source: \"Scheduled\", target: \"No Show/Cancel\", value: 92 },\n ],\n totalReceived = 847,\n nodeAmounts,\n unitLabel,\n terminalUnitLabel,\n terminalNodeIds,\n sankeyMargin,\n sankeyLabelPadding,\n alwaysShowConversionBadges = false,\n dropOffNodeColor,\n onViewInWorkQueue,\n className,\n}: PipelineOverviewProps) {\n const [selectedFilter, setSelectedFilter] = React.useState(filterOptions[0])\n const [countingMode, setCountingMode] = React.useState(countingModes[0])\n\n const effectiveUnitLabel = unitLabel ?? \"items\"\n const effectiveTerminalUnitLabel = terminalUnitLabel ?? effectiveUnitLabel\n const effectiveTerminalNodeIds = React.useMemo(\n () => new Set(terminalNodeIds ?? Object.keys(dropOffDistribution)),\n [terminalNodeIds, dropOffDistribution],\n )\n const effectiveMargin = React.useMemo(\n () => ({ top: 20, right: 120, bottom: 20, left: 140, ...sankeyMargin }),\n [sankeyMargin],\n )\n const effectiveLabelPadding = sankeyLabelPadding ?? 16\n\n const sankeyData = React.useMemo(() => {\n const breakdown =\n filterBreakdowns?.[selectedFilter]?.received ??\n ({ [stages[0]?.label ?? \"Received\"]: totalReceived } as Record<\n string,\n number\n >)\n\n const segments = Object.entries(breakdown).map(([name, value], index) => ({\n id: name,\n nodeColor: SEGMENT_PALETTE[index % SEGMENT_PALETTE.length],\n value,\n }))\n\n const dropOffKeys = Object.keys(dropOffDistribution)\n const dropOffNodes = dropOffKeys.length > 0\n ? dropOffKeys.map((reason) => ({\n id: reason,\n nodeColor: dropOffNodeColor ?? \"#F59E0B\",\n }))\n : DROP_OFF_NODES\n\n const nodes = [\n ...segments,\n ...flowNodes,\n ...dropOffNodes,\n ]\n\n const nodeIds = new Set(nodes.map((n) => n.id))\n for (const link of flowLinks) {\n for (const endpoint of [link.source, link.target]) {\n if (!nodeIds.has(endpoint)) {\n nodes.push({ id: endpoint, nodeColor: dropOffNodeColor ?? \"#F59E0B\" })\n nodeIds.add(endpoint)\n }\n }\n }\n\n const links: { source: string; target: string; value: number }[] = []\n\n const firstFlowNode = flowNodes[0]?.id ?? \"Contacted\"\n\n segments.forEach((segment) => {\n if (segment.value > 0) {\n links.push({\n source: segment.id,\n target: firstFlowNode,\n value: segment.value,\n })\n }\n })\n\n for (const [reason, count] of Object.entries(dropOffDistribution)) {\n if (count > 0) {\n links.push({ source: firstFlowNode, target: reason, value: count })\n }\n }\n\n flowLinks.forEach((link) => links.push({ ...link }))\n\n return { nodes, links }\n }, [\n selectedFilter,\n filterBreakdowns,\n stages,\n totalReceived,\n flowNodes,\n dropOffDistribution,\n dropOffNodeColor,\n flowLinks,\n ])\n\n return (\n <div\n className={cn(\n \"rounded-xl border border-border bg-card p-5 shadow-sm\",\n className,\n )}\n >\n {/* Header */}\n <div className=\"mb-6 flex flex-col gap-4\">\n <div className=\"flex flex-col gap-4 md:flex-row md:items-center md:justify-between\">\n <div className=\"flex items-center gap-4\">\n <h3 className=\"text-lg font-semibold text-foreground\">{title}</h3>\n\n {/* Counting Mode Toggle */}\n {countingModes.length > 1 && (\n <div className=\"flex items-center gap-2 rounded-lg border border-border bg-muted p-1\">\n {countingModes.map((mode) => (\n <button\n key={mode}\n onClick={() => setCountingMode(mode)}\n className={cn(\n \"rounded-md px-3 py-1 text-xs font-medium transition-all\",\n countingMode === mode\n ? \"border border-border bg-background text-foreground shadow-sm\"\n : \"text-muted-foreground hover:text-foreground\",\n )}\n >\n {mode}\n </button>\n ))}\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>\n <Info className=\"ml-1 h-3.5 w-3.5 cursor-help text-muted-foreground/70\" />\n </TooltipTrigger>\n <TooltipContent className=\"max-w-[250px] text-xs\">\n {countingModeTooltip}\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n </div>\n )}\n </div>\n\n {/* Filter Tabs */}\n {filterOptions.length > 1 && (\n <div className=\"flex items-center gap-1 self-start rounded-lg bg-muted p-1 md:self-auto\">\n {filterOptions.map((option) => (\n <button\n key={option}\n onClick={() => { setSelectedFilter(option); onFilterChange?.(option); }}\n className={cn(\n \"h-7 rounded-md border-none bg-transparent px-3 text-xs font-medium shadow-none transition-all hover:bg-background\",\n selectedFilter === option &&\n \"bg-background text-foreground shadow-sm\",\n )}\n >\n {option}\n </button>\n ))}\n </div>\n )}\n </div>\n </div>\n\n {/* Stage Metrics Row */}\n <div className=\"mb-2 grid gap-4\" style={{ gridTemplateColumns: `repeat(${stages.length}, minmax(0, 1fr))` }}>\n {stages.map((stage, index) => {\n const details = stageMetrics[stage.id]\n const timing = stageTimings[index] ?? null\n\n return (\n <TooltipProvider key={stage.id} delayDuration={100}>\n <Tooltip>\n <TooltipTrigger asChild>\n <div className=\"group relative flex cursor-pointer flex-col items-center rounded-lg p-2 text-center transition-colors hover:bg-muted\">\n <div\n className=\"mb-1 w-full truncate text-xs font-medium text-muted-foreground\"\n title={stage.label}\n >\n {stage.label}\n </div>\n <div className=\"mb-1 text-2xl font-bold text-foreground\">\n {stage.count.toLocaleString()}\n </div>\n <div className=\"mb-1 flex items-center justify-center gap-1 text-xs font-medium text-emerald-600\">\n {stage.trend} <TrendingUp className=\"h-3 w-3\" />\n </div>\n\n {/* Conversion badge + timing between stages */}\n {index < stages.length - 1 && stage.nextConversion && (\n <div className={cn(\n alwaysShowConversionBadges ? \"flex\" : \"hidden xl:flex\",\n \"absolute -right-2 top-1/2 z-10 -translate-y-1/2 translate-x-1/2 flex-col items-center\",\n )}>\n <span className=\"z-10 whitespace-nowrap rounded-full border border-border bg-muted px-1.5 py-0.5 text-[10px] font-medium text-muted-foreground shadow-sm\">\n {stage.nextConversion}\n </span>\n {timing && (\n <div className=\"mt-1 flex flex-col items-center\">\n <div className=\"h-2 w-px bg-border\" />\n <div className=\"whitespace-nowrap rounded bg-background/80 px-1 py-0.5 text-[9px] font-medium leading-3 text-muted-foreground/70 backdrop-blur-[2px]\">\n <span className=\"mr-1 font-semibold text-muted-foreground\">\n Med: {timing.median}\n </span>\n <span className=\"text-muted-foreground/70\">\n Avg: {timing.avg}\n </span>\n </div>\n </div>\n )}\n </div>\n )}\n\n {/* Connector line down to Sankey */}\n <div className=\"mx-auto mb-1 mt-2 h-4 w-px bg-border\" />\n </div>\n </TooltipTrigger>\n <TooltipContent\n className=\"border-none bg-transparent p-0 shadow-none\"\n sideOffset={8}\n >\n <StageHoverCard\n title={stage.label}\n count={stage.count}\n metrics={details}\n />\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n )\n })}\n </div>\n\n {/* Sankey Chart */}\n <div\n className=\"relative mt-4 w-full\"\n style={{ height: 400, minWidth: 0 }}\n >\n <ResponsiveSankey\n data={sankeyData}\n margin={effectiveMargin}\n align=\"justify\"\n colors={(node: any) => node.nodeColor || \"#94a3b8\"}\n nodeOpacity={1}\n nodeHoverOthersOpacity={0.35}\n nodeThickness={18}\n nodeSpacing={16}\n nodeBorderWidth={0}\n nodeBorderRadius={3}\n linkOpacity={0.5}\n linkHoverOthersOpacity={0.1}\n linkContract={3}\n enableLinkGradient\n labelPosition=\"outside\"\n labelOrientation=\"horizontal\"\n labelPadding={effectiveLabelPadding}\n label={(node: any) => nodeAmounts?.[node.id] ? `${node.id} (${nodeAmounts[node.id]})` : node.id}\n labelTextColor={{ from: \"color\", modifiers: [[\"darker\", 1]] }}\n nodeTooltip={({ node }: any) => {\n const unit = effectiveTerminalNodeIds.has(node.id) ? effectiveTerminalUnitLabel : effectiveUnitLabel\n return (\n <div className=\"rounded-md border border-border bg-card p-2 text-xs shadow-lg\">\n <span className=\"mb-1 block font-bold\">{node.id}{nodeAmounts?.[node.id] ? ` — ${nodeAmounts[node.id]}` : \"\"}</span>\n <span>{node.value} {unit}</span>\n </div>\n )\n }}\n linkTooltip={({ link }: any) => {\n const unit = effectiveTerminalNodeIds.has(link.target.id) ? effectiveTerminalUnitLabel : effectiveUnitLabel\n return (\n <div className=\"rounded-md border border-border bg-card p-2 text-xs shadow-lg\">\n <span className=\"mb-1 block font-bold\">\n {link.source.id} → {link.target.id}\n </span>\n <span>{link.value} {unit}</span>\n </div>\n )\n }}\n />\n </div>\n </div>\n )\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Progress as ProgressPrimitive } from \"radix-ui\"\n\nimport { cn } from \"../../../lib/utils\"\n\nfunction Progress({\n className,\n value,\n ...props\n}: React.ComponentProps<typeof ProgressPrimitive.Root>) {\n return (\n <ProgressPrimitive.Root\n data-slot=\"progress\"\n className={cn(\n \"bg-primary/20 relative h-2 w-full overflow-hidden rounded-full\",\n className\n )}\n {...props}\n >\n <ProgressPrimitive.Indicator\n data-slot=\"progress-indicator\"\n className=\"bg-primary h-full w-full flex-1 transition-all\"\n style={{ transform: `translateX(-${100 - (value || 0)}%)` }}\n />\n </ProgressPrimitive.Root>\n )\n}\n\nexport { Progress }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { ArrowUp, Paperclip } from \"lucide-react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { Button } from \"./button\"\n\nexport type QuickActionPriority = \"normal\" | \"high\" | \"urgent\"\n\nexport interface QuickActionSubmitPayload {\n message: string\n priority: QuickActionPriority\n}\n\ninterface QuickActionChatAreaProps\n extends Omit<React.ComponentProps<\"div\">, \"onSubmit\"> {\n placeholder?: string\n submitLabel?: string\n value?: string\n defaultValue?: string\n onValueChange?: (value: string) => void\n priority?: QuickActionPriority\n defaultPriority?: QuickActionPriority\n onPriorityChange?: (priority: QuickActionPriority) => void\n onSubmit: (payload: QuickActionSubmitPayload) => void\n allowEmptySubmit?: boolean\n clearOnSubmit?: boolean\n showEnterHint?: boolean\n}\n\nexport function QuickActionChatArea({\n className,\n placeholder = \"How can I help you today?\",\n submitLabel = \"Create Task\",\n value,\n defaultValue = \"\",\n onValueChange,\n priority,\n defaultPriority = \"normal\",\n onPriorityChange,\n onSubmit,\n allowEmptySubmit = false,\n clearOnSubmit = true,\n showEnterHint = true,\n ...props\n}: QuickActionChatAreaProps) {\n const [internalValue, setInternalValue] = React.useState(defaultValue)\n const [internalPriority, setInternalPriority] =\n React.useState<QuickActionPriority>(defaultPriority)\n\n const composerValue = value ?? internalValue\n const selectedPriority = priority ?? internalPriority\n\n const setComposerValue = React.useCallback(\n (nextValue: string) => {\n if (value === undefined) {\n setInternalValue(nextValue)\n }\n\n onValueChange?.(nextValue)\n },\n [onValueChange, value]\n )\n\n const setPriorityValue = React.useCallback(\n (nextPriority: QuickActionPriority) => {\n if (priority === undefined) {\n setInternalPriority(nextPriority)\n }\n\n onPriorityChange?.(nextPriority)\n },\n [onPriorityChange, priority]\n )\n\n const canSubmit = allowEmptySubmit || composerValue.trim().length > 0\n\n const handleSubmit = React.useCallback(() => {\n if (!canSubmit) {\n return\n }\n\n onSubmit({\n message: composerValue,\n priority: selectedPriority,\n })\n\n if (clearOnSubmit) {\n setComposerValue(\"\")\n }\n }, [canSubmit, clearOnSubmit, composerValue, onSubmit, selectedPriority, setComposerValue])\n\n return (\n <div\n className={cn(\"border-t border-border bg-background p-4\", className)}\n {...props}\n >\n <div className=\"mx-auto w-full max-w-2xl overflow-hidden rounded-md border border-border bg-background shadow-sm transition-all focus-within:border-[#1B4332] focus-within:ring-2 focus-within:ring-[#1B4332]/20\">\n <textarea\n value={composerValue}\n onChange={(event) => setComposerValue(event.target.value)}\n placeholder={placeholder}\n className=\"min-h-[80px] w-full resize-none p-4 text-foreground outline-none placeholder:text-muted-foreground\"\n onKeyDown={(event) => {\n if (event.key === \"Enter\" && !event.shiftKey) {\n event.preventDefault()\n handleSubmit()\n }\n }}\n />\n <div className=\"flex items-center justify-between border-t border-border bg-muted px-3 py-2\">\n <div className=\"flex items-center gap-2\">\n <button\n type=\"button\"\n className=\"rounded-md p-1.5 text-muted-foreground transition-colors hover:bg-muted hover:text-foreground\"\n title=\"Attach file\"\n aria-label=\"Attach file\"\n >\n <Paperclip className=\"h-4 w-4\" />\n </button>\n <div className=\"mx-1 h-4 w-px bg-muted\" />\n <select\n value={selectedPriority}\n onChange={(event) =>\n setPriorityValue(event.target.value as QuickActionPriority)\n }\n className=\"cursor-pointer rounded-md bg-transparent px-2 py-1 text-xs font-medium text-muted-foreground transition-colors hover:bg-muted\"\n aria-label=\"Task priority\"\n >\n <option value=\"normal\">Normal</option>\n <option value=\"high\">High</option>\n <option value=\"urgent\">Urgent</option>\n </select>\n </div>\n <div className=\"flex items-center gap-3\">\n {showEnterHint ? (\n <span className=\"hidden text-xs text-muted-foreground sm:inline\">\n Press ⏎ to create\n </span>\n ) : null}\n <Button\n size=\"sm\"\n onClick={handleSubmit}\n disabled={!canSubmit}\n className=\"gap-2 rounded-md bg-[#1B4332] text-white hover:bg-[#235742] disabled:cursor-not-allowed disabled:opacity-50\"\n >\n {submitLabel}\n <ArrowUp className=\"h-4 w-4\" />\n </Button>\n </div>\n </div>\n </div>\n </div>\n )\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { X } from \"lucide-react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle } from \"./dialog\"\n\ntype TemplateIcon = React.ComponentType<{ className?: string }>\n\nexport interface QuickActionTemplate {\n id: string\n label: string\n description: string\n icon: TemplateIcon\n category?: string\n}\n\nexport type QuickActionPriority = \"normal\" | \"high\" | \"urgent\"\n\nexport interface QuickActionTaskDraft {\n templateId: string | null\n message: string\n priority: QuickActionPriority\n}\n\ninterface QuickActionModalProps {\n open: boolean\n onOpenChange: (open: boolean) => void\n templates?: QuickActionTemplate[]\n title?: string\n description?: string\n className?: string\n onCreateTask?: (draft: QuickActionTaskDraft) => void\n}\n\nconst DEFAULT_TEMPLATES: QuickActionTemplate[] = [\n {\n id: \"call_patient\",\n label: \"Call Patient\",\n icon: ({ className }) => (\n <svg className={className} fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M3 5a2 2 0 012-2h3.28a1 1 0 01.948.684l1.498 4.493a1 1 0 01-.502 1.21l-2.257 1.13a11.042 11.042 0 005.516 5.516l1.13-2.257a1 1 0 011.21-.502l4.493 1.498a1 1 0 01.684.949V19a2 2 0 01-2 2h-1C9.716 21 3 14.284 3 6V5z\" />\n </svg>\n ),\n description: \"Schedule or log a call\",\n category: \"communication\",\n },\n {\n id: \"call_provider\",\n label: \"Call Provider\",\n icon: ({ className }) => (\n <svg className={className} fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M19 21V5a2 2 0 00-2-2H7a2 2 0 00-2 2v16m14 0h2m-2 0h-5m-9 0H3m2 0h5M9 7h1m-1 4h1m4-4h1m-1 4h1m-5 10v-5a1 1 0 011-1h2a1 1 0 011 1v5m-4 0h4\" />\n </svg>\n ),\n description: \"Contact referring office\",\n category: \"communication\",\n },\n {\n id: \"call_payer\",\n label: \"Call Payer\",\n icon: ({ className }) => (\n <svg className={className} fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M3 10h18M7 15h1m4 0h1m-7 4h12a3 3 0 003-3V8a3 3 0 00-3-3H6a3 3 0 00-3 3v8a3 3 0 003 3z\" />\n </svg>\n ),\n description: \"Verify benefits or status\",\n category: \"admin\",\n },\n {\n id: \"send_fax\",\n label: \"Send Fax\",\n icon: ({ className }) => (\n <svg className={className} fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z\" />\n </svg>\n ),\n description: \"Request records or auth\",\n category: \"communication\",\n },\n {\n id: \"verify_benefits\",\n label: \"Verify Benefits\",\n icon: ({ className }) => (\n <svg className={className} fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z\" />\n </svg>\n ),\n description: \"Check eligibility status\",\n category: \"admin\",\n },\n {\n id: \"create_referral\",\n label: \"New Referral\",\n icon: ({ className }) => (\n <svg className={className} fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-3 7h3m-3 4h3m-6-4h.01M9 16h.01\" />\n </svg>\n ),\n description: \"Process incoming referral\",\n category: \"clinical\",\n },\n {\n id: \"manual_task\",\n label: \"Manual Task\",\n icon: ({ className }) => (\n <svg className={className} fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z\" />\n </svg>\n ),\n description: \"Create a custom to-do\",\n category: \"admin\",\n },\n]\n\nexport function QuickActionModal({\n open,\n onOpenChange,\n templates = DEFAULT_TEMPLATES,\n title = \"Quick Action\",\n description = \"Choose a template or describe your task below.\",\n className,\n onCreateTask,\n}: QuickActionModalProps) {\n const [freeformText, setFreeformText] = React.useState(\"\")\n const [selectedPriority, setSelectedPriority] = React.useState<QuickActionPriority>(\"normal\")\n const inputRef = React.useRef<HTMLInputElement>(null)\n\n React.useEffect(() => {\n if (open) {\n setFreeformText(\"\")\n setSelectedPriority(\"normal\")\n setTimeout(() => inputRef.current?.focus(), 100)\n }\n }, [open])\n\n const handleTemplateClick = React.useCallback(\n (template: QuickActionTemplate) => {\n onCreateTask?.({\n templateId: template.id,\n message: \"\",\n priority: \"normal\",\n })\n onOpenChange(false)\n },\n [onCreateTask, onOpenChange],\n )\n\n const handleFreeformSubmit = React.useCallback(\n (e?: React.FormEvent) => {\n e?.preventDefault()\n if (!freeformText.trim()) return\n\n onCreateTask?.({\n templateId: null,\n message: freeformText.trim(),\n priority: selectedPriority,\n })\n onOpenChange(false)\n },\n [freeformText, selectedPriority, onCreateTask, onOpenChange],\n )\n\n return (\n <Dialog open={open} onOpenChange={onOpenChange}>\n <DialogContent\n showCloseButton={false}\n className={cn(\n \"flex max-h-[85vh] flex-col gap-0 overflow-hidden rounded-2xl border border-border bg-card p-0 shadow-2xl sm:max-w-2xl\",\n className,\n )}\n >\n <DialogHeader className=\"sr-only\">\n <DialogTitle>{title}</DialogTitle>\n <DialogDescription>{description}</DialogDescription>\n </DialogHeader>\n\n <div className=\"min-h-0 flex-1 overflow-y-auto\">\n {/* Header */}\n <div className=\"relative pt-8 px-6 text-center\">\n <button\n type=\"button\"\n onClick={() => onOpenChange(false)}\n className=\"absolute top-4 right-4 p-2 text-muted-foreground hover:text-foreground transition-colors rounded-full hover:bg-muted/50\"\n aria-label=\"Close\"\n >\n <X className=\"w-5 h-5\" />\n </button>\n\n <div className=\"absolute top-6 left-6 flex items-center gap-2\">\n <div className=\"w-5 h-5 rounded flex items-center justify-center bg-muted/80\">\n <svg\n className=\"w-3 h-3 text-muted-foreground\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M13 10V3L4 14h7v7l9-11h-7z\"\n />\n </svg>\n </div>\n <span className=\"text-sm font-semibold text-foreground/80\">{title}</span>\n </div>\n\n <div className=\"mt-12 mb-8\">\n <h3 className=\"text-2xl font-bold text-foreground tracking-tight\">\n Let's knock something off your list\n </h3>\n <p className=\"mt-2 text-sm text-muted-foreground\">{description}</p>\n </div>\n </div>\n\n {/* Template Grid */}\n <div className=\"px-6 pb-6 grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-3\">\n {templates.map((template) => (\n <button\n key={template.id}\n type=\"button\"\n onClick={() => handleTemplateClick(template)}\n className=\"flex flex-col items-start gap-3 p-5 min-h-[9.5rem] rounded-xl border border-border bg-card hover:border-primary/20 hover:shadow-md hover:translate-y-[-1px] transition-all text-left group relative\"\n >\n <div className=\"p-2 rounded-lg bg-muted/50 group-hover:bg-primary/5 transition-colors\">\n <template.icon className=\"w-5 h-5 text-muted-foreground group-hover:text-primary transition-colors\" />\n </div>\n <div className=\"relative z-10 w-full\">\n <span className=\"block text-sm font-semibold text-foreground mb-1\">\n {template.label}\n </span>\n <span className=\"block text-xs text-muted-foreground leading-tight\">\n {template.description}\n </span>\n </div>\n </button>\n ))}\n </div>\n </div>\n\n {/* Freeform Input */}\n <form\n onSubmit={handleFreeformSubmit}\n className=\"shrink-0 p-6 bg-muted/5 border-t border-border\"\n >\n <div className=\"relative flex flex-col gap-2 rounded-xl border border-border bg-background p-2 shadow-sm focus-within:ring-2 focus-within:ring-primary/10 focus-within:border-primary/50 transition-all\">\n <input\n ref={inputRef}\n type=\"text\"\n value={freeformText}\n onChange={(e) => setFreeformText(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" && !e.shiftKey) {\n e.preventDefault()\n handleFreeformSubmit()\n }\n }}\n placeholder=\"How can I help you today?\"\n className=\"w-full bg-transparent px-4 py-3 text-sm text-foreground placeholder-muted-foreground focus:outline-none\"\n />\n\n <div className=\"flex items-center justify-between pt-2 px-2 pb-2 border-t border-border/50 mt-1\">\n <div className=\"flex items-center gap-2\">\n <button\n type=\"button\"\n className=\"p-1.5 text-muted-foreground hover:text-foreground hover:bg-muted rounded-md transition-colors\"\n title=\"Add attachment\"\n >\n <svg\n className=\"w-4 h-4\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M15.172 7l-6.586 6.586a2 2 0 102.828 2.828l6.414-6.586a4 4 0 00-5.656-5.656l-6.415 6.585a6 6 0 108.486 8.486L20.5 13\"\n />\n </svg>\n </button>\n <div className=\"h-4 w-px bg-border mx-1\" />\n <select\n value={selectedPriority}\n onChange={(e) =>\n setSelectedPriority(e.target.value as QuickActionPriority)\n }\n className=\"flex items-center gap-1.5 px-2 py-1 text-xs font-medium text-muted-foreground hover:text-foreground hover:bg-muted rounded-md transition-colors bg-transparent cursor-pointer border-none outline-none\"\n aria-label=\"Priority\"\n >\n <option value=\"normal\">Normal</option>\n <option value=\"high\">High</option>\n <option value=\"urgent\">Urgent</option>\n </select>\n </div>\n\n <div className=\"flex items-center gap-3\">\n <span className=\"text-[10px] text-muted-foreground font-medium hidden sm:inline-block opacity-70\">\n Press <kbd className=\"font-sans\">↵</kbd> to create\n </span>\n <button\n type=\"submit\"\n disabled={!freeformText.trim()}\n className=\"flex items-center gap-1.5 rounded-lg bg-primary px-3 py-1.5 text-xs font-medium text-primary-foreground hover:bg-primary/90 disabled:opacity-50 disabled:cursor-not-allowed transition-all shadow-sm\"\n >\n Create\n <svg\n className=\"w-3 h-3\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M5 10l7-7m0 0l7 7m-7-7v18\"\n />\n </svg>\n </button>\n </div>\n </div>\n </div>\n </form>\n </DialogContent>\n </Dialog>\n )\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport {\n Activity,\n BarChart2,\n Building,\n ChevronDown,\n Code,\n Inbox,\n Link as LinkIcon,\n LogOut,\n MessageSquare,\n MoreHorizontal,\n MoreVertical,\n PanelLeftClose,\n PanelLeftOpen,\n Plus,\n Search,\n Settings,\n Users,\n} from \"lucide-react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { Avatar, AvatarFallback } from \"./avatar\"\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from \"./dropdown-menu\"\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"./tooltip\"\nimport { QuickActionModal, type QuickActionTaskDraft, type QuickActionTemplate } from \"./quick-action-modal\"\n\nexport interface SidebarNavItem {\n id: string\n label: string\n icon: React.ComponentType<{ className?: string }>\n children?: SidebarNavItem[]\n}\n\nexport interface SidebarNavSection {\n title?: string\n items: SidebarNavItem[]\n moreItems?: SidebarNavItem[]\n}\n\nexport interface SidebarUserProfile {\n name: string\n email: string\n initials?: string\n}\n\nexport interface UserMenuItem {\n id: string\n label: string\n icon: React.ComponentType<{ className?: string }>\n destructive?: boolean\n}\n\nexport type ActiveVariant = \"default\" | \"gradient\"\n\ninterface QuickActionSidebarNavProps extends React.ComponentProps<\"aside\"> {\n brandLabel?: string\n brandSubtitle?: string\n brandImage?: string\n hideQuickAction?: boolean\n navSections?: SidebarNavSection[]\n activeItemId?: string\n activeVariant?: ActiveVariant\n onNavigate?: (itemId: string) => void\n user?: SidebarUserProfile\n userMenuItems?: UserMenuItem[]\n onUserMenuAction?: (itemId: string) => void\n onCreateTask?: (draft: QuickActionTaskDraft) => void\n defaultCollapsed?: boolean\n quickActionTemplates?: QuickActionTemplate[]\n quickActionTitle?: string\n quickActionDescription?: string\n}\n\nconst DEFAULT_NAV_SECTIONS: SidebarNavSection[] = [\n {\n items: [\n { id: \"home\", label: \"Home\", icon: Inbox },\n { id: \"inbox\", label: \"Inbox\", icon: Inbox },\n ],\n },\n {\n title: \"Focus\",\n items: [\n { id: \"inbox\", label: \"Unibox\", icon: Inbox },\n { id: \"accounts\", label: \"My Accounts\", icon: Building },\n { id: \"activity\", label: \"Activity\", icon: Activity },\n { id: \"dashboard\", label: \"Insights\", icon: BarChart2 },\n ],\n moreItems: [\n { id: \"search\", label: \"Search\", icon: Search },\n ],\n },\n {\n title: \"Assistant\",\n items: [\n { id: \"new-chat\", label: \"New chat\", icon: Plus },\n { id: \"chats\", label: \"Chats\", icon: MessageSquare },\n ],\n },\n {\n title: \"Your Teams\",\n items: [\n { id: \"team-a\", label: \"Team A\", icon: Users },\n { id: \"team-b\", label: \"Team B\", icon: Users },\n ],\n moreItems: [\n { id: \"more-teams\", label: \"More\", icon: MoreHorizontal },\n ],\n },\n]\n\nconst DEFAULT_USER: SidebarUserProfile = {\n name: \"John Doe\",\n email: \"jdoe@acmeco.com\",\n initials: \"JD\",\n}\n\nconst DEFAULT_USER_MENU: UserMenuItem[] = [\n { id: \"settings\", label: \"Settings\", icon: Settings },\n { id: \"dev\", label: \"Dev\", icon: Code },\n { id: \"integrations\", label: \"Integrations\", icon: LinkIcon },\n { id: \"sign-out\", label: \"Sign out\", icon: LogOut, destructive: true },\n]\n\nfunction NavItemRow({\n item,\n isActive,\n isCollapsed,\n activeVariant = \"default\",\n onClick,\n onNavigate,\n activeItemId,\n expandedItems,\n onToggleExpand,\n depth = 0,\n}: {\n item: SidebarNavItem\n isActive: boolean\n isCollapsed: boolean\n activeVariant?: ActiveVariant\n onClick?: () => void\n onNavigate?: (id: string) => void\n activeItemId?: string\n expandedItems?: Record<string, boolean>\n onToggleExpand?: (itemId: string) => void\n depth?: number\n}) {\n const activeClasses =\n activeVariant === \"gradient\"\n ? \"bg-gradient-to-r from-primary/10 to-transparent text-primary\"\n : \"bg-sidebar-accent text-sidebar-accent-foreground\"\n\n const iconActiveClasses =\n activeVariant === \"gradient\" ? \"text-primary\" : \"\"\n\n const hasChildren = item.children && item.children.length > 0\n const isExpanded = expandedItems?.[item.id] ?? false\n\n const content = (\n <div>\n <div className=\"flex items-center\">\n <button\n type=\"button\"\n onClick={onClick}\n className={cn(\n \"flex flex-1 items-center gap-3 rounded-lg text-sm font-medium transition-colors\",\n isCollapsed ? \"justify-center p-2\" : \"px-3 py-2\",\n isActive\n ? activeClasses\n : \"text-sidebar-foreground/70 hover:text-sidebar-foreground hover:bg-sidebar-accent\",\n )}\n style={depth > 0 && !isCollapsed ? { paddingLeft: `${0.75 + depth * 1}rem` } : undefined}\n >\n <item.icon className={cn(\"shrink-0\", isCollapsed ? \"w-5 h-5\" : \"w-4 h-4\", isActive && iconActiveClasses)} />\n {!isCollapsed && <span className=\"flex-1 truncate text-left\">{item.label}</span>}\n </button>\n {hasChildren && !isCollapsed && (\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation()\n onToggleExpand?.(item.id)\n }}\n className=\"p-1 mr-1 rounded text-sidebar-foreground/40 hover:text-sidebar-foreground hover:bg-sidebar-accent transition-colors\"\n >\n <ChevronDown\n className={cn(\n \"w-3.5 h-3.5 transition-transform duration-200\",\n !isExpanded && \"-rotate-90\",\n )}\n />\n </button>\n )}\n </div>\n {hasChildren && !isCollapsed && isExpanded && (\n <div className=\"space-y-0.5\">\n {item.children!.map((child) => (\n <NavItemRow\n key={child.id}\n item={child}\n isActive={activeItemId === child.id}\n isCollapsed={isCollapsed}\n activeVariant={activeVariant}\n activeItemId={activeItemId}\n onClick={() => onNavigate?.(child.id)}\n onNavigate={onNavigate}\n expandedItems={expandedItems}\n onToggleExpand={onToggleExpand}\n depth={depth + 1}\n />\n ))}\n </div>\n )}\n </div>\n )\n\n if (isCollapsed) {\n return (\n <Tooltip>\n <TooltipTrigger asChild>\n <button\n type=\"button\"\n onClick={onClick}\n className={cn(\n \"flex w-full items-center gap-3 rounded-lg text-sm font-medium transition-colors\",\n \"justify-center p-2\",\n isActive\n ? activeClasses\n : \"text-sidebar-foreground/70 hover:text-sidebar-foreground hover:bg-sidebar-accent\",\n )}\n >\n <item.icon className={cn(\"shrink-0 w-5 h-5\", isActive && iconActiveClasses)} />\n </button>\n </TooltipTrigger>\n <TooltipContent side=\"right\">{item.label}</TooltipContent>\n </Tooltip>\n )\n }\n\n return content\n}\n\nfunction NavSection({\n section,\n activeItemId,\n isCollapsed,\n activeVariant = \"default\",\n onNavigate,\n}: {\n section: SidebarNavSection\n activeItemId?: string\n isCollapsed: boolean\n activeVariant?: ActiveVariant\n onNavigate?: (id: string) => void\n}) {\n const [isExpanded, setIsExpanded] = React.useState(true)\n const [expandedItems, setExpandedItems] = React.useState<Record<string, boolean>>({})\n const hasTitle = !isCollapsed && section.title\n\n const handleToggleExpand = React.useCallback((itemId: string) => {\n setExpandedItems((prev) => ({ ...prev, [itemId]: !prev[itemId] }))\n }, [])\n\n return (\n <div className=\"px-3 py-2\">\n {hasTitle && (\n <button\n type=\"button\"\n onClick={() => setIsExpanded(!isExpanded)}\n className=\"flex w-full items-center justify-between mb-1 px-3 group cursor-pointer\"\n >\n <span className=\"text-xs font-bold tracking-widest text-sidebar-foreground/50 uppercase\">\n {section.title}\n </span>\n <ChevronDown\n className={cn(\n \"w-3 h-3 text-sidebar-foreground/40 transition-transform duration-200\",\n !isExpanded && \"-rotate-90\",\n )}\n />\n </button>\n )}\n {(isExpanded || isCollapsed || !section.title) && (\n <div className=\"space-y-0.5\">\n {section.items.map((item) => (\n <NavItemRow\n key={item.id}\n item={item}\n isActive={activeItemId === item.id}\n isCollapsed={isCollapsed}\n activeVariant={activeVariant}\n activeItemId={activeItemId}\n onClick={() => onNavigate?.(item.id)}\n onNavigate={onNavigate}\n expandedItems={expandedItems}\n onToggleExpand={handleToggleExpand}\n />\n ))}\n {!isCollapsed && section.moreItems && section.moreItems.length > 0 && (\n <DropdownMenu>\n <DropdownMenuTrigger className=\"flex items-center gap-3 w-full px-3 py-2 rounded-lg text-sm font-medium text-sidebar-foreground/70 hover:text-sidebar-foreground hover:bg-sidebar-accent transition-colors outline-none\">\n <MoreHorizontal className=\"shrink-0 w-4 h-4\" />\n <span className=\"flex-1 text-left\">More</span>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"start\" side=\"bottom\" className=\"w-48\">\n {section.moreItems.map((item) => (\n <DropdownMenuItem\n key={item.id}\n onClick={() => onNavigate?.(item.id)}\n className=\"cursor-pointer\"\n >\n <item.icon className=\"mr-2 w-4 h-4 text-muted-foreground\" />\n <span>{item.label}</span>\n </DropdownMenuItem>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n )}\n {isCollapsed &&\n section.moreItems?.map((item) => (\n <NavItemRow\n key={item.id}\n item={item}\n isActive={activeItemId === item.id}\n isCollapsed={isCollapsed}\n activeVariant={activeVariant}\n onClick={() => onNavigate?.(item.id)}\n />\n ))}\n </div>\n )}\n </div>\n )\n}\n\nexport function QuickActionSidebarNav({\n className,\n brandLabel = \"ACME CO\",\n brandSubtitle = \"Placeholder\",\n brandImage,\n hideQuickAction,\n navSections = DEFAULT_NAV_SECTIONS,\n activeItemId = \"inbox\",\n activeVariant = \"default\",\n onNavigate,\n user = DEFAULT_USER,\n userMenuItems = DEFAULT_USER_MENU,\n onUserMenuAction,\n onCreateTask,\n defaultCollapsed = false,\n quickActionTemplates,\n quickActionTitle,\n quickActionDescription,\n ...props\n}: QuickActionSidebarNavProps) {\n const [isQuickActionOpen, setIsQuickActionOpen] = React.useState(false)\n const [isCollapsed, setIsCollapsed] = React.useState(defaultCollapsed)\n\n const initials =\n user.initials ??\n (user.name\n ? user.name.charAt(0).toUpperCase()\n : user.email\n ? user.email.charAt(0).toUpperCase()\n : \"U\")\n\n return (\n <TooltipProvider delayDuration={0}>\n <aside\n className={cn(\n \"flex h-full flex-col overflow-hidden bg-sidebar text-sidebar-foreground border-r border-sidebar-border transition-all duration-200\",\n isCollapsed ? \"w-16\" : \"w-64\",\n className,\n )}\n {...props}\n >\n {/* Header */}\n <div\n className={cn(\n \"relative flex shrink-0 items-center border-b border-sidebar-border\",\n isCollapsed ? \"justify-center h-16 px-2\" : \"px-6 py-4\",\n )}\n >\n {!isCollapsed && (\n <div className=\"flex items-center gap-2.5 pr-8\">\n {brandImage ? (\n <img src={brandImage} alt={brandLabel} className=\"h-10 object-contain\" />\n ) : (\n <>\n <div className=\"flex h-6 w-6 items-center justify-center rounded-full bg-sidebar-foreground text-sidebar\">\n <svg viewBox=\"0 0 24 24\" fill=\"currentColor\" className=\"w-3.5 h-3.5\">\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n </svg>\n </div>\n <div className=\"flex flex-col gap-0.5\">\n <span className=\"text-sm font-bold tracking-tight\">\n {brandLabel}\n </span>\n {brandSubtitle && (\n <span className=\"text-[10px] font-medium text-sidebar-foreground/50 uppercase tracking-wide\">\n {brandSubtitle}\n </span>\n )}\n </div>\n </>\n )}\n </div>\n )}\n\n <button\n type=\"button\"\n onClick={() => setIsCollapsed(!isCollapsed)}\n className={cn(\n \"p-1.5 rounded-md text-sidebar-foreground/50 hover:text-sidebar-foreground hover:bg-sidebar-accent transition-colors\",\n isCollapsed ? \"\" : \"absolute right-5 top-1/2 -translate-y-1/2\",\n )}\n title={isCollapsed ? \"Expand sidebar\" : \"Collapse sidebar\"}\n >\n {isCollapsed ? (\n <PanelLeftOpen className=\"w-4 h-4\" />\n ) : (\n <PanelLeftClose className=\"w-4 h-4\" />\n )}\n </button>\n </div>\n\n {/* Navigation */}\n <div className=\"flex-1 overflow-y-auto overflow-x-hidden py-3 space-y-1\">\n {navSections.map((section, idx) => (\n <React.Fragment key={section.title ?? idx}>\n {idx > 0 && <div className=\"mx-4 my-2 border-t border-sidebar-border\" />}\n <NavSection\n section={section}\n activeItemId={activeItemId}\n isCollapsed={isCollapsed}\n activeVariant={activeVariant}\n onNavigate={onNavigate}\n />\n </React.Fragment>\n ))}\n </div>\n\n {!hideQuickAction && (\n <div className={cn(\"px-3 pb-3\", isCollapsed ? \"hidden\" : \"block\")}>\n <button\n type=\"button\"\n onClick={() => setIsQuickActionOpen(true)}\n className=\"w-full flex items-center justify-between px-3 py-2.5 rounded-lg border border-sidebar-border bg-sidebar-primary text-sidebar-primary-foreground hover:bg-sidebar-primary/90 transition-colors group shadow-sm\"\n >\n <div className=\"flex items-center gap-2\">\n <svg\n className=\"w-4 h-4 text-sidebar-primary-foreground/80 group-hover:text-sidebar-primary-foreground transition-colors\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M13 10V3L4 14h7v7l9-11h-7z\"\n />\n </svg>\n <span className=\"text-sm font-medium\">Quick Action</span>\n </div>\n <kbd className=\"hidden sm:inline-flex items-center gap-0.5 px-1.5 py-0.5 text-[11px] font-mono rounded bg-sidebar-primary-foreground/20 text-sidebar-primary-foreground\">\n <span className=\"text-xs\">⌘</span>K\n </kbd>\n </button>\n </div>\n )}\n\n {isCollapsed && !hideQuickAction && (\n <div className=\"px-2 pb-3\">\n <Tooltip>\n <TooltipTrigger asChild>\n <button\n type=\"button\"\n onClick={() => setIsQuickActionOpen(true)}\n className=\"flex w-full items-center justify-center rounded-lg bg-sidebar-primary p-2.5 text-sidebar-primary-foreground shadow-sm transition-colors hover:bg-sidebar-primary/90\"\n title=\"Quick Action (⌘K)\"\n >\n <svg\n className=\"w-5 h-5\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M13 10V3L4 14h7v7l9-11h-7z\"\n />\n </svg>\n </button>\n </TooltipTrigger>\n <TooltipContent side=\"right\">Quick Action (⌘K)</TooltipContent>\n </Tooltip>\n </div>\n )}\n\n {/* User Profile Footer */}\n <div className=\"p-3 border-t border-sidebar-border shrink-0\">\n <DropdownMenu>\n <DropdownMenuTrigger\n className={cn(\n \"flex items-center w-full rounded-lg hover:bg-sidebar-accent transition-colors outline-none\",\n isCollapsed ? \"justify-center p-1\" : \"p-2 gap-3\",\n )}\n >\n <Avatar className=\"h-8 w-8 rounded-md\">\n <AvatarFallback className=\"rounded-md bg-primary/10 text-primary text-xs font-medium\">\n {initials}\n </AvatarFallback>\n </Avatar>\n\n {!isCollapsed && (\n <div className=\"flex flex-col items-start flex-1 truncate\">\n <span className=\"text-sm font-medium leading-none truncate\">\n {user.name}\n </span>\n <span className=\"text-xs text-sidebar-foreground/50 truncate mt-0.5\">\n {user.email}\n </span>\n </div>\n )}\n\n {!isCollapsed && (\n <MoreVertical className=\"w-4 h-4 text-sidebar-foreground/50 shrink-0\" />\n )}\n </DropdownMenuTrigger>\n\n <DropdownMenuContent align=\"end\" side=\"right\" sideOffset={8} className=\"w-56\">\n <DropdownMenuLabel className=\"font-normal\">\n <div className=\"flex flex-col space-y-1\">\n <p className=\"text-sm font-medium leading-none\">{user.name}</p>\n <p className=\"text-xs leading-none text-muted-foreground\">{user.email}</p>\n </div>\n </DropdownMenuLabel>\n <DropdownMenuSeparator />\n {userMenuItems.map((item, idx) => {\n const isLast = idx === userMenuItems.length - 1\n const showSepBefore = item.destructive && idx > 0\n return (\n <React.Fragment key={item.id}>\n {showSepBefore && <DropdownMenuSeparator />}\n <DropdownMenuItem\n onClick={() => onUserMenuAction?.(item.id)}\n className={cn(\n \"cursor-pointer\",\n item.destructive && \"text-destructive focus:text-destructive\",\n )}\n >\n <item.icon className=\"mr-2 h-4 w-4\" />\n <span>{item.label}</span>\n </DropdownMenuItem>\n </React.Fragment>\n )\n })}\n </DropdownMenuContent>\n </DropdownMenu>\n </div>\n </aside>\n\n {!hideQuickAction && (\n <QuickActionModal\n open={isQuickActionOpen}\n onOpenChange={setIsQuickActionOpen}\n onCreateTask={onCreateTask}\n templates={quickActionTemplates}\n title={quickActionTitle}\n description={quickActionDescription}\n />\n )}\n </TooltipProvider>\n )\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport {\n CheckSquare,\n Clock,\n DollarSign,\n HelpCircle,\n MessageSquare,\n SkipForward,\n ThumbsDown,\n ThumbsUp,\n Users,\n X,\n} from \"lucide-react\"\nimport { Badge } from \"./badge\"\nimport { Button } from \"./button\"\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from \"./tooltip\"\n\nexport interface RecommendedAction {\n id: string\n title: string\n reason: string\n category?: \"Churn\" | \"Expand\" | \"Nurture\" | string\n priority?: \"High\" | \"Medium\" | \"Low\" | string\n dueDate?: string\n confidence?: number\n signals?: string[]\n revenueImpact?: number\n}\n\ninterface RecommendedActionsSectionProps {\n actions: RecommendedAction[]\n title?: string\n onQueueAction?: (action: RecommendedAction) => void\n onDismissAction?: (action: RecommendedAction) => void\n onFeedback?: (actionId: string, feedback: \"useful\" | \"not_useful\", comment: string) => void\n}\n\nfunction getCategoryBadgeClass(category?: string) {\n if (category === \"Churn\") return \"bg-white text-black border-red-300\"\n if (category === \"Expand\") return \"bg-green-100 text-green-800 border-green-200\"\n if (category === \"Nurture\") return \"bg-blue-100 text-blue-800 border-blue-200\"\n return \"bg-muted text-muted-foreground border-border\"\n}\n\nfunction getPriorityBadgeClass(priority?: string) {\n if (priority === \"High\") return \"border-foreground text-foreground\"\n if (priority === \"Medium\") return \"border-muted-foreground text-muted-foreground\"\n return \"border-border text-muted-foreground\"\n}\n\nexport function RecommendedActionsSection({\n actions,\n title = \"Recommended Actions\",\n onQueueAction,\n onDismissAction,\n onFeedback,\n}: RecommendedActionsSectionProps) {\n const [dismissedActions, setDismissedActions] = React.useState<Set<string>>(new Set())\n const [actionFeedback, setActionFeedback] = React.useState<Record<string, \"useful\" | \"not_useful\" | null>>({})\n const [feedbackComment, setFeedbackComment] = React.useState<Record<string, string>>({})\n const [commentOpen, setCommentOpen] = React.useState<Record<string, boolean>>({})\n\n const visibleActions = actions.filter((action) => !dismissedActions.has(action.id))\n\n const handleDismissAction = (action: RecommendedAction) => {\n setDismissedActions((previous) => new Set([...previous, action.id]))\n onDismissAction?.(action)\n }\n\n const handleFeedback = (actionId: string, feedback: \"useful\" | \"not_useful\") => {\n setActionFeedback((previous) => ({ ...previous, [actionId]: feedback }))\n setCommentOpen((previous) => ({ ...previous, [actionId]: true }))\n }\n\n const submitFeedback = (actionId: string) => {\n const feedback = actionFeedback[actionId]\n if (!feedback) return\n\n onFeedback?.(actionId, feedback, feedbackComment[actionId]?.trim() ?? \"\")\n setCommentOpen((previous) => ({ ...previous, [actionId]: false }))\n setFeedbackComment((previous) => ({ ...previous, [actionId]: \"\" }))\n }\n\n return (\n <section className=\"border-t border-border py-6\">\n <div className=\"mb-4 flex items-center justify-between\">\n <h3 className=\"text-[11px] font-bold uppercase tracking-wider text-muted-foreground/70\">{title}</h3>\n <span className=\"text-xs text-muted-foreground\">{visibleActions.length} actions</span>\n </div>\n\n {visibleActions.length === 0 ? (\n <div className=\"rounded-md border border-dashed border-border p-4 text-sm text-muted-foreground\">\n All recommended actions are dismissed.\n </div>\n ) : (\n <div className=\"space-y-3\">\n {visibleActions.map((action) => (\n <div\n key={action.id}\n className=\"group rounded-md border border-border bg-background p-4 transition-colors hover:bg-muted/20\"\n >\n <div className=\"mb-3 flex items-start justify-between gap-3\">\n <div className=\"min-w-0 flex-1 space-y-2\">\n <h4 className=\"text-sm font-medium leading-snug text-foreground\">{action.title}</h4>\n <div className=\"flex flex-wrap items-center gap-2\">\n <Badge variant=\"outline\" className={`px-2.5 py-1 text-xs font-medium ${getCategoryBadgeClass(action.category)}`}>\n {action.category ?? \"General\"}\n </Badge>\n <TooltipProvider delayDuration={200}>\n <Tooltip>\n <TooltipTrigger asChild>\n <Badge variant=\"outline\" className={`cursor-help px-2.5 py-1 text-xs ${getPriorityBadgeClass(action.priority)}`}>\n <DollarSign className=\"mr-1 h-3 w-3\" />\n {action.priority ?? \"Medium\"}\n <HelpCircle className=\"ml-1 h-3 w-3\" />\n </Badge>\n </TooltipTrigger>\n <TooltipContent className=\"max-w-xs\">\n <p className=\"text-xs leading-relaxed\">\n {action.confidence\n ? `${Math.round(action.confidence * 100)}% confidence based on current account signals.`\n : \"Priority reflects expected impact and urgency.\"}\n </p>\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n {typeof action.revenueImpact === \"number\" && (\n <span className=\"text-xs font-medium text-muted-foreground\">\n +${action.revenueImpact.toLocaleString()}/mo impact\n </span>\n )}\n </div>\n </div>\n\n <div className=\"flex items-center gap-2\">\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"h-8 w-8 bg-foreground text-background hover:bg-foreground/90\"\n onClick={() => onQueueAction?.(action)}\n >\n <CheckSquare className=\"h-4 w-4\" />\n </Button>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"h-8 w-8 text-muted-foreground hover:bg-muted hover:text-foreground\"\n onClick={() => handleDismissAction(action)}\n >\n <X className=\"h-4 w-4\" />\n </Button>\n </div>\n </div>\n\n <p className=\"mb-3 text-sm leading-relaxed text-muted-foreground\">{action.reason}</p>\n\n {action.signals && action.signals.length > 0 && (\n <div className=\"mb-3 flex flex-wrap gap-1.5\">\n {action.signals.map((signal) => (\n <Badge key={`${action.id}-${signal}`} variant=\"secondary\" className=\"text-[10px]\">\n {signal}\n </Badge>\n ))}\n </div>\n )}\n\n <div className=\"flex items-center justify-between\">\n <span className=\"text-xs text-muted-foreground\">{action.dueDate ?? \"This week\"}</span>\n\n <div className=\"flex items-center gap-1.5\">\n <TooltipProvider delayDuration={200}>\n <Tooltip>\n <TooltipTrigger asChild>\n <Button variant=\"ghost\" size=\"icon\" className=\"h-6 w-6\">\n <SkipForward className=\"h-3.5 w-3.5\" />\n </Button>\n </TooltipTrigger>\n <TooltipContent>Skip</TooltipContent>\n </Tooltip>\n <Tooltip>\n <TooltipTrigger asChild>\n <Button variant=\"ghost\" size=\"icon\" className=\"h-6 w-6\">\n <Clock className=\"h-3.5 w-3.5\" />\n </Button>\n </TooltipTrigger>\n <TooltipContent>Snooze</TooltipContent>\n </Tooltip>\n <Tooltip>\n <TooltipTrigger asChild>\n <Button variant=\"ghost\" size=\"icon\" className=\"h-6 w-6\">\n <Users className=\"h-3.5 w-3.5\" />\n </Button>\n </TooltipTrigger>\n <TooltipContent>Delegate</TooltipContent>\n </Tooltip>\n <Tooltip>\n <TooltipTrigger asChild>\n <Button variant=\"ghost\" size=\"icon\" className=\"h-6 w-6\">\n <MessageSquare className=\"h-3.5 w-3.5\" />\n </Button>\n </TooltipTrigger>\n <TooltipContent>Add comment</TooltipContent>\n </Tooltip>\n </TooltipProvider>\n </div>\n </div>\n\n <div className=\"mt-3 border-t border-border/50 pt-3\">\n <div className=\"flex items-center gap-2\">\n <Button\n variant=\"outline\"\n size=\"sm\"\n className={`h-7 text-xs ${actionFeedback[action.id] === \"useful\" ? \"border-emerald-200 bg-emerald-50 text-emerald-700\" : \"\"}`}\n onClick={() => handleFeedback(action.id, \"useful\")}\n >\n <ThumbsUp className=\"mr-1.5 h-3.5 w-3.5\" />\n Helpful\n </Button>\n <Button\n variant=\"outline\"\n size=\"sm\"\n className={`h-7 text-xs ${actionFeedback[action.id] === \"not_useful\" ? \"border-red-200 bg-red-50 text-red-700\" : \"\"}`}\n onClick={() => handleFeedback(action.id, \"not_useful\")}\n >\n <ThumbsDown className=\"mr-1.5 h-3.5 w-3.5\" />\n Not helpful\n </Button>\n </div>\n\n {commentOpen[action.id] && (\n <div className=\"mt-2 flex gap-2\">\n <input\n type=\"text\"\n value={feedbackComment[action.id] ?? \"\"}\n onChange={(event) =>\n setFeedbackComment((previous) => ({\n ...previous,\n [action.id]: event.target.value,\n }))\n }\n placeholder=\"Optional context for this feedback\"\n className=\"h-8 flex-1 rounded-md border border-border bg-background px-2.5 text-xs text-foreground placeholder:text-muted-foreground/60 focus:outline-none focus:ring-1 focus:ring-ring\"\n />\n <Button size=\"sm\" className=\"h-8 text-xs\" onClick={() => submitFeedback(action.id)}>\n Submit\n </Button>\n </div>\n )}\n </div>\n </div>\n ))}\n </div>\n )}\n </section>\n )\n}\n","\"use client\"\n\nimport * as React from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\n\ninterface ReportCardFilterOption {\n label: string\n value: string\n}\n\nexport interface ReportCardProps {\n title: string\n subtitle?: string\n /** Filter pill group rendered top-right */\n filterOptions?: ReportCardFilterOption[]\n selectedFilter?: string\n onFilterChange?: (value: string) => void\n /** Secondary toggle (e.g. metric selector) */\n toggleOptions?: string[]\n selectedToggle?: string\n onToggleChange?: (value: string) => void\n /** Render slot between header and content */\n headerExtra?: React.ReactNode\n children: React.ReactNode\n className?: string\n contentClassName?: string\n}\n\nexport function ReportCard({\n title,\n subtitle,\n filterOptions,\n selectedFilter,\n onFilterChange,\n toggleOptions,\n selectedToggle,\n onToggleChange,\n headerExtra,\n children,\n className,\n contentClassName,\n}: ReportCardProps) {\n return (\n <div\n className={cn(\n \"rounded-xl border border-border bg-card shadow-sm\",\n className,\n )}\n >\n <div className=\"flex flex-col gap-3 border-b border-border/60 px-6 py-5 sm:flex-row sm:items-center sm:justify-between\">\n <div className=\"min-w-0\">\n <h3 className=\"text-sm font-bold text-foreground\">{title}</h3>\n {subtitle && (\n <p className=\"mt-0.5 text-xs text-muted-foreground\">{subtitle}</p>\n )}\n </div>\n\n <div className=\"flex items-center gap-3\">\n {toggleOptions && toggleOptions.length > 1 && (\n <div className=\"flex items-center gap-1 rounded-lg bg-muted p-1\">\n {toggleOptions.map((opt) => (\n <button\n key={opt}\n onClick={() => onToggleChange?.(opt)}\n className={cn(\n \"rounded-md px-3 py-1 text-xs font-medium transition-all\",\n selectedToggle === opt\n ? \"bg-background text-foreground shadow-sm\"\n : \"text-muted-foreground hover:text-foreground\",\n )}\n >\n {opt}\n </button>\n ))}\n </div>\n )}\n\n {filterOptions && filterOptions.length > 1 && (\n <div className=\"flex items-center gap-1 rounded-lg bg-muted p-1\">\n {filterOptions.map((opt) => (\n <button\n key={opt.value}\n onClick={() => onFilterChange?.(opt.value)}\n className={cn(\n \"h-7 rounded-md border-none bg-transparent px-3 text-xs font-medium shadow-none transition-all hover:bg-white\",\n selectedFilter === opt.value &&\n \"bg-background text-foreground shadow-sm\",\n )}\n >\n {opt.label}\n </button>\n ))}\n </div>\n )}\n </div>\n </div>\n\n {headerExtra && (\n <div className=\"border-b border-border/40 px-6 py-3\">{headerExtra}</div>\n )}\n\n <div className={cn(\"p-6\", contentClassName)}>{children}</div>\n </div>\n )\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { ResponsiveSankey } from \"@nivo/sankey\"\n\nimport { cn } from \"../../../lib/utils\"\n\nexport interface SankeyNode {\n id: string\n nodeColor?: string\n}\n\nexport interface SankeyLink {\n source: string\n target: string\n value: number\n}\n\nexport interface SankeyData {\n nodes: SankeyNode[]\n links: SankeyLink[]\n}\n\nexport interface SankeyDropOff {\n reason: string\n count: number\n pct?: string\n}\n\nexport interface SankeyStageMetrics {\n conversion: string\n medianTime: string\n avgTime: string\n}\n\nexport interface SankeyHoverCardData {\n title: string\n count: number | string\n metrics?: SankeyStageMetrics\n dropOffs?: SankeyDropOff[]\n}\n\ninterface HoveredNodeState {\n id: string\n x: number\n y: number\n data: SankeyHoverCardData\n pinned?: boolean\n}\n\ninterface SankeyChartProps {\n data: SankeyData\n height?: number\n nodeOpacity?: number\n nodeThickness?: number\n nodeBorderWidth?: number\n linkOpacity?: number\n linkHoverOpacity?: number\n enableLabels?: boolean\n labelTextColor?: string\n stageMetrics?: Record<string, { metrics: SankeyStageMetrics; dropOffs: SankeyDropOff[] }>\n onDropOffClick?: (reason: string) => void\n onViewDetails?: (nodeId: string) => void\n className?: string\n}\n\nfunction HoverCard({\n data,\n position,\n onDropOffClick,\n onViewDetails,\n}: {\n data: SankeyHoverCardData\n position: { x: number; y: number }\n onDropOffClick?: (reason: string) => void\n onViewDetails?: () => void\n}) {\n return (\n <div\n className=\"pointer-events-auto absolute z-50 w-[260px] overflow-hidden rounded-lg border border-border bg-card font-sans text-left shadow-xl\"\n style={{ left: position.x + 10, top: position.y - 40 }}\n >\n <div className=\"border-b border-border p-3\">\n <div className=\"mb-0.5 text-xs font-medium text-muted-foreground\">\n {data.title}\n </div>\n <div className=\"text-2xl font-bold text-foreground\">{data.count}</div>\n </div>\n\n {data.metrics ? (\n <div className=\"grid grid-cols-3 gap-2 border-b border-border bg-muted/30 px-3 py-2\">\n <div>\n <div className=\"text-[9px] font-semibold uppercase tracking-wider text-muted-foreground/70\">\n Conversion\n </div>\n <div className=\"text-xs font-bold text-emerald-600\">\n {data.metrics.conversion}\n </div>\n </div>\n <div className=\"border-l border-border pl-2\">\n <div className=\"text-[9px] font-semibold uppercase tracking-wider text-muted-foreground/70\">\n Median\n </div>\n <div className=\"text-xs font-bold text-foreground\">\n {data.metrics.medianTime}\n </div>\n </div>\n <div className=\"border-l border-border pl-2\">\n <div className=\"text-[9px] font-semibold uppercase tracking-wider text-muted-foreground/70\">\n Average\n </div>\n <div className=\"text-xs font-bold text-foreground\">\n {data.metrics.avgTime}\n </div>\n </div>\n </div>\n ) : null}\n\n {data.dropOffs && data.dropOffs.length > 0 ? (\n <div className=\"p-2\">\n <div className=\"mb-1.5 px-1 text-[10px] font-semibold uppercase tracking-wide text-muted-foreground\">\n Drop-off Reasons\n </div>\n <div className=\"space-y-0.5\">\n {data.dropOffs.map((drop, i) => (\n <div\n key={i}\n onClick={(e) => {\n e.stopPropagation()\n onDropOffClick?.(drop.reason)\n }}\n className=\"group flex cursor-pointer items-center justify-between rounded p-1.5 text-xs transition-colors hover:bg-muted\"\n >\n <span className=\"truncate pr-2 text-muted-foreground group-hover:text-foreground\">\n {drop.reason}\n </span>\n <div className=\"flex items-center gap-1.5\">\n {drop.pct ? (\n <span className=\"text-[10px] text-muted-foreground/70\">\n {drop.pct}\n </span>\n ) : null}\n <span className=\"inline-flex h-4 min-w-[20px] items-center justify-center rounded border border-border bg-muted px-1 text-[9px] font-semibold text-muted-foreground group-hover:bg-muted group-hover:text-foreground\">\n {drop.count}\n </span>\n </div>\n </div>\n ))}\n </div>\n </div>\n ) : null}\n\n {onViewDetails ? (\n <div\n onClick={(e) => {\n e.stopPropagation()\n onViewDetails()\n }}\n className=\"flex cursor-pointer items-center justify-between border-t border-border bg-muted px-3 py-2 text-xs font-medium text-blue-600 transition-colors hover:bg-muted hover:text-blue-700\"\n >\n View Details\n <svg\n className=\"h-3 w-3\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n strokeWidth={2}\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M9 5l7 7-7 7\"\n />\n </svg>\n </div>\n ) : null}\n </div>\n )\n}\n\nexport function SankeyChart({\n data,\n height = 400,\n nodeOpacity = 1,\n nodeThickness = 18,\n nodeBorderWidth = 0,\n linkOpacity = 0.25,\n linkHoverOpacity = 0.5,\n enableLabels = true,\n labelTextColor = \"#334155\",\n stageMetrics,\n onDropOffClick,\n onViewDetails,\n className,\n}: SankeyChartProps) {\n const [hoveredNode, setHoveredNode] = React.useState<HoveredNodeState | null>(\n null,\n )\n const containerRef = React.useRef<HTMLDivElement>(null)\n\n const handleNodeHover = React.useCallback(\n (node: any, event: React.MouseEvent) => {\n if (hoveredNode?.pinned) return\n\n const containerRect = containerRef.current?.getBoundingClientRect()\n if (!containerRect) return\n\n const nodeId = node.id as string\n const stageKey = nodeId.toLowerCase().replace(/[^a-z]/g, \"\")\n const meta = stageMetrics?.[stageKey] || stageMetrics?.[nodeId]\n\n const hoverData: SankeyHoverCardData = {\n title: nodeId,\n count: node.value ?? 0,\n metrics: meta?.metrics,\n dropOffs: meta?.dropOffs,\n }\n\n setHoveredNode({\n id: nodeId,\n x: event.clientX - containerRect.left,\n y: event.clientY - containerRect.top,\n data: hoverData,\n })\n },\n [hoveredNode?.pinned, stageMetrics],\n )\n\n const handleNodeLeave = React.useCallback(() => {\n if (!hoveredNode?.pinned) {\n setHoveredNode(null)\n }\n }, [hoveredNode?.pinned])\n\n const handleClick = React.useCallback(() => {\n if (hoveredNode?.pinned) {\n setHoveredNode(null)\n } else if (hoveredNode) {\n setHoveredNode((prev) => (prev ? { ...prev, pinned: true } : null))\n }\n }, [hoveredNode])\n\n return (\n <div\n ref={containerRef}\n className={cn(\"relative\", className)}\n style={{ height }}\n onClick={handleClick}\n >\n <ResponsiveSankey\n data={data}\n margin={{ top: 20, right: 160, bottom: 20, left: 20 }}\n align=\"justify\"\n colors={(node: any) => node.nodeColor || \"#94a3b8\"}\n nodeOpacity={nodeOpacity}\n nodeHoverOpacity={1}\n nodeThickness={nodeThickness}\n nodeSpacing={24}\n nodeBorderWidth={nodeBorderWidth}\n nodeBorderColor={{ from: \"color\", modifiers: [[\"darker\", 0.8]] }}\n nodeBorderRadius={3}\n linkOpacity={linkOpacity}\n linkHoverOpacity={linkHoverOpacity}\n linkHoverOthersOpacity={0.1}\n linkContract={3}\n enableLinkGradient\n labelPosition=\"outside\"\n labelOrientation=\"horizontal\"\n labelPadding={16}\n labelTextColor={labelTextColor}\n enableLabels={enableLabels}\n animate\n {...({ onNodeMouseEnter: handleNodeHover, onNodeMouseLeave: handleNodeLeave } as any)}\n />\n\n {hoveredNode ? (\n <HoverCard\n data={hoveredNode.data}\n position={{ x: hoveredNode.x, y: hoveredNode.y }}\n onDropOffClick={onDropOffClick}\n onViewDetails={\n onViewDetails\n ? () => onViewDetails(hoveredNode.id)\n : undefined\n }\n />\n ) : null}\n </div>\n )\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { ThumbsUp, ThumbsDown, Check } from \"lucide-react\"\nimport { cn } from \"../../../lib/utils\"\n\nconst positivePills = [\n \"Right timing\",\n \"Accurate data\",\n \"Good prospect fit\",\n \"Actionable\",\n]\n\nconst negativePills = [\n \"Bad timing\",\n \"Inaccurate data\",\n \"Wrong prospect\",\n \"Already handled\",\n \"Not actionable\",\n \"Other\",\n]\n\ninterface SubmittedScoreFeedback {\n type: \"up\" | \"down\"\n pills: string[]\n detail: string\n}\n\ninterface ScoreFeedbackState {\n thumbState: \"up\" | \"down\" | null\n selectedPills: string[]\n detailText: string\n notedType: \"up\" | \"down\" | null\n submittedFeedback: SubmittedScoreFeedback | null\n otherSelected: boolean\n hasRequiredInput: boolean\n handleThumbClick: (type: \"up\" | \"down\") => void\n togglePill: (pill: string) => void\n setDetailText: (text: string) => void\n handleSubmit: () => void\n editSubmitted: () => void\n}\n\nconst ScoreFeedbackCtx = React.createContext<ScoreFeedbackState | null>(null)\n\nfunction useScoreFeedback() {\n const ctx = React.useContext(ScoreFeedbackCtx)\n if (!ctx) throw new Error(\"Must be used within ScoreFeedback.Root\")\n return ctx\n}\n\ninterface RootProps {\n children: React.ReactNode\n onSubmitFeedback?: (type: \"up\" | \"down\", pills: string[], detail: string) => void\n}\n\nfunction Root({ children, onSubmitFeedback }: RootProps) {\n const [thumbState, setThumbState] = React.useState<\"up\" | \"down\" | null>(null)\n const [selectedPills, setSelectedPills] = React.useState<string[]>([])\n const [detailText, setDetailTextState] = React.useState(\"\")\n const [notedType, setNotedType] = React.useState<\"up\" | \"down\" | null>(null)\n const [submittedFeedback, setSubmittedFeedback] = React.useState<SubmittedScoreFeedback | null>(null)\n\n const otherSelected = selectedPills.includes(\"Other\")\n\n const hasRequiredInput =\n thumbState === \"down\"\n ? selectedPills.length > 0 && (!otherSelected || detailText.trim().length > 0)\n : selectedPills.length > 0 || detailText.trim().length > 0\n\n const togglePill = React.useCallback((pill: string) => {\n setSelectedPills((prev) =>\n prev.includes(pill) ? prev.filter((p) => p !== pill) : [...prev, pill]\n )\n }, [])\n\n const handleThumbClick = React.useCallback((type: \"up\" | \"down\") => {\n setThumbState((prev) => (prev === type ? null : type))\n setSelectedPills([])\n setDetailTextState(\"\")\n }, [])\n\n const handleSubmit = React.useCallback(() => {\n if (!thumbState) return\n onSubmitFeedback?.(thumbState, selectedPills, detailText)\n setSubmittedFeedback({ type: thumbState, pills: [...selectedPills], detail: detailText.trim() })\n setNotedType(thumbState)\n setThumbState(null)\n setSelectedPills([])\n setDetailTextState(\"\")\n setTimeout(() => setNotedType(null), 3000)\n }, [thumbState, selectedPills, detailText, onSubmitFeedback])\n\n const editSubmitted = React.useCallback(() => {\n if (!submittedFeedback) return\n setThumbState(submittedFeedback.type)\n setSelectedPills([...submittedFeedback.pills])\n setDetailTextState(submittedFeedback.detail)\n setNotedType(null)\n }, [submittedFeedback])\n\n return (\n <ScoreFeedbackCtx.Provider\n value={{\n thumbState,\n selectedPills,\n detailText,\n notedType,\n submittedFeedback,\n otherSelected,\n hasRequiredInput,\n handleThumbClick,\n togglePill,\n setDetailText: setDetailTextState,\n handleSubmit,\n editSubmitted,\n }}\n >\n {children}\n </ScoreFeedbackCtx.Provider>\n )\n}\n\nfunction Trigger({ className }: { className?: string }) {\n const { thumbState, notedType, submittedFeedback, handleThumbClick, editSubmitted } = useScoreFeedback()\n\n if (notedType || (submittedFeedback && !thumbState)) {\n return (\n <div className={cn(\"shrink-0\", className)}>\n <div className=\"flex items-center gap-1\">\n <Check className=\"w-3 h-3 text-emerald-500\" />\n <span className=\"text-[11px] text-muted-foreground\">\n {notedType\n ? notedType === \"up\" ? \"Noted\" : \"Recorded\"\n : submittedFeedback?.type === \"up\" ? \"Noted\" : \"Recorded\"}\n </span>\n </div>\n {submittedFeedback && (submittedFeedback.pills.length > 0 || submittedFeedback.detail) && (\n <button\n type=\"button\"\n onClick={editSubmitted}\n className=\"mt-1.5 w-full text-left space-y-1 group cursor-pointer\"\n >\n {submittedFeedback.pills.length > 0 && (\n <div className=\"flex flex-wrap gap-1\">\n {submittedFeedback.pills.map((p) => (\n <span\n key={p}\n className={cn(\n \"rounded-full border px-2 py-0.5 text-[10px] font-medium transition-colors group-hover:opacity-80\",\n submittedFeedback.type === \"up\"\n ? \"border-emerald-200/60 bg-emerald-50/50 text-emerald-700/70\"\n : \"border-red-200/60 bg-red-50/50 text-red-700/70\"\n )}\n >\n {p}\n </span>\n ))}\n </div>\n )}\n {submittedFeedback.detail && (\n <p className=\"text-[11px] text-muted-foreground/70 leading-snug group-hover:text-muted-foreground transition-colors\">{submittedFeedback.detail}</p>\n )}\n </button>\n )}\n </div>\n )\n }\n\n return (\n <div className={cn(\"flex gap-0.5 shrink-0\", className)}>\n <button\n type=\"button\"\n onClick={() => handleThumbClick(\"up\")}\n className={cn(\n \"p-1.5 rounded transition-colors\",\n thumbState === \"up\"\n ? \"bg-emerald-100 text-emerald-600 dark:bg-emerald-900/30 dark:text-emerald-400\"\n : \"hover:bg-muted text-muted-foreground hover:text-foreground\"\n )}\n >\n <ThumbsUp className=\"w-3.5 h-3.5\" fill={thumbState === \"up\" ? \"currentColor\" : \"none\"} />\n </button>\n <button\n type=\"button\"\n onClick={() => handleThumbClick(\"down\")}\n className={cn(\n \"p-1.5 rounded transition-colors\",\n thumbState === \"down\"\n ? \"bg-red-100 text-red-600 dark:bg-red-900/30 dark:text-red-400\"\n : \"hover:bg-muted text-muted-foreground hover:text-foreground\"\n )}\n >\n <ThumbsDown className=\"w-3.5 h-3.5\" fill={thumbState === \"down\" ? \"currentColor\" : \"none\"} />\n </button>\n </div>\n )\n}\n\nfunction Panel({ className }: { className?: string }) {\n const {\n thumbState,\n selectedPills,\n detailText,\n otherSelected,\n hasRequiredInput,\n togglePill,\n setDetailText,\n handleSubmit,\n } = useScoreFeedback()\n\n if (!thumbState) return null\n\n return (\n <div className={cn(\"overflow-hidden\", className)}>\n <div className=\"mt-4 pt-4 pb-1 space-y-3 border-t border-border/60\">\n <span className=\"text-[11px] font-bold text-muted-foreground/70 uppercase tracking-wider\">\n How's this score?\n </span>\n <div>\n <span className=\"text-xs text-muted-foreground mb-2 block font-medium\">\n {thumbState === \"up\" ? \"What was useful?\" : \"What\\u2019s the issue?\"}\n </span>\n <div className=\"flex flex-wrap gap-1.5\">\n {(thumbState === \"up\" ? positivePills : negativePills).map((pill) => (\n <button\n key={pill}\n type=\"button\"\n onClick={() => togglePill(pill)}\n className={cn(\n \"px-2.5 py-1 rounded-full text-[11px] font-medium border transition-colors\",\n selectedPills.includes(pill)\n ? thumbState === \"up\"\n ? \"bg-emerald-100 text-emerald-700 border-emerald-200 dark:bg-emerald-900/30 dark:text-emerald-300 dark:border-emerald-800\"\n : \"bg-red-100 text-red-700 border-red-200 dark:bg-red-900/30 dark:text-red-300 dark:border-red-800\"\n : \"bg-background text-muted-foreground border-border hover:bg-muted/50 hover:text-foreground\"\n )}\n >\n {pill}\n </button>\n ))}\n </div>\n </div>\n\n <div className=\"space-y-1\">\n <input\n type=\"text\"\n value={detailText}\n onChange={(e) => setDetailText(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" && hasRequiredInput) handleSubmit()\n }}\n placeholder={\n thumbState === \"up\"\n ? \"Tell us more (optional)\"\n : \"e.g., The risk factors are outdated\"\n }\n className=\"w-full text-xs bg-background border border-border rounded-md px-2.5 py-2 text-foreground placeholder:text-muted-foreground/50 focus:outline-none focus:ring-1 focus:ring-ring\"\n />\n {otherSelected && detailText.trim().length === 0 && (\n <span className=\"text-[10px] text-red-500\">\n Please describe when “Other” is selected\n </span>\n )}\n </div>\n\n <div className=\"flex items-center gap-2 pt-1\">\n <button\n type=\"button\"\n onClick={handleSubmit}\n disabled={!hasRequiredInput}\n className={cn(\n \"flex-1 py-1.5 rounded-md text-xs font-semibold transition-colors\",\n hasRequiredInput\n ? \"bg-foreground text-background hover:bg-foreground/90\"\n : \"bg-muted text-muted-foreground cursor-not-allowed\"\n )}\n >\n Submit\n </button>\n </div>\n </div>\n </div>\n )\n}\n\nexport const ScoreFeedback = { Root, Trigger, Panel }\nexport { useScoreFeedback }\n","import * as React from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\n\nfunction Skeleton({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"skeleton\"\n className={cn(\"bg-accent animate-pulse rounded-md\", className)}\n {...props}\n />\n )\n}\n\nexport { Skeleton }\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { VariantProps, cva } from \"class-variance-authority\";\nimport { PanelLeftIcon } from \"lucide-react\";\n\nimport { useIsMobile } from \"../../../hooks/use-mobile\";\nimport { cn } from \"../../../lib/utils\";\nimport { Button } from \"./button\";\nimport { Input } from \"./input\";\nimport { Separator } from \"./separator\";\nimport {\n Sheet,\n SheetContent,\n SheetDescription,\n SheetHeader,\n SheetTitle,\n} from \"./sheet\";\nimport { Skeleton } from \"./skeleton\";\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"./tooltip\";\n\nconst SIDEBAR_COOKIE_NAME = \"sidebar_state\";\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;\nconst SIDEBAR_WIDTH = \"16rem\";\nconst SIDEBAR_WIDTH_MOBILE = \"18rem\";\nconst SIDEBAR_WIDTH_ICON = \"3rem\";\nconst SIDEBAR_KEYBOARD_SHORTCUT = \"b\";\n\ntype SidebarContextProps = {\n state: \"expanded\" | \"collapsed\";\n open: boolean;\n setOpen: (open: boolean) => void;\n openMobile: boolean;\n setOpenMobile: (open: boolean) => void;\n isMobile: boolean;\n toggleSidebar: () => void;\n};\n\nconst SidebarContext = React.createContext<SidebarContextProps | null>(null);\n\nfunction useSidebar() {\n const context = React.useContext(SidebarContext);\n if (!context) {\n throw new Error(\"useSidebar must be used within a SidebarProvider.\");\n }\n\n return context;\n}\n\nfunction SidebarProvider({\n defaultOpen = true,\n open: openProp,\n onOpenChange: setOpenProp,\n className,\n style,\n children,\n ...props\n}: React.ComponentProps<\"div\"> & {\n defaultOpen?: boolean;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n}) {\n const isMobile = useIsMobile();\n const [openMobile, setOpenMobile] = React.useState(false);\n\n // This is the internal state of the sidebar.\n // We use openProp and setOpenProp for control from outside the component.\n const [_open, _setOpen] = React.useState(defaultOpen);\n const open = openProp ?? _open;\n const setOpen = React.useCallback(\n (value: boolean | ((value: boolean) => boolean)) => {\n const openState = typeof value === \"function\" ? value(open) : value;\n if (setOpenProp) {\n setOpenProp(openState);\n } else {\n _setOpen(openState);\n }\n\n // This sets the cookie to keep the sidebar state.\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;\n },\n [setOpenProp, open],\n );\n\n // Helper to toggle the sidebar.\n const toggleSidebar = React.useCallback(() => {\n return isMobile ? setOpenMobile((open) => !open) : setOpen((open) => !open);\n }, [isMobile, setOpen, setOpenMobile]);\n\n // Adds a keyboard shortcut to toggle the sidebar.\n React.useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (\n event.key === SIDEBAR_KEYBOARD_SHORTCUT &&\n (event.metaKey || event.ctrlKey)\n ) {\n event.preventDefault();\n toggleSidebar();\n }\n };\n\n window.addEventListener(\"keydown\", handleKeyDown);\n return () => window.removeEventListener(\"keydown\", handleKeyDown);\n }, [toggleSidebar]);\n\n // We add a state so that we can do data-state=\"expanded\" or \"collapsed\".\n // This makes it easier to style the sidebar with Tailwind classes.\n const state = open ? \"expanded\" : \"collapsed\";\n\n const contextValue = React.useMemo<SidebarContextProps>(\n () => ({\n state,\n open,\n setOpen,\n isMobile,\n openMobile,\n setOpenMobile,\n toggleSidebar,\n }),\n [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar],\n );\n\n return (\n <SidebarContext.Provider value={contextValue}>\n <TooltipProvider delayDuration={0}>\n <div\n data-slot=\"sidebar-wrapper\"\n style={\n {\n \"--sidebar-width\": SIDEBAR_WIDTH,\n \"--sidebar-width-icon\": SIDEBAR_WIDTH_ICON,\n ...style,\n } as React.CSSProperties\n }\n className={cn(\n \"group/sidebar-wrapper has-data-[variant=inset]:bg-sidebar flex min-h-svh w-full\",\n className,\n )}\n {...props}\n >\n {children}\n </div>\n </TooltipProvider>\n </SidebarContext.Provider>\n );\n}\n\nfunction Sidebar({\n side = \"left\",\n variant = \"sidebar\",\n collapsible = \"offcanvas\",\n className,\n children,\n ...props\n}: React.ComponentProps<\"div\"> & {\n side?: \"left\" | \"right\";\n variant?: \"sidebar\" | \"floating\" | \"inset\";\n collapsible?: \"offcanvas\" | \"icon\" | \"none\";\n}) {\n const { isMobile, state, openMobile, setOpenMobile } = useSidebar();\n\n if (collapsible === \"none\") {\n return (\n <div\n data-slot=\"sidebar\"\n className={cn(\n \"bg-sidebar text-sidebar-foreground flex h-full w-(--sidebar-width) flex-col\",\n className,\n )}\n {...props}\n >\n {children}\n </div>\n );\n }\n\n if (isMobile) {\n return (\n <Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\n <SheetContent\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar\"\n data-mobile=\"true\"\n className=\"bg-sidebar text-sidebar-foreground w-(--sidebar-width) p-0 [&>button]:hidden\"\n style={\n {\n \"--sidebar-width\": SIDEBAR_WIDTH_MOBILE,\n } as React.CSSProperties\n }\n side={side}\n >\n <SheetHeader className=\"sr-only\">\n <SheetTitle>Sidebar</SheetTitle>\n <SheetDescription>Displays the mobile sidebar.</SheetDescription>\n </SheetHeader>\n <div className=\"flex h-full w-full flex-col\">{children}</div>\n </SheetContent>\n </Sheet>\n );\n }\n\n return (\n <div\n className=\"group peer text-sidebar-foreground hidden md:block\"\n data-state={state}\n data-collapsible={state === \"collapsed\" ? collapsible : \"\"}\n data-variant={variant}\n data-side={side}\n data-slot=\"sidebar\"\n >\n {/* This is what handles the sidebar gap on desktop */}\n <div\n data-slot=\"sidebar-gap\"\n className={cn(\n \"relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear\",\n \"group-data-[collapsible=offcanvas]:w-0\",\n \"group-data-[side=right]:rotate-180\",\n variant === \"floating\" || variant === \"inset\"\n ? \"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]\"\n : \"group-data-[collapsible=icon]:w-(--sidebar-width-icon)\",\n )}\n />\n <div\n data-slot=\"sidebar-container\"\n className={cn(\n \"fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex\",\n side === \"left\"\n ? \"left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]\"\n : \"right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]\",\n // Adjust the padding for floating and inset variants.\n variant === \"floating\" || variant === \"inset\"\n ? \"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]\"\n : \"group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l\",\n className,\n )}\n {...props}\n >\n <div\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar-inner\"\n className=\"bg-sidebar group-data-[variant=floating]:border-sidebar-border flex h-full w-full flex-col group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:shadow-sm\"\n >\n {children}\n </div>\n </div>\n </div>\n );\n}\n\nfunction SidebarTrigger({\n className,\n onClick,\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { toggleSidebar } = useSidebar();\n\n return (\n <Button\n data-sidebar=\"trigger\"\n data-slot=\"sidebar-trigger\"\n variant=\"ghost\"\n size=\"icon\"\n className={cn(\"size-7\", className)}\n onClick={(event) => {\n onClick?.(event);\n toggleSidebar();\n }}\n {...props}\n >\n <PanelLeftIcon />\n <span className=\"sr-only\">Toggle Sidebar</span>\n </Button>\n );\n}\n\nfunction SidebarRail({ className, ...props }: React.ComponentProps<\"button\">) {\n const { toggleSidebar } = useSidebar();\n\n return (\n <button\n data-sidebar=\"rail\"\n data-slot=\"sidebar-rail\"\n aria-label=\"Toggle Sidebar\"\n tabIndex={-1}\n onClick={toggleSidebar}\n title=\"Toggle Sidebar\"\n className={cn(\n \"hover:after:bg-sidebar-border absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] sm:flex\",\n \"in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize\",\n \"[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize\",\n \"hover:group-data-[collapsible=offcanvas]:bg-sidebar group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full\",\n \"[[data-side=left][data-collapsible=offcanvas]_&]:-right-2\",\n \"[[data-side=right][data-collapsible=offcanvas]_&]:-left-2\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarInset({ className, ...props }: React.ComponentProps<\"main\">) {\n return (\n <main\n data-slot=\"sidebar-inset\"\n className={cn(\n \"bg-background relative flex w-full flex-1 flex-col\",\n \"md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarInput({\n className,\n ...props\n}: React.ComponentProps<typeof Input>) {\n return (\n <Input\n data-slot=\"sidebar-input\"\n data-sidebar=\"input\"\n className={cn(\"bg-background h-8 w-full shadow-none\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-header\"\n data-sidebar=\"header\"\n className={cn(\"flex flex-col gap-2 p-2\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-footer\"\n data-sidebar=\"footer\"\n className={cn(\"flex flex-col gap-2 p-2\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n data-slot=\"sidebar-separator\"\n data-sidebar=\"separator\"\n className={cn(\"bg-sidebar-border mx-2 w-auto\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-content\"\n data-sidebar=\"content\"\n className={cn(\n \"flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-group\"\n data-sidebar=\"group\"\n className={cn(\"relative flex w-full min-w-0 flex-col p-2\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarGroupLabel({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<\"div\"> & { asChild?: boolean }) {\n const Comp = asChild ? Slot : \"div\";\n\n return (\n <Comp\n data-slot=\"sidebar-group-label\"\n data-sidebar=\"group-label\"\n className={cn(\n \"text-sidebar-foreground/70 ring-sidebar-ring flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium outline-hidden transition-[margin,opacity] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n \"group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarGroupAction({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<\"button\"> & { asChild?: boolean }) {\n const Comp = asChild ? Slot : \"button\";\n\n return (\n <Comp\n data-slot=\"sidebar-group-action\"\n data-sidebar=\"group-action\"\n className={cn(\n \"text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n // Increases the hit area of the button on mobile.\n \"after:absolute after:-inset-2 md:after:hidden\",\n \"group-data-[collapsible=icon]:hidden\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarGroupContent({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-group-content\"\n data-sidebar=\"group-content\"\n className={cn(\"w-full text-sm\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarMenu({ className, ...props }: React.ComponentProps<\"ul\">) {\n return (\n <ul\n data-slot=\"sidebar-menu\"\n data-sidebar=\"menu\"\n className={cn(\"flex w-full min-w-0 flex-col gap-1\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarMenuItem({ className, ...props }: React.ComponentProps<\"li\">) {\n return (\n <li\n data-slot=\"sidebar-menu-item\"\n data-sidebar=\"menu-item\"\n className={cn(\"group/menu-item relative\", className)}\n {...props}\n />\n );\n}\n\nconst sidebarMenuButtonVariants = cva(\n \"peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-hidden ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-data-[sidebar=menu-action]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0\",\n {\n variants: {\n variant: {\n default: \"hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\",\n outline:\n \"bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]\",\n },\n size: {\n default: \"h-8 text-sm\",\n sm: \"h-7 text-xs\",\n lg: \"h-12 text-sm group-data-[collapsible=icon]:p-0!\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n },\n);\n\nfunction SidebarMenuButton({\n asChild = false,\n isActive = false,\n variant = \"default\",\n size = \"default\",\n tooltip,\n className,\n ...props\n}: React.ComponentProps<\"button\"> & {\n asChild?: boolean;\n isActive?: boolean;\n tooltip?: string | React.ComponentProps<typeof TooltipContent>;\n} & VariantProps<typeof sidebarMenuButtonVariants>) {\n const Comp = asChild ? Slot : \"button\";\n const { isMobile, state } = useSidebar();\n\n const button = (\n <Comp\n data-slot=\"sidebar-menu-button\"\n data-sidebar=\"menu-button\"\n data-size={size}\n data-active={isActive}\n className={cn(sidebarMenuButtonVariants({ variant, size }), className)}\n {...props}\n />\n );\n\n if (!tooltip) {\n return button;\n }\n\n if (typeof tooltip === \"string\") {\n tooltip = {\n children: tooltip,\n };\n }\n\n return (\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent\n side=\"right\"\n align=\"center\"\n hidden={state !== \"collapsed\" || isMobile}\n {...tooltip}\n />\n </Tooltip>\n );\n}\n\nfunction SidebarMenuAction({\n className,\n asChild = false,\n showOnHover = false,\n ...props\n}: React.ComponentProps<\"button\"> & {\n asChild?: boolean;\n showOnHover?: boolean;\n}) {\n const Comp = asChild ? Slot : \"button\";\n\n return (\n <Comp\n data-slot=\"sidebar-menu-action\"\n data-sidebar=\"menu-action\"\n className={cn(\n \"text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground peer-hover/menu-button:text-sidebar-accent-foreground absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n // Increases the hit area of the button on mobile.\n \"after:absolute after:-inset-2 md:after:hidden\",\n \"peer-data-[size=sm]/menu-button:top-1\",\n \"peer-data-[size=default]/menu-button:top-1.5\",\n \"peer-data-[size=lg]/menu-button:top-2.5\",\n \"group-data-[collapsible=icon]:hidden\",\n showOnHover &&\n \"peer-data-[active=true]/menu-button:text-sidebar-accent-foreground group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 md:opacity-0\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarMenuBadge({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-menu-badge\"\n data-sidebar=\"menu-badge\"\n className={cn(\n \"text-sidebar-foreground pointer-events-none absolute right-1 flex h-5 min-w-5 items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums select-none\",\n \"peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground\",\n \"peer-data-[size=sm]/menu-button:top-1\",\n \"peer-data-[size=default]/menu-button:top-1.5\",\n \"peer-data-[size=lg]/menu-button:top-2.5\",\n \"group-data-[collapsible=icon]:hidden\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarMenuSkeleton({\n className,\n showIcon = false,\n ...props\n}: React.ComponentProps<\"div\"> & {\n showIcon?: boolean;\n}) {\n // Random width between 50 to 90%.\n const width = React.useMemo(() => {\n return `${Math.floor(Math.random() * 40) + 50}%`;\n }, []);\n\n return (\n <div\n data-slot=\"sidebar-menu-skeleton\"\n data-sidebar=\"menu-skeleton\"\n className={cn(\"flex h-8 items-center gap-2 rounded-md px-2\", className)}\n {...props}\n >\n {showIcon && (\n <Skeleton\n className=\"size-4 rounded-md\"\n data-sidebar=\"menu-skeleton-icon\"\n />\n )}\n <Skeleton\n className=\"h-4 max-w-(--skeleton-width) flex-1\"\n data-sidebar=\"menu-skeleton-text\"\n style={\n {\n \"--skeleton-width\": width,\n } as React.CSSProperties\n }\n />\n </div>\n );\n}\n\nfunction SidebarMenuSub({ className, ...props }: React.ComponentProps<\"ul\">) {\n return (\n <ul\n data-slot=\"sidebar-menu-sub\"\n data-sidebar=\"menu-sub\"\n className={cn(\n \"border-sidebar-border mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l px-2.5 py-0.5\",\n \"group-data-[collapsible=icon]:hidden\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarMenuSubItem({\n className,\n ...props\n}: React.ComponentProps<\"li\">) {\n return (\n <li\n data-slot=\"sidebar-menu-sub-item\"\n data-sidebar=\"menu-sub-item\"\n className={cn(\"group/menu-sub-item relative\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarMenuSubButton({\n asChild = false,\n size = \"md\",\n isActive = false,\n className,\n ...props\n}: React.ComponentProps<\"a\"> & {\n asChild?: boolean;\n size?: \"sm\" | \"md\";\n isActive?: boolean;\n}) {\n const Comp = asChild ? Slot : \"a\";\n\n return (\n <Comp\n data-slot=\"sidebar-menu-sub-button\"\n data-sidebar=\"menu-sub-button\"\n data-size={size}\n data-active={isActive}\n className={cn(\n \"text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground [&>svg]:text-sidebar-accent-foreground flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 outline-hidden focus-visible:ring-2 disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0\",\n \"data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground\",\n size === \"sm\" && \"text-xs\",\n size === \"md\" && \"text-sm\",\n \"group-data-[collapsible=icon]:hidden\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport {\n Sidebar,\n SidebarContent,\n SidebarFooter,\n SidebarGroup,\n SidebarGroupAction,\n SidebarGroupContent,\n SidebarGroupLabel,\n SidebarHeader,\n SidebarInput,\n SidebarInset,\n SidebarMenu,\n SidebarMenuAction,\n SidebarMenuBadge,\n SidebarMenuButton,\n SidebarMenuItem,\n SidebarMenuSkeleton,\n SidebarMenuSub,\n SidebarMenuSubButton,\n SidebarMenuSubItem,\n SidebarProvider,\n SidebarRail,\n SidebarSeparator,\n SidebarTrigger,\n useSidebar,\n};\n","\"use client\"\n\nimport * as React from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\n\nexport interface StyledBarItem {\n name: string\n value: number\n href?: string\n subtitle?: string\n}\n\nexport interface StyledBarListProps {\n data: StyledBarItem[]\n valueFormatter?: (value: number) => string\n className?: string\n showAnimation?: boolean\n showSubtitle?: boolean\n barColor?: string\n barStyle?: React.CSSProperties\n}\n\nexport function StyledBarList({\n data,\n valueFormatter = (value) => value.toString(),\n className,\n showAnimation = true,\n showSubtitle = false,\n barColor = \"bg-emerald-500/30\",\n barStyle,\n}: StyledBarListProps) {\n const maxValue = Math.max(...data.map((item) => item.value))\n\n return (\n <div className={cn(\"space-y-2\", className)}>\n {data.map((item, index) => {\n const percentage = (item.value / maxValue) * 100\n\n return (\n <div key={index} className={showSubtitle ? \"space-y-1\" : \"\"}>\n <div className=\"relative h-9 overflow-hidden rounded-md\">\n <div\n className={cn(\n \"absolute inset-y-0 left-0 rounded-md\",\n !barStyle && barColor,\n showAnimation && \"transition-all duration-300\",\n )}\n style={{ width: `${percentage}%`, ...(barStyle || {}) }}\n />\n <div className=\"relative flex h-full items-center justify-between px-3\">\n <span className=\"truncate pr-2 text-sm font-medium text-foreground\">\n {item.name}\n </span>\n <span className=\"ml-auto shrink-0 text-sm font-semibold text-foreground\">\n {valueFormatter(item.value)}\n </span>\n </div>\n </div>\n {showSubtitle && item.subtitle ? (\n <div className=\"pl-3 text-xs text-muted-foreground\">\n {item.subtitle}\n </div>\n ) : null}\n </div>\n )\n })}\n </div>\n )\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport {\n ChevronDown,\n ChevronUp,\n Clock,\n MessageSquare,\n Undo2,\n Redo2,\n Bold,\n Italic,\n Underline,\n AlignLeft,\n List,\n Trash,\n Sparkles,\n ThumbsUp,\n ThumbsDown,\n Check,\n RefreshCw,\n ArrowLeft,\n Mail,\n Phone,\n X,\n Users,\n ExternalLink,\n Copy,\n PenLine,\n ClipboardList,\n Globe,\n} from \"lucide-react\"\nimport { Button } from \"./button\"\n\n// ---------------------------------------------------------------------------\n// Brand Icons (image-based from registry)\n// ---------------------------------------------------------------------------\n\nfunction BrandIcon({ src, alt, className }: { src: string; alt: string; className?: string }) {\n return (\n <img\n src={src}\n alt={alt}\n className={`${className ?? \"\"} object-contain`}\n draggable={false}\n />\n )\n}\n\nexport interface SuggestedActionsIconMap {\n gmail?: string\n slack?: string\n zendesk?: string\n salesforce?: string\n}\n\nfunction getActionTypeIcon(type: string, className?: string, iconMap?: SuggestedActionsIconMap) {\n switch (type) {\n case \"email\":\n return iconMap?.gmail\n ? <BrandIcon src={iconMap.gmail} alt=\"Gmail\" className={className} />\n : <Mail className={className} />\n case \"slack\":\n return iconMap?.slack\n ? <BrandIcon src={iconMap.slack} alt=\"Slack\" className={className} />\n : <MessageSquare className={className} />\n case \"ticket\":\n return iconMap?.zendesk\n ? <BrandIcon src={iconMap.zendesk} alt=\"Zendesk\" className={className} />\n : <MessageSquare className={className} />\n case \"call\":\n return <Phone className={className} />\n case \"manual\":\n return <ClipboardList className={className} />\n case \"browser\":\n return <Globe className={className} />\n default:\n return <Mail className={className} />\n }\n}\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\nexport interface SuggestedContact {\n name: string\n role: string\n email?: string\n emails?: string[]\n phone?: string\n phones?: string[]\n confirmed: boolean\n salesforceUrl?: string\n lastActivity?: {\n date: string\n type: string\n }\n}\n\nexport interface SuggestedActionThreadMessage {\n id: string\n from: string\n initials: string\n time: string\n preview: string\n content: string\n}\n\nexport interface SuggestedActionReplyTo {\n from: string\n time: string\n content: string\n channel?: string\n}\n\nexport interface SuggestedActionTicket {\n system: string\n priority: string\n type: string\n subject: string\n description: string\n assignee?: string\n tags?: string[]\n}\n\nexport interface SuggestedActionFollowUp {\n enabled: boolean\n days: number\n}\n\nexport interface SuggestedActionEmailMeta {\n from: string\n fromEmail: string\n to?: SuggestedContact\n cc?: SuggestedContact[]\n bcc?: string\n subject?: string\n}\n\nexport interface SuggestedActionCallMeta {\n contact?: SuggestedContact\n talkTrack: string\n allowDispatchAgent?: boolean\n}\n\nexport interface SuggestedActionManualMeta {\n taskDescription: string\n}\n\nexport interface SuggestedActionBrowserMeta {\n url: string\n actionDescription: string\n}\n\nexport interface SuggestedAction {\n id: number | string\n type: \"email\" | \"ticket\" | \"slack\" | \"call\" | \"manual\" | \"browser\"\n label: string\n status: \"pending\" | \"sent\" | \"dismissed\"\n content?: string\n replyTo?: SuggestedActionReplyTo\n threadMessages?: SuggestedActionThreadMessage[]\n ticket?: SuggestedActionTicket\n followUp?: SuggestedActionFollowUp\n emailMeta?: SuggestedActionEmailMeta\n callMeta?: SuggestedActionCallMeta\n manualMeta?: SuggestedActionManualMeta\n browserMeta?: SuggestedActionBrowserMeta\n}\n\n// ---------------------------------------------------------------------------\n// AiEditPanel\n// ---------------------------------------------------------------------------\n\nconst aiEditPills = [\"Shorten it\", \"Make sound more like me\", \"Make longer\", \"Other\"]\n\nfunction AiEditPanel({ onApply }: { onApply?: (pills: string[], description: string) => void }) {\n const [selectedPills, setSelectedPills] = React.useState<string[]>([])\n const [description, setDescription] = React.useState(\"\")\n const [applying, setApplying] = React.useState(false)\n\n const togglePill = React.useCallback((pill: string) => {\n setSelectedPills((prev) => (prev.includes(pill) ? prev.filter((p) => p !== pill) : [...prev, pill]))\n }, [])\n\n const handleApply = React.useCallback(() => {\n if (selectedPills.length === 0 && description.trim().length === 0) return\n setApplying(true)\n onApply?.(selectedPills, description)\n setTimeout(() => {\n setApplying(false)\n setSelectedPills([])\n setDescription(\"\")\n }, 2000)\n }, [selectedPills, description, onApply])\n\n const hasInput = selectedPills.length > 0 || description.trim().length > 0\n\n return (\n <div className=\"mb-4 space-y-2.5 animate-in fade-in slide-in-from-top-2 duration-200\">\n <div className=\"flex flex-wrap gap-1.5\">\n {aiEditPills.map((pill) => (\n <button\n key={pill}\n onClick={() => togglePill(pill)}\n className={`px-2.5 py-1 rounded-full text-[11px] font-medium border transition-colors ${\n selectedPills.includes(pill)\n ? \"bg-indigo-100 text-indigo-700 border-indigo-200 dark:bg-indigo-900/30 dark:text-indigo-300 dark:border-indigo-800\"\n : \"bg-background text-muted-foreground border-border hover:bg-muted/50 hover:text-foreground\"\n }`}\n >\n {pill}\n </button>\n ))}\n </div>\n <div className=\"flex gap-2\">\n <input\n className=\"flex-1 px-3 py-2 text-sm bg-background border border-border rounded-md focus:outline-none focus:ring-1 focus:ring-indigo-500 transition-colors placeholder:text-muted-foreground/50\"\n placeholder=\"Describe changes...\"\n value={description}\n onChange={(e) => setDescription(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" && hasInput) handleApply()\n }}\n />\n <button\n onClick={handleApply}\n disabled={!hasInput || applying}\n className={`px-4 h-9 rounded-md text-xs font-semibold transition-colors flex items-center gap-1.5 shrink-0 ${\n hasInput && !applying\n ? \"bg-foreground text-background hover:bg-foreground/90\"\n : \"bg-muted text-muted-foreground cursor-not-allowed\"\n }`}\n >\n {applying ? (\n <>\n <Sparkles className=\"w-3 h-3 animate-pulse\" />\n Applying...\n </>\n ) : (\n \"Apply\"\n )}\n </button>\n </div>\n </div>\n )\n}\n\n// ---------------------------------------------------------------------------\n// DraftFeedbackInline\n// ---------------------------------------------------------------------------\n\nconst positivePills = [\"Tone\", \"Personalization\", \"Length\", \"CTA\", \"Other\"]\nconst negativePills = [\"Too formal\", \"Too casual\", \"Too long\", \"Missing context\", \"Wrong angle\", \"Factual error\", \"Other\"]\n\nfunction DraftFeedbackInline({\n onRegenerateRequest,\n onSubmitFeedback,\n onDiscardRequest,\n}: {\n onRegenerateRequest?: (pills: string[], detail: string) => void\n onSubmitFeedback?: (type: \"up\" | \"down\", pills: string[], detail: string) => void\n onDiscardRequest?: (pills: string[], detail: string) => void\n}) {\n const [thumbState, setThumbState] = React.useState<\"up\" | \"down\" | null>(null)\n const [selectedPills, setSelectedPills] = React.useState<string[]>([])\n const [detailText, setDetailText] = React.useState(\"\")\n const [noted, setNoted] = React.useState(false)\n const [regenerated, setRegenerated] = React.useState(false)\n\n const togglePill = React.useCallback((pill: string) => {\n setSelectedPills((prev) => (prev.includes(pill) ? prev.filter((p) => p !== pill) : [...prev, pill]))\n }, [])\n\n const handleSubmit = React.useCallback(() => {\n if (!thumbState) return\n onSubmitFeedback?.(thumbState, selectedPills, detailText)\n setNoted(true)\n setTimeout(() => {\n setThumbState(null)\n setSelectedPills([])\n setDetailText(\"\")\n setNoted(false)\n }, 3000)\n }, [thumbState, selectedPills, detailText, onSubmitFeedback])\n\n const handleRegenerate = React.useCallback(() => {\n if (!thumbState) return\n onRegenerateRequest?.(selectedPills, detailText)\n setRegenerated(true)\n setTimeout(() => {\n setThumbState(null)\n setSelectedPills([])\n setDetailText(\"\")\n setRegenerated(false)\n }, 3000)\n }, [thumbState, selectedPills, detailText, onRegenerateRequest])\n\n const handleDiscard = React.useCallback(() => {\n if (!thumbState) return\n onDiscardRequest?.(selectedPills, detailText)\n }, [thumbState, selectedPills, detailText, onDiscardRequest])\n\n if (noted) {\n return (\n <div className=\"flex items-center gap-1.5 py-1 animate-in fade-in slide-in-from-top-1 duration-200\">\n <Check className=\"w-3.5 h-3.5 text-emerald-500\" />\n <span className=\"text-xs text-muted-foreground\">Feedback recorded</span>\n </div>\n )\n }\n\n if (regenerated) {\n return (\n <div className=\"py-2 animate-in fade-in slide-in-from-top-1 duration-200\">\n <div className=\"flex items-center gap-2 px-3 py-2 rounded-md bg-indigo-50 dark:bg-indigo-950/30 border border-indigo-200 dark:border-indigo-800\">\n <RefreshCw className=\"w-3 h-3 text-indigo-500 animate-spin\" />\n <span className=\"text-xs font-medium text-indigo-600 dark:text-indigo-400\">Regenerating draft...</span>\n </div>\n </div>\n )\n }\n\n return (\n <div className=\"space-y-0\">\n <div className=\"flex items-center justify-between\">\n <span className=\"text-sm text-foreground font-medium\">How's this draft?</span>\n <div className=\"flex gap-1\">\n <button\n onClick={() => {\n setThumbState(thumbState === \"up\" ? null : \"up\")\n setSelectedPills([])\n setDetailText(\"\")\n }}\n className={`p-1.5 rounded transition-colors ${\n thumbState === \"up\"\n ? \"bg-emerald-100 text-emerald-600 dark:bg-emerald-900/30 dark:text-emerald-400\"\n : \"hover:bg-muted text-muted-foreground hover:text-foreground\"\n }`}\n >\n <ThumbsUp className=\"w-4 h-4\" fill={thumbState === \"up\" ? \"currentColor\" : \"none\"} />\n </button>\n <button\n onClick={() => {\n setThumbState(thumbState === \"down\" ? null : \"down\")\n setSelectedPills([])\n setDetailText(\"\")\n }}\n className={`p-1.5 rounded transition-colors ${\n thumbState === \"down\"\n ? \"bg-red-100 text-red-600 dark:bg-red-900/30 dark:text-red-400\"\n : \"hover:bg-muted text-muted-foreground hover:text-foreground\"\n }`}\n >\n <ThumbsDown className=\"w-4 h-4\" fill={thumbState === \"down\" ? \"currentColor\" : \"none\"} />\n </button>\n </div>\n </div>\n\n {thumbState && (\n <div className=\"pt-3 space-y-3 animate-in fade-in slide-in-from-top-2 duration-200\">\n <div>\n <span className=\"text-xs text-muted-foreground mb-2 block font-medium\">\n {thumbState === \"up\" ? \"What worked well?\" : \"What needs improvement?\"}\n </span>\n <div className=\"flex flex-wrap gap-1.5\">\n {(thumbState === \"up\" ? positivePills : negativePills).map((pill) => (\n <button\n key={pill}\n onClick={() => togglePill(pill)}\n className={`px-2.5 py-1 rounded-full text-[11px] font-medium border transition-colors ${\n selectedPills.includes(pill)\n ? thumbState === \"up\"\n ? \"bg-emerald-100 text-emerald-700 border-emerald-200 dark:bg-emerald-900/30 dark:text-emerald-300 dark:border-emerald-800\"\n : \"bg-red-100 text-red-700 border-red-200 dark:bg-red-900/30 dark:text-red-300 dark:border-red-800\"\n : \"bg-background text-muted-foreground border-border hover:bg-muted/50 hover:text-foreground\"\n }`}\n >\n {pill}\n </button>\n ))}\n </div>\n </div>\n\n <textarea\n value={detailText}\n onChange={(e) => setDetailText(e.target.value)}\n placeholder={thumbState === \"up\" ? \"Add specific praise (optional)...\" : \"Provide specific instructions (optional)...\"}\n className=\"w-full text-xs bg-background border border-border rounded-md px-2.5 py-2 text-foreground placeholder:text-muted-foreground/50 focus:outline-none focus:ring-1 focus:ring-indigo-500/50 focus:border-indigo-500/50 resize-none min-h-[60px]\"\n />\n\n <div className=\"flex items-center gap-2 pt-1\">\n {thumbState === \"down\" ? (\n <>\n <button\n onClick={handleRegenerate}\n disabled={selectedPills.length === 0 && detailText.length === 0}\n className={`flex-1 py-1.5 rounded-md text-xs font-semibold transition-colors flex items-center justify-center gap-1.5 ${\n selectedPills.length > 0 || detailText.length > 0\n ? \"bg-foreground text-background hover:bg-foreground/90\"\n : \"bg-muted text-muted-foreground cursor-not-allowed\"\n }`}\n >\n <RefreshCw className=\"w-3 h-3\" />\n Regenerate draft\n </button>\n <button\n onClick={handleDiscard}\n className=\"flex-1 py-1.5 rounded-md text-xs font-medium transition-colors border bg-background text-foreground border-border hover:bg-muted/50 flex items-center justify-center gap-1.5\"\n >\n Discard draft\n </button>\n </>\n ) : (\n <button\n onClick={handleSubmit}\n className=\"flex-1 py-1.5 rounded-md text-xs font-semibold transition-colors bg-foreground text-background hover:bg-foreground/90 border-transparent\"\n >\n Submit feedback\n </button>\n )}\n </div>\n </div>\n )}\n </div>\n )\n}\n\n// ---------------------------------------------------------------------------\n// EditorToolbar\n// ---------------------------------------------------------------------------\n\nfunction EditorToolbar() {\n return (\n <div className=\"flex items-center gap-1 px-4 py-2 border-t border-border bg-muted/5 flex-wrap\">\n <div className=\"flex items-center mr-2 gap-1 shrink-0\">\n <Button variant=\"ghost\" size=\"icon\" className=\"h-7 w-7 text-muted-foreground hover:text-foreground\">\n <Undo2 className=\"h-4 w-4\" />\n </Button>\n <Button variant=\"ghost\" size=\"icon\" className=\"h-7 w-7 text-muted-foreground hover:text-foreground\">\n <Redo2 className=\"h-4 w-4\" />\n </Button>\n </div>\n <div className=\"w-px h-4 bg-border mx-1 shrink-0\" />\n <Button variant=\"ghost\" size=\"sm\" className=\"h-7 text-xs font-medium text-muted-foreground gap-1 px-2 hover:text-foreground shrink-0\">\n Sans Serif <ChevronDown className=\"h-3 w-3\" />\n </Button>\n <div className=\"w-px h-4 bg-border mx-1 shrink-0\" />\n <div className=\"flex items-center gap-1 shrink-0\">\n <Button variant=\"ghost\" size=\"icon\" className=\"h-7 w-7 text-muted-foreground hover:text-foreground\">\n <Bold className=\"h-4 w-4\" />\n </Button>\n <Button variant=\"ghost\" size=\"icon\" className=\"h-7 w-7 text-muted-foreground hover:text-foreground\">\n <Italic className=\"h-4 w-4\" />\n </Button>\n <Button variant=\"ghost\" size=\"icon\" className=\"h-7 w-7 text-muted-foreground hover:text-foreground\">\n <Underline className=\"h-4 w-4\" />\n </Button>\n </div>\n <div className=\"w-px h-4 bg-border mx-1 shrink-0\" />\n <div className=\"flex items-center gap-1 shrink-0\">\n <Button variant=\"ghost\" size=\"icon\" className=\"h-7 w-7 text-muted-foreground hover:text-foreground\">\n <AlignLeft className=\"h-4 w-4\" />\n </Button>\n <Button variant=\"ghost\" size=\"icon\" className=\"h-7 w-7 text-muted-foreground hover:text-foreground\">\n <List className=\"h-4 w-4\" />\n </Button>\n </div>\n <div className=\"flex-1\" />\n <Button variant=\"ghost\" size=\"icon\" className=\"h-7 w-7 text-muted-foreground hover:text-red-600 hover:bg-red-50 shrink-0 ml-auto\">\n <Trash className=\"h-4 w-4\" />\n </Button>\n </div>\n )\n}\n\n// ---------------------------------------------------------------------------\n// FollowUpToggle (simple checkbox-based switch)\n// ---------------------------------------------------------------------------\n\nfunction FollowUpToggle({\n checked,\n onCheckedChange,\n days,\n}: {\n checked: boolean\n onCheckedChange: (checked: boolean) => void\n days: number\n}) {\n return (\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-2 text-sm text-foreground\">\n <Clock className=\"w-4 h-4 text-muted-foreground\" />\n <span>Auto-draft follow-up in {days}d if no response</span>\n </div>\n <button\n role=\"switch\"\n aria-checked={checked}\n onClick={() => onCheckedChange(!checked)}\n className={`relative inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors ${\n checked ? \"bg-foreground\" : \"bg-muted\"\n }`}\n >\n <span\n className={`pointer-events-none block h-4 w-4 rounded-full bg-background shadow-sm transition-transform ${\n checked ? \"translate-x-4\" : \"translate-x-0\"\n }`}\n />\n </button>\n </div>\n )\n}\n\n// ---------------------------------------------------------------------------\n// ContactCard\n// ---------------------------------------------------------------------------\n\nfunction ContactCard({\n contact,\n onConfirm,\n onRemove,\n onSwap,\n variant = \"primary\",\n showPhone = false,\n}: {\n contact: SuggestedContact\n onConfirm?: () => void\n onRemove?: () => void\n onSwap?: () => void\n variant?: \"primary\" | \"secondary\" | \"alternative\"\n showPhone?: boolean\n}) {\n const [selectedEmail, setSelectedEmail] = React.useState(\n contact.email ?? contact.emails?.[0] ?? \"\"\n )\n const [selectedPhone, setSelectedPhone] = React.useState(\n contact.phone ?? contact.phones?.[0] ?? \"\"\n )\n const [showEmailPicker, setShowEmailPicker] = React.useState(false)\n const [showPhonePicker, setShowPhonePicker] = React.useState(false)\n const hasMultipleEmails = (contact.emails?.length ?? 0) > 1\n const hasMultiplePhones = (contact.phones?.length ?? 0) > 1\n const initials = contact.name.split(\" \").map((n) => n[0]).join(\"\")\n\n if (variant === \"alternative\") {\n const detail = showPhone\n ? contact.phone ?? contact.phones?.[0] ?? \"\"\n : contact.email ?? contact.emails?.[0] ?? \"\"\n return (\n <button\n onClick={onSwap}\n className=\"flex items-center gap-3 w-full px-3 py-2 text-left hover:bg-muted/50 rounded-md transition-colors group\"\n >\n <div className=\"w-7 h-7 rounded-full bg-muted flex items-center justify-center text-[10px] font-medium text-muted-foreground shrink-0\">\n {initials}\n </div>\n <div className=\"flex-1 min-w-0\">\n <div className=\"text-sm text-foreground\">{contact.name}</div>\n <div className=\"text-xs text-muted-foreground truncate\">\n {contact.role}{detail ? ` · ${detail}` : \"\"}\n </div>\n </div>\n <span className=\"text-xs text-muted-foreground opacity-0 group-hover:opacity-100 transition-opacity\">\n Select\n </span>\n </button>\n )\n }\n\n if (variant === \"secondary\") {\n return (\n <div className=\"flex items-center gap-2 px-2.5 py-1.5 bg-muted/40 rounded-md text-sm group\">\n <span className=\"text-foreground text-xs\">{contact.name}</span>\n <span className=\"text-muted-foreground text-xs truncate\">\n {contact.email ?? selectedEmail}\n </span>\n {onRemove && (\n <button\n onClick={onRemove}\n className=\"ml-auto text-muted-foreground hover:text-foreground transition-colors opacity-0 group-hover:opacity-100\"\n >\n <X className=\"w-3 h-3\" />\n </button>\n )}\n </div>\n )\n }\n\n const needsConfirmation = !contact.confirmed && !!onConfirm\n\n return (\n <div\n className={`flex flex-wrap items-start gap-3 rounded-md ${\n needsConfirmation ? \"border border-emerald-200/70 bg-emerald-50/40 p-2.5\" : \"\"\n }`}\n >\n <div className=\"w-8 h-8 rounded-full bg-muted flex items-center justify-center text-xs font-medium text-muted-foreground shrink-0 mt-0.5\">\n {initials}\n </div>\n <div className=\"flex-1 min-w-0\">\n <div className=\"flex items-baseline gap-2\">\n <span className=\"text-sm font-medium text-foreground\">{contact.name}</span>\n <span className=\"text-xs text-muted-foreground\">{contact.role}</span>\n {contact.confirmed && (\n <span className=\"inline-flex h-4 w-4 items-center justify-center rounded-full bg-emerald-100 text-emerald-700\">\n <Check className=\"h-3 w-3\" />\n </span>\n )}\n </div>\n <div className=\"flex items-center gap-1.5 mt-0.5\">\n {showPhone ? (\n <>\n <span className=\"text-xs text-muted-foreground\">{selectedPhone}</span>\n {hasMultiplePhones && (\n <div className=\"relative\">\n <button\n onClick={() => setShowPhonePicker(!showPhonePicker)}\n className=\"text-xs text-muted-foreground hover:text-foreground transition-colors\"\n >\n <ChevronDown className=\"w-3 h-3\" />\n </button>\n {showPhonePicker && (\n <div className=\"absolute top-full left-0 mt-1 bg-background border border-border rounded-md shadow-lg z-10 py-1 min-w-[180px]\">\n {contact.phones!.map((p) => (\n <button\n key={p}\n onClick={() => { setSelectedPhone(p); setShowPhonePicker(false) }}\n className={`w-full text-left px-3 py-1.5 text-xs hover:bg-muted/50 transition-colors ${\n p === selectedPhone ? \"text-foreground font-medium\" : \"text-muted-foreground\"\n }`}\n >\n {p}\n </button>\n ))}\n </div>\n )}\n </div>\n )}\n </>\n ) : (\n <>\n <span className=\"text-xs text-muted-foreground\">{selectedEmail}</span>\n {hasMultipleEmails && (\n <div className=\"relative\">\n <button\n onClick={() => setShowEmailPicker(!showEmailPicker)}\n className=\"text-xs text-muted-foreground hover:text-foreground transition-colors\"\n >\n <ChevronDown className=\"w-3 h-3\" />\n </button>\n {showEmailPicker && (\n <div className=\"absolute top-full left-0 mt-1 bg-background border border-border rounded-md shadow-lg z-10 py-1 min-w-[220px]\">\n {contact.emails!.map((e) => (\n <button\n key={e}\n onClick={() => { setSelectedEmail(e); setShowEmailPicker(false) }}\n className={`w-full text-left px-3 py-1.5 text-xs hover:bg-muted/50 transition-colors ${\n e === selectedEmail ? \"text-foreground font-medium\" : \"text-muted-foreground\"\n }`}\n >\n {e}\n </button>\n ))}\n </div>\n )}\n </div>\n )}\n </>\n )}\n </div>\n </div>\n {(onRemove || (!contact.confirmed && onConfirm)) && (\n <div className=\"ml-auto flex items-center gap-1.5 shrink-0 self-center\">\n {!contact.confirmed && onConfirm && (\n <button\n onClick={onConfirm}\n className=\"h-7 rounded-md border border-emerald-700 bg-emerald-700 px-2.5 text-xs font-semibold text-white hover:bg-emerald-600 hover:border-emerald-600 transition-colors\"\n >\n Confirm recipient\n </button>\n )}\n {onRemove && (\n <button\n onClick={onRemove}\n className=\"h-7 w-7 inline-flex items-center justify-center rounded-md border border-border bg-background text-muted-foreground hover:text-foreground hover:bg-muted/40 transition-colors\"\n aria-label=\"Remove contact\"\n >\n <X className=\"w-3.5 h-3.5\" />\n </button>\n )}\n </div>\n )}\n </div>\n )\n}\n\n// ---------------------------------------------------------------------------\n// AccountContactsPopover\n// ---------------------------------------------------------------------------\n\nfunction AccountContactsPopover({\n contacts,\n onSelect,\n onSelectTo,\n onSelectCc,\n onSelectBcc,\n onViewAll,\n onOpenRecentActivity,\n trigger,\n iconMap,\n}: {\n contacts: SuggestedContact[]\n onSelect: (contact: SuggestedContact) => void\n onSelectTo?: (contact: SuggestedContact) => void\n onSelectCc?: (contact: SuggestedContact) => void\n onSelectBcc?: (contact: SuggestedContact) => void\n onViewAll?: () => void\n onOpenRecentActivity?: () => void\n trigger: React.ReactNode\n iconMap?: SuggestedActionsIconMap\n}) {\n const [open, setOpen] = React.useState(false)\n const triggerRef = React.useRef<HTMLDivElement>(null)\n const [popoverStyle, setPopoverStyle] = React.useState<React.CSSProperties>({})\n\n React.useEffect(() => {\n if (open && triggerRef.current) {\n const rect = triggerRef.current.getBoundingClientRect()\n const popoverWidth = Math.min(448, window.innerWidth - 32)\n let left = rect.right - popoverWidth\n if (left < 16) left = 16\n if (left + popoverWidth > window.innerWidth - 16) left = window.innerWidth - 16 - popoverWidth\n setPopoverStyle({ position: \"fixed\", top: rect.bottom + 4, left })\n }\n }, [open])\n\n return (\n <div>\n <div ref={triggerRef} onClick={() => setOpen(!open)}>{trigger}</div>\n {open && (\n <>\n <div className=\"fixed inset-0 z-40\" onClick={() => setOpen(false)} />\n <div style={popoverStyle} className=\"fixed bg-background border border-border rounded-lg shadow-xl z-50 w-[28rem] max-w-[calc(100vw-2rem)] py-2 animate-in fade-in slide-in-from-top-1 duration-150\">\n <div className=\"px-3 py-1.5 text-[11px] font-medium text-muted-foreground/60 uppercase tracking-wide\">\n Account Contacts\n </div>\n <div className=\"max-h-48 overflow-y-auto\">\n {contacts.map((c, i) => (\n <div\n key={i}\n role=\"button\"\n onClick={() => { (onSelectTo ?? onSelect)(c); setOpen(false) }}\n className=\"flex items-center gap-3 w-full px-3 py-2 text-left hover:bg-muted/50 transition-colors cursor-pointer\"\n >\n <div className=\"w-7 h-7 rounded-full bg-muted flex items-center justify-center text-[10px] font-medium text-muted-foreground shrink-0\">\n {c.name.split(\" \").map((n) => n[0]).join(\"\")}\n </div>\n <div className=\"flex-1 min-w-0 overflow-hidden\">\n <div className=\"truncate text-sm font-medium text-foreground\">{c.name}</div>\n <div className=\"truncate text-xs text-muted-foreground leading-tight\">\n {c.role} · {c.email ?? c.emails?.[0] ?? c.phone ?? c.phones?.[0] ?? \"\"}\n </div>\n {c.lastActivity && (\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation()\n onOpenRecentActivity?.()\n setOpen(false)\n }}\n className=\"mt-1.5 flex max-w-full items-center gap-1.5 overflow-hidden rounded-md border border-border/70 bg-muted/30 px-2 py-1 text-[11px] text-muted-foreground hover:text-foreground hover:bg-muted/50 transition-colors\"\n >\n <Clock className=\"w-3 h-3 shrink-0\" />\n <span className=\"shrink-0 font-medium\">Last activity</span>\n <span className=\"shrink-0 text-muted-foreground/60\">·</span>\n <span className=\"shrink-0\">{c.lastActivity.date}</span>\n <span className=\"shrink-0 text-muted-foreground/60\">·</span>\n <span className=\"truncate capitalize\">{c.lastActivity.type}</span>\n </button>\n )}\n </div>\n <div className=\"ml-2 flex items-center gap-1.5 shrink-0\">\n {onSelectTo && (\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation()\n onSelectTo(c)\n setOpen(false)\n }}\n className=\"h-6 rounded border border-border bg-background px-1.5 text-[10px] text-muted-foreground hover:text-foreground hover:bg-muted/40\"\n >\n To\n </button>\n )}\n {onSelectCc && (\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation()\n onSelectCc(c)\n setOpen(false)\n }}\n className=\"h-6 rounded border border-border bg-background px-1.5 text-[10px] text-muted-foreground hover:text-foreground hover:bg-muted/40\"\n >\n Cc\n </button>\n )}\n {onSelectBcc && (\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation()\n onSelectBcc(c)\n setOpen(false)\n }}\n className=\"h-6 rounded border border-border bg-background px-1.5 text-[10px] text-muted-foreground hover:text-foreground hover:bg-muted/40\"\n >\n Bcc\n </button>\n )}\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation()\n if (c.salesforceUrl) {\n window.open(c.salesforceUrl, \"_blank\", \"noopener,noreferrer\")\n } else {\n onViewAll?.()\n }\n }}\n className=\"h-7 w-7 inline-flex items-center justify-center rounded-md border border-border bg-background hover:bg-muted/40 transition-colors shrink-0\"\n aria-label={`Open ${c.name} in Salesforce`}\n >\n {iconMap?.salesforce ? (\n <BrandIcon src={iconMap.salesforce} alt=\"Salesforce\" className=\"w-3.5 h-3.5\" />\n ) : (\n <ExternalLink className=\"w-3.5 h-3.5 text-muted-foreground\" />\n )}\n </button>\n </div>\n </div>\n ))}\n </div>\n {onViewAll && (\n <>\n <div className=\"h-px bg-border mx-3 my-1\" />\n <button\n onClick={() => { onViewAll(); setOpen(false) }}\n className=\"flex items-center gap-2 w-full px-3 py-2 text-left text-xs text-muted-foreground hover:text-foreground hover:bg-muted/50 transition-colors\"\n >\n <ExternalLink className=\"w-3 h-3\" />\n View all contacts\n </button>\n </>\n )}\n </div>\n </>\n )}\n </div>\n )\n}\n\n// ---------------------------------------------------------------------------\n// EmailHeader (Notion Mail style)\n// ---------------------------------------------------------------------------\n\nfunction EmailHeader({\n fromName,\n fromEmail,\n toContacts,\n ccContacts,\n initialSubject = \"\",\n accountContacts,\n bccContacts,\n onAddToContact,\n onRemoveToContact,\n onConfirmToContact,\n onUpdateToContact,\n onCcAdd,\n onCcRemove,\n onBccAdd,\n onBccRemove,\n onOpenAccountDetails,\n onOpenRecentActivity,\n iconMap,\n showSubject = false,\n accountDetailsLabel = \"Account details\",\n}: {\n fromName: string\n fromEmail: string\n toContacts: SuggestedContact[]\n ccContacts?: SuggestedContact[]\n initialSubject?: string\n accountContacts?: SuggestedContact[]\n bccContacts?: SuggestedContact[]\n onAddToContact?: (contact: SuggestedContact) => void\n onRemoveToContact?: (index: number) => void\n onConfirmToContact?: (index: number) => void\n onUpdateToContact?: (index: number, contact: SuggestedContact) => void\n onCcAdd?: (contact: SuggestedContact) => void\n onCcRemove?: (index: number) => void\n onBccAdd?: (contact: SuggestedContact) => void\n onBccRemove?: (index: number) => void\n onOpenAccountDetails?: () => void\n onOpenRecentActivity?: () => void\n iconMap?: SuggestedActionsIconMap\n showSubject?: boolean\n accountDetailsLabel?: string\n}) {\n const hasUnconfirmedTo = toContacts.some((c) => !c.confirmed)\n const [expandedToIndex, setExpandedToIndex] = React.useState<number | null>(null)\n const [showCcBcc, setShowCcBcc] = React.useState(\n !!((ccContacts?.length ?? 0) > 0 || (bccContacts?.length ?? 0) > 0)\n )\n const [manualTo, setManualTo] = React.useState(\"\")\n const [manualCc, setManualCc] = React.useState(\"\")\n const [manualBcc, setManualBcc] = React.useState(\"\")\n const [subject, setSubject] = React.useState(initialSubject)\n\n React.useEffect(() => {\n if ((ccContacts?.length ?? 0) > 0 || (bccContacts?.length ?? 0) > 0) {\n setShowCcBcc(true)\n }\n }, [ccContacts, bccContacts])\n\n return (\n <div className=\"mx-4 mt-3 rounded-md border border-border/60 bg-muted/[0.16] text-sm\">\n <div className=\"flex items-center gap-3 px-4 py-2 border-b border-border/30\">\n <span className=\"text-xs text-muted-foreground w-10 shrink-0\">From</span>\n <div className=\"flex items-baseline gap-1.5 min-w-0\">\n <span className=\"text-sm text-foreground\">{fromName}</span>\n <span className=\"text-xs text-muted-foreground truncate\">{fromEmail}</span>\n </div>\n </div>\n\n <div className={`flex items-start gap-3 px-4 py-2 border-b border-border/30 ${hasUnconfirmedTo ? \"bg-amber-50/35\" : \"\"}`}>\n <span className=\"text-xs text-muted-foreground w-10 shrink-0 mt-1.5\">To</span>\n <div className=\"flex-1 min-w-0\">\n <div className=\"flex flex-wrap items-center gap-1.5\">\n {toContacts.map((contact, index) => (\n <div\n key={`${contact.name}-${index}`}\n onClick={() => setExpandedToIndex((prev) => (prev === index ? null : index))}\n className={`inline-flex max-w-[300px] cursor-pointer items-start gap-2 rounded-md border px-2 py-1 text-xs ${\n contact.confirmed\n ? \"border-border/80 bg-background text-foreground\"\n : \"border-amber-300 bg-amber-50 text-amber-800\"\n }`}\n >\n <div className=\"min-w-0\">\n <div className=\"flex items-center gap-1\">\n <span className=\"font-medium leading-none\">{contact.name}</span>\n {contact.confirmed && <Check className=\"h-3 w-3 text-emerald-600\" />}\n </div>\n <div className=\"mt-0.5 truncate text-muted-foreground\">\n {contact.email ?? contact.emails?.[0] ?? \"no email\"}\n </div>\n </div>\n <div className=\"ml-auto flex items-center gap-1\">\n {!contact.confirmed && (\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation()\n onConfirmToContact?.(index)\n }}\n className=\"h-6 rounded px-1.5 text-[10px] font-semibold hover:bg-amber-100\"\n >\n Confirm\n </button>\n )}\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation()\n onRemoveToContact?.(index)\n setExpandedToIndex((prev) => (prev === index ? null : prev))\n }}\n className=\"rounded p-0.5 text-muted-foreground hover:text-foreground hover:bg-muted/40\"\n aria-label=\"Remove recipient\"\n >\n <X className=\"h-3 w-3\" />\n </button>\n </div>\n </div>\n ))}\n <input\n type=\"text\"\n value={manualTo}\n onChange={(e) => setManualTo(e.target.value)}\n placeholder={toContacts.length ? \"Add recipient...\" : \"Type a name or email...\"}\n className=\"min-w-[140px] flex-1 text-sm bg-transparent border-none focus:outline-none focus:ring-0 placeholder:text-muted-foreground/40 py-1\"\n onKeyDown={(e) => {\n if (e.key === \"Enter\" && manualTo.trim()) {\n onAddToContact?.({ name: manualTo.trim(), role: \"\", email: manualTo.trim(), confirmed: true })\n setManualTo(\"\")\n }\n }}\n />\n </div>\n {expandedToIndex !== null && toContacts[expandedToIndex] && (\n <div className=\"mt-2 rounded-md border border-border bg-background px-3 py-2 text-xs text-muted-foreground\">\n <div className=\"flex items-center justify-between gap-2\">\n <div className=\"font-medium text-foreground text-sm\">\n {toContacts[expandedToIndex].name}\n </div>\n <button\n type=\"button\"\n onClick={() => {\n const contact = toContacts[expandedToIndex]\n if (contact.salesforceUrl) {\n window.open(contact.salesforceUrl, \"_blank\", \"noopener,noreferrer\")\n } else {\n onOpenAccountDetails?.()\n }\n }}\n className=\"h-7 w-7 inline-flex items-center justify-center rounded-md border border-border bg-background hover:bg-muted/40 transition-colors shrink-0\"\n aria-label=\"Open in Salesforce\"\n >\n {iconMap?.salesforce ? (\n <BrandIcon src={iconMap.salesforce} alt=\"Salesforce\" className=\"w-3.5 h-3.5\" />\n ) : (\n <ExternalLink className=\"w-3.5 h-3.5 text-muted-foreground\" />\n )}\n </button>\n </div>\n {toContacts[expandedToIndex].role && (\n <div className=\"mt-1\">{toContacts[expandedToIndex].role}</div>\n )}\n {(toContacts[expandedToIndex].emails?.length ?? 0) > 0 ? (\n <div className=\"mt-2\">\n <div className=\"text-[11px] text-muted-foreground/70 mb-1\">Send using</div>\n <select\n className=\"h-8 rounded-md border border-border bg-background px-2 text-xs text-foreground\"\n value={toContacts[expandedToIndex].email ?? toContacts[expandedToIndex].emails?.[0] ?? \"\"}\n onChange={(e) =>\n onUpdateToContact?.(expandedToIndex, {\n ...toContacts[expandedToIndex],\n email: e.target.value,\n })\n }\n >\n {toContacts[expandedToIndex].emails?.map((emailOption) => (\n <option key={emailOption} value={emailOption}>\n {emailOption}\n </option>\n ))}\n </select>\n </div>\n ) : toContacts[expandedToIndex].email ? (\n <div className=\"mt-1\">{toContacts[expandedToIndex].email}</div>\n ) : null}\n {(toContacts[expandedToIndex].phones?.length ?? 0) > 0 ? (\n <div className=\"mt-1\">{toContacts[expandedToIndex].phones?.join(\" · \")}</div>\n ) : toContacts[expandedToIndex].phone ? (\n <div className=\"mt-1\">{toContacts[expandedToIndex].phone}</div>\n ) : null}\n </div>\n )}\n <div className=\"flex items-center flex-wrap gap-1.5 mt-1.5\">\n {accountContacts && accountContacts.length > 0 && (\n <AccountContactsPopover\n contacts={accountContacts}\n onSelect={(c) => onAddToContact?.({ ...c, confirmed: true })}\n onSelectTo={(c) => onAddToContact?.({ ...c, confirmed: true })}\n onSelectCc={(c) => onCcAdd?.({ ...c, confirmed: true })}\n onSelectBcc={(c) => onBccAdd?.({ ...c, confirmed: true })}\n onViewAll={onOpenAccountDetails}\n onOpenRecentActivity={onOpenRecentActivity}\n iconMap={iconMap}\n trigger={\n <button className=\"h-7 rounded-md border border-border bg-background px-2 text-xs font-medium text-muted-foreground hover:text-foreground hover:bg-muted/40 transition-colors\">\n Contacts\n </button>\n }\n />\n )}\n <button\n type=\"button\"\n onClick={onOpenAccountDetails}\n className=\"h-7 rounded-md border border-border bg-background px-2 text-xs font-medium text-muted-foreground hover:text-foreground hover:bg-muted/40 transition-colors\"\n >\n {accountDetailsLabel}\n </button>\n <button\n type=\"button\"\n onClick={() => setShowCcBcc(true)}\n className=\"h-7 rounded-md border border-border bg-background px-2 text-xs font-medium text-muted-foreground hover:text-foreground hover:bg-muted/40 transition-colors\"\n >\n Add Cc/Bcc\n </button>\n </div>\n </div>\n </div>\n\n {showCcBcc && (\n <div className=\"flex items-start gap-3 px-4 py-2 border-b border-border/30 animate-in fade-in slide-in-from-top-1 duration-150\">\n <span className=\"text-xs text-muted-foreground w-10 shrink-0 mt-1.5\">Cc</span>\n <div className=\"flex-1 min-w-0\">\n <div className=\"flex flex-wrap gap-1.5\">\n {ccContacts?.map((c, i) => (\n <ContactCard key={i} contact={c} variant=\"secondary\" onRemove={() => onCcRemove?.(i)} />\n ))}\n <div className=\"flex items-center gap-2\">\n <input\n type=\"text\"\n value={manualCc}\n onChange={(e) => setManualCc(e.target.value)}\n placeholder=\"Add Cc...\"\n className=\"text-sm bg-transparent border-none focus:outline-none focus:ring-0 placeholder:text-muted-foreground/40 py-1 w-28\"\n onKeyDown={(e) => {\n if (e.key === \"Enter\" && manualCc.trim()) {\n onCcAdd?.({ name: manualCc.trim(), role: \"\", email: manualCc.trim(), confirmed: true })\n setManualCc(\"\")\n }\n }}\n />\n {accountContacts && accountContacts.length > 0 && (\n <AccountContactsPopover\n contacts={accountContacts}\n onSelect={(c) => onCcAdd?.(c)}\n onViewAll={onOpenAccountDetails}\n onOpenRecentActivity={onOpenRecentActivity}\n iconMap={iconMap}\n trigger={\n <button className=\"text-xs text-muted-foreground hover:text-foreground transition-colors\">\n <Users className=\"w-3 h-3\" />\n </button>\n }\n />\n )}\n </div>\n </div>\n </div>\n </div>\n )}\n\n {showCcBcc && (\n <div className=\"flex items-start gap-3 px-4 py-2 border-b border-border/30 animate-in fade-in slide-in-from-top-1 duration-150\">\n <span className=\"text-xs text-muted-foreground w-10 shrink-0 mt-1.5\">Bcc</span>\n <div className=\"flex-1 min-w-0\">\n <div className=\"flex flex-wrap gap-1.5\">\n {bccContacts?.map((c, i) => (\n <ContactCard key={`${c.name}-${i}`} contact={c} variant=\"secondary\" onRemove={() => onBccRemove?.(i)} />\n ))}\n <div className=\"flex items-center gap-2\">\n <input\n type=\"text\"\n value={manualBcc}\n onChange={(e) => setManualBcc(e.target.value)}\n placeholder=\"Add Bcc...\"\n className=\"text-sm bg-transparent border-none focus:outline-none focus:ring-0 placeholder:text-muted-foreground/40 py-1 w-28\"\n onKeyDown={(e) => {\n if (e.key === \"Enter\" && manualBcc.trim()) {\n onBccAdd?.({ name: manualBcc.trim(), role: \"\", email: manualBcc.trim(), confirmed: true })\n setManualBcc(\"\")\n }\n }}\n />\n {accountContacts && accountContacts.length > 0 && (\n <AccountContactsPopover\n contacts={accountContacts}\n onSelect={(c) => onBccAdd?.(c)}\n onViewAll={onOpenAccountDetails}\n onOpenRecentActivity={onOpenRecentActivity}\n iconMap={iconMap}\n trigger={\n <button className=\"text-xs text-muted-foreground hover:text-foreground transition-colors\">\n <Users className=\"w-3 h-3\" />\n </button>\n }\n />\n )}\n </div>\n </div>\n </div>\n </div>\n )}\n\n {showSubject && (\n <div className=\"flex items-center gap-3 px-4 py-2 border-b border-border/30\">\n <span className=\"text-xs text-muted-foreground w-10 shrink-0\">Subj</span>\n <input\n type=\"text\"\n value={subject}\n onChange={(e) => setSubject(e.target.value)}\n placeholder=\"Subject...\"\n className=\"flex-1 text-sm bg-transparent border-none focus:outline-none focus:ring-0 placeholder:text-muted-foreground/40 py-1 font-medium\"\n />\n </div>\n )}\n </div>\n )\n}\n\n// ---------------------------------------------------------------------------\n// SignatureBlock\n// ---------------------------------------------------------------------------\n\nfunction SignatureBlock({\n signature,\n enabled,\n onToggle,\n}: {\n signature: string | React.ReactNode\n enabled: boolean\n onToggle: () => void\n}) {\n if (!enabled) {\n return (\n <div className=\"px-3 py-2 border-t border-border/30\">\n <button\n onClick={onToggle}\n className=\"text-xs text-muted-foreground hover:text-foreground transition-colors flex items-center gap-1.5\"\n >\n <PenLine className=\"w-3 h-3\" />\n Add signature\n </button>\n </div>\n )\n }\n\n return (\n <div className=\"px-3 py-2 border-t border-border/30 bg-background/40\">\n <div className=\"flex items-center justify-between mb-1\">\n <span className=\"text-xs text-muted-foreground/60\">--</span>\n <button onClick={onToggle} className=\"text-xs text-muted-foreground hover:text-foreground transition-colors\">\n Remove\n </button>\n </div>\n <div className=\"text-xs text-muted-foreground/70 whitespace-pre-line leading-relaxed\">\n {signature}\n </div>\n </div>\n )\n}\n\n// ---------------------------------------------------------------------------\n// SuggestedActionCard\n// ---------------------------------------------------------------------------\n\nfunction SuggestedActionCard({\n action,\n onDismiss,\n onSend,\n onSaveDraft,\n accountContacts,\n signature,\n onDuplicate,\n onOpenAccountDetails,\n onOpenRecentActivity,\n onMarkComplete,\n onDispatchAgent,\n iconMap,\n sendLabel,\n accountDetailsLabel,\n dismissLabel = \"Dismiss\",\n}: {\n action: SuggestedAction\n onDismiss?: (id: number | string) => void\n onSend?: (id: number | string) => void\n onSaveDraft?: (id: number | string) => void\n accountContacts?: SuggestedContact[]\n signature?: string | React.ReactNode\n onDuplicate?: (id: number | string) => void\n onOpenAccountDetails?: () => void\n onOpenRecentActivity?: () => void\n onMarkComplete?: (id: number | string) => void\n onDispatchAgent?: (id: number | string, editedContent?: string, settings?: { aiDisclosureEnabled?: boolean; maxDurationMinutes?: string; callRecordingEnabled?: boolean; recordingNoticeEnabled?: boolean }) => void\n iconMap?: SuggestedActionsIconMap\n sendLabel?: string\n accountDetailsLabel?: string\n dismissLabel?: string\n}) {\n const isCall = action.type === \"call\"\n const [expanded, setExpanded] = React.useState(action.type === \"email\" || isCall)\n const [content, setContent] = React.useState(\n isCall\n ? action.callMeta?.talkTrack ?? \"\"\n : action.content?.replace(/<\\/p>/gi, \"\\n\\n\").replace(/<br\\s*\\/?>/gi, \"\\n\").replace(/<[^>]+>/g, \"\").replace(/\\n\\s*\\n/g, \"\\n\\n\") ?? \"\"\n )\n const [showAiEdit, setShowAiEdit] = React.useState(false)\n const [feedbackOpen, setFeedbackOpen] = React.useState(false)\n const [followUpEnabled, setFollowUpEnabled] = React.useState(action.followUp?.enabled ?? false)\n const [threadExpanded, setThreadExpanded] = React.useState(false)\n const [expandedMessageId, setExpandedMessageId] = React.useState<string | null>(null)\n const [replyingToMessageId, setReplyingToMessageId] = React.useState<string | null>(null)\n\n const [ticketPriority, setTicketPriority] = React.useState(action.ticket?.priority ?? \"Medium\")\n const [ticketType, setTicketType] = React.useState(action.ticket?.type ?? \"Support Request\")\n const [ticketSubject, setTicketSubject] = React.useState(action.ticket?.subject ?? \"\")\n const [ticketDescription, setTicketDescription] = React.useState(\n action.ticket?.description?.replace(/<\\/p>/gi, \"\\n\\n\").replace(/<br\\s*\\/?>/gi, \"\\n\").replace(/<[^>]+>/g, \"\").trim() ?? \"\"\n )\n\n const [toContacts, setToContacts] = React.useState<SuggestedContact[]>(action.emailMeta?.to ? [action.emailMeta.to] : [])\n const [ccContacts, setCcContacts] = React.useState<SuggestedContact[]>(action.emailMeta?.cc ?? [])\n const [bccContacts, setBccContacts] = React.useState<SuggestedContact[]>(\n action.emailMeta?.bcc\n ? [{ name: action.emailMeta.bcc, role: \"\", email: action.emailMeta.bcc, confirmed: true }]\n : []\n )\n const [callContact, setCallContact] = React.useState<SuggestedContact | undefined>(action.callMeta?.contact)\n const [signatureEnabled, setSignatureEnabled] = React.useState(true)\n \n\n const isNewEmail = action.type === \"email\" && !action.replyTo\n const isThreadReply = action.type === \"email\" && !!action.replyTo\n\n const canSend = isCall\n ? callContact?.confirmed ?? false\n : action.type === \"email\"\n ? toContacts.length > 0 && toContacts.every((contact) => contact.confirmed)\n : true\n\n const openInLabel =\n action.type === \"email\" ? \"Open draft\"\n : action.type === \"ticket\" ? \"Open in Zendesk\"\n : action.type === \"slack\" ? \"Open in Slack\"\n : \"Open in App\"\n\n const addUniqueContact = React.useCallback((prev: SuggestedContact[], contact: SuggestedContact) => {\n const nextKey = `${contact.name}-${contact.email ?? contact.emails?.[0] ?? \"\"}`\n if (prev.some((item) => `${item.name}-${item.email ?? item.emails?.[0] ?? \"\"}` === nextKey)) {\n return prev\n }\n return [...prev, contact]\n }, [])\n\n if (!expanded) {\n return (\n <div\n onClick={() => setExpanded(true)}\n className=\"p-4 flex items-center justify-between cursor-pointer hover:bg-muted/30 transition-colors\"\n >\n <div className=\"flex items-center gap-3\">\n <div className=\"flex items-center justify-center w-7 h-7 shrink-0\">\n {getActionTypeIcon(action.type, \"w-5 h-5\", iconMap)}\n </div>\n <div>\n <div className=\"text-sm font-medium text-foreground\">{action.label}</div>\n {action.followUp?.enabled && (\n <div className=\"flex items-center gap-1.5 text-xs text-muted-foreground mt-1\">\n <Clock className=\"w-3.5 h-3.5\" />\n <span>Follow-up in {action.followUp.days}d</span>\n </div>\n )}\n </div>\n </div>\n <ChevronDown className=\"w-5 h-5 text-muted-foreground shrink-0\" />\n </div>\n )\n }\n\n return (\n <div className=\"animate-in fade-in zoom-in-95 duration-200\">\n {/* Header */}\n <div className=\"px-4 py-3 flex items-center justify-between bg-background border-b border-border/40\">\n <div className=\"flex items-center gap-3\">\n <div className=\"flex items-center justify-center w-7 h-7 shrink-0\">\n {getActionTypeIcon(action.type, \"w-5 h-5\", iconMap)}\n </div>\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm font-medium text-foreground\">{action.label}</span>\n {isThreadReply && (\n <span className=\"inline-flex items-center gap-1 rounded-md border border-border/80 bg-muted/50 px-2 py-0.5 text-[11px] font-medium text-muted-foreground\">\n <Undo2 className=\"h-3 w-3\" />\n Reply\n </span>\n )}\n </div>\n </div>\n <div className=\"flex items-center gap-1.5\">\n <button\n onClick={() => setFeedbackOpen(!feedbackOpen)}\n className={`p-1.5 rounded transition-colors ${\n feedbackOpen\n ? \"bg-emerald-100 text-emerald-600 dark:bg-emerald-900/30 dark:text-emerald-400\"\n : \"hover:bg-muted text-muted-foreground hover:text-foreground\"\n }`}\n >\n <ThumbsUp className=\"w-3.5 h-3.5\" />\n </button>\n <button\n onClick={() => setFeedbackOpen(!feedbackOpen)}\n className=\"p-1.5 rounded transition-colors hover:bg-muted text-muted-foreground hover:text-foreground\"\n >\n <ThumbsDown className=\"w-3.5 h-3.5\" />\n </button>\n <div className=\"w-px h-4 bg-border/40 mx-0.5\" />\n <span className=\"text-xs text-muted-foreground\">4:15 PM</span>\n <button\n onClick={() => setExpanded(false)}\n className=\"text-muted-foreground hover:text-foreground hover:bg-muted/50 p-2 rounded transition-colors\"\n aria-label=\"Collapse\"\n >\n <ChevronUp className=\"w-4 h-4\" />\n </button>\n </div>\n </div>\n\n {/* Feedback below header */}\n {feedbackOpen && (\n <div className=\"px-5 py-3 border-b border-border/40 animate-in fade-in slide-in-from-top-2 duration-200\">\n <DraftFeedbackInline\n onRegenerateRequest={(pills, detail) => console.log(\"Regenerate:\", pills, detail)}\n onSubmitFeedback={(type, pills, detail) => console.log(\"Feedback:\", type, pills, detail)}\n onDiscardRequest={(pills, detail) => {\n console.log(\"Discard:\", pills, detail)\n onDismiss?.(action.id)\n }}\n />\n </div>\n )}\n\n {/* Thread Context (email thread reply only) */}\n {isThreadReply && action.replyTo && (\n <div className=\"border-b border-border/40\">\n {action.threadMessages && action.threadMessages.length > 1 && (\n <div className=\"px-5 py-2 border-b border-border/40\">\n <button\n onClick={() => setThreadExpanded(!threadExpanded)}\n className=\"text-xs text-muted-foreground hover:text-foreground transition-colors\"\n >\n {action.threadMessages.length} messages in this thread\n <span className=\"mx-1.5\">·</span>\n <span className=\"underline\">{threadExpanded ? \"Hide thread\" : \"View thread\"}</span>\n </button>\n </div>\n )}\n\n {threadExpanded && action.threadMessages && action.threadMessages.length > 1 ? (\n <div className=\"bg-muted/20\">\n {action.threadMessages.map((msg, idx) => {\n const isExpMsg = expandedMessageId === msg.id\n const isReplyingTo = !replyingToMessageId\n ? idx === action.threadMessages!.length - 1\n : replyingToMessageId === msg.id\n const isLast = idx === action.threadMessages!.length - 1\n\n return (\n <div key={msg.id}>\n <div\n className=\"px-5 py-3 hover:bg-muted/30 cursor-pointer transition-colors group relative\"\n onClick={() => setExpandedMessageId(isExpMsg ? null : msg.id)}\n >\n <div className=\"flex justify-between items-start mb-1\">\n <div className=\"flex items-center gap-2\">\n <span className=\"text-xs font-semibold text-foreground\">{msg.from}</span>\n {isReplyingTo && (\n <span className=\"text-xs text-muted-foreground flex items-center gap-1\">\n <ArrowLeft className=\"w-3 h-3\" />\n Replying to this\n </span>\n )}\n </div>\n <div className=\"flex items-center gap-2\">\n <span className=\"text-xs text-muted-foreground\">{msg.time}</span>\n {!isReplyingTo && !isExpMsg && (\n <button\n onClick={(e) => { e.stopPropagation(); setReplyingToMessageId(msg.id) }}\n className=\"text-xs text-muted-foreground hover:text-foreground underline opacity-0 group-hover:opacity-100 transition-opacity\"\n >\n Reply to this\n </button>\n )}\n </div>\n </div>\n <div className={`text-sm text-muted-foreground leading-relaxed ${isExpMsg ? \"\" : \"line-clamp-2\"}`}>\n {isExpMsg ? msg.content : msg.preview}\n </div>\n {isExpMsg && (\n <button\n onClick={(e) => { e.stopPropagation(); setExpandedMessageId(null) }}\n className=\"text-xs text-muted-foreground hover:text-foreground underline mt-2\"\n >\n Collapse\n </button>\n )}\n </div>\n {!isLast && <div className=\"h-px bg-border/40 mx-5\" />}\n </div>\n )\n })}\n </div>\n ) : (\n <div className=\"px-5 py-3 bg-muted/30\">\n <div className=\"flex justify-between items-start mb-2\">\n <span className=\"text-xs font-semibold text-foreground\">{action.replyTo.from} to Me</span>\n <span className=\"text-xs text-muted-foreground\">{action.replyTo.time}</span>\n </div>\n <div className=\"text-sm text-muted-foreground leading-relaxed line-clamp-3\">{action.replyTo.content}</div>\n </div>\n )}\n </div>\n )}\n\n {/* Reply Context (Slack) */}\n {action.type === \"slack\" && action.replyTo && (\n <div className=\"border-b border-border/40\">\n <div className=\"px-5 py-3 bg-muted/30\">\n <div className=\"flex justify-between items-start mb-2\">\n <span className=\"text-xs font-semibold text-foreground\">{action.replyTo.from} to Me</span>\n <span className=\"text-xs text-muted-foreground\">{action.replyTo.time}</span>\n </div>\n <div className=\"text-sm text-muted-foreground leading-relaxed line-clamp-3\">{action.replyTo.content}</div>\n </div>\n </div>\n )}\n\n {/* EmailHeader */}\n {action.type === \"email\" && action.emailMeta && (\n <div>\n {isThreadReply && (\n <div className=\"mx-4 mt-3 flex items-center gap-1.5 rounded-md border border-border/60 bg-muted/[0.16] px-3 py-1.5 text-xs text-muted-foreground\">\n <Undo2 className=\"h-3 w-3\" />\n Replying in existing thread\n </div>\n )}\n <EmailHeader\n fromName={action.emailMeta.from}\n fromEmail={action.emailMeta.fromEmail}\n toContacts={toContacts}\n ccContacts={ccContacts}\n initialSubject={action.emailMeta.subject}\n accountContacts={accountContacts}\n bccContacts={bccContacts}\n onAddToContact={(c) => setToContacts((prev) => addUniqueContact(prev, c))}\n onRemoveToContact={(index) => setToContacts((prev) => prev.filter((_, idx) => idx !== index))}\n onConfirmToContact={(index) =>\n setToContacts((prev) =>\n prev.map((contact, idx) => (idx === index ? { ...contact, confirmed: true } : contact))\n )\n }\n onUpdateToContact={(index, updatedContact) =>\n setToContacts((prev) =>\n prev.map((contact, idx) => (idx === index ? updatedContact : contact))\n )\n }\n onCcAdd={(c) =>\n setCcContacts((prev) => addUniqueContact(prev, c))\n }\n onCcRemove={(i) => setCcContacts((prev) => prev.filter((_, idx) => idx !== i))}\n onBccAdd={(c) =>\n setBccContacts((prev) => addUniqueContact(prev, c))\n }\n onBccRemove={(i) => setBccContacts((prev) => prev.filter((_, idx) => idx !== i))}\n onOpenAccountDetails={onOpenAccountDetails}\n onOpenRecentActivity={onOpenRecentActivity}\n iconMap={iconMap}\n showSubject={isNewEmail}\n accountDetailsLabel={accountDetailsLabel}\n />\n </div>\n )}\n\n {/* Call contact card */}\n {isCall && (\n <div className=\"mx-4 mt-3 rounded-md border border-border/60 bg-muted/[0.16] px-3 py-2.5\">\n <div className=\"flex items-start gap-3\">\n <span className=\"text-xs text-muted-foreground w-10 shrink-0 mt-1.5\">To</span>\n <div className=\"flex-1 min-w-0\">\n {callContact ? (\n <div className=\"flex flex-wrap items-center gap-1.5\">\n <div\n className={`inline-flex max-w-[300px] items-start gap-2 rounded-md border px-2 py-1 text-xs ${\n callContact.confirmed\n ? \"border-border/80 bg-background text-foreground\"\n : \"border-amber-300 bg-amber-50 text-amber-800\"\n }`}\n >\n <div className=\"min-w-0\">\n <div className=\"flex items-center gap-1\">\n <span className=\"font-medium leading-none\">{callContact.name}</span>\n {callContact.confirmed && <Check className=\"h-3 w-3 text-emerald-600\" />}\n </div>\n {callContact.role && (\n <div className=\"mt-0.5 truncate text-muted-foreground\">{callContact.role}</div>\n )}\n {(callContact.phone || callContact.phones?.[0]) && (\n <div className=\"mt-0.5 truncate text-muted-foreground\">{callContact.phone ?? callContact.phones?.[0]}</div>\n )}\n </div>\n <div className=\"ml-auto flex items-center gap-1\">\n {!callContact.confirmed && (\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation()\n setCallContact({ ...callContact, confirmed: true })\n }}\n className=\"h-6 rounded px-1.5 text-[10px] font-semibold hover:bg-amber-100\"\n >\n Confirm\n </button>\n )}\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation()\n setCallContact(undefined)\n }}\n className=\"rounded p-0.5 text-muted-foreground hover:text-foreground hover:bg-muted/40\"\n aria-label=\"Remove recipient\"\n >\n <X className=\"h-3 w-3\" />\n </button>\n </div>\n </div>\n </div>\n ) : (\n <div className=\"text-sm text-muted-foreground\">No contact selected.</div>\n )}\n <div className=\"flex items-center flex-wrap gap-1.5 mt-1.5\">\n {accountContacts && accountContacts.length > 0 && (\n <AccountContactsPopover\n contacts={accountContacts}\n onSelect={(c) => setCallContact({ ...c, confirmed: true })}\n onViewAll={onOpenAccountDetails}\n onOpenRecentActivity={onOpenRecentActivity}\n iconMap={iconMap}\n trigger={\n <button className=\"h-7 rounded-md border border-border bg-background px-2 text-xs font-medium text-muted-foreground hover:text-foreground hover:bg-muted/40 transition-colors\">\n Contacts\n </button>\n }\n />\n )}\n <button\n type=\"button\"\n onClick={onOpenAccountDetails}\n className=\"h-7 rounded-md border border-border bg-background px-2 text-xs font-medium text-muted-foreground hover:text-foreground hover:bg-muted/40 transition-colors\"\n >\n {accountDetailsLabel ?? \"Account details\"}\n </button>\n </div>\n </div>\n </div>\n </div>\n )}\n\n \n\n {/* Content Area */}\n <div>\n {action.type === \"ticket\" ? (\n <div className=\"p-5 space-y-4\">\n <div className=\"grid grid-cols-2 gap-4\">\n <div className=\"space-y-1.5\">\n <label className=\"text-xs font-medium text-muted-foreground uppercase tracking-wide\">Priority</label>\n <select\n className=\"w-full px-3 py-2 text-sm bg-background border border-border rounded-md shadow-sm focus:outline-none focus:ring-1 focus:ring-primary/20\"\n value={ticketPriority}\n onChange={(e) => setTicketPriority(e.target.value)}\n >\n <option>High</option>\n <option>Medium</option>\n <option>Low</option>\n </select>\n </div>\n <div className=\"space-y-1.5\">\n <label className=\"text-xs font-medium text-muted-foreground uppercase tracking-wide\">Type</label>\n <select\n className=\"w-full px-3 py-2 text-sm bg-background border border-border rounded-md shadow-sm focus:outline-none focus:ring-1 focus:ring-primary/20\"\n value={ticketType}\n onChange={(e) => setTicketType(e.target.value)}\n >\n <option>Churn Risk</option>\n <option>Support Request</option>\n <option>Feature Request</option>\n </select>\n </div>\n </div>\n <div className=\"space-y-1.5\">\n <label className=\"text-xs font-medium text-muted-foreground uppercase tracking-wide\">Subject</label>\n <input\n className=\"w-full px-3 py-2 text-sm bg-background border border-border rounded-md shadow-sm focus:outline-none focus:ring-1 focus:ring-primary/20\"\n value={ticketSubject}\n onChange={(e) => setTicketSubject(e.target.value)}\n />\n </div>\n <div className=\"space-y-1.5\">\n <label className=\"text-xs font-medium text-muted-foreground uppercase tracking-wide\">Description</label>\n <textarea\n className=\"w-full min-h-[100px] px-3 py-2 text-sm bg-background border border-border rounded-md shadow-sm resize-none focus:outline-none focus:ring-1 focus:ring-primary/20\"\n value={ticketDescription}\n onChange={(e) => setTicketDescription(e.target.value)}\n />\n </div>\n </div>\n ) : isCall ? (\n <div className=\"flex flex-col\">\n <div className=\"px-4 pt-3 pb-3\">\n <div className=\"rounded-md border border-border/60 bg-muted/[0.16] overflow-hidden\">\n <div className=\"px-3 pt-2 pb-1 text-[11px] font-medium uppercase tracking-wide text-muted-foreground/70\">\n Talk track\n </div>\n <div className=\"px-3 pb-3\">\n <textarea\n className=\"w-full min-h-[280px] text-sm leading-relaxed bg-transparent border-none resize-none focus:ring-0 focus:outline-none placeholder:text-muted-foreground/50 p-0 overflow-y-auto\"\n value={content}\n onChange={(e) => setContent(e.target.value)}\n placeholder=\"Edit talk track...\"\n />\n </div>\n </div>\n </div>\n <EditorToolbar />\n </div>\n ) : action.type === \"manual\" ? (\n <div className=\"p-5 space-y-4\">\n <div className=\"rounded-md border border-border/60 bg-muted/[0.16] overflow-hidden\">\n <div className=\"px-3 pt-2 pb-1 text-[11px] font-medium uppercase tracking-wide text-muted-foreground/70\">\n Task description\n </div>\n <div className=\"px-3 pb-3\">\n <p className=\"text-sm leading-relaxed text-foreground whitespace-pre-wrap\">\n {action.manualMeta?.taskDescription ?? action.content ?? \"\"}\n </p>\n </div>\n </div>\n </div>\n ) : action.type === \"browser\" ? (\n <div className=\"p-5 space-y-4\">\n <div className=\"rounded-md border border-border/60 bg-muted/[0.16] overflow-hidden\">\n <div className=\"px-3 pt-2 pb-1 text-[11px] font-medium uppercase tracking-wide text-muted-foreground/70\">\n Browser automation\n </div>\n <div className=\"px-3 pb-3 space-y-2\">\n {action.browserMeta?.url && (\n <div className=\"flex items-center gap-2 text-sm text-muted-foreground\">\n <Globe className=\"w-3.5 h-3.5 shrink-0\" />\n <a href={action.browserMeta.url} target=\"_blank\" rel=\"noopener noreferrer\" className=\"text-primary underline underline-offset-2 truncate\">\n {action.browserMeta.url}\n </a>\n </div>\n )}\n <p className=\"text-sm leading-relaxed text-foreground whitespace-pre-wrap\">\n {action.browserMeta?.actionDescription ?? action.content ?? \"\"}\n </p>\n </div>\n </div>\n </div>\n ) : (\n <div className=\"flex flex-col\">\n <div className=\"px-4 pt-3 pb-3\">\n <div className=\"rounded-md border border-border/60 bg-muted/[0.16] overflow-hidden\">\n <div className=\"px-3 pt-2 pb-1 text-[11px] font-medium uppercase tracking-wide text-muted-foreground/70\">\n Draft\n </div>\n <div className=\"px-3 pb-3\">\n <textarea\n className=\"w-full min-h-[280px] text-sm leading-relaxed bg-transparent border-none resize-none focus:ring-0 focus:outline-none placeholder:text-muted-foreground/50 p-0 overflow-y-auto\"\n value={content}\n onChange={(e) => setContent(e.target.value)}\n placeholder=\"Write your message...\"\n />\n </div>\n {action.type === \"email\" && signature && (\n <SignatureBlock signature={signature} enabled={signatureEnabled} onToggle={() => setSignatureEnabled(!signatureEnabled)} />\n )}\n </div>\n </div>\n <EditorToolbar />\n </div>\n )}\n </div>\n\n {/* Footer */}\n <div className=\"bg-muted/10 border-t border-border/60\">\n <div className=\"px-5 py-4\">\n {showAiEdit && <AiEditPanel onApply={(pills, desc) => console.log(\"AI Edit:\", pills, desc)} />}\n\n {action.followUp && (\n <div className=\"mb-3\">\n <FollowUpToggle checked={followUpEnabled} onCheckedChange={setFollowUpEnabled} days={action.followUp.days} />\n </div>\n )}\n\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-2 overflow-x-auto no-scrollbar\">\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className={`h-9 text-xs font-medium text-muted-foreground hover:text-foreground hover:bg-muted/50 ${showAiEdit ? \"bg-muted/50 text-foreground\" : \"\"}`}\n onClick={() => setShowAiEdit(!showAiEdit)}\n >\n AI Edit\n </Button>\n {!isCall && action.type !== \"email\" && (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-9 text-xs font-medium text-muted-foreground hover:text-foreground hover:bg-muted/50\"\n onClick={() => onSaveDraft?.(action.id)}\n >\n Draft\n </Button>\n )}\n {!isCall && (\n <Button variant=\"ghost\" size=\"sm\" className=\"h-9 text-xs font-medium text-muted-foreground hover:text-foreground hover:bg-muted/50 whitespace-nowrap\">\n {openInLabel}\n </Button>\n )}\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-9 text-xs font-medium text-muted-foreground hover:text-foreground hover:bg-muted/50\"\n onClick={() => onDismiss?.(action.id)}\n >\n {dismissLabel}\n </Button>\n {action.type === \"email\" && onDuplicate && (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-9 text-xs font-medium text-muted-foreground hover:text-foreground hover:bg-muted/50 whitespace-nowrap\"\n onClick={() => onDuplicate(action.id)}\n >\n <Copy className=\"w-3 h-3 mr-1.5\" />\n Copy\n </Button>\n )}\n </div>\n\n <div className=\"flex items-center gap-2 pl-2 shrink-0\">\n <div className=\"w-px h-4 bg-border/60\" />\n {isCall ? (\n <>\n {action.callMeta?.allowDispatchAgent && (\n <Button\n variant=\"outline\"\n size=\"sm\"\n className=\"h-9 text-xs font-medium shadow-none\"\n onClick={() => onDispatchAgent?.(action.id, content)}\n disabled={!canSend}\n >\n Dispatch agent\n </Button>\n )}\n <Button\n size=\"sm\"\n className={`px-5 h-9 text-xs font-semibold shadow-sm ${\n canSend\n ? \"bg-foreground text-background hover:bg-foreground/90\"\n : \"bg-muted text-muted-foreground cursor-not-allowed\"\n }`}\n onClick={() => canSend && onMarkComplete?.(action.id)}\n disabled={!canSend}\n >\n <Check className=\"w-3.5 h-3.5 mr-1.5\" />\n Mark complete\n </Button>\n </>\n ) : action.type === \"manual\" ? (\n <Button\n size=\"sm\"\n className=\"px-5 h-9 text-xs font-semibold shadow-sm bg-foreground text-background hover:bg-foreground/90\"\n onClick={() => onMarkComplete?.(action.id)}\n >\n <Check className=\"w-3.5 h-3.5 mr-1.5\" />\n Mark complete\n </Button>\n ) : action.type === \"browser\" ? (\n <Button\n size=\"sm\"\n className=\"px-5 h-9 text-xs font-semibold shadow-sm bg-foreground text-background hover:bg-foreground/90\"\n onClick={() => onSend?.(action.id)}\n >\n <Globe className=\"w-3.5 h-3.5 mr-1.5\" />\n {sendLabel ?? \"Run\"}\n </Button>\n ) : (\n <Button\n size=\"sm\"\n className={`px-6 h-9 text-xs font-semibold shadow-sm ${\n canSend\n ? \"bg-foreground text-background hover:bg-foreground/90\"\n : \"bg-muted text-muted-foreground cursor-not-allowed\"\n }`}\n onClick={() => canSend && onSend?.(action.id)}\n disabled={!canSend}\n >\n {sendLabel ?? \"Send\"}\n </Button>\n )}\n </div>\n </div>\n </div>\n </div>\n </div>\n )\n}\n\n// ---------------------------------------------------------------------------\n// SuggestedActions (public API)\n// ---------------------------------------------------------------------------\n\nexport interface SuggestedActionsProps {\n actions: SuggestedAction[]\n title?: string\n onDismiss?: (id: number | string) => void\n onSend?: (id: number | string) => void\n onSaveDraft?: (id: number | string) => void\n accountContacts?: SuggestedContact[]\n signature?: string | React.ReactNode\n onDuplicate?: (id: number | string) => void\n onOpenAccountDetails?: () => void\n onOpenRecentActivity?: () => void\n onMarkComplete?: (id: number | string) => void\n onDispatchAgent?: (id: number | string, editedContent?: string, settings?: { aiDisclosureEnabled?: boolean; maxDurationMinutes?: string; callRecordingEnabled?: boolean; recordingNoticeEnabled?: boolean }) => void\n iconMap?: SuggestedActionsIconMap\n sendLabel?: string\n accountDetailsLabel?: string\n dismissLabel?: string\n}\n\nexport function SuggestedActions({\n actions,\n title = \"Suggested Actions\",\n onDismiss,\n onSend,\n onSaveDraft,\n accountContacts,\n signature,\n onDuplicate,\n onOpenAccountDetails,\n onOpenRecentActivity,\n onMarkComplete,\n onDispatchAgent,\n iconMap,\n sendLabel,\n accountDetailsLabel,\n dismissLabel,\n}: SuggestedActionsProps) {\n const [dismissedIds, setDismissedIds] = React.useState<Set<number | string>>(new Set())\n\n const handleDismiss = React.useCallback(\n (id: number | string) => {\n setDismissedIds((prev) => new Set([...prev, id]))\n onDismiss?.(id)\n },\n [onDismiss]\n )\n\n const visibleActions = actions.filter((a) => a.status !== \"dismissed\" && !dismissedIds.has(a.id))\n\n return (\n <div className=\"py-6 border-t border-border\">\n <div className=\"flex items-center justify-between mb-4\">\n <div className=\"text-[11px] font-bold text-muted-foreground/70 uppercase tracking-wider\">{title}</div>\n <span className=\"text-[11px] text-muted-foreground\">{visibleActions.length} actions</span>\n </div>\n\n <div className=\"space-y-4\">\n {visibleActions.map((action) => (\n <div\n key={action.id}\n className=\"group bg-background border border-border rounded-md overflow-hidden shadow-sm hover:shadow-md transition-all duration-200\"\n >\n <SuggestedActionCard\n action={action}\n onDismiss={handleDismiss}\n onSend={onSend}\n onSaveDraft={onSaveDraft}\n accountContacts={accountContacts}\n signature={signature}\n onDuplicate={onDuplicate}\n onOpenAccountDetails={onOpenAccountDetails}\n onOpenRecentActivity={onOpenRecentActivity}\n onMarkComplete={onMarkComplete}\n onDispatchAgent={onDispatchAgent}\n iconMap={iconMap}\n sendLabel={sendLabel}\n accountDetailsLabel={accountDetailsLabel}\n dismissLabel={dismissLabel}\n />\n </div>\n ))}\n </div>\n </div>\n )\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { Tabs as TabsPrimitive } from \"radix-ui\"\n\nimport { cn } from \"../../../lib/utils\"\n\nfunction Tabs({\n className,\n orientation = \"horizontal\",\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Root>) {\n return (\n <TabsPrimitive.Root\n data-slot=\"tabs\"\n data-orientation={orientation}\n orientation={orientation}\n className={cn(\n \"group/tabs flex gap-2 data-[orientation=horizontal]:flex-col\",\n className\n )}\n {...props}\n />\n )\n}\n\nconst tabsListVariants = cva(\n \"rounded-lg p-[3px] group-data-[orientation=horizontal]/tabs:h-9 data-[variant=line]:rounded-none group/tabs-list text-muted-foreground inline-flex w-fit items-center justify-center group-data-[orientation=vertical]/tabs:h-fit group-data-[orientation=vertical]/tabs:flex-col\",\n {\n variants: {\n variant: {\n default: \"bg-muted\",\n line: \"gap-1 bg-transparent\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nfunction TabsList({\n className,\n variant = \"default\",\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.List> &\n VariantProps<typeof tabsListVariants>) {\n return (\n <TabsPrimitive.List\n data-slot=\"tabs-list\"\n data-variant={variant}\n className={cn(tabsListVariants({ variant }), className)}\n {...props}\n />\n )\n}\n\nfunction TabsTrigger({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Trigger>) {\n return (\n <TabsPrimitive.Trigger\n data-slot=\"tabs-trigger\"\n className={cn(\n \"focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring text-foreground/60 hover:text-foreground dark:text-muted-foreground dark:hover:text-foreground relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap transition-all group-data-[orientation=vertical]/tabs:w-full group-data-[orientation=vertical]/tabs:justify-start focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 group-data-[variant=default]/tabs-list:data-[state=active]:shadow-sm group-data-[variant=line]/tabs-list:data-[state=active]:shadow-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n \"group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-[state=active]:bg-transparent dark:group-data-[variant=line]/tabs-list:data-[state=active]:border-transparent dark:group-data-[variant=line]/tabs-list:data-[state=active]:bg-transparent\",\n \"data-[state=active]:bg-background dark:data-[state=active]:text-foreground dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 data-[state=active]:text-foreground\",\n \"after:bg-foreground after:absolute after:opacity-0 after:transition-opacity group-data-[orientation=horizontal]/tabs:after:inset-x-0 group-data-[orientation=horizontal]/tabs:after:bottom-[-5px] group-data-[orientation=horizontal]/tabs:after:h-0.5 group-data-[orientation=vertical]/tabs:after:inset-y-0 group-data-[orientation=vertical]/tabs:after:-right-1 group-data-[orientation=vertical]/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-[state=active]:after:opacity-100\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TabsContent({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Content>) {\n return (\n <TabsPrimitive.Content\n data-slot=\"tabs-content\"\n className={cn(\"flex-1 outline-none\", className)}\n {...props}\n />\n )\n}\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent, tabsListVariants }\n","import * as React from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\n\nfunction Textarea({ className, ...props }: React.ComponentProps<\"textarea\">) {\n return (\n <textarea\n data-slot=\"textarea\"\n className={cn(\n \"border-input placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 flex field-sizing-content min-h-16 w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Textarea }\n","\"use client\"\n\nimport * as React from \"react\"\nimport {\n AreaChart,\n Area,\n Tooltip,\n ResponsiveContainer,\n} from \"recharts\"\nimport { ArrowUp, ArrowDown, MoreHorizontal } from \"lucide-react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { Button } from \"./button\"\n\nexport interface MetricCardData {\n label: string\n value: string | number\n trend?: {\n value: number\n direction: \"up\" | \"down\" | \"neutral\"\n }\n alert?: boolean\n}\n\nexport interface TopLineMetricsProps {\n metrics: MetricCardData[]\n chartData?: { date: string; value: number; secondary?: number }[]\n filters?: string[]\n activeFilter?: string\n onFilterChange?: (filter: string) => void\n className?: string\n}\n\nfunction generateDefaultData() {\n const data = []\n const base = 150\n for (let i = 0; i < 7; i++) {\n const date = new Date()\n date.setDate(date.getDate() - (6 - i))\n const dayFactor = Math.sin(i * 0.8) * 40\n const value = Math.floor(base + dayFactor + Math.random() * 30)\n const secondary = Math.floor(value * 0.4)\n data.push({\n date: date.toLocaleDateString(\"en-US\", {\n month: \"2-digit\",\n day: \"2-digit\",\n }),\n value,\n secondary,\n })\n }\n return data\n}\n\nconst DEFAULT_DATA = generateDefaultData()\n\nexport function TopLineMetrics({\n metrics,\n chartData,\n filters,\n activeFilter,\n onFilterChange,\n className,\n}: TopLineMetricsProps) {\n const [internalFilter, setInternalFilter] = React.useState(\n activeFilter ?? filters?.[0] ?? \"All\",\n )\n const currentFilter = activeFilter ?? internalFilter\n const data = chartData ?? DEFAULT_DATA\n const primaryMetric = metrics[0]\n\n const handleFilterClick = (f: string) => {\n setInternalFilter(f)\n onFilterChange?.(f)\n }\n\n return (\n <div className={cn(\"w-full\", className)}>\n <div className=\"overflow-hidden rounded-xl border border-border bg-card shadow-sm\">\n <div className=\"flex flex-col gap-4 border-b border-border p-6\">\n <div className=\"flex items-start justify-between\">\n <div>\n <div className=\"mb-4 flex items-center gap-4\">\n <h3 className=\"text-sm font-semibold uppercase tracking-wide text-muted-foreground\">\n Work Queue Activity\n </h3>\n {filters && filters.length > 0 ? (\n <>\n <div className=\"h-4 w-px bg-muted\" />\n <div className=\"flex gap-1\">\n {filters.map((f) => (\n <button\n key={f}\n onClick={() => handleFilterClick(f)}\n className={cn(\n \"rounded-full px-2 py-0.5 text-xs font-medium transition-colors\",\n currentFilter === f\n ? \"bg-muted text-foreground\"\n : \"text-muted-foreground hover:text-foreground\",\n )}\n >\n {f}\n </button>\n ))}\n </div>\n </>\n ) : null}\n </div>\n\n <div className=\"flex items-baseline gap-3\">\n <span className=\"text-4xl font-bold tracking-tight text-foreground\">\n {primaryMetric.value}\n </span>\n <span className=\"text-lg font-medium text-muted-foreground\">\n {primaryMetric.label}\n </span>\n {primaryMetric.trend ? (\n <span\n className={cn(\n \"ml-2 flex items-center rounded-full px-2 py-0.5 text-sm font-bold\",\n primaryMetric.trend.direction === \"up\"\n ? \"bg-emerald-50 text-emerald-700\"\n : \"bg-red-50 text-red-700\",\n )}\n >\n {primaryMetric.trend.direction === \"up\" ? (\n <ArrowUp className=\"mr-1 h-3.5 w-3.5\" />\n ) : (\n <ArrowDown className=\"mr-1 h-3.5 w-3.5\" />\n )}\n {primaryMetric.trend.value}%\n </span>\n ) : null}\n </div>\n </div>\n\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-8 w-8 p-0 text-muted-foreground/70 hover:text-muted-foreground\"\n >\n <MoreHorizontal className=\"h-5 w-5\" />\n </Button>\n </div>\n </div>\n\n <div className=\"group relative h-[240px] w-full\">\n <ResponsiveContainer width=\"100%\" height=\"100%\">\n <AreaChart\n data={data}\n margin={{ top: 0, right: 0, left: 0, bottom: 0 }}\n >\n <defs>\n <linearGradient\n id=\"tlm-primary\"\n x1=\"0\"\n y1=\"0\"\n x2=\"0\"\n y2=\"1\"\n >\n <stop offset=\"5%\" stopColor=\"#10b981\" stopOpacity={0.3} />\n <stop offset=\"95%\" stopColor=\"#10b981\" stopOpacity={0} />\n </linearGradient>\n <linearGradient\n id=\"tlm-secondary\"\n x1=\"0\"\n y1=\"0\"\n x2=\"0\"\n y2=\"1\"\n >\n <stop offset=\"5%\" stopColor=\"#f97316\" stopOpacity={0.3} />\n <stop offset=\"95%\" stopColor=\"#f97316\" stopOpacity={0} />\n </linearGradient>\n </defs>\n <Tooltip\n content={({ active, payload }) => {\n if (!active || !payload?.length) return null\n return (\n <div className=\"min-w-[200px] animate-in fade-in zoom-in-95 rounded-lg border border-border bg-card/95 p-4 shadow-lg backdrop-blur-sm duration-200\">\n <div className=\"mb-2 text-xs font-semibold uppercase tracking-wider text-muted-foreground/70\">\n Metrics Snapshot\n </div>\n <div className=\"space-y-3\">\n {metrics.map((m, i) => (\n <div\n key={i}\n className=\"flex items-center justify-between gap-4\"\n >\n <span\n className={cn(\n \"text-sm font-medium\",\n i === 0\n ? \"font-bold text-foreground\"\n : \"text-muted-foreground\",\n )}\n >\n {m.label}\n </span>\n <div className=\"flex items-center gap-2\">\n <span\n className={cn(\n \"font-mono text-sm\",\n m.alert\n ? \"font-bold text-red-600\"\n : \"text-foreground\",\n )}\n >\n {m.value}\n </span>\n {m.alert ? (\n <div className=\"h-1.5 w-1.5 animate-pulse rounded-full bg-red-500\" />\n ) : null}\n </div>\n </div>\n ))}\n </div>\n </div>\n )\n }}\n cursor={{\n stroke: \"#94a3b8\",\n strokeWidth: 1,\n strokeDasharray: \"4 4\",\n }}\n />\n <Area\n type=\"monotone\"\n dataKey=\"value\"\n stroke=\"#10b981\"\n strokeWidth={3}\n fillOpacity={1}\n fill=\"url(#tlm-primary)\"\n />\n {data[0]?.secondary != null ? (\n <Area\n type=\"monotone\"\n dataKey=\"secondary\"\n stroke=\"#f97316\"\n strokeWidth={3}\n fillOpacity={1}\n fill=\"url(#tlm-secondary)\"\n style={{ opacity: 0.6 }}\n />\n ) : null}\n </AreaChart>\n </ResponsiveContainer>\n\n <div className=\"pointer-events-none absolute bottom-4 left-0 right-0 flex justify-between px-8 text-xs font-medium text-muted-foreground/70\">\n {data.map((d, i) => (\n <span key={i}>{d.date}</span>\n ))}\n </div>\n\n <div className=\"pointer-events-none absolute right-4 top-4 rounded bg-background/50 px-2 py-1 text-[10px] text-muted-foreground opacity-0 backdrop-blur-sm transition-opacity group-hover:opacity-100\">\n Hover for details\n </div>\n </div>\n </div>\n </div>\n )\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport {\n AreaChart,\n Area,\n XAxis,\n YAxis,\n CartesianGrid,\n Tooltip,\n ResponsiveContainer,\n} from \"recharts\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { CHART_TOOLTIP_STYLE, CHART_CURSOR_STYLE } from \"./chart-tooltip\"\n\nexport interface TrendSeries {\n dataKey: string\n color: string\n label?: string\n fillOpacity?: number\n}\n\nexport interface TrendAreaChartProps {\n data: Record<string, unknown>[]\n series: TrendSeries[]\n height?: number\n xAxisKey?: string\n showGrid?: boolean\n yDomain?: [number, number]\n tooltipFormatter?: (value: number | string, name: string) => [string, string]\n className?: string\n}\n\nexport function TrendAreaChart({\n data,\n series,\n height = 250,\n xAxisKey = \"date\",\n showGrid = true,\n yDomain,\n tooltipFormatter,\n className,\n}: TrendAreaChartProps) {\n const chartId = React.useId().replace(/:/g, \"\")\n\n const CustomTooltip = React.useCallback(\n ({ active, payload, label }: any) => {\n if (!active || !payload || !payload.length) return null\n\n return (\n <div\n className=\"rounded-lg border border-border bg-background px-3 py-2 shadow-md\"\n style={{ fontSize: \"12px\" }}\n >\n {label ? (\n <p className=\"mb-1 text-xs font-medium text-muted-foreground\">{label}</p>\n ) : null}\n {payload.map((entry: any, i: number) => {\n const val = entry.value\n const name = entry.name || entry.dataKey\n const [displayValue, displayName] = tooltipFormatter\n ? tooltipFormatter(val, name)\n : [String(val), name]\n return (\n <div key={i} className=\"flex items-center gap-2\">\n <div\n className=\"h-2 w-2 shrink-0 rounded-full\"\n style={{ backgroundColor: entry.color || entry.stroke }}\n />\n <span className=\"text-xs font-medium text-foreground\">\n {displayName}: {displayValue}\n </span>\n </div>\n )\n })}\n </div>\n )\n },\n [tooltipFormatter],\n )\n\n return (\n <div className={cn(\"w-full\", className)} style={{ height }}>\n <ResponsiveContainer width=\"100%\" height=\"100%\">\n <AreaChart\n data={data}\n margin={{ top: 10, right: 10, left: -20, bottom: 0 }}\n >\n <defs>\n {series.map((s, i) => (\n <linearGradient\n key={s.dataKey}\n id={`trend-${chartId}-${i}`}\n x1=\"0\"\n y1=\"0\"\n x2=\"0\"\n y2=\"1\"\n >\n <stop\n offset=\"5%\"\n stopColor={s.color}\n stopOpacity={s.fillOpacity ?? 0.15}\n />\n <stop offset=\"95%\" stopColor={s.color} stopOpacity={0} />\n </linearGradient>\n ))}\n </defs>\n {showGrid ? (\n <CartesianGrid\n strokeDasharray=\"3 3\"\n vertical={false}\n stroke=\"#e2e8f0\"\n />\n ) : null}\n <XAxis\n dataKey={xAxisKey}\n axisLine={false}\n tickLine={false}\n tick={{ fontSize: 10, fill: \"#64748b\" }}\n dy={10}\n />\n <YAxis\n axisLine={false}\n tickLine={false}\n tick={{ fontSize: 10, fill: \"#64748b\" }}\n domain={yDomain}\n />\n <Tooltip\n content={tooltipFormatter ? <CustomTooltip /> : undefined}\n contentStyle={tooltipFormatter ? undefined : CHART_TOOLTIP_STYLE}\n cursor={CHART_CURSOR_STYLE}\n />\n {series.map((s, i) => (\n <Area\n key={s.dataKey}\n type=\"linear\"\n dataKey={s.dataKey}\n stroke={s.color}\n strokeWidth={2}\n fillOpacity={1}\n fill={`url(#trend-${chartId}-${i})`}\n activeDot={{ r: 4, strokeWidth: 0 }}\n />\n ))}\n </AreaChart>\n </ResponsiveContainer>\n </div>\n )\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"../../../lib/utils\"\n\nexport interface ViewMode {\n id: string\n icon: React.ReactNode\n label: string\n}\n\nexport interface ViewModeToggleProps {\n modes: ViewMode[]\n activeMode: string\n onModeChange: (modeId: string) => void\n className?: string\n}\n\nexport function ViewModeToggle({ modes, activeMode, onModeChange, className }: ViewModeToggleProps) {\n return (\n <div className={cn(\"flex items-center rounded-lg bg-muted p-0.5 gap-0.5\", className)}>\n {modes.map((mode) => (\n <button\n key={mode.id}\n onClick={() => onModeChange(mode.id)}\n title={mode.label}\n className={cn(\n \"h-7 w-8 flex items-center justify-center rounded-md transition-all\",\n activeMode === mode.id\n ? \"bg-background shadow-sm text-foreground\"\n : \"text-muted-foreground hover:text-foreground hover:bg-muted/80\"\n )}\n >\n {mode.icon}\n </button>\n ))}\n </div>\n )\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport {\n AreaChart,\n Area,\n XAxis,\n YAxis,\n CartesianGrid,\n Tooltip,\n ResponsiveContainer,\n} from \"recharts\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { CHART_TOOLTIP_STYLE } from \"./chart-tooltip\"\n\nexport interface VolumeDataKey {\n key: string\n color: string\n}\n\nexport interface VolumeAnalysisChartProps {\n data: Record<string, unknown>[]\n dataKeys: VolumeDataKey[]\n height?: number\n xAxisKey?: string\n stacked?: boolean\n title?: string\n subtitle?: string\n className?: string\n}\n\nexport function VolumeAnalysisChart({\n data,\n dataKeys,\n height = 250,\n xAxisKey = \"date\",\n stacked = true,\n title,\n subtitle,\n className,\n}: VolumeAnalysisChartProps) {\n const chartId = React.useId().replace(/:/g, \"\")\n\n return (\n <div className={cn(\"w-full\", className)}>\n {(title || subtitle) ? (\n <div className=\"mb-4\">\n {title ? (\n <h3 className=\"text-base font-semibold text-foreground\">{title}</h3>\n ) : null}\n {subtitle ? (\n <p className=\"mt-0.5 text-sm text-muted-foreground\">{subtitle}</p>\n ) : null}\n </div>\n ) : null}\n\n <div className=\"w-full\" style={{ height }}>\n <ResponsiveContainer width=\"100%\" height=\"100%\">\n <AreaChart\n data={data}\n margin={{ top: 10, right: 10, left: -20, bottom: 0 }}\n >\n <defs>\n {dataKeys.map((item, i) => (\n <linearGradient\n key={item.key}\n id={`vol-${chartId}-${i}`}\n x1=\"0\"\n y1=\"0\"\n x2=\"0\"\n y2=\"1\"\n >\n <stop\n offset=\"5%\"\n stopColor={item.color}\n stopOpacity={0.8}\n />\n <stop\n offset=\"95%\"\n stopColor={item.color}\n stopOpacity={0.1}\n />\n </linearGradient>\n ))}\n </defs>\n <CartesianGrid\n strokeDasharray=\"3 3\"\n vertical={false}\n stroke=\"#f1f5f9\"\n />\n <XAxis\n dataKey={xAxisKey}\n axisLine={false}\n tickLine={false}\n tick={{ fill: \"#64748B\", fontSize: 12 }}\n dy={10}\n />\n <YAxis\n axisLine={false}\n tickLine={false}\n tick={{ fill: \"#64748B\", fontSize: 12 }}\n />\n <Tooltip\n contentStyle={CHART_TOOLTIP_STYLE}\n itemStyle={{ fontSize: \"12px\", fontWeight: 600 }}\n />\n {dataKeys.map((item, i) => (\n <Area\n key={item.key}\n type=\"linear\"\n dataKey={item.key}\n stackId={stacked ? \"1\" : undefined}\n stroke={item.color}\n fill={`url(#vol-${chartId}-${i})`}\n strokeWidth={2}\n />\n ))}\n </AreaChart>\n </ResponsiveContainer>\n </div>\n </div>\n )\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport {\n ArrowLeft,\n ChevronDown,\n ChevronRight,\n Filter,\n FileText,\n Clock,\n CheckSquare,\n Eye,\n Plus,\n MessageSquare,\n Mail,\n Building,\n LayoutList,\n Columns2,\n Square,\n Tag,\n} from \"lucide-react\"\n\nimport { Button } from \"./button\"\nimport { Badge } from \"./badge\"\nimport { Input } from \"./input\"\nimport { ViewModeToggle } from \"./view-mode-toggle\"\nimport {\n InboxToolbar,\n type AssigneeFilter,\n type InboxFilterCategory,\n} from \"./inbox-toolbar\"\nimport { GroupedListView, type GroupedListGroup } from \"./item-list\"\nimport { SignalApproval } from \"./signal-feedback-inline\"\nimport { ScoreBreakdown } from \"./score-breakdown\"\nimport { Citation, type SourceDef } from \"./detail-view\"\nimport {\n SuggestedActions,\n type SuggestedAction,\n type SuggestedContact,\n} from \"./suggested-actions\"\nimport { TimelineActivity, type TimelineEvent } from \"./timeline-activity\"\nimport type {\n QueueItem,\n InboxViewConfig,\n InboxDetailSections,\n SignalScoreData,\n} from \"./prototype-config\"\n\n// ---------------------------------------------------------------------------\n// Props\n// ---------------------------------------------------------------------------\n\nexport interface PrototypeInboxViewProps extends InboxViewConfig {\n /** Extra ReactNode rendered at the end of the header bar (e.g. exit button). */\n headerActions?: React.ReactNode\n onOpenEntityPanel?: () => void\n onOpenRecentActivity?: () => void\n onNavigateToInbox?: () => void\n onItemSelect?: (item: QueueItem) => void\n defaultViewMode?: \"list\" | \"split\"\n}\n\n// ---------------------------------------------------------------------------\n// Default detail sections\n// ---------------------------------------------------------------------------\n\nconst DEFAULT_DETAIL_SECTIONS: InboxDetailSections = {\n signalBrief: true,\n suggestedActions: true,\n timeline: true,\n}\n\nconst DEFAULT_SIGNAL_SCORE: SignalScoreData = {\n score: 65,\n factors: [\n { key: \"trigger\", label: \"Trigger strength\", score: 70, why: \"Moderate signal detected based on account activity\" },\n { key: \"fit\", label: \"Company fit\", score: 65, why: \"Reasonable fit based on company profile\" },\n { key: \"timing\", label: \"Timing\", score: 58, why: \"Within general evaluation window\" },\n ],\n whyNow: \"Moderate signals detected that warrant review and potential outreach.\",\n evidence: [\n \"Activity patterns suggest potential opportunity\",\n \"Company profile aligns with target segment\",\n ],\n confidence: 72,\n}\n\n// ---------------------------------------------------------------------------\n// Detail View\n// ---------------------------------------------------------------------------\n\nexport interface DetailViewProps {\n item: QueueItem\n sections: InboxDetailSections\n getSignalScore: (company: string) => SignalScoreData\n buildSuggestedActions: (item: QueueItem) => SuggestedAction[]\n buildSourceItems: (item: QueueItem) => SourceDef[]\n getTimelineEvents?: (item: QueueItem) => TimelineEvent[]\n accountContacts: SuggestedContact[]\n emailSignature: string | React.ReactNode\n iconMap: Record<string, string>\n onOpenEntityPanel?: () => void\n onOpenRecentActivity?: () => void\n onSuggestedActionFeedback?: (actionId: number | string, feedback: string, actionTitle?: string) => void\n signalLabels?: { approveButton?: string; dismissButton?: string; approvedStatus?: string; dismissedStatus?: string }\n}\n\nexport function DetailView({\n item,\n sections,\n getSignalScore,\n buildSuggestedActions,\n buildSourceItems,\n getTimelineEvents,\n accountContacts,\n emailSignature,\n iconMap,\n onOpenEntityPanel,\n onOpenRecentActivity,\n onSuggestedActionFeedback,\n signalLabels,\n}: DetailViewProps) {\n const [evidenceExpanded, setEvidenceExpanded] = React.useState(false)\n const [showTimeline, setShowTimeline] = React.useState(false)\n const [extraActions, setExtraActions] = React.useState<SuggestedAction[]>([])\n\n React.useEffect(() => {\n setShowTimeline(false)\n setEvidenceExpanded(false)\n setExtraActions([])\n }, [item.id])\n\n const signalData = React.useMemo(\n () => getSignalScore(item.company),\n [getSignalScore, item.company],\n )\n\n const suggestedActions = React.useMemo(\n () => [...buildSuggestedActions(item), ...extraActions],\n [buildSuggestedActions, item, extraActions],\n )\n const sourceItems = React.useMemo(() => buildSourceItems(item), [buildSourceItems, item])\n const timelineEvents = React.useMemo(\n () => getTimelineEvents?.(item) ?? [],\n [getTimelineEvents, item],\n )\n\n const handleDuplicate = React.useCallback(\n (id: number | string) => {\n const base = suggestedActions.find((a) => a.id === id)\n if (!base || base.type !== \"email\") return\n const clone: SuggestedAction = {\n ...base,\n id: `${base.id}-dup-${Date.now()}`,\n emailMeta: base.emailMeta ? { ...base.emailMeta, to: undefined } : undefined,\n }\n setExtraActions((prev) => [...prev, clone])\n },\n [suggestedActions],\n )\n\n return (\n <SignalApproval.Root\n companyName={item.company}\n opportunityUrl={`https://acme.lightning.force.com/lightning/r/Opportunity/006${item.id}/view`}\n labels={signalLabels}\n onApprove={() => {\n console.log(\"Approved signal:\", { taskId: item.id, company: item.company })\n }}\n onApproveFeedback={(reasons, detail) => {\n signalData.onApproveFeedback?.(reasons, detail)\n console.log(\"Approval feedback:\", { taskId: item.id, company: item.company, reasons, detail })\n }}\n onDismiss={(reasons, detail) => {\n signalData.onDismissFeedback?.(reasons, detail)\n console.log(\"Dismissed signal:\", { taskId: item.id, reasons, detail })\n }}\n >\n <div className=\"mx-auto w-full max-w-3xl p-6 pb-12 md:p-8\">\n <div className=\"pb-8\">\n {/* Header */}\n <div className=\"mb-4 flex items-center gap-2\">\n <button\n type=\"button\"\n className=\"flex items-center gap-1.5 text-xs font-medium text-muted-foreground transition-colors hover:text-foreground\"\n >\n <ArrowLeft className=\"h-3.5 w-3.5\" />\n Back\n </button>\n <span className=\"text-muted-foreground/40\">·</span>\n <span className=\"text-xs text-muted-foreground\">{item.company}</span>\n </div>\n\n <h1 className=\"mb-3 text-2xl font-bold tracking-tight text-foreground\">{item.title}</h1>\n\n <div className=\"mb-6 flex flex-wrap items-center gap-2\">\n {item.statusColor === \"red\" && (\n <div className=\"inline-flex items-center gap-1 rounded-md bg-red-50 px-2.5 py-1 text-xs font-semibold text-red-700\">\n <span className=\"text-[10px] font-bold\">!</span> Urgent\n </div>\n )}\n <div className=\"inline-flex items-center gap-1 rounded-md bg-muted px-2.5 py-1 text-xs font-medium text-muted-foreground\">\n {item.tag1}\n </div>\n <button\n type=\"button\"\n onClick={onOpenEntityPanel}\n className=\"ml-1 inline-flex items-center gap-1.5 rounded-md border border-border/60 bg-muted/30 px-2 py-1 transition-colors hover:bg-muted/50\"\n >\n <div className=\"flex h-4 w-4 items-center justify-center rounded bg-muted-foreground/10 text-[9px] font-semibold text-muted-foreground\">\n {item.company.substring(0, 1)}\n </div>\n <span className=\"text-xs font-medium text-foreground\">{item.company}</span>\n <ChevronRight className=\"h-3 w-3 text-muted-foreground/50\" />\n </button>\n </div>\n\n {/* Signal Brief */}\n {sections.signalBrief && (() => {\n const pct = signalData.score\n const scoreColor = pct >= 70 ? \"text-emerald-600\" : pct >= 40 ? \"text-amber-600\" : \"text-red-600\"\n const barColor = pct >= 70 ? \"bg-emerald-500\" : pct >= 40 ? \"bg-amber-500\" : \"bg-red-500\"\n const scoreLabel = pct >= 70 ? \"HIGH\" : pct >= 40 ? \"MEDIUM\" : \"LOW\"\n\n const evidenceWithCitations: React.ReactNode[] =\n sourceItems.length >= 4\n ? [\n <>\n There are <span className=\"font-medium text-foreground\">3 unusual signals</span> including a large balance\n outflow and reduced login frequency\n <Citation number={1} source={sourceItems[0]} />\n <Citation number={2} source={sourceItems[1]} />\n <Citation number={3} source={sourceItems[2]} />\n </>,\n <>\n Scott mentioned in <span className=\"font-medium text-foreground\">#treasury-questions</span> that they are actively\n looking for treasury management options\n <Citation number={4} source={sourceItems[2]} />\n </>,\n <>\n You have a recent email thread regarding optimization options that hasn't been replied to\n <Citation number={5} source={sourceItems[3]} />\n </>,\n ]\n : signalData.evidence.map((ev, i) => (\n <span key={i}>{ev}</span>\n ))\n\n return (\n <div className=\"mb-8\">\n <h3 className=\"text-xs font-bold text-muted-foreground uppercase tracking-wider mb-3\">Signal brief</h3>\n <p className=\"text-sm text-muted-foreground leading-relaxed mb-2\">\n We detected signals that suggest a potential opportunity with {item.company}.\n </p>\n <p className=\"text-sm text-foreground/90 leading-relaxed mb-4\">\n {signalData.whyNow}\n </p>\n\n <div className=\"mb-5 rounded-md border border-border bg-muted/20 p-3\">\n <div className=\"flex items-center justify-between mb-1.5\">\n <span className=\"text-[10px] font-bold text-muted-foreground uppercase tracking-wider\">Signal Score</span>\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm font-bold text-foreground\">{signalData.score}/100</span>\n <span className={`text-[10px] font-bold uppercase ${scoreColor}`}>{scoreLabel}</span>\n </div>\n </div>\n <div className=\"h-1.5 bg-muted rounded-full overflow-hidden mb-2\">\n <div\n className={`h-full rounded-full transition-all duration-500 ${barColor}`}\n style={{ width: `${signalData.score}%` }}\n />\n </div>\n <button\n type=\"button\"\n onClick={() => setEvidenceExpanded((prev) => !prev)}\n className=\"flex items-center gap-1 text-[11px] font-medium text-muted-foreground hover:text-foreground transition-colors\"\n >\n <ChevronDown className={`h-3 w-3 transition-transform duration-200 ${evidenceExpanded ? \"rotate-180\" : \"\"}`} />\n View more\n </button>\n\n {evidenceExpanded && (\n <div className=\"mt-3 space-y-3\">\n <ul className=\"space-y-2\">\n {evidenceWithCitations.map((ev, index) => (\n <li key={index} className=\"flex items-start gap-2 text-sm\">\n <div className=\"w-1.5 h-1.5 bg-primary rounded-full mt-2 flex-shrink-0\" />\n <span className=\"text-muted-foreground leading-relaxed\">{ev}</span>\n </li>\n ))}\n </ul>\n <ScoreBreakdown\n factors={signalData.factors}\n onFactorFeedback={signalData.onFactorFeedback ?? ((key, type, detail) =>\n console.log(\"Signal factor feedback:\", { company: item.company, factor: key, type, detail })\n )}\n />\n <SignalApproval.Actions />\n </div>\n )}\n </div>\n\n {!evidenceExpanded && <SignalApproval.Actions />}\n </div>\n )\n })()}\n\n {/* Activity Timeline */}\n {sections.timeline && timelineEvents.length > 0 && (\n <div className=\"mb-8\">\n <button\n type=\"button\"\n onClick={() => setShowTimeline((prev) => !prev)}\n className=\"group/timeline flex w-full items-center justify-between gap-2 py-2 rounded-md transition-colors hover:bg-muted/40 -mx-2 px-2 cursor-pointer\"\n >\n <div className=\"flex items-center gap-2\">\n <h3 className=\"text-xs font-bold text-muted-foreground uppercase tracking-wider group-hover/timeline:text-foreground transition-colors\">Activity timeline</h3>\n {!showTimeline && (\n <span className=\"text-[11px] text-muted-foreground/60\">· Last activity 1d ago</span>\n )}\n </div>\n <div className=\"flex items-center gap-1.5\">\n <span className=\"text-[11px] font-medium text-muted-foreground\">{timelineEvents.length} events</span>\n <ChevronDown className={`h-3.5 w-3.5 text-muted-foreground transition-transform duration-200 ${showTimeline ? \"rotate-180\" : \"\"}`} />\n </div>\n </button>\n {showTimeline && (\n <div className=\"mt-3\">\n <TimelineActivity events={timelineEvents} />\n </div>\n )}\n </div>\n )}\n </div>\n\n {/* Suggested Actions */}\n {sections.suggestedActions && (\n <SignalApproval.Gate>\n <SuggestedActions\n actions={suggestedActions}\n accountContacts={accountContacts}\n signature={emailSignature}\n iconMap={iconMap}\n onDismiss={(id) => console.log(\"Dismiss action:\", id)}\n onSend={(id) => console.log(\"Send action:\", id)}\n onSaveDraft={(id) => console.log(\"Save draft:\", id)}\n onDuplicate={handleDuplicate}\n onOpenAccountDetails={onOpenEntityPanel}\n onOpenRecentActivity={onOpenRecentActivity}\n onMarkComplete={(id) => console.log(\"Mark complete:\", id)}\n onDispatchAgent={(id) => console.log(\"Dispatch agent:\", id)}\n />\n </SignalApproval.Gate>\n )}\n </div>\n </SignalApproval.Root>\n )\n}\n\n// ---------------------------------------------------------------------------\n// Main Component\n// ---------------------------------------------------------------------------\n\nexport function PrototypeInboxView({\n items,\n filterCategories,\n detailSections,\n accountContacts = [],\n buildAccountContacts,\n emailSignature = \"\",\n buildSuggestedActions: buildSuggestedActionsProp,\n buildSourceItems: buildSourceItemsProp,\n getSignalScore: getSignalScoreProp,\n getTimelineEvents,\n iconMap = {},\n hideToolbarActions,\n hideHoverActions,\n onSuggestedActionFeedback,\n headerActions,\n onOpenEntityPanel,\n onOpenRecentActivity,\n onItemSelect,\n defaultViewMode,\n buildEntityChips,\n quickFilterTabs,\n hideAccountsButton,\n accountDetailsLabel,\n signalLabels,\n}: PrototypeInboxViewProps) {\n const [inboxViewMode, setInboxViewMode] = React.useState<\"inbox\" | \"list\" | \"detail\">(\n defaultViewMode === \"list\" ? \"list\" : defaultViewMode === \"split\" ? \"inbox\" : \"inbox\"\n )\n const [previousViewMode, setPreviousViewMode] = React.useState<\"inbox\" | \"list\">(\"inbox\")\n const [selectedTask, setSelectedTask] = React.useState(items[0])\n const [inboxAssignee, setInboxAssignee] = React.useState<AssigneeFilter>(\"me\")\n const [inboxFilters, setInboxFilters] = React.useState<Record<string, string>>({})\n const [activeQuickFilter, setActiveQuickFilter] = React.useState<string>(\"all\")\n const [splitViewSearch, setSplitViewSearch] = React.useState(\"\")\n\n const sections = React.useMemo(\n () => ({ ...DEFAULT_DETAIL_SECTIONS, ...detailSections }),\n [detailSections],\n )\n\n const resolvedFilterCategories: InboxFilterCategory[] = React.useMemo(\n () =>\n filterCategories ?? [\n {\n id: \"category\",\n label: \"Category\",\n icon: <Tag className=\"h-3.5 w-3.5 text-muted-foreground\" />,\n options: [...new Set(items.map((i) => i.tag1))],\n },\n {\n id: \"account\",\n label: \"Account\",\n icon: <Building className=\"h-3.5 w-3.5 text-muted-foreground\" />,\n options: [...new Set(items.map((i) => i.company))],\n },\n ],\n [filterCategories, items],\n )\n\n const buildSuggestedActions = React.useMemo(\n () => buildSuggestedActionsProp ?? (() => []),\n [buildSuggestedActionsProp],\n )\n\n const buildSourceItems = React.useMemo(\n () => buildSourceItemsProp ?? (() => []),\n [buildSourceItemsProp],\n )\n\n const getSignalScore = React.useMemo(\n () => getSignalScoreProp ?? (() => DEFAULT_SIGNAL_SCORE),\n [getSignalScoreProp],\n )\n\n // Build a map from filter category id → QueueItem field for targeted filtering.\n // Known category ids are mapped explicitly; unknown categories fall back to a\n // broad search across display fields so consumer-defined filters still work.\n const filterFieldMap = React.useMemo<\n Record<string, (item: QueueItem, value: string) => boolean>\n >(() => {\n const map: Record<string, (item: QueueItem, value: string) => boolean> = {}\n for (const cat of resolvedFilterCategories) {\n switch (cat.id) {\n case \"category\":\n case \"signalType\":\n map[cat.id] = (item, v) => item.tag1.toLowerCase() === v.toLowerCase()\n break\n case \"account\":\n map[cat.id] = (item, v) => item.company.toLowerCase() === v.toLowerCase()\n break\n default:\n // Fallback: check all display fields\n map[cat.id] = (item, v) => {\n const lv = v.toLowerCase()\n return (\n item.tag1.toLowerCase() === lv ||\n item.company.toLowerCase() === lv ||\n item.title.toLowerCase().includes(lv) ||\n item.details.toLowerCase().includes(lv)\n )\n }\n }\n }\n return map\n }, [resolvedFilterCategories])\n\n // Filter items for list view based on toolbar filters\n const filteredItems = React.useMemo(() => {\n const activeFilters = Object.entries(inboxFilters).filter(\n ([, value]) => value && value !== \"all\"\n )\n if (activeFilters.length === 0) return items\n return items.filter((item) =>\n activeFilters.every(([key, value]) => {\n const matcher = filterFieldMap[key]\n return matcher ? matcher(item, value) : true\n })\n )\n }, [items, inboxFilters, filterFieldMap])\n\n // Resolve quick filter tabs once — used by both the split view filter and\n // the tab bar render. Each tab's `matchValue` (falling back to `label`) is\n // compared against `item.tag1` so consumer labels can differ from data values.\n type QuickFilterTab = { id: string; label: string; matchValue?: string; count?: number }\n const resolvedQuickFilterTabs = React.useMemo<QuickFilterTab[]>(() => {\n if (quickFilterTabs) return quickFilterTabs\n // Derive default tabs from the actual item tag1 values\n const uniqueTags = [...new Set(items.map((i) => i.tag1))]\n return uniqueTags.map((tag) => ({\n id: tag.toLowerCase().replace(/\\s+/g, \"-\"),\n label: tag,\n }))\n }, [quickFilterTabs, items])\n\n // Compute per-tab counts once so they can be displayed in the tab bar\n const quickFilterTabCounts = React.useMemo(() => {\n const counts: Record<string, number> = {}\n for (const tab of resolvedQuickFilterTabs) {\n const match = (tab.matchValue ?? tab.label).toLowerCase()\n counts[tab.id] = items.filter((i) => i.tag1.toLowerCase() === match).length\n }\n return counts\n }, [resolvedQuickFilterTabs, items])\n\n // Filter items for split view based on quick filter tabs and search\n const splitViewItems = React.useMemo(() => {\n let filtered = items\n // Apply quick filter tab\n if (activeQuickFilter !== \"all\") {\n const activeTab = resolvedQuickFilterTabs.find((t) => t.id === activeQuickFilter)\n if (activeTab) {\n const match = (activeTab.matchValue ?? activeTab.label).toLowerCase()\n filtered = filtered.filter(\n (item) => item.tag1.toLowerCase() === match\n )\n }\n }\n // Apply search input\n if (splitViewSearch.trim()) {\n const q = splitViewSearch.trim().toLowerCase()\n filtered = filtered.filter(\n (item) =>\n item.tag1.toLowerCase().includes(q) ||\n item.company.toLowerCase().includes(q) ||\n item.title.toLowerCase().includes(q)\n )\n }\n return filtered\n }, [items, activeQuickFilter, resolvedQuickFilterTabs, splitViewSearch])\n\n // Grouped items for list view\n const inboxGroups = React.useMemo<GroupedListGroup<QueueItem>[]>(() => {\n const urgent = filteredItems.filter((i) => i.statusColor === \"red\")\n const active = filteredItems.filter((i) => i.statusColor !== \"red\")\n return [\n { key: \"urgent\", label: \"Urgent\", items: urgent },\n { key: \"active\", label: \"Active\", items: active },\n ].filter((g) => g.items.length > 0)\n }, [filteredItems])\n\n const renderInboxRow = React.useCallback(\n (item: QueueItem) => (\n <>\n <span className={`h-2 w-2 shrink-0 rounded-full ${item.statusColor === \"red\" ? \"bg-[#f43f5e]\" : \"bg-[#3b82f6]\"}`} />\n <span className=\"w-[80px] shrink-0 font-mono text-xs text-muted-foreground/80\">{item.id}</span>\n <span className=\"shrink-0 rounded-md border border-border bg-muted px-1.5 py-0.5 text-[10px] font-medium text-muted-foreground whitespace-nowrap\">{item.tag1}</span>\n <span className=\"min-w-0 flex-1 truncate text-sm font-semibold text-foreground\">{item.title}</span>\n <span className=\"w-[120px] shrink-0 truncate text-xs font-medium text-foreground\">{item.company}</span>\n <span className=\"w-[80px] shrink-0 text-right text-xs text-muted-foreground\">{item.time}</span>\n </>\n ),\n [],\n )\n\n const handleInboxItemSelect = React.useCallback(\n (item: QueueItem) => {\n setSelectedTask(item)\n if (onItemSelect) {\n onItemSelect(item)\n } else if (inboxViewMode === \"list\") {\n setPreviousViewMode(\"list\")\n setInboxViewMode(\"detail\")\n }\n },\n [inboxViewMode, onItemSelect],\n )\n\n const handleBackFromDetail = React.useCallback(() => {\n setInboxViewMode(previousViewMode)\n }, [previousViewMode])\n\n const handleViewModeChange = React.useCallback((id: string) => {\n const mode = id as \"inbox\" | \"list\" | \"detail\"\n if (mode !== \"detail\") {\n setPreviousViewMode(mode)\n }\n setInboxViewMode(mode)\n }, [])\n\n React.useEffect(() => {\n const mql = window.matchMedia(\"(max-width: 768px)\")\n function handleChange(e: MediaQueryListEvent | MediaQueryList) {\n if (e.matches && inboxViewMode === \"inbox\") {\n setPreviousViewMode(\"inbox\")\n setInboxViewMode(\"detail\")\n }\n }\n handleChange(mql)\n mql.addEventListener(\"change\", handleChange)\n return () => mql.removeEventListener(\"change\", handleChange)\n }, [inboxViewMode])\n\n const detailViewProps: DetailViewProps = {\n item: selectedTask,\n sections,\n getSignalScore,\n buildSuggestedActions,\n buildSourceItems,\n getTimelineEvents,\n accountContacts: buildAccountContacts?.(selectedTask) ?? accountContacts,\n emailSignature,\n iconMap,\n onOpenEntityPanel,\n onOpenRecentActivity,\n onSuggestedActionFeedback,\n signalLabels,\n }\n\n return (\n <div className=\"flex h-full w-full flex-col\">\n {/* Toolbar */}\n <div className=\"flex items-center justify-between border-b border-border bg-background px-4 py-3 shrink-0\">\n <div className=\"flex items-center gap-3\">\n {inboxViewMode === \"detail\" ? (\n <button\n type=\"button\"\n onClick={handleBackFromDetail}\n className=\"flex items-center gap-2 text-sm font-medium text-muted-foreground hover:text-foreground transition-colors\"\n >\n <ArrowLeft className=\"h-4 w-4\" />\n Back\n </button>\n ) : null}\n <h2 className=\"text-lg font-semibold text-foreground\">Inbox</h2>\n <Badge variant=\"secondary\" className=\"bg-muted text-muted-foreground hover:bg-muted font-medium text-[11px] px-2 py-0.5 rounded-md\">\n {items.length}\n </Badge>\n </div>\n <div className=\"flex items-center gap-3\">\n <ViewModeToggle\n modes={[\n { id: \"inbox\", icon: <Columns2 className=\"h-3.5 w-3.5\" />, label: \"Split View\" },\n { id: \"list\", icon: <LayoutList className=\"h-3.5 w-3.5\" />, label: \"List View\" },\n { id: \"detail\", icon: <Square className=\"h-3.5 w-3.5\" />, label: \"Detail View\" },\n ]}\n activeMode={inboxViewMode}\n onModeChange={handleViewModeChange}\n />\n {headerActions}\n </div>\n </div>\n\n {/* View modes */}\n {inboxViewMode === \"detail\" ? (\n <div className=\"flex h-full flex-1 flex-col overflow-hidden bg-background\">\n <div className=\"flex-1 overflow-y-auto\">\n <DetailView {...detailViewProps} />\n </div>\n </div>\n ) : inboxViewMode === \"list\" ? (\n <div className=\"flex-1 overflow-y-auto bg-background\">\n <InboxToolbar\n assignee={inboxAssignee}\n onAssigneeChange={setInboxAssignee}\n filterCategories={resolvedFilterCategories}\n selectedFilters={inboxFilters}\n onFilterChange={(catId, val) =>\n setInboxFilters((prev) => ({ ...prev, [catId]: val }))\n }\n onClearFilters={() => setInboxFilters({})}\n />\n <GroupedListView<QueueItem>\n groups={inboxGroups}\n renderRow={renderInboxRow}\n getItemKey={(item) => item.id}\n selectedKey={selectedTask.id}\n onItemClick={handleInboxItemSelect}\n emptyMessage=\"No inbox items\"\n />\n </div>\n ) : (\n /* Split view */\n <div className=\"flex h-full min-h-0 w-full flex-1\">\n <div className=\"flex h-full min-w-[380px] w-[380px] flex-col border-r border-border bg-background shadow-sm z-10\">\n <div className=\"flex flex-col gap-4 border-b border-border p-4 shrink-0\">\n {!hideToolbarActions && (\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-1\">\n <Button variant=\"outline\" size=\"icon\" className=\"h-8 w-8 text-muted-foreground\"><Eye className=\"w-4 h-4\" /></Button>\n <Button variant=\"outline\" size=\"icon\" className=\"h-8 w-8 text-muted-foreground\"><FileText className=\"w-4 h-4\" /></Button>\n <Button variant=\"outline\" size=\"icon\" className=\"h-8 w-8 text-muted-foreground\"><Clock className=\"w-4 h-4\" /></Button>\n <Button variant=\"outline\" size=\"icon\" className=\"h-8 w-8 text-muted-foreground\"><CheckSquare className=\"w-4 h-4\" /></Button>\n </div>\n <Button size=\"sm\" className=\"h-8 px-4 bg-foreground text-background hover:bg-foreground/90 text-xs font-semibold gap-1.5 rounded-md\">\n <Plus className=\"w-4 h-4\" /> Add Task\n </Button>\n </div>\n )}\n <div className=\"flex items-center gap-2\">\n <div className=\"relative flex-1\">\n <Filter className=\"absolute left-2.5 top-1.5 w-4 h-4 text-muted-foreground\" />\n <Input\n className=\"h-8 pl-8 text-xs bg-background border-border rounded-md shadow-none\"\n placeholder=\"Filter by category...\"\n value={splitViewSearch}\n onChange={(e: React.ChangeEvent<HTMLInputElement>) => setSplitViewSearch(e.target.value)}\n />\n </div>\n {!hideAccountsButton && (\n <Button variant=\"outline\" size=\"sm\" className=\"h-8 text-xs font-medium rounded-md shadow-none\">\n <Building className=\"w-3.5 h-3.5 mr-1.5\" /> {accountDetailsLabel ?? \"Accounts\"}\n </Button>\n )}\n </div>\n <div className=\"flex items-center gap-1.5 overflow-x-auto pb-1 mt-1 scrollbar-hide\">\n <Button\n size=\"sm\"\n variant={activeQuickFilter === \"all\" ? \"default\" : \"outline\"}\n className={`h-7 rounded-full px-3.5 text-[11px] font-semibold shadow-none ${\n activeQuickFilter === \"all\"\n ? \"bg-foreground text-background hover:bg-foreground/90\"\n : \"bg-transparent border-border text-muted-foreground hover:text-foreground\"\n }`}\n onClick={() => setActiveQuickFilter(\"all\")}\n >\n All\n </Button>\n {resolvedQuickFilterTabs.map((tab) => {\n const count = tab.count ?? quickFilterTabCounts[tab.id]\n return (\n <Button\n key={tab.id}\n size=\"sm\"\n variant={activeQuickFilter === tab.id ? \"default\" : \"outline\"}\n className={`h-7 rounded-full px-3.5 text-[11px] font-medium shadow-none ${\n activeQuickFilter === tab.id\n ? \"bg-foreground text-background hover:bg-foreground/90\"\n : \"bg-transparent border-border text-muted-foreground hover:text-foreground\"\n }`}\n onClick={() => setActiveQuickFilter(tab.id)}\n >\n {tab.label}{count != null && count > 0 ? ` (${count})` : \"\"}\n </Button>\n )\n })}\n </div>\n </div>\n\n <div className=\"flex-1 overflow-y-auto\">\n {splitViewItems.map((item) => (\n <div\n key={item.id}\n onClick={() => { setSelectedTask(item); onItemSelect?.(item) }}\n className={`cursor-pointer border-b border-border p-4 transition-colors group relative border-l-2 ${\n selectedTask.id === item.id\n ? \"bg-muted/30 border-l-brand-purple\"\n : \"bg-transparent border-l-transparent hover:bg-muted/10\"\n }`}\n >\n <div className=\"mb-1.5 flex items-center gap-2\">\n <span className=\"min-w-0 truncate text-[13px] font-semibold text-foreground leading-tight\">{item.title}</span>\n {selectedTask.id !== item.id && item.tag1 && (\n <span className=\"shrink-0 rounded-md border border-border bg-muted/60 px-2 py-0.5 text-[10px] font-medium text-muted-foreground\">\n {item.tag1}\n </span>\n )}\n <span className=\"ml-auto shrink-0 text-[10px] font-medium text-muted-foreground/80\">{item.time}</span>\n </div>\n <div className=\"flex items-start gap-2 mt-2\">\n <span className={`w-1.5 h-1.5 rounded-full shrink-0 mt-1.5 ${item.statusColor === \"red\" ? \"bg-[#f43f5e]\" : \"bg-[#3b82f6]\"}`} />\n <span className=\"text-xs text-muted-foreground leading-tight\">{item.details}</span>\n </div>\n {buildEntityChips && (() => {\n const chips = buildEntityChips(item)\n if (!chips.length) return null\n return (\n <div className=\"flex items-center gap-1.5 mt-2 flex-wrap\">\n {chips.map((chip) => (\n <button\n key={chip.id}\n type=\"button\"\n onClick={(e) => { e.stopPropagation(); chip.onClick?.() }}\n className=\"inline-flex items-center gap-1 rounded-md border border-border/60 bg-muted/30 px-1.5 py-0.5 text-[10px] font-medium text-muted-foreground transition-colors hover:bg-muted/50 hover:text-foreground\"\n >\n <span className=\"flex h-3.5 w-3.5 items-center justify-center rounded bg-muted-foreground/10 text-[8px] font-semibold\">{chip.avatarLetter}</span>\n {chip.label}\n </button>\n ))}\n </div>\n )\n })()}\n {!hideHoverActions && (\n <div className={`absolute right-4 bottom-4 flex items-center gap-1.5 bg-background shadow-sm rounded-md px-1 py-0.5 border border-border ${\n selectedTask.id === item.id ? \"opacity-100\" : \"opacity-0 group-hover:opacity-100 transition-opacity\"\n }`}>\n <Button variant=\"ghost\" size=\"icon\" className=\"h-6 w-6 rounded text-muted-foreground hover:text-foreground\"><CheckSquare className=\"w-3.5 h-3.5\" /></Button>\n <Button variant=\"ghost\" size=\"icon\" className=\"h-6 w-6 rounded text-muted-foreground hover:text-foreground\"><Clock className=\"w-3.5 h-3.5\" /></Button>\n </div>\n )}\n </div>\n ))}\n <div className=\"p-4\">\n <Button variant=\"outline\" size=\"sm\" className=\"h-8 text-xs font-semibold rounded-md shadow-none\">See more</Button>\n </div>\n </div>\n </div>\n\n <div className=\"flex h-full flex-1 flex-col overflow-hidden bg-background\">\n <div className=\"flex-1 overflow-y-auto\">\n <DetailView {...detailViewProps} />\n </div>\n </div>\n </div>\n )}\n </div>\n )\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport {\n BarChart2,\n TrendingUp,\n ThumbsUp,\n ThumbsDown,\n X,\n MessageCircle,\n Phone,\n MessageSquare,\n Mail,\n} from \"lucide-react\"\n\nimport { Button } from \"./button\"\nimport { Input } from \"./input\"\nimport { MetricCard } from \"./metric-card\"\nimport type { MetricCardProps } from \"./metric-card\"\nimport {\n TopTasksCard,\n UpcomingMeetingsCard,\n RecentlyCompletedCard,\n CheckInsCard,\n} from \"./dashboard-cards\"\nimport { PipelineOverview } from \"./pipeline-overview\"\nimport { VolumeAnalysisChart } from \"./volume-analysis-chart\"\nimport { DonutChart } from \"./donut-chart\"\nimport { TrendAreaChart } from \"./trend-area-chart\"\nimport { BarChartComponent } from \"./bar-chart-component\"\nimport { StyledBarList } from \"./styled-bar-list\"\nimport { ReportCard } from \"./report-card\"\nimport type { InsightsViewConfig, InsightsCustomTab } from \"./prototype-config\"\n\n// ---------------------------------------------------------------------------\n// Props\n// ---------------------------------------------------------------------------\n\nexport interface PrototypeInsightsViewProps extends InsightsViewConfig {\n assistantName?: string\n headerActions?: React.ReactNode\n onNavigateToInbox?: () => void\n}\n\n// ---------------------------------------------------------------------------\n// Defaults\n// ---------------------------------------------------------------------------\n\nconst DEFAULT_METRICS: MetricCardProps[] = [\n {\n title: \"Referrals at Risk\",\n value: 28,\n change: { value: \"2 vs last week\", direction: \"up\", isGood: false },\n showExternalLink: true,\n showInfo: true,\n dataPoints: [\n { label: \"No Contact\", value: 6, color: \"#166534\" },\n { label: \"Stalled\", value: 4, color: \"#22c55e\" },\n { label: \"Needs Attn\", value: 8, color: \"#6ee7b7\" },\n { label: \"Auth Delay\", value: 5, color: \"#ccfbf1\" },\n { label: \"DCS Hold\", value: 3, color: \"#99f6e4\" },\n { label: \"Expired Referral\", value: 2, color: \"#f1f5f9\" },\n ],\n },\n {\n title: \"Dropped from Pipeline\",\n value: 47,\n change: { value: \"12 vs last week\", direction: \"down\", isGood: true },\n showExternalLink: true,\n showInfo: true,\n dataPoints: [\n { label: \"No Contact\", value: 12, color: \"#166534\" },\n { label: \"Ins. Denied\", value: 15, color: \"#22c55e\" },\n { label: \"Refused\", value: 6, color: \"#6ee7b7\" },\n { label: \"Intake Stalled\", value: 8, color: \"#ccfbf1\" },\n { label: \"Other\", value: 6, color: \"#f1f5f9\" },\n ],\n },\n {\n title: \"Time to Schedule\",\n value: \"4.2 days\",\n subtitle: \"median, referrals → scheduled\",\n change: { value: \"0.8d vs last week\", direction: \"down\", isGood: true },\n footerText: \"Slowest stage: Contact → Intake (1.5d)\",\n showInfo: true,\n },\n {\n title: \"Conversion Rate\",\n value: \"53%\",\n subtitle: \"referrals → scheduled\",\n change: { value: \"3% vs last week\", direction: \"up\", isGood: true },\n footerText: \"Largest drop-off: No Contact (22%)\",\n showInfo: true,\n },\n]\n\nconst DEFAULT_EXPANDED_METRICS: MetricCardProps[] = [\n {\n title: \"Avg Handle Time\",\n value: \"1.2\",\n unit: \"days\",\n change: { value: \"0.3d vs last week\", direction: \"down\", isGood: true },\n footerText: \"Fastest stage: Verification (0.2d)\",\n showInfo: true,\n },\n {\n title: \"Conversion Rate\",\n value: \"78%\",\n change: { value: \"2% vs last week\", direction: \"up\", isGood: true },\n footerText: \"Top source: Internal Referrals (85%)\",\n showInfo: true,\n },\n {\n title: \"Pending Intakes\",\n value: \"124\",\n change: { value: \"15 vs last week\", direction: \"up\", isGood: false },\n footerText: \"Requires immediate attention: 32\",\n showInfo: true,\n },\n {\n title: \"Patient Satisfaction\",\n value: \"4.8\",\n unit: \"/ 5\",\n change: { value: \"0.1 vs last month\", direction: \"up\", isGood: true },\n footerText: \"Based on 450 recent surveys\",\n showInfo: true,\n },\n]\n\n// ---------------------------------------------------------------------------\n// Component\n// ---------------------------------------------------------------------------\n\nexport function PrototypeInsightsView({\n tabs,\n coaching,\n metrics,\n expandedMetrics,\n dashboardCards,\n analytics,\n assistantName,\n headerActions,\n onNavigateToInbox,\n customTabs,\n}: PrototypeInsightsViewProps) {\n const showOverview = tabs?.overview !== false\n const showAnalytics = tabs?.analytics !== false\n const [insightsTab, setInsightsTab] = React.useState<string>(\n showOverview ? \"overview\" : showAnalytics ? \"analytics\" : customTabs?.[0]?.id ?? \"overview\",\n )\n\n const allTabs: { id: string; label: string; icon?: React.ComponentType<{ className?: string }> }[] = []\n if (showOverview) allTabs.push({ id: \"overview\", label: \"Overview\", icon: BarChart2 })\n if (showAnalytics) allTabs.push({ id: \"analytics\", label: \"Analytics\", icon: TrendingUp })\n if (customTabs) allTabs.push(...customTabs)\n const [showAllMetrics, setShowAllMetrics] = React.useState(false)\n const [showCoaching, setShowCoaching] = React.useState(coaching?.enabled !== false)\n\n const resolvedMetrics = metrics ?? DEFAULT_METRICS\n const resolvedExpandedMetrics = expandedMetrics ?? DEFAULT_EXPANDED_METRICS\n\n const cards = {\n topTasks: dashboardCards?.topTasks !== false,\n upcomingMeetings: dashboardCards?.upcomingMeetings !== false,\n recentlyCompleted: dashboardCards?.recentlyCompleted !== false,\n checkIns: dashboardCards?.checkIns !== false,\n }\n\n return (\n <div className=\"mx-auto max-w-7xl space-y-5 p-6 md:p-8\">\n {/* Header */}\n <div className=\"flex items-center justify-between\">\n <div>\n <h2 className=\"mb-1 text-xl font-bold tracking-tight text-foreground\">Insights & Overview</h2>\n <p className=\"text-sm text-muted-foreground\">Monitor your key performance indicators and daily tasks.</p>\n </div>\n <div className=\"flex items-center gap-3\">\n {assistantName && (\n <Button variant=\"outline\" size=\"sm\" className=\"h-8 gap-2 text-xs font-semibold rounded-full px-4 border-foreground text-foreground hover:bg-muted/50\">\n <MessageCircle className=\"w-3.5 h-3.5\" />\n Talk to {assistantName}\n </Button>\n )}\n {headerActions}\n </div>\n </div>\n\n {/* Tab switcher */}\n {allTabs.length >= 2 && (\n <div className=\"flex items-center gap-1 border-b border-border\">\n {allTabs.map((tab) => (\n <button\n key={tab.id}\n type=\"button\"\n onClick={() => setInsightsTab(tab.id)}\n className={`relative px-4 py-2 text-sm font-medium transition-colors ${\n insightsTab === tab.id ? \"text-foreground\" : \"text-muted-foreground hover:text-foreground\"\n }`}\n >\n <span className=\"flex items-center gap-2\">\n {tab.icon && <tab.icon className=\"h-3.5 w-3.5\" />}\n {tab.label}\n </span>\n {insightsTab === tab.id && (\n <span className=\"absolute bottom-0 left-0 right-0 h-0.5 bg-foreground rounded-full\" />\n )}\n </button>\n ))}\n </div>\n )}\n\n {/* ---- Overview Tab ---- */}\n {insightsTab === \"overview\" && showOverview && (\n <>\n {/* Coaching Banner */}\n {showCoaching && (\n <div className=\"border border-border rounded-xl p-6 relative bg-card shadow-sm\">\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"absolute top-4 right-4 h-6 w-6 text-muted-foreground hover:text-foreground\"\n onClick={() => setShowCoaching(false)}\n >\n <X className=\"w-4 h-4\" />\n </Button>\n <div className=\"flex items-center gap-2 mb-2\">\n <h3 className=\"font-bold text-foreground text-sm\">Daily Coaching Insight</h3>\n </div>\n <p className=\"text-sm text-muted-foreground leading-relaxed mb-4 max-w-4xl\">\n We analyze your pipeline activity, recent communications, and account health to provide personalized recommendations for your day.\n </p>\n <div className=\"bg-brand-purple/10 rounded-lg p-5 text-[13px] text-foreground font-medium italic border border-brand-purple/20 relative\">\n <div className=\"absolute top-0 left-0 w-1 h-full bg-brand-purple rounded-l-lg\" />\n {coaching?.message ??\n \"\\u201CGreat job catching the churn risk on Lunchclub yesterday. Today, focus on pushing the stalled intake pipeline. Try making 2 more touches on accounts that have gone dark this week.\\u201D\"}\n </div>\n <div className=\"mt-4 flex items-center gap-2\">\n <Button variant=\"outline\" size=\"sm\" className=\"h-7 text-xs text-muted-foreground hover:text-foreground shadow-none\">\n <ThumbsUp className=\"w-3.5 h-3.5 mr-1.5\" /> Helpful\n </Button>\n <Button variant=\"outline\" size=\"sm\" className=\"h-7 text-xs text-muted-foreground hover:text-foreground shadow-none\">\n <ThumbsDown className=\"w-3.5 h-3.5 mr-1.5\" /> Not Helpful\n </Button>\n <div className=\"relative max-w-sm ml-2 flex-1\">\n <Input placeholder=\"Provide additional feedback...\" className=\"h-7 text-xs shadow-none border-border bg-muted/20 w-full\" />\n </div>\n </div>\n </div>\n )}\n\n {/* Metrics */}\n <div className=\"space-y-4\">\n <div className=\"flex items-center justify-between\">\n <h3 className=\"text-sm font-semibold text-foreground uppercase tracking-wider\">Key Metrics</h3>\n {resolvedExpandedMetrics.length > 0 && (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"text-xs text-muted-foreground hover:text-foreground\"\n onClick={() => setShowAllMetrics(!showAllMetrics)}\n >\n {showAllMetrics ? \"Hide additional metrics\" : \"Show more metrics\"}\n </Button>\n )}\n </div>\n <div className=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4\">\n {resolvedMetrics.map((m, i) => (\n <MetricCard key={i} {...m} />\n ))}\n {showAllMetrics &&\n resolvedExpandedMetrics.map((m, i) => (\n <MetricCard key={`exp-${i}`} {...m} />\n ))}\n </div>\n </div>\n\n {/* Dashboard cards */}\n <div className=\"grid grid-cols-1 lg:grid-cols-3 gap-6 mt-8\">\n <div className=\"lg:col-span-2 space-y-6\">\n {cards.topTasks && <TopTasksCard onViewAll={onNavigateToInbox} />}\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-6\">\n {cards.upcomingMeetings && <UpcomingMeetingsCard />}\n {cards.recentlyCompleted && <RecentlyCompletedCard />}\n </div>\n </div>\n <div className=\"space-y-6\">\n {cards.checkIns && <CheckInsCard />}\n </div>\n </div>\n </>\n )}\n\n {/* ---- Analytics Tab ---- */}\n {insightsTab === \"analytics\" && showAnalytics && (\n <div className=\"space-y-6\">\n {analytics?.pipeline && (\n <PipelineOverview\n stages={analytics.pipeline.stages}\n stageMetrics={analytics.pipeline.stageMetrics}\n stageTimings={analytics.pipeline.stageTimings}\n filterBreakdowns={analytics.pipeline.filterBreakdowns}\n />\n )}\n\n {analytics?.volumeChart && (\n <ReportCard\n title=\"Volume Analysis\"\n subtitle=\"Referral volume broken down by facility over time\"\n filterOptions={analytics.volumeChart.filterOptions}\n selectedFilter={analytics.volumeChart.filterOptions?.[0]?.value}\n >\n <VolumeAnalysisChart\n data={analytics.volumeChart.data}\n dataKeys={analytics.volumeChart.dataKeys}\n />\n </ReportCard>\n )}\n\n <div className=\"grid grid-cols-1 lg:grid-cols-2 gap-6\">\n {analytics?.donutChart && (\n <ReportCard title=\"Risk Breakdown\" subtitle=\"Referrals at risk by category\">\n <div className=\"flex items-center justify-center\">\n <DonutChart\n data={analytics.donutChart.data}\n centerLabel={analytics.donutChart.centerLabel}\n showLegend\n />\n </div>\n </ReportCard>\n )}\n\n {analytics?.trendChart && (\n <ReportCard\n title=\"Referrals Over Time\"\n subtitle=\"Weekly appointment trends\"\n toggleOptions={analytics.trendChart.toggleOptions}\n selectedToggle={analytics.trendChart.toggleOptions?.[0]}\n >\n <TrendAreaChart\n data={analytics.trendChart.data}\n series={analytics.trendChart.series}\n xAxisKey={analytics.trendChart.xAxisKey ?? \"name\"}\n height={analytics.trendChart.height ?? 220}\n />\n </ReportCard>\n )}\n </div>\n\n {(analytics?.barChart || analytics?.barList) && (\n <div className=\"grid grid-cols-1 lg:grid-cols-3 gap-6\">\n {analytics?.barChart && (\n <ReportCard\n title=\"Outreach Activity\"\n subtitle=\"Daily outreach by channel\"\n className=\"lg:col-span-2\"\n >\n <BarChartComponent\n data={analytics.barChart.data}\n bars={analytics.barChart.bars}\n />\n </ReportCard>\n )}\n {analytics?.barList && (\n <ReportCard title=\"Top Activity Types\" subtitle=\"By completion percentage\">\n <StyledBarList\n data={analytics.barList.data}\n valueFormatter={analytics.barList.valueFormatter}\n />\n </ReportCard>\n )}\n </div>\n )}\n </div>\n )}\n\n {/* Custom Tabs */}\n {customTabs?.map(tab =>\n insightsTab === tab.id ? <div key={tab.id}>{tab.content}</div> : null\n )}\n </div>\n )\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Button } from \"./button\"\nimport { Badge } from \"./badge\"\nimport { DataTable } from \"./data-table\"\nimport type { AccountsViewConfig, AccountFilterTab } from \"./prototype-config\"\nimport type { DataRow } from \"./data-table\"\n\n// ---------------------------------------------------------------------------\n// Props\n// ---------------------------------------------------------------------------\n\nexport interface PrototypeAccountsViewProps extends AccountsViewConfig {\n headerActions?: React.ReactNode\n onRowClick?: (row: DataRow) => void\n}\n\n// ---------------------------------------------------------------------------\n// Defaults\n// ---------------------------------------------------------------------------\n\nconst DEFAULT_FILTER_TABS: AccountFilterTab[] = [\n { label: \"All Accounts\", count: 6, variant: \"default\" },\n { label: \"Needs Attention\", count: 11, variant: \"attention\" },\n { label: \"Recent\", count: 7, variant: \"ghost\" },\n]\n\n// ---------------------------------------------------------------------------\n// Component\n// ---------------------------------------------------------------------------\n\nexport function PrototypeAccountsView({\n filterTabs,\n headerActions,\n onRowClick,\n rows,\n filterCategories,\n quickViews,\n moreQuickViews,\n quickViewFilters,\n iconMap,\n entityUrlBuilder,\n onScoreFactorFeedback,\n onScoreApproveFeedback,\n onScoreDismissFeedback,\n}: PrototypeAccountsViewProps) {\n const tabs = filterTabs ?? DEFAULT_FILTER_TABS\n\n return (\n <div className=\"flex flex-col h-full w-full bg-background relative\">\n {headerActions && (\n <div className=\"absolute top-4 right-4 z-10\">{headerActions}</div>\n )}\n\n <div className=\"px-4 py-3 border-b border-border flex items-center gap-2 overflow-x-auto shrink-0 mt-2\">\n {tabs.map((tab, i) => {\n if (tab.variant === \"attention\") {\n return (\n <Button key={i} size=\"sm\" className=\"h-7 text-xs rounded-md bg-emerald-600 hover:bg-emerald-700 text-white font-medium\">\n {tab.label}\n {tab.count != null && (\n <Badge variant=\"secondary\" className=\"ml-2 h-4 px-1.5 text-[10px] bg-white/20 text-white border-transparent\">\n {tab.count}\n </Badge>\n )}\n </Button>\n )\n }\n if (tab.variant === \"ghost\") {\n return (\n <Button key={i} variant=\"ghost\" size=\"sm\" className=\"h-7 text-xs rounded-md border border-border bg-transparent font-medium\">\n {tab.label}\n {tab.count != null && (\n <Badge variant=\"secondary\" className=\"ml-2 h-4 px-1.5 text-[10px]\">\n {tab.count}\n </Badge>\n )}\n </Button>\n )\n }\n return (\n <Button key={i} variant=\"secondary\" size=\"sm\" className=\"h-7 text-xs rounded-md bg-muted font-medium\">\n {tab.label}\n {tab.count != null && (\n <Badge variant=\"outline\" className=\"ml-2 h-4 px-1.5 text-[10px]\">\n {tab.count}\n </Badge>\n )}\n </Button>\n )\n })}\n </div>\n\n <div className=\"flex-1 overflow-auto\">\n <DataTable\n onRowClick={onRowClick}\n rows={rows}\n filterCategories={filterCategories}\n quickViews={quickViews}\n moreQuickViews={moreQuickViews}\n quickViewFilters={quickViewFilters}\n iconMap={iconMap}\n entityUrlBuilder={entityUrlBuilder}\n onScoreFactorFeedback={onScoreFactorFeedback}\n onScoreApproveFeedback={onScoreApproveFeedback}\n onScoreDismissFeedback={onScoreDismissFeedback}\n />\n </div>\n </div>\n )\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { ItemList } from \"./item-list\"\nimport type { WorkQueueViewConfig } from \"./prototype-config\"\n\n// ---------------------------------------------------------------------------\n// Props\n// ---------------------------------------------------------------------------\n\nexport interface PrototypeWorkQueueViewProps {\n headerActions?: React.ReactNode\n}\n\n// ---------------------------------------------------------------------------\n// Component\n// ---------------------------------------------------------------------------\n\nexport function PrototypeWorkQueueView({\n headerActions,\n}: PrototypeWorkQueueViewProps) {\n return (\n <div className=\"relative flex h-full w-full flex-col bg-background\">\n {headerActions && (\n <div className=\"absolute top-4 right-4 z-10\">{headerActions}</div>\n )}\n <div className=\"flex-1 overflow-auto\">\n <ItemList />\n </div>\n </div>\n )\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Settings } from \"lucide-react\"\nimport { Tabs, TabsList, TabsTrigger, TabsContent } from \"./tabs\"\nimport type { AdminViewConfig } from \"./prototype-config\"\n\nexport interface PrototypeAdminViewProps extends AdminViewConfig {\n headerActions?: React.ReactNode\n}\n\nexport function PrototypeAdminView({\n title = \"Admin\",\n icon: Icon = Settings,\n tabs,\n defaultTab,\n headerActions,\n}: PrototypeAdminViewProps) {\n const resolvedDefault = defaultTab ?? tabs[0]?.id\n\n if (!tabs.length) return null\n\n return (\n <div className=\"flex h-full w-full flex-col overflow-hidden bg-background\">\n <div className=\"shrink-0 border-b border-border bg-background\">\n <div className=\"flex items-center justify-between px-6 py-4\">\n <div className=\"flex items-center gap-2 text-lg font-bold text-foreground\">\n <Icon className=\"h-5 w-5\" />\n <span>{title}</span>\n </div>\n {headerActions}\n </div>\n </div>\n\n <div className=\"flex-1 overflow-auto p-8\">\n <div className=\"mx-auto max-w-6xl\">\n <Tabs defaultValue={resolvedDefault} className=\"w-full space-y-8\">\n <div className=\"flex justify-start\">\n <TabsList className=\"h-9 rounded-lg border border-border/50 bg-muted/50 p-1\">\n {tabs.map((tab) => (\n <TabsTrigger\n key={tab.id}\n value={tab.id}\n className=\"gap-2 rounded-md px-3 py-1.5 text-xs font-medium transition-all data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-sm\"\n >\n {tab.icon && <tab.icon className=\"h-3.5 w-3.5\" />}\n {tab.label}\n </TabsTrigger>\n ))}\n </TabsList>\n </div>\n\n {tabs.map((tab) => (\n <TabsContent\n key={tab.id}\n value={tab.id}\n className=\"space-y-6 focus-visible:outline-none\"\n >\n {tab.content}\n </TabsContent>\n ))}\n </Tabs>\n </div>\n </div>\n </div>\n )\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport {\n QuickActionSidebarNav,\n} from \"./quick-action-sidebar-nav\"\nimport {\n EntityPanel,\n EntityDetails,\n PotentialContacts,\n RecentActivity,\n ConnectedApps,\n SystemActivity,\n} from \"./entity-panel\"\nimport { PrototypeInboxView } from \"./prototype-inbox-view\"\nimport { PrototypeInsightsView } from \"./prototype-insights-view\"\nimport { PrototypeAccountsView } from \"./prototype-accounts-view\"\nimport { PrototypeWorkQueueView } from \"./prototype-work-queue-view\"\nimport { PrototypeAdminView } from \"./prototype-admin-view\"\nimport type { PrototypeConfig, EntityPanelSection } from \"./prototype-config\"\nimport type { DataRow } from \"./data-table\"\n\n// ---------------------------------------------------------------------------\n// Props\n// ---------------------------------------------------------------------------\n\nexport interface PrototypeShellProps {\n config: PrototypeConfig\n /**\n * Optional ReactNode rendered in the header area of each view.\n * Useful for adding an \"Exit Preview\" button in the design system showcase.\n */\n headerActions?: React.ReactNode\n /**\n * Custom content to render inside the EntityPanel.\n * When provided, overrides the default section-based rendering.\n * Receives `onClose` so children can close the panel.\n */\n entityPanelChildren?: React.ReactNode | ((ctx: { onClose: () => void }) => React.ReactNode)\n /**\n * Fired on every sidebar navigation click (both navigable and non-navigable views).\n * Useful for intercepting clicks on product-specific views like \"settings\"\n * that live outside the shell.\n */\n onNavigate?: (viewId: string) => void\n}\n\n// ---------------------------------------------------------------------------\n// View ID → config key mapping\n// ---------------------------------------------------------------------------\n\nconst VIEW_KEY_MAP: Record<string, keyof PrototypeConfig[\"views\"]> = {\n inbox: \"inbox\",\n dashboard: \"insights\",\n insights: \"insights\",\n accounts: \"accounts\",\n activity: \"workQueue\",\n workQueue: \"workQueue\",\n \"work-queue\": \"workQueue\",\n admin: \"admin\",\n settings: \"admin\",\n}\n\n// ---------------------------------------------------------------------------\n// Default entity panel sections\n// ---------------------------------------------------------------------------\n\nconst DEFAULT_ENTITY_SECTIONS: EntityPanelSection[] = [\n { type: \"details\" },\n { type: \"contacts\" },\n { type: \"recentActivity\" },\n { type: \"connectedApps\" },\n { type: \"systemActivity\" },\n]\n\n// ---------------------------------------------------------------------------\n// Component\n// ---------------------------------------------------------------------------\n\nexport function PrototypeShell({\n config,\n headerActions,\n entityPanelChildren,\n onNavigate,\n}: PrototypeShellProps) {\n const [currentView, setCurrentView] = React.useState(config.defaultView)\n const [isEntityPanelOpen, setIsEntityPanelOpen] = React.useState(false)\n\n const navigableViews = React.useMemo(() => {\n if (config.navigableViews) return config.navigableViews\n const keys: string[] = []\n if (config.views.inbox) keys.push(\"inbox\")\n if (config.views.accounts) keys.push(\"accounts\")\n if (config.views.workQueue) keys.push(\"activity\", \"workQueue\", \"work-queue\")\n if (config.views.insights) keys.push(\"dashboard\", \"insights\")\n if (config.views.admin) keys.push(\"admin\", \"settings\")\n return keys\n }, [config.navigableViews, config.views])\n\n const handleNavigate = React.useCallback(\n (id: string) => {\n if (navigableViews.includes(id)) {\n setCurrentView(id)\n }\n onNavigate?.(id)\n },\n [navigableViews, onNavigate],\n )\n\n const handleOpenEntityPanel = React.useCallback((_entity?: DataRow) => setIsEntityPanelOpen(true), [])\n const handleOpenRecentActivity = React.useCallback(() => {\n setIsEntityPanelOpen(true)\n setTimeout(() => {\n document.getElementById(\"entity-recent-activity\")?.scrollIntoView({ behavior: \"smooth\", block: \"start\" })\n }, 150)\n }, [])\n\n const resolvedViewKey = VIEW_KEY_MAP[currentView] ?? currentView\n\n const entitySections = config.entityPanel?.sections ?? DEFAULT_ENTITY_SECTIONS\n const entityIcons = config.entityPanel?.icons ?? {}\n\n return (\n <div className=\"flex h-screen w-full overflow-hidden bg-background font-sans\">\n <QuickActionSidebarNav\n className=\"z-20 h-screen shrink-0\"\n brandLabel={config.brand?.name}\n brandSubtitle=\"\"\n navSections={config.sidebar}\n activeItemId={currentView}\n onNavigate={handleNavigate}\n onCreateTask={(draft) => {\n console.log(\"Quick action created:\", draft)\n }}\n />\n\n <main className=\"flex min-w-0 flex-1 flex-col overflow-hidden bg-background\">\n <div className=\"relative h-full flex-1 overflow-auto\">\n {resolvedViewKey === \"insights\" && config.views.insights ? (\n <PrototypeInsightsView\n {...config.views.insights}\n assistantName={config.brand?.assistantName}\n headerActions={headerActions}\n onNavigateToInbox={() => setCurrentView(\"inbox\")}\n />\n ) : resolvedViewKey === \"inbox\" && config.views.inbox ? (\n <PrototypeInboxView\n {...config.views.inbox}\n headerActions={headerActions}\n onOpenEntityPanel={handleOpenEntityPanel}\n onOpenRecentActivity={handleOpenRecentActivity}\n />\n ) : resolvedViewKey === \"accounts\" && config.views.accounts ? (\n <PrototypeAccountsView\n {...config.views.accounts}\n headerActions={headerActions}\n onRowClick={handleOpenEntityPanel}\n />\n ) : resolvedViewKey === \"workQueue\" && config.views.workQueue ? (\n <PrototypeWorkQueueView\n headerActions={headerActions}\n />\n ) : resolvedViewKey === \"admin\" && config.views.admin ? (\n <PrototypeAdminView\n {...config.views.admin}\n headerActions={headerActions}\n />\n ) : null}\n </div>\n </main>\n\n <EntityPanel isOpen={isEntityPanelOpen} onClose={setIsEntityPanelOpen}>\n {(typeof entityPanelChildren === \"function\"\n ? entityPanelChildren({ onClose: () => setIsEntityPanelOpen(false) })\n : entityPanelChildren) ?? (\n <>\n {entitySections.map((section, i) => {\n switch (section.type) {\n case \"details\":\n return <EntityDetails key={i} onClose={() => setIsEntityPanelOpen(false)} />\n case \"contacts\":\n return (\n <PotentialContacts\n key={i}\n icons={{\n linkedin: entityIcons.linkedin,\n gmail: entityIcons.gmail,\n }}\n />\n )\n case \"recentActivity\":\n return (\n <RecentActivity\n key={i}\n items={(section.props?.items as React.ComponentProps<typeof RecentActivity>[\"items\"]) ?? []}\n />\n )\n case \"connectedApps\":\n return (\n <ConnectedApps\n key={i}\n icons={{\n slack: entityIcons.slack,\n gdoc: entityIcons.gdoc,\n }}\n />\n )\n case \"systemActivity\":\n return <SystemActivity key={i} />\n default:\n return null\n }\n })}\n </>\n )}\n </EntityPanel>\n </div>\n )\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport type { ComponentProps, HTMLAttributes } from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { Avatar, AvatarFallback, AvatarImage } from \"./avatar\"\n\nexport type MessageProps = HTMLAttributes<HTMLDivElement> & {\n from: \"user\" | \"assistant\"\n}\n\nexport const Message = ({ className, from, ...props }: MessageProps) => (\n <div\n data-slot=\"message\"\n className={cn(\n \"group flex w-full items-end gap-3 py-2\",\n from === \"user\" ? \"is-user justify-end\" : \"is-assistant justify-start\",\n className\n )}\n {...props}\n />\n)\n\nconst messageContentVariants = cva(\n \"flex flex-col gap-2 overflow-hidden text-sm leading-relaxed shadow-sm whitespace-pre-wrap\",\n {\n variants: {\n variant: {\n contained: [\n \"max-w-[85%] px-6 py-4 rounded-[24px]\",\n \"group-[.is-user]:bg-primary group-[.is-user]:text-primary-foreground group-[.is-user]:rounded-br-sm\",\n \"group-[.is-assistant]:bg-muted group-[.is-assistant]:text-foreground group-[.is-assistant]:rounded-bl-sm\",\n ],\n flat: [\n \"group-[.is-user]:max-w-[85%] group-[.is-user]:bg-secondary group-[.is-user]:px-4 group-[.is-user]:py-3 group-[.is-user]:text-foreground\",\n \"group-[.is-assistant]:text-foreground\",\n ],\n },\n },\n defaultVariants: {\n variant: \"contained\",\n },\n }\n)\n\nexport type MessageContentProps = HTMLAttributes<HTMLDivElement> &\n VariantProps<typeof messageContentVariants>\n\nexport const MessageContent = ({\n children,\n className,\n variant,\n ...props\n}: MessageContentProps) => (\n <div\n data-slot=\"message-content\"\n className={cn(messageContentVariants({ variant, className }))}\n {...props}\n >\n {children}\n </div>\n)\n\nexport type MessageAvatarProps = ComponentProps<typeof Avatar> & {\n src?: string\n name?: string\n}\n\nexport const MessageAvatar = ({\n src,\n name,\n className,\n children,\n ...props\n}: MessageAvatarProps) => (\n <Avatar className={cn(\"ring-border size-8 ring-1 shrink-0\", className)} {...props}>\n {children}\n {src && <AvatarImage alt=\"\" className=\"mt-0 mb-0\" src={src} />}\n {!children && !src && <AvatarFallback>{name?.slice(0, 2) || \"ME\"}</AvatarFallback>}\n </Avatar>\n)\n","\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"../../../lib/utils\"\n\nexport type StatusType = \"success\" | \"warning\" | \"error\" | \"neutral\"\n\nexport interface StatusBadgeProps extends React.HTMLAttributes<HTMLDivElement> {\n status: string\n statusMap?: Record<string, StatusType>\n}\n\nconst DEFAULT_STATUS_MAP: Record<string, StatusType> = {}\n\nconst STATUS_KEYWORDS: Record<StatusType, string[]> = {\n success: [\"active\", \"hired\", \"completed\", \"success\", \"shortlist\", \"approved\", \"resolved\", \"done\"],\n warning: [\"pending\", \"new\", \"scheduled\", \"screening\", \"draft\", \"paused\", \"in_progress\", \"review\"],\n error: [\"rejected\", \"failed\", \"cancelled\", \"error\", \"no_answer\", \"dropped\", \"blocked\"],\n neutral: [],\n}\n\nfunction inferStatusType(status: string, statusMap: Record<string, StatusType>): StatusType {\n const lower = status.toLowerCase()\n if (statusMap[lower]) return statusMap[lower]\n\n for (const [type, keywords] of Object.entries(STATUS_KEYWORDS) as [StatusType, string[]][]) {\n if (keywords.some((kw) => lower.includes(kw))) return type\n }\n\n return \"neutral\"\n}\n\nconst STATUS_STYLES: Record<StatusType, string> = {\n success: \"bg-green-100 text-green-950 dark:bg-green-950 dark:text-green-100\",\n warning: \"bg-yellow-100 text-yellow-950 dark:bg-yellow-950 dark:text-yellow-100\",\n error: \"bg-red-100 text-red-950 dark:bg-red-950 dark:text-red-100\",\n neutral: \"bg-muted text-foreground\",\n}\n\nfunction formatStatus(status: string): string {\n return status\n .split(\"_\")\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n .join(\" \")\n}\n\nexport function StatusBadge({ status, statusMap = DEFAULT_STATUS_MAP, className, ...props }: StatusBadgeProps) {\n const type = inferStatusType(status, statusMap)\n return (\n <div\n data-slot=\"status-badge\"\n data-status={type}\n className={cn(\n \"inline-flex items-center justify-center rounded-full px-2.5 h-6 text-xs font-medium transition-colors\",\n STATUS_STYLES[type],\n className\n )}\n {...props}\n >\n {formatStatus(status)}\n </div>\n )\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport {\n flexRender,\n getCoreRowModel,\n getSortedRowModel,\n useReactTable,\n type ColumnDef,\n type SortingState,\n} from \"@tanstack/react-table\"\nimport { ArrowDown, ArrowUp, ArrowUpDown, SearchX } from \"lucide-react\"\n\nimport { cn } from \"../../../lib/utils\"\n\nexport interface SimpleDataTableProps<TData> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n columns: ColumnDef<TData, any>[]\n data: TData[]\n onRowClick?: (row: TData) => void\n emptyIcon?: React.ReactNode\n emptyMessage?: string\n emptyDescription?: string\n className?: string\n}\n\nexport function SimpleDataTable<TData>({\n columns,\n data,\n onRowClick,\n emptyIcon,\n emptyMessage = \"No rows found\",\n emptyDescription = \"Try adjusting your filters\",\n className,\n}: SimpleDataTableProps<TData>) {\n const [sorting, setSorting] = React.useState<SortingState>([])\n\n const table = useReactTable({\n data,\n columns,\n state: { sorting },\n onSortingChange: setSorting,\n getCoreRowModel: getCoreRowModel(),\n getSortedRowModel: getSortedRowModel(),\n })\n\n return (\n <div className={cn(\"w-full\", className)}>\n <table className=\"w-full border-collapse text-sm\">\n <thead>\n {table.getHeaderGroups().map((headerGroup) => (\n <tr\n key={headerGroup.id}\n className=\"border-b border-border/50 hover:bg-transparent\"\n >\n {headerGroup.headers.map((header) => (\n <th\n key={header.id}\n className=\"h-9 px-3 text-left align-middle text-xs font-medium text-muted-foreground whitespace-nowrap\"\n >\n {header.isPlaceholder ? null : header.column.getCanSort() ? (\n <button\n type=\"button\"\n className=\"inline-flex items-center gap-1 hover:text-foreground transition-colors\"\n onClick={header.column.getToggleSortingHandler()}\n >\n {flexRender(header.column.columnDef.header, header.getContext())}\n {header.column.getIsSorted() === \"asc\" ? (\n <ArrowUp className=\"w-3 h-3\" />\n ) : header.column.getIsSorted() === \"desc\" ? (\n <ArrowDown className=\"w-3 h-3\" />\n ) : (\n <ArrowUpDown className=\"w-3 h-3 opacity-0 group-hover:opacity-50\" />\n )}\n </button>\n ) : (\n flexRender(header.column.columnDef.header, header.getContext())\n )}\n </th>\n ))}\n </tr>\n ))}\n </thead>\n <tbody>\n {table.getRowModel().rows.length > 0 ? (\n table.getRowModel().rows.map((row) => (\n <tr\n key={row.id}\n onClick={() => onRowClick?.(row.original)}\n className={cn(\n \"group border-none transition-colors\",\n onRowClick && \"cursor-pointer\",\n )}\n >\n {row.getVisibleCells().map((cell, cellIdx) => (\n <td\n key={cell.id}\n className={cn(\n \"px-3 py-3 align-middle whitespace-nowrap group-hover:bg-muted/50\",\n cellIdx === 0 && \"rounded-l-lg\",\n cellIdx === row.getVisibleCells().length - 1 && \"rounded-r-lg\",\n )}\n >\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </td>\n ))}\n </tr>\n ))\n ) : (\n <tr>\n <td colSpan={columns.length} className=\"h-52 px-4 text-center\">\n <div className=\"flex flex-col items-center gap-1 text-muted-foreground\">\n {emptyIcon ?? <SearchX className=\"h-7 w-7 opacity-40\" />}\n <p className=\"text-sm font-medium\">{emptyMessage}</p>\n <p className=\"text-xs\">{emptyDescription}</p>\n </div>\n </td>\n </tr>\n )}\n </tbody>\n </table>\n </div>\n )\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { useEffect, useMemo, useRef } from \"react\"\nimport { useTexture } from \"@react-three/drei\"\nimport { Canvas, useFrame, useThree } from \"@react-three/fiber\"\nimport {\n Color,\n Uniform,\n RepeatWrapping,\n type Mesh,\n type CircleGeometry,\n type ShaderMaterial,\n} from \"three\"\nimport { cn } from \"../../../lib/utils\"\n\nexport type AgentOrbState = null | \"thinking\" | \"listening\" | \"talking\"\n\nexport interface AgentOrbProps {\n state?: AgentOrbState\n colors?: [string, string]\n volumeMode?: \"auto\" | \"manual\"\n manualInput?: number\n manualOutput?: number\n inputVolumeRef?: React.RefObject<number>\n outputVolumeRef?: React.RefObject<number>\n getInputVolume?: () => number\n getOutputVolume?: () => number\n seed?: number\n showGlow?: boolean\n className?: string\n}\n\nconst PERLIN_NOISE_URL =\n \"https://storage.googleapis.com/eleven-public-cdn/images/perlin-noise.png\"\n\n/**\n * Full AgentOrb with optional CSS glow wrapper.\n * Colors default to CSS `--primary` via computed style at mount time.\n */\nexport function AgentOrb({\n state = null,\n colors,\n volumeMode = \"auto\",\n manualInput,\n manualOutput,\n inputVolumeRef,\n outputVolumeRef,\n getInputVolume,\n getOutputVolume,\n seed,\n showGlow = true,\n className,\n}: AgentOrbProps) {\n const resolvedColors = useResolvedColors(colors)\n const isSpeaking = state === \"talking\"\n const isListening = state === \"listening\"\n\n return (\n <div className={cn(\"relative h-full w-full\", className)}>\n {showGlow && (\n <GlowLayer\n isSpeaking={isSpeaking}\n isListening={isListening}\n />\n )}\n <div\n className={cn(\n \"relative z-10 w-full h-full transition-transform duration-700 ease-out\",\n isListening ? \"scale-90\" : \"scale-100\",\n )}\n >\n <AgentOrbCanvas\n colors={resolvedColors}\n seed={seed}\n agentState={state}\n volumeMode={volumeMode}\n manualInput={manualInput}\n manualOutput={manualOutput}\n inputVolumeRef={inputVolumeRef}\n outputVolumeRef={outputVolumeRef}\n getInputVolume={getInputVolume}\n getOutputVolume={getOutputVolume}\n className=\"w-full h-full\"\n />\n </div>\n </div>\n )\n}\n\nfunction useResolvedColors(colors?: [string, string]): [string, string] {\n const ref = useRef<[string, string]>(colors ?? [\"#000000\", \"#000000\"])\n\n useEffect(() => {\n if (colors) {\n ref.current = colors\n return\n }\n if (typeof document === \"undefined\") return\n const style = getComputedStyle(document.documentElement)\n const primary = style.getPropertyValue(\"--primary\").trim() || \"#000000\"\n ref.current = [primary, primary]\n }, [colors])\n\n return ref.current\n}\n\n/* ----- Glow Layer (CSS animations) ----- */\n\nfunction GlowLayer({ isSpeaking, isListening }: { isSpeaking: boolean; isListening: boolean }) {\n return (\n <div\n className={cn(\n \"absolute inset-0 flex items-center justify-center transition-all duration-700 ease-out\",\n isListening ? \"scale-90\" : \"scale-100\",\n )}\n >\n {isListening && (\n <>\n <div\n className=\"absolute inset-0 rounded-full animate-[spin_8s_linear_infinite]\"\n style={{\n background:\n \"conic-gradient(from 0deg, color-mix(in srgb, var(--primary) 30%, transparent) 0deg, transparent 60deg, color-mix(in srgb, var(--primary) 30%, transparent) 120deg, transparent 180deg, color-mix(in srgb, var(--primary) 30%, transparent) 240deg, transparent 300deg)\",\n filter: \"blur(20px)\",\n }}\n />\n <div\n className=\"absolute inset-0 rounded-full animate-[spin_12s_linear_infinite_reverse]\"\n style={{\n background:\n \"conic-gradient(from 45deg, transparent 0deg, color-mix(in srgb, var(--primary) 20%, transparent) 90deg, transparent 180deg, color-mix(in srgb, var(--primary) 20%, transparent) 270deg)\",\n filter: \"blur(25px)\",\n }}\n />\n </>\n )}\n\n {isSpeaking && (\n <>\n <div\n className=\"absolute inset-0 rounded-full animate-[spin_6s_linear_infinite]\"\n style={{\n background:\n \"conic-gradient(from 0deg, color-mix(in srgb, var(--primary) 40%, transparent) 0deg, transparent 45deg, color-mix(in srgb, var(--primary) 40%, transparent) 90deg, transparent 135deg, color-mix(in srgb, var(--primary) 40%, transparent) 180deg, transparent 225deg, color-mix(in srgb, var(--primary) 40%, transparent) 270deg, transparent 315deg)\",\n filter: \"blur(30px)\",\n }}\n />\n <div\n className=\"absolute inset-0 rounded-full animate-pulse\"\n style={{\n animationDuration: \"2s\",\n background:\n \"radial-gradient(circle, color-mix(in srgb, var(--primary) 30%, transparent) 0%, transparent 70%)\",\n filter: \"blur(20px)\",\n }}\n />\n </>\n )}\n\n {!isSpeaking && !isListening && (\n <div\n className=\"absolute inset-0 rounded-full\"\n style={{\n background:\n \"radial-gradient(circle, color-mix(in srgb, var(--primary) 15%, transparent) 0%, transparent 70%)\",\n filter: \"blur(25px)\",\n }}\n />\n )}\n </div>\n )\n}\n\n/* ----- Raw Three.js Canvas (exported for advanced use) ----- */\n\ninterface AgentOrbCanvasProps {\n colors?: [string, string]\n seed?: number\n agentState?: AgentOrbState\n volumeMode?: \"auto\" | \"manual\"\n manualInput?: number\n manualOutput?: number\n inputVolumeRef?: React.RefObject<number>\n outputVolumeRef?: React.RefObject<number>\n getInputVolume?: () => number\n getOutputVolume?: () => number\n className?: string\n resizeDebounce?: number\n}\n\nexport function AgentOrbCanvas({\n colors = [\"#000000\", \"#000000\"],\n seed,\n agentState = null,\n volumeMode = \"auto\",\n manualInput,\n manualOutput,\n inputVolumeRef,\n outputVolumeRef,\n getInputVolume,\n getOutputVolume,\n className,\n resizeDebounce = 100,\n}: AgentOrbCanvasProps) {\n return (\n <div className={className ?? \"relative h-full w-full\"}>\n <Canvas\n resize={{ debounce: resizeDebounce }}\n gl={{ alpha: true, antialias: true, premultipliedAlpha: true }}\n >\n <OrbScene\n colors={colors}\n seed={seed}\n agentState={agentState}\n volumeMode={volumeMode}\n manualInput={manualInput}\n manualOutput={manualOutput}\n inputVolumeRef={inputVolumeRef}\n outputVolumeRef={outputVolumeRef}\n getInputVolume={getInputVolume}\n getOutputVolume={getOutputVolume}\n />\n </Canvas>\n </div>\n )\n}\n\n/* ----- Internal Scene ----- */\n\nfunction OrbScene({\n colors,\n seed,\n agentState,\n volumeMode,\n manualInput,\n manualOutput,\n inputVolumeRef,\n outputVolumeRef,\n getInputVolume,\n getOutputVolume,\n}: {\n colors: [string, string]\n seed?: number\n agentState: AgentOrbState\n volumeMode: \"auto\" | \"manual\"\n manualInput?: number\n manualOutput?: number\n inputVolumeRef?: React.RefObject<number>\n outputVolumeRef?: React.RefObject<number>\n getInputVolume?: () => number\n getOutputVolume?: () => number\n}) {\n const { gl } = useThree()\n const circleRef = useRef<Mesh<CircleGeometry, ShaderMaterial>>(null)\n const initialColorsRef = useRef<[string, string]>(colors)\n const targetColor1Ref = useRef(new Color(colors[0]))\n const targetColor2Ref = useRef(new Color(colors[1]))\n const animSpeedRef = useRef(0.1)\n const perlinNoiseTexture = useTexture(PERLIN_NOISE_URL)\n\n const agentRef = useRef<AgentOrbState>(agentState)\n const modeRef = useRef<\"auto\" | \"manual\">(volumeMode)\n const curInRef = useRef(0)\n const curOutRef = useRef(0)\n\n useEffect(() => { agentRef.current = agentState }, [agentState])\n useEffect(() => { modeRef.current = volumeMode }, [volumeMode])\n useEffect(() => {\n targetColor1Ref.current = new Color(colors[0])\n targetColor2Ref.current = new Color(colors[1])\n }, [colors])\n\n const random = useMemo(\n () => splitmix32(seed ?? Math.floor(Math.random() * 2 ** 32)),\n [seed],\n )\n const offsets = useMemo(\n () => new Float32Array(Array.from({ length: 7 }, () => random() * Math.PI * 2)),\n [random],\n )\n\n useEffect(() => {\n const apply = () => {\n if (!circleRef.current) return\n const isDark = document.documentElement.classList.contains(\"dark\")\n circleRef.current.material.uniforms.uInverted.value = isDark ? 1 : 0\n }\n apply()\n const observer = new MutationObserver(apply)\n observer.observe(document.documentElement, { attributes: true, attributeFilter: [\"class\"] })\n return () => observer.disconnect()\n }, [])\n\n useFrame((_, delta: number) => {\n const mat = circleRef.current?.material\n if (!mat) return\n const u = mat.uniforms\n u.uTime.value += delta * 0.5\n\n if (u.uOpacity.value < 1) {\n u.uOpacity.value = Math.min(1, u.uOpacity.value + delta * 2)\n }\n\n let targetIn = 0\n let targetOut = 0.3\n if (modeRef.current === \"manual\") {\n targetIn = clamp01(manualInput ?? inputVolumeRef?.current ?? getInputVolume?.() ?? 0)\n targetOut = clamp01(manualOutput ?? outputVolumeRef?.current ?? getOutputVolume?.() ?? 0)\n } else {\n const t = u.uTime.value * 2\n if (agentRef.current === null) {\n targetIn = 0; targetOut = 0.3\n } else if (agentRef.current === \"listening\") {\n targetIn = clamp01(0.55 + Math.sin(t * 3.2) * 0.35); targetOut = 0.45\n } else if (agentRef.current === \"talking\") {\n targetIn = clamp01(0.65 + Math.sin(t * 4.8) * 0.22)\n targetOut = clamp01(0.75 + Math.sin(t * 3.6) * 0.22)\n } else {\n const base = 0.38 + 0.07 * Math.sin(t * 0.7)\n const wander = 0.05 * Math.sin(t * 2.1) * Math.sin(t * 0.37 + 1.2)\n targetIn = clamp01(base + wander)\n targetOut = clamp01(0.48 + 0.12 * Math.sin(t * 1.05 + 0.6))\n }\n }\n\n curInRef.current += (targetIn - curInRef.current) * 0.2\n curOutRef.current += (targetOut - curOutRef.current) * 0.2\n\n const targetSpeed = 0.1 + (1 - Math.pow(curOutRef.current - 1, 2)) * 0.9\n animSpeedRef.current += (targetSpeed - animSpeedRef.current) * 0.12\n\n u.uAnimation.value += delta * animSpeedRef.current\n u.uInputVolume.value = curInRef.current\n u.uOutputVolume.value = curOutRef.current\n u.uColor1.value.lerp(targetColor1Ref.current, 0.08)\n u.uColor2.value.lerp(targetColor2Ref.current, 0.08)\n })\n\n useEffect(() => {\n const canvas = gl.domElement\n const onContextLost = (event: Event) => {\n event.preventDefault()\n setTimeout(() => { gl.forceContextRestore() }, 1)\n }\n canvas.addEventListener(\"webglcontextlost\", onContextLost, false)\n return () => canvas.removeEventListener(\"webglcontextlost\", onContextLost, false)\n }, [gl])\n\n const uniforms = useMemo(() => {\n perlinNoiseTexture.wrapS = RepeatWrapping\n perlinNoiseTexture.wrapT = RepeatWrapping\n const isDark =\n typeof document !== \"undefined\" && document.documentElement.classList.contains(\"dark\")\n return {\n uColor1: new Uniform(new Color(initialColorsRef.current[0])),\n uColor2: new Uniform(new Color(initialColorsRef.current[1])),\n uOffsets: { value: offsets },\n uPerlinTexture: new Uniform(perlinNoiseTexture),\n uTime: new Uniform(0),\n uAnimation: new Uniform(0.1),\n uInverted: new Uniform(isDark ? 1 : 0),\n uInputVolume: new Uniform(0),\n uOutputVolume: new Uniform(0),\n uOpacity: new Uniform(0),\n }\n }, [perlinNoiseTexture, offsets])\n\n return (\n <mesh ref={circleRef}>\n <circleGeometry args={[3.5, 64]} />\n <shaderMaterial\n uniforms={uniforms}\n fragmentShader={fragmentShader}\n vertexShader={vertexShader}\n transparent\n />\n </mesh>\n )\n}\n\n/* ----- Utilities ----- */\n\nfunction splitmix32(a: number) {\n return function () {\n a |= 0\n a = (a + 0x9e3779b9) | 0\n let t = a ^ (a >>> 16)\n t = Math.imul(t, 0x21f0aaad)\n t = t ^ (t >>> 15)\n t = Math.imul(t, 0x735a2d97)\n return ((t = t ^ (t >>> 15)) >>> 0) / 4294967296\n }\n}\n\nfunction clamp01(n: number) {\n if (!Number.isFinite(n)) return 0\n return Math.min(1, Math.max(0, n))\n}\n\n/* ----- Shaders ----- */\n\nconst vertexShader = /* glsl */ `\nuniform float uTime;\nuniform sampler2D uPerlinTexture;\nvarying vec2 vUv;\nvoid main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n}\n`\n\nconst fragmentShader = /* glsl */ `\nuniform float uTime;\nuniform float uAnimation;\nuniform float uInverted;\nuniform float uOffsets[7];\nuniform vec3 uColor1;\nuniform vec3 uColor2;\nuniform float uInputVolume;\nuniform float uOutputVolume;\nuniform float uOpacity;\nuniform sampler2D uPerlinTexture;\nvarying vec2 vUv;\n\nconst float PI = 3.14159265358979323846;\n\nbool drawOval(vec2 polarUv, vec2 polarCenter, float a, float b, bool reverseGradient, float softness, out vec4 color) {\n vec2 p = polarUv - polarCenter;\n float oval = (p.x * p.x) / (a * a) + (p.y * p.y) / (b * b);\n float edge = smoothstep(1.0, 1.0 - softness, oval);\n if (edge > 0.0) {\n float gradient = reverseGradient ? (1.0 - (p.x / a + 1.0) / 2.0) : ((p.x / a + 1.0) / 2.0);\n gradient = mix(0.5, gradient, 0.1);\n color = vec4(vec3(gradient), 0.85 * edge);\n return true;\n }\n return false;\n}\n\nvec3 colorRamp(float grayscale, vec3 color1, vec3 color2, vec3 color3, vec3 color4) {\n if (grayscale < 0.33) return mix(color1, color2, grayscale * 3.0);\n else if (grayscale < 0.66) return mix(color2, color3, (grayscale - 0.33) * 3.0);\n else return mix(color3, color4, (grayscale - 0.66) * 3.0);\n}\n\nvec2 hash2(vec2 p) {\n return fract(sin(vec2(dot(p, vec2(127.1, 311.7)), dot(p, vec2(269.5, 183.3)))) * 43758.5453);\n}\n\nfloat noise2D(vec2 p) {\n vec2 i = floor(p);\n vec2 f = fract(p);\n vec2 u = f * f * (3.0 - 2.0 * f);\n float n = mix(\n mix(dot(hash2(i + vec2(0.0, 0.0)), f - vec2(0.0, 0.0)),\n dot(hash2(i + vec2(1.0, 0.0)), f - vec2(1.0, 0.0)), u.x),\n mix(dot(hash2(i + vec2(0.0, 1.0)), f - vec2(0.0, 1.0)),\n dot(hash2(i + vec2(1.0, 1.0)), f - vec2(1.0, 1.0)), u.x),\n u.y\n );\n return 0.5 + 0.5 * n;\n}\n\nfloat sharpRing(vec3 decomposed, float time) {\n float ringStart = 1.0;\n float ringWidth = 0.3;\n float noiseScale = 5.0;\n float noise = mix(\n noise2D(vec2(decomposed.x, time) * noiseScale),\n noise2D(vec2(decomposed.y, time) * noiseScale),\n decomposed.z\n );\n noise = (noise - 0.5) * 2.5;\n return ringStart + noise * ringWidth * 1.5;\n}\n\nfloat smoothRing(vec3 decomposed, float time) {\n float ringStart = 0.9;\n float ringWidth = 0.2;\n float noiseScale = 6.0;\n float noise = mix(\n noise2D(vec2(decomposed.x, time) * noiseScale),\n noise2D(vec2(decomposed.y, time) * noiseScale),\n decomposed.z\n );\n noise = (noise - 0.5) * 5.0;\n return ringStart + noise * ringWidth;\n}\n\nfloat flow(vec3 decomposed, float time) {\n return mix(\n texture(uPerlinTexture, vec2(time, decomposed.x / 2.0)).r,\n texture(uPerlinTexture, vec2(time, decomposed.y / 2.0)).r,\n decomposed.z\n );\n}\n\nvoid main() {\n vec2 uv = vUv * 2.0 - 1.0;\n float radius = length(uv);\n float theta = atan(uv.y, uv.x);\n if (theta < 0.0) theta += 2.0 * PI;\n\n vec3 decomposed = vec3(\n theta / (2.0 * PI),\n mod(theta / (2.0 * PI) + 0.5, 1.0) + 1.0,\n abs(theta / PI - 1.0)\n );\n\n float noise = flow(decomposed, radius * 0.03 - uAnimation * 0.2) - 0.5;\n theta += noise * mix(0.08, 0.25, uOutputVolume);\n\n vec4 color = vec4(1.0, 1.0, 1.0, 1.0);\n float originalCenters[7] = float[7](0.0, 0.5 * PI, 1.0 * PI, 1.5 * PI, 2.0 * PI, 2.5 * PI, 3.0 * PI);\n float centers[7];\n for (int i = 0; i < 7; i++) {\n centers[i] = originalCenters[i] + 0.5 * sin(uTime / 20.0 + uOffsets[i]);\n }\n float a, b;\n vec4 ovalColor;\n for (int i = 0; i < 7; i++) {\n float noise = texture(uPerlinTexture, vec2(mod(centers[i] + uTime * 0.05, 1.0), 0.5)).r;\n a = 0.5 + noise * 0.3;\n b = noise * mix(3.5, 2.5, uInputVolume);\n bool reverseGradient = (i % 2 == 1);\n float distTheta = min(abs(theta - centers[i]), min(abs(theta + 2.0 * PI - centers[i]), abs(theta - 2.0 * PI - centers[i])));\n float distRadius = radius;\n float softness = 0.6;\n if (drawOval(vec2(distTheta, distRadius), vec2(0.0, 0.0), a, b, reverseGradient, softness, ovalColor)) {\n color.rgb = mix(color.rgb, ovalColor.rgb, ovalColor.a);\n color.a = max(color.a, ovalColor.a);\n }\n }\n\n float ringRadius1 = sharpRing(decomposed, uTime * 0.1);\n float ringRadius2 = smoothRing(decomposed, uTime * 0.1);\n float inputRadius1 = radius + uInputVolume * 0.2;\n float inputRadius2 = radius + uInputVolume * 0.15;\n float opacity1 = mix(0.2, 0.6, uInputVolume);\n float opacity2 = mix(0.15, 0.45, uInputVolume);\n float ringAlpha1 = (inputRadius2 >= ringRadius1) ? opacity1 : 0.0;\n float ringAlpha2 = smoothstep(ringRadius2 - 0.05, ringRadius2 + 0.05, inputRadius1) * opacity2;\n float totalRingAlpha = max(ringAlpha1, ringAlpha2);\n vec3 ringColor = vec3(1.0);\n color.rgb = 1.0 - (1.0 - color.rgb) * (1.0 - ringColor * totalRingAlpha);\n\n vec3 color1 = vec3(0.0, 0.0, 0.0);\n vec3 color2 = uColor1;\n vec3 color3 = uColor2;\n vec3 color4 = vec3(1.0, 1.0, 1.0);\n float luminance = mix(color.r, 1.0 - color.r, uInverted);\n color.rgb = colorRamp(luminance, color1, color2, color3, color4);\n color.a *= uOpacity;\n gl_FragColor = color;\n}\n`\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Mic, PhoneOff, Send, Sparkles } from \"lucide-react\"\nimport { cn } from \"../../../lib/utils\"\nimport { Message, MessageContent, MessageAvatar } from \"./message\"\n\nexport type AgentWidgetStatus = \"idle\" | \"connecting\" | \"connected\" | \"error\"\nexport type AgentWidgetMode = \"listening\" | \"speaking\" | null\n\nexport interface AgentWidgetMessage {\n from: \"user\" | \"assistant\"\n text: string\n}\n\nexport interface AgentWidgetProps {\n status?: AgentWidgetStatus\n mode?: AgentWidgetMode\n messages?: AgentWidgetMessage[]\n onSendMessage?: (text: string) => void\n onEndSession?: () => void\n inputMode?: \"voice\" | \"text\" | \"voice+text\"\n visualSlot?: React.ReactNode\n assistantAvatarSlot?: React.ReactNode\n header?: React.ReactNode\n footer?: React.ReactNode\n className?: string\n}\n\nexport function AgentWidget({\n status = \"idle\",\n mode = null,\n messages = [],\n onSendMessage,\n onEndSession,\n inputMode = \"voice+text\",\n visualSlot,\n assistantAvatarSlot,\n header,\n footer,\n className,\n}: AgentWidgetProps) {\n const [textInput, setTextInput] = React.useState(\"\")\n const messagesEndRef = React.useRef<HTMLDivElement>(null)\n\n React.useEffect(() => {\n messagesEndRef.current?.scrollIntoView({ behavior: \"smooth\" })\n }, [messages])\n\n const handleSend = () => {\n if (!textInput.trim()) return\n onSendMessage?.(textInput)\n setTextInput(\"\")\n }\n\n const showTextInput = inputMode === \"text\" || inputMode === \"voice+text\"\n const isConnected = status === \"connected\"\n\n return (\n <div className={cn(\"flex flex-col h-full overflow-hidden\", className)}>\n {header}\n\n {/* Chat area */}\n <div className=\"flex-1 overflow-y-auto p-4 space-y-4 bg-muted/20\">\n {messages.length === 0 ? (\n <div className=\"flex flex-col items-center justify-center h-full text-muted-foreground space-y-2 opacity-50\">\n {visualSlot ?? (\n <div className=\"w-12 h-12 rounded-full bg-muted flex items-center justify-center\">\n <Sparkles className=\"w-5 h-5\" />\n </div>\n )}\n <p className=\"text-sm\">\n {status === \"connecting\" ? \"Connecting...\" : \"Conversation started...\"}\n </p>\n </div>\n ) : (\n <>\n {messages.map((msg, idx) => (\n <Message key={idx} from={msg.from}>\n {msg.from === \"assistant\" && assistantAvatarSlot ? (\n <MessageAvatar>{assistantAvatarSlot}</MessageAvatar>\n ) : null}\n <MessageContent>{msg.text.replace(/^[\"']|[\"']$/g, \"\")}</MessageContent>\n </Message>\n ))}\n <div ref={messagesEndRef} />\n </>\n )}\n </div>\n\n {/* Voice status indicator */}\n {inputMode !== \"text\" && isConnected && (\n <div className=\"flex justify-center py-2 bg-background\">\n {mode === \"listening\" ? (\n <div className=\"inline-flex items-center gap-2 px-4 py-2 bg-primary/5 rounded-full border border-primary/10\">\n <div className=\"w-2 h-2 bg-green-500 rounded-full animate-pulse\" />\n <span className=\"text-sm font-medium text-foreground\">Listening</span>\n </div>\n ) : mode === \"speaking\" ? (\n <button\n type=\"button\"\n className=\"inline-flex items-center gap-2 px-4 py-2 bg-background rounded-full border border-border hover:border-primary transition-colors\"\n >\n <Mic className=\"w-4 h-4 text-primary\" />\n <span className=\"text-sm font-medium text-foreground\">Talk to interrupt</span>\n </button>\n ) : null}\n </div>\n )}\n\n {/* Input area */}\n <div className=\"flex-none p-4 bg-background border-t border-border\">\n {showTextInput ? (\n <div className=\"relative border-2 border-foreground rounded-2xl p-4 bg-background shadow-sm transition-all focus-within:shadow-md\">\n <textarea\n className=\"w-full resize-none border-none focus:ring-0 p-0 text-sm placeholder:text-muted-foreground min-h-[60px] bg-transparent outline-none focus:outline-none pr-24\"\n placeholder=\"Send a message...\"\n value={textInput}\n onChange={(e) => setTextInput(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" && !e.shiftKey) {\n e.preventDefault()\n handleSend()\n }\n }}\n />\n <div className=\"absolute bottom-4 right-4 flex items-center gap-3\">\n {onEndSession && (\n <button\n type=\"button\"\n onClick={onEndSession}\n className=\"w-10 h-10 flex items-center justify-center rounded-full bg-background border border-border shadow-sm hover:bg-muted transition-colors group\"\n title=\"End session\"\n >\n <PhoneOff className=\"w-5 h-5 text-foreground group-hover:text-destructive transition-colors\" />\n </button>\n )}\n <button\n type=\"button\"\n onClick={handleSend}\n disabled={!textInput.trim()}\n className=\"w-10 h-10 flex items-center justify-center rounded-full bg-muted-foreground hover:bg-foreground disabled:opacity-50 disabled:cursor-not-allowed transition-colors text-background shadow-sm\"\n >\n <Send className=\"w-5 h-5 ml-0.5\" />\n </button>\n </div>\n </div>\n ) : onEndSession ? (\n <button\n type=\"button\"\n onClick={onEndSession}\n className=\"flex items-center justify-center gap-2 w-full px-6 py-3 bg-destructive/5 hover:bg-destructive/10 text-destructive border border-destructive/20 rounded-full font-medium transition-all\"\n >\n <span className=\"w-2 h-2 bg-destructive rounded-full\" />\n End Session\n </button>\n ) : null}\n </div>\n\n {footer}\n </div>\n )\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { X } from \"lucide-react\"\nimport { cn } from \"../../../lib/utils\"\nimport { AgentWidget, type AgentWidgetMessage, type AgentWidgetStatus, type AgentWidgetMode } from \"./agent-widget\"\n\n/* ========================================\n AgentPopover (root)\n ======================================== */\n\nexport type AgentPopoverStep = string\n\nexport interface AgentPopoverContextValue {\n step: AgentPopoverStep\n setStep: (step: AgentPopoverStep) => void\n}\n\nconst AgentPopoverContext = React.createContext<AgentPopoverContextValue | null>(null)\n\nexport function useAgentPopover() {\n const ctx = React.useContext(AgentPopoverContext)\n if (!ctx) throw new Error(\"useAgentPopover must be used within <AgentPopover>\")\n return ctx\n}\n\nexport interface AgentPopoverProps {\n open: boolean\n onOpenChange: (open: boolean) => void\n defaultStep?: string\n step?: string\n onStepChange?: (step: string) => void\n children: React.ReactNode\n className?: string\n}\n\nexport function AgentPopover({\n open,\n onOpenChange,\n defaultStep = \"details\",\n step: controlledStep,\n onStepChange,\n children,\n className,\n}: AgentPopoverProps) {\n const [uncontrolledStep, setUncontrolledStep] = React.useState(defaultStep)\n const step = controlledStep ?? uncontrolledStep\n const setStep = React.useCallback(\n (s: string) => {\n if (controlledStep === undefined) setUncontrolledStep(s)\n onStepChange?.(s)\n },\n [controlledStep, onStepChange],\n )\n\n React.useEffect(() => {\n if (!open) return\n const onKeyDown = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") onOpenChange(false)\n }\n document.addEventListener(\"keydown\", onKeyDown)\n return () => document.removeEventListener(\"keydown\", onKeyDown)\n }, [open, onOpenChange])\n\n if (!open) return null\n\n return (\n <AgentPopoverContext.Provider value={{ step, setStep }}>\n {/* Backdrop */}\n <div\n className=\"fixed inset-0 z-50 bg-black/30 backdrop-blur-sm animate-in fade-in duration-200\"\n onClick={() => onOpenChange(false)}\n />\n {/* Panel */}\n <div\n role=\"dialog\"\n aria-modal=\"true\"\n className={cn(\n \"fixed inset-4 z-50 flex overflow-hidden rounded-3xl bg-background shadow-2xl ring-1 ring-border/50 animate-in zoom-in-95 fade-in duration-300\",\n \"md:inset-auto md:left-1/2 md:top-1/2 md:-translate-x-1/2 md:-translate-y-1/2 md:max-w-5xl md:w-[92vw] md:h-[85vh]\",\n className,\n )}\n >\n {/* Close button */}\n <button\n type=\"button\"\n onClick={() => onOpenChange(false)}\n className=\"absolute right-4 top-4 z-20 p-2 rounded-full bg-background/80 hover:bg-muted transition-colors text-foreground\"\n >\n <X className=\"w-4 h-4\" />\n </button>\n\n {children}\n </div>\n </AgentPopoverContext.Provider>\n )\n}\n\n/* ========================================\n AgentPopoverBranding (left panel)\n ======================================== */\n\nexport type ConnectionStatus = \"ready\" | \"connected\" | \"listening\" | \"speaking\"\n\nexport interface AgentPopoverBrandingProps {\n title?: string\n subtitle?: string\n badge?: string\n visualSlot?: React.ReactNode\n statusIndicator?: ConnectionStatus\n className?: string\n}\n\nexport function AgentPopoverBranding({\n title,\n subtitle,\n badge,\n visualSlot,\n statusIndicator = \"ready\",\n className,\n}: AgentPopoverBrandingProps) {\n return (\n <div\n className={cn(\n \"relative hidden w-[40%] shrink-0 flex-col items-center justify-center p-8 md:flex\",\n \"bg-gradient-to-br from-primary/5 via-background to-primary/10\",\n className,\n )}\n >\n {/* Dot pattern overlay */}\n <div\n className=\"absolute inset-0 pointer-events-none opacity-[0.06]\"\n style={{\n backgroundImage: \"radial-gradient(circle, var(--primary) 1px, transparent 1px)\",\n backgroundSize: \"24px 24px\",\n }}\n />\n\n <div className=\"relative z-10 flex flex-col items-center gap-6 text-center\">\n {visualSlot && (\n <div className=\"w-[200px] h-[200px] flex items-center justify-center\">\n {visualSlot}\n </div>\n )}\n\n {badge && (\n <span className=\"inline-flex px-3 py-1 rounded-full bg-primary/10 text-primary text-xs font-medium border border-primary/10\">\n {badge}\n </span>\n )}\n\n {title && <h2 className=\"text-xl font-semibold text-foreground\">{title}</h2>}\n {subtitle && <p className=\"text-sm text-muted-foreground max-w-[240px]\">{subtitle}</p>}\n\n <StatusPill status={statusIndicator} />\n </div>\n </div>\n )\n}\n\nfunction StatusPill({ status }: { status: ConnectionStatus }) {\n const label: Record<ConnectionStatus, string> = {\n ready: \"Ready to connect\",\n connected: \"Connected\",\n listening: \"Listening...\",\n speaking: \"Speaking...\",\n }\n\n const dotColor: Record<ConnectionStatus, string> = {\n ready: \"bg-muted-foreground\",\n connected: \"bg-green-500\",\n listening: \"bg-green-500 animate-pulse\",\n speaking: \"bg-primary animate-pulse\",\n }\n\n return (\n <div className=\"flex items-center gap-2 rounded-full border border-border px-3 py-1.5 bg-background/50\">\n <div className={cn(\"h-2 w-2 rounded-full\", dotColor[status])} />\n <span className=\"text-xs text-muted-foreground\">{label[status]}</span>\n </div>\n )\n}\n\n/* ========================================\n AgentPopoverStepContent (right panel step)\n ======================================== */\n\nexport interface AgentPopoverStepContentProps {\n step: string\n children: React.ReactNode\n className?: string\n}\n\nexport function AgentPopoverStepContent({ step, children, className }: AgentPopoverStepContentProps) {\n const { step: currentStep } = useAgentPopover()\n if (currentStep !== step) return null\n return <div className={cn(\"flex-1 flex flex-col overflow-hidden\", className)}>{children}</div>\n}\n\n/* ========================================\n AgentPopoverForm (details step)\n ======================================== */\n\nexport interface AgentPopoverFormField {\n name: string\n label: string\n type?: \"text\" | \"email\" | \"tel\" | \"textarea\"\n placeholder?: string\n required?: boolean\n}\n\nexport interface AgentPopoverFormProps {\n fields?: AgentPopoverFormField[]\n submitLabel?: string\n onSubmit?: (values: Record<string, string>) => void\n className?: string\n children?: React.ReactNode\n}\n\nexport function AgentPopoverForm({\n fields = [],\n submitLabel = \"Continue\",\n onSubmit,\n className,\n children,\n}: AgentPopoverFormProps) {\n const [values, setValues] = React.useState<Record<string, string>>({})\n\n const handleSubmit = (e: React.FormEvent) => {\n e.preventDefault()\n onSubmit?.(values)\n }\n\n return (\n <form\n onSubmit={handleSubmit}\n className={cn(\"flex flex-col h-full p-8 overflow-y-auto\", className)}\n >\n <div className=\"flex-1 space-y-4\">\n {fields.map((field) =>\n field.type === \"textarea\" ? (\n <label key={field.name} className=\"block space-y-1.5\">\n <span className=\"text-sm font-medium text-foreground\">\n {field.label}\n {field.required && <span className=\"text-destructive ml-0.5\">*</span>}\n </span>\n <textarea\n className=\"w-full rounded-xl border border-border bg-background px-4 py-3 text-sm placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-primary min-h-[80px] resize-none\"\n placeholder={field.placeholder}\n required={field.required}\n value={values[field.name] ?? \"\"}\n onChange={(e) => setValues((prev) => ({ ...prev, [field.name]: e.target.value }))}\n />\n </label>\n ) : (\n <label key={field.name} className=\"block space-y-1.5\">\n <span className=\"text-sm font-medium text-foreground\">\n {field.label}\n {field.required && <span className=\"text-destructive ml-0.5\">*</span>}\n </span>\n <input\n type={field.type ?? \"text\"}\n className=\"w-full rounded-xl border border-border bg-background px-4 py-3 text-sm placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-primary\"\n placeholder={field.placeholder}\n required={field.required}\n value={values[field.name] ?? \"\"}\n onChange={(e) => setValues((prev) => ({ ...prev, [field.name]: e.target.value }))}\n />\n </label>\n ),\n )}\n {children}\n </div>\n <button\n type=\"submit\"\n className=\"mt-6 w-full px-6 py-3 rounded-full bg-primary text-primary-foreground hover:bg-primary/90 font-medium transition-colors\"\n >\n {submitLabel}\n </button>\n </form>\n )\n}\n\n/* ========================================\n AgentPopoverOverview\n ======================================== */\n\nexport interface AgentPopoverOverviewProps {\n userSummary?: Record<string, string>\n discussionPoints?: string[]\n actions?: React.ReactNode\n className?: string\n}\n\nexport function AgentPopoverOverview({\n userSummary,\n discussionPoints,\n actions,\n className,\n}: AgentPopoverOverviewProps) {\n return (\n <div className={cn(\"flex flex-col h-full p-8 overflow-y-auto\", className)}>\n {userSummary && Object.keys(userSummary).length > 0 && (\n <div className=\"mb-6 rounded-xl bg-muted/50 p-4 space-y-2\">\n {Object.entries(userSummary).map(([key, val]) => (\n <div key={key} className=\"flex items-center justify-between text-sm\">\n <span className=\"text-muted-foreground capitalize\">{key}</span>\n <span className=\"text-foreground font-medium\">{val}</span>\n </div>\n ))}\n </div>\n )}\n\n {discussionPoints && discussionPoints.length > 0 && (\n <div className=\"mb-6\">\n <h3 className=\"text-sm font-semibold text-foreground mb-3\">Discussion Points</h3>\n <ul className=\"space-y-2\">\n {discussionPoints.map((point, i) => (\n <li key={i} className=\"flex items-start gap-2 text-sm text-foreground\">\n <div className=\"mt-1.5 w-1.5 h-1.5 rounded-full bg-primary shrink-0\" />\n {point}\n </li>\n ))}\n </ul>\n </div>\n )}\n\n {actions && <div className=\"mt-auto pt-6\">{actions}</div>}\n </div>\n )\n}\n\n/* ========================================\n AgentPopoverChat (interview step)\n ======================================== */\n\nexport interface AgentPopoverChatProps {\n messages?: AgentWidgetMessage[]\n onSendMessage?: (text: string) => void\n onEndSession?: () => void\n inputMode?: \"voice\" | \"text\" | \"voice+text\"\n visualSlot?: React.ReactNode\n assistantAvatarSlot?: React.ReactNode\n status?: AgentWidgetStatus\n mode?: AgentWidgetMode\n className?: string\n}\n\nexport function AgentPopoverChat({\n messages = [],\n onSendMessage,\n onEndSession,\n inputMode = \"voice+text\",\n visualSlot,\n assistantAvatarSlot,\n status = \"connected\",\n mode = null,\n className,\n}: AgentPopoverChatProps) {\n return (\n <AgentWidget\n messages={messages}\n onSendMessage={onSendMessage}\n onEndSession={onEndSession}\n inputMode={inputMode}\n visualSlot={visualSlot}\n assistantAvatarSlot={assistantAvatarSlot}\n status={status}\n mode={mode}\n className={cn(\"h-full\", className)}\n />\n )\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["/**\n * @handled-ai/design-system\n * UI components and utilities (shadcn-style, New York)\n */\n\n// Utilities\nexport { cn } from \"./lib/utils\"\nexport { BRAND_ICONS } from \"./lib/icons\"\n\n// Hooks\nexport { useIsMobile } from \"./hooks/use-mobile\"\n\n// Components (light — no recharts/nivo/three transitive deps)\nexport * from \"./components/activity-detail\"\nexport * from \"./components/activity-log\"\nexport * from \"./components/agent-popover\"\nexport * from \"./components/agent-widget\"\nexport * from \"./components/avatar\"\nexport * from \"./components/badge\"\nexport * from \"./components/button\"\nexport * from \"./components/card\"\nexport * from \"./components/contact-list\"\nexport * from \"./components/dashboard-cards\"\nexport * from \"./components/data-table\"\nexport * from \"./components/data-table-display\"\nexport * from \"./components/data-table-filter\"\nexport * from \"./components/data-table-quick-views\"\nexport * from \"./components/data-table-toolbar\"\nexport * from \"./components/detail-view\"\nexport * from \"./components/dialog\"\nexport * from \"./components/dropdown-menu\"\nexport * from \"./components/entity-panel\"\nexport * from \"./components/inbox-row\"\nexport * from \"./components/inbox-toolbar\"\nexport * from \"./components/input\"\nexport * from \"./components/insights-filter-bar\"\nexport * from \"./components/item-list\"\nexport * from \"./components/item-list-display\"\nexport * from \"./components/item-list-filter\"\nexport * from \"./components/item-list-toolbar\"\nexport * from \"./components/label\"\nexport * from \"./components/message\"\nexport * from \"./components/metric-card\"\nexport * from \"./components/performance-metrics-table\"\nexport * from \"./components/preview-list\"\nexport * from \"./components/progress\"\nexport * from \"./components/quick-action-chat-area\"\nexport {\n QuickActionModal,\n type QuickActionPriority,\n type QuickActionTaskDraft,\n type QuickActionTemplate,\n} from \"./components/quick-action-modal\"\nexport * from \"./components/quick-action-sidebar-nav\"\nexport * from \"./components/recommended-actions-section\"\nexport * from \"./components/report-card\"\nexport * from \"./components/score-analysis-modal\"\nexport * from \"./components/score-breakdown\"\nexport * from \"./components/score-feedback\"\nexport * from \"./components/score-ring\"\nexport * from \"./components/scroll-area\"\nexport * from \"./components/select\"\nexport * from \"./components/separator\"\nexport * from \"./components/sheet\"\nexport * from \"./components/sidebar\"\nexport * from \"./components/signal-feedback-inline\"\nexport * from \"./components/simple-data-table\"\nexport * from \"./components/skeleton\"\nexport * from \"./components/status-badge\"\nexport * from \"./components/styled-bar-list\"\nexport * from \"./components/suggested-actions\"\nexport * from \"./components/table\"\nexport * from \"./components/tabs\"\nexport * from \"./components/textarea\"\nexport * from \"./components/timeline-activity\"\nexport * from \"./components/tooltip\"\nexport * from \"./components/view-mode-toggle\"\n"],"mappings":"AAMA,SAAS,UAAU;AACnB,SAAS,mBAAmB;AAG5B,SAAS,mBAAmB;AAG5B,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd;AAAA,EACE;AAAA,OAIK;AACP,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;","names":[]}
|