@handled-ai/design-system 0.8.0 → 0.9.1

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.
Files changed (340) hide show
  1. package/README.md +14 -4
  2. package/dist/charts/bar-chart-component.d.ts +24 -0
  3. package/dist/charts/bar-chart-component.js +123 -0
  4. package/dist/charts/bar-chart-component.js.map +1 -0
  5. package/dist/charts/chart-tooltip.d.ts +26 -0
  6. package/dist/charts/chart-tooltip.js +69 -0
  7. package/dist/charts/chart-tooltip.js.map +1 -0
  8. package/dist/charts/chart.d.ts +64 -0
  9. package/dist/charts/chart.js +285 -0
  10. package/dist/charts/chart.js.map +1 -0
  11. package/dist/charts/donut-chart.d.ts +21 -0
  12. package/dist/charts/donut-chart.js +96 -0
  13. package/dist/charts/donut-chart.js.map +1 -0
  14. package/dist/charts/index.d.ts +11 -0
  15. package/dist/charts/index.js +10 -0
  16. package/dist/charts/index.js.map +1 -0
  17. package/dist/charts/pipeline-overview.d.ts +76 -0
  18. package/dist/charts/pipeline-overview.js +372 -0
  19. package/dist/charts/pipeline-overview.js.map +1 -0
  20. package/dist/charts/sankey-chart.d.ts +52 -0
  21. package/dist/charts/sankey-chart.js +219 -0
  22. package/dist/charts/sankey-chart.js.map +1 -0
  23. package/dist/charts/top-line-metrics.d.ts +26 -0
  24. package/dist/charts/top-line-metrics.js +224 -0
  25. package/dist/charts/top-line-metrics.js.map +1 -0
  26. package/dist/charts/trend-area-chart.d.ts +21 -0
  27. package/dist/charts/trend-area-chart.js +150 -0
  28. package/dist/charts/trend-area-chart.js.map +1 -0
  29. package/dist/charts/volume-analysis-chart.d.ts +19 -0
  30. package/dist/charts/volume-analysis-chart.js +121 -0
  31. package/dist/charts/volume-analysis-chart.js.map +1 -0
  32. package/dist/components/activity-detail.d.ts +38 -0
  33. package/dist/components/activity-detail.js +163 -0
  34. package/dist/components/activity-detail.js.map +1 -0
  35. package/dist/components/activity-log.d.ts +21 -0
  36. package/dist/components/activity-log.js +61 -0
  37. package/dist/components/activity-log.js.map +1 -0
  38. package/dist/components/agent-popover.d.ts +71 -0
  39. package/dist/components/agent-popover.js +282 -0
  40. package/dist/components/agent-popover.js.map +1 -0
  41. package/dist/components/agent-widget.d.ts +24 -0
  42. package/dist/components/agent-widget.js +117 -0
  43. package/dist/components/agent-widget.js.map +1 -0
  44. package/dist/components/avatar.d.ts +13 -0
  45. package/dist/components/avatar.js +140 -0
  46. package/dist/components/avatar.js.map +1 -0
  47. package/dist/components/badge.d.ts +12 -0
  48. package/dist/components/badge.js +75 -0
  49. package/dist/components/badge.js.map +1 -0
  50. package/dist/components/button.d.ts +13 -0
  51. package/dist/components/button.js +83 -0
  52. package/dist/components/button.js.map +1 -0
  53. package/dist/components/card.d.ts +11 -0
  54. package/dist/components/card.js +119 -0
  55. package/dist/components/card.js.map +1 -0
  56. package/dist/components/contact-list.d.ts +34 -0
  57. package/dist/components/contact-list.js +84 -0
  58. package/dist/components/contact-list.js.map +1 -0
  59. package/dist/components/dashboard-cards.d.ts +10 -0
  60. package/dist/components/dashboard-cards.js +164 -0
  61. package/dist/components/dashboard-cards.js.map +1 -0
  62. package/dist/components/data-table-display.d.ts +19 -0
  63. package/dist/components/data-table-display.js +109 -0
  64. package/dist/components/data-table-display.js.map +1 -0
  65. package/dist/components/data-table-filter.d.ts +18 -0
  66. package/dist/components/data-table-filter.js +107 -0
  67. package/dist/components/data-table-filter.js.map +1 -0
  68. package/dist/components/data-table-quick-views.d.ts +13 -0
  69. package/dist/components/data-table-quick-views.js +90 -0
  70. package/dist/components/data-table-quick-views.js.map +1 -0
  71. package/dist/components/data-table-toolbar.d.ts +18 -0
  72. package/dist/components/data-table-toolbar.js +45 -0
  73. package/dist/components/data-table-toolbar.js.map +1 -0
  74. package/dist/components/data-table.d.ts +39 -0
  75. package/dist/components/data-table.js +821 -0
  76. package/dist/components/data-table.js.map +1 -0
  77. package/dist/components/detail-view.d.ts +44 -0
  78. package/dist/components/detail-view.js +165 -0
  79. package/dist/components/detail-view.js.map +1 -0
  80. package/dist/components/dialog.d.ts +19 -0
  81. package/dist/components/dialog.js +188 -0
  82. package/dist/components/dialog.js.map +1 -0
  83. package/dist/components/dropdown-menu.d.ts +27 -0
  84. package/dist/components/dropdown-menu.js +279 -0
  85. package/dist/components/dropdown-menu.js.map +1 -0
  86. package/dist/components/entity-panel.d.ts +69 -0
  87. package/dist/components/entity-panel.js +584 -0
  88. package/dist/components/entity-panel.js.map +1 -0
  89. package/dist/components/inbox-row.d.ts +27 -0
  90. package/dist/components/inbox-row.js +139 -0
  91. package/dist/components/inbox-row.js.map +1 -0
  92. package/dist/components/inbox-toolbar.d.ts +21 -0
  93. package/dist/components/inbox-toolbar.js +203 -0
  94. package/dist/components/inbox-toolbar.js.map +1 -0
  95. package/dist/components/input.d.ts +5 -0
  96. package/dist/components/input.js +50 -0
  97. package/dist/components/input.js.map +1 -0
  98. package/dist/components/insights-filter-bar.d.ts +21 -0
  99. package/dist/components/insights-filter-bar.js +99 -0
  100. package/dist/components/insights-filter-bar.js.map +1 -0
  101. package/dist/components/item-list-display.d.ts +22 -0
  102. package/dist/components/item-list-display.js +240 -0
  103. package/dist/components/item-list-display.js.map +1 -0
  104. package/dist/components/item-list-filter.d.ts +16 -0
  105. package/dist/components/item-list-filter.js +87 -0
  106. package/dist/components/item-list-filter.js.map +1 -0
  107. package/dist/components/item-list-toolbar.d.ts +25 -0
  108. package/dist/components/item-list-toolbar.js +79 -0
  109. package/dist/components/item-list-toolbar.js.map +1 -0
  110. package/dist/components/item-list.d.ts +20 -0
  111. package/dist/components/item-list.js +702 -0
  112. package/dist/components/item-list.js.map +1 -0
  113. package/dist/components/label.d.ts +6 -0
  114. package/dist/components/label.js +55 -0
  115. package/dist/components/label.js.map +1 -0
  116. package/dist/components/message.d.ts +23 -0
  117. package/dist/components/message.js +117 -0
  118. package/dist/components/message.js.map +1 -0
  119. package/dist/components/metric-card.d.ts +25 -0
  120. package/dist/components/metric-card.js +107 -0
  121. package/dist/components/metric-card.js.map +1 -0
  122. package/dist/components/performance-metrics-table.d.ts +38 -0
  123. package/dist/components/performance-metrics-table.js +342 -0
  124. package/dist/components/performance-metrics-table.js.map +1 -0
  125. package/dist/components/preview-list.d.ts +14 -0
  126. package/dist/components/preview-list.js +83 -0
  127. package/dist/components/preview-list.js.map +1 -0
  128. package/dist/components/progress.d.ts +6 -0
  129. package/dist/components/progress.js +69 -0
  130. package/dist/components/progress.js.map +1 -0
  131. package/dist/components/quick-action-chat-area.d.ts +24 -0
  132. package/dist/components/quick-action-chat-area.js +178 -0
  133. package/dist/components/quick-action-chat-area.js.map +1 -0
  134. package/dist/components/quick-action-modal.d.ts +30 -0
  135. package/dist/components/quick-action-modal.js +288 -0
  136. package/dist/components/quick-action-modal.js.map +1 -0
  137. package/dist/components/quick-action-sidebar-nav.d.ts +51 -0
  138. package/dist/components/quick-action-sidebar-nav.js +528 -0
  139. package/dist/components/quick-action-sidebar-nav.js.map +1 -0
  140. package/dist/components/recommended-actions-section.d.ts +23 -0
  141. package/dist/components/recommended-actions-section.js +215 -0
  142. package/dist/components/recommended-actions-section.js.map +1 -0
  143. package/dist/components/report-card.d.ts +26 -0
  144. package/dist/components/report-card.js +69 -0
  145. package/dist/components/report-card.js.map +1 -0
  146. package/dist/components/score-analysis-modal.d.ts +26 -0
  147. package/dist/components/score-analysis-modal.js +141 -0
  148. package/dist/components/score-analysis-modal.js.map +1 -0
  149. package/dist/components/score-breakdown.d.ts +17 -0
  150. package/dist/components/score-breakdown.js +162 -0
  151. package/dist/components/score-breakdown.js.map +1 -0
  152. package/dist/components/score-feedback.d.ts +40 -0
  153. package/dist/components/score-feedback.js +209 -0
  154. package/dist/components/score-feedback.js.map +1 -0
  155. package/dist/components/score-ring.d.ts +14 -0
  156. package/dist/components/score-ring.js +79 -0
  157. package/dist/components/score-ring.js.map +1 -0
  158. package/dist/components/scroll-area.d.ts +7 -0
  159. package/dist/components/scroll-area.js +101 -0
  160. package/dist/components/scroll-area.js.map +1 -0
  161. package/dist/components/select.d.ts +17 -0
  162. package/dist/components/select.js +228 -0
  163. package/dist/components/select.js.map +1 -0
  164. package/dist/components/separator.d.ts +6 -0
  165. package/dist/components/separator.js +61 -0
  166. package/dist/components/separator.js.map +1 -0
  167. package/dist/components/sheet.d.ts +16 -0
  168. package/dist/components/sheet.js +168 -0
  169. package/dist/components/sheet.js.map +1 -0
  170. package/dist/components/sidebar.d.ts +73 -0
  171. package/dist/components/sidebar.js +723 -0
  172. package/dist/components/sidebar.js.map +1 -0
  173. package/dist/components/signal-feedback-inline.d.ts +51 -0
  174. package/dist/components/signal-feedback-inline.js +548 -0
  175. package/dist/components/signal-feedback-inline.js.map +1 -0
  176. package/dist/components/simple-data-table.d.ts +15 -0
  177. package/dist/components/simple-data-table.js +91 -0
  178. package/dist/components/simple-data-table.js.map +1 -0
  179. package/dist/components/skeleton.d.ts +5 -0
  180. package/dist/components/skeleton.js +44 -0
  181. package/dist/components/skeleton.js.map +1 -0
  182. package/dist/components/status-badge.d.ts +10 -0
  183. package/dist/components/status-badge.js +82 -0
  184. package/dist/components/status-badge.js.map +1 -0
  185. package/dist/components/styled-bar-list.d.ts +20 -0
  186. package/dist/components/styled-bar-list.js +59 -0
  187. package/dist/components/styled-bar-list.js.map +1 -0
  188. package/dist/components/suggested-actions.d.ts +110 -0
  189. package/dist/components/suggested-actions.js +1538 -0
  190. package/dist/components/suggested-actions.js.map +1 -0
  191. package/dist/components/table.d.ts +12 -0
  192. package/dist/components/table.js +147 -0
  193. package/dist/components/table.js.map +1 -0
  194. package/dist/components/tabs.d.ts +14 -0
  195. package/dist/components/tabs.js +129 -0
  196. package/dist/components/tabs.js.map +1 -0
  197. package/dist/components/textarea.d.ts +5 -0
  198. package/dist/components/textarea.js +47 -0
  199. package/dist/components/textarea.js.map +1 -0
  200. package/dist/components/timeline-activity.d.ts +34 -0
  201. package/dist/components/timeline-activity.js +181 -0
  202. package/dist/components/timeline-activity.js.map +1 -0
  203. package/dist/components/tooltip.d.ts +9 -0
  204. package/dist/components/tooltip.js +93 -0
  205. package/dist/components/tooltip.js.map +1 -0
  206. package/dist/components/view-mode-toggle.d.ts +16 -0
  207. package/dist/components/view-mode-toggle.js +24 -0
  208. package/dist/components/view-mode-toggle.js.map +1 -0
  209. package/dist/components/virtualized-data-table.d.ts +29 -0
  210. package/dist/components/virtualized-data-table.js +231 -0
  211. package/dist/components/virtualized-data-table.js.map +1 -0
  212. package/dist/hooks/use-mobile.d.ts +3 -0
  213. package/dist/hooks/use-mobile.js +21 -0
  214. package/dist/hooks/use-mobile.js.map +1 -0
  215. package/dist/index.d.ts +69 -1878
  216. package/dist/index.js +70 -10918
  217. package/dist/index.js.map +1 -1
  218. package/dist/lib/icons.d.ts +18 -0
  219. package/dist/lib/icons.js +21 -0
  220. package/dist/lib/icons.js.map +1 -0
  221. package/dist/lib/utils.d.ts +5 -0
  222. package/dist/lib/utils.js +9 -0
  223. package/dist/lib/utils.js.map +1 -0
  224. package/dist/prototype/index.d.ts +20 -0
  225. package/dist/prototype/index.js +8 -0
  226. package/dist/prototype/index.js.map +1 -0
  227. package/dist/prototype/prototype-accounts-view.d.ts +22 -0
  228. package/dist/prototype/prototype-accounts-view.js +70 -0
  229. package/dist/prototype/prototype-accounts-view.js.map +1 -0
  230. package/dist/prototype/prototype-admin-view.d.ts +21 -0
  231. package/dist/prototype/prototype-admin-view.js +53 -0
  232. package/dist/prototype/prototype-admin-view.js.map +1 -0
  233. package/dist/prototype/prototype-config.d.ts +226 -0
  234. package/dist/prototype/prototype-config.js +1 -0
  235. package/dist/prototype/prototype-config.js.map +1 -0
  236. package/dist/prototype/prototype-inbox-view.d.ts +48 -0
  237. package/dist/prototype/prototype-inbox-view.js +701 -0
  238. package/dist/prototype/prototype-inbox-view.js.map +1 -0
  239. package/dist/prototype/prototype-insights-view.d.ts +23 -0
  240. package/dist/prototype/prototype-insights-view.js +335 -0
  241. package/dist/prototype/prototype-insights-view.js.map +1 -0
  242. package/dist/prototype/prototype-shell.d.ts +40 -0
  243. package/dist/prototype/prototype-shell.js +190 -0
  244. package/dist/prototype/prototype-shell.js.map +1 -0
  245. package/dist/prototype/prototype-work-queue-view.d.ts +8 -0
  246. package/dist/prototype/prototype-work-queue-view.js +17 -0
  247. package/dist/prototype/prototype-work-queue-view.js.map +1 -0
  248. package/dist/three/agent-orb.d.ts +39 -0
  249. package/dist/three/agent-orb.js +500 -0
  250. package/dist/three/agent-orb.js.map +1 -0
  251. package/dist/three/index.d.ts +2 -0
  252. package/dist/three/index.js +2 -0
  253. package/dist/three/index.js.map +1 -0
  254. package/package.json +104 -18
  255. package/src/charts/bar-chart-component.tsx +150 -0
  256. package/src/charts/chart-tooltip.tsx +86 -0
  257. package/src/charts/chart.tsx +371 -0
  258. package/src/charts/donut-chart.tsx +112 -0
  259. package/src/charts/index.ts +13 -0
  260. package/src/charts/pipeline-overview.tsx +476 -0
  261. package/src/charts/sankey-chart.tsx +290 -0
  262. package/src/charts/top-line-metrics.tsx +261 -0
  263. package/src/charts/trend-area-chart.tsx +150 -0
  264. package/src/charts/volume-analysis-chart.tsx +124 -0
  265. package/src/components/activity-detail.tsx +233 -0
  266. package/src/components/activity-log.tsx +89 -0
  267. package/src/components/agent-popover.tsx +373 -0
  268. package/src/components/agent-widget.tsx +163 -0
  269. package/src/components/avatar.tsx +109 -0
  270. package/src/components/badge.tsx +48 -0
  271. package/src/components/button.tsx +59 -0
  272. package/src/components/card.tsx +92 -0
  273. package/src/components/contact-list.tsx +121 -0
  274. package/src/components/dashboard-cards.tsx +170 -0
  275. package/src/components/data-table-display.tsx +139 -0
  276. package/src/components/data-table-filter.tsx +138 -0
  277. package/src/components/data-table-quick-views.tsx +103 -0
  278. package/src/components/data-table-toolbar.tsx +56 -0
  279. package/src/components/data-table.tsx +915 -0
  280. package/src/components/detail-view.tsx +237 -0
  281. package/src/components/dialog.tsx +158 -0
  282. package/src/components/dropdown-menu.tsx +257 -0
  283. package/src/components/entity-panel.tsx +767 -0
  284. package/src/components/inbox-row.tsx +132 -0
  285. package/src/components/inbox-toolbar.tsx +213 -0
  286. package/src/components/input.tsx +21 -0
  287. package/src/components/insights-filter-bar.tsx +132 -0
  288. package/src/components/item-list-display.tsx +278 -0
  289. package/src/components/item-list-filter.tsx +118 -0
  290. package/src/components/item-list-toolbar.tsx +97 -0
  291. package/src/components/item-list.tsx +843 -0
  292. package/src/components/label.tsx +24 -0
  293. package/src/components/message.tsx +83 -0
  294. package/src/components/metric-card.tsx +178 -0
  295. package/src/components/performance-metrics-table.tsx +442 -0
  296. package/src/components/preview-list.tsx +62 -0
  297. package/src/components/progress.tsx +31 -0
  298. package/src/components/quick-action-chat-area.tsx +156 -0
  299. package/src/components/quick-action-modal.tsx +331 -0
  300. package/src/components/quick-action-sidebar-nav.tsx +592 -0
  301. package/src/components/recommended-actions-section.tsx +258 -0
  302. package/src/components/report-card.tsx +106 -0
  303. package/src/components/score-analysis-modal.tsx +172 -0
  304. package/src/components/score-breakdown.tsx +179 -0
  305. package/src/components/score-feedback.tsx +288 -0
  306. package/src/components/score-ring.tsx +87 -0
  307. package/src/components/scroll-area.tsx +58 -0
  308. package/src/components/select.tsx +190 -0
  309. package/src/components/separator.tsx +28 -0
  310. package/src/components/sheet.tsx +143 -0
  311. package/src/components/sidebar.tsx +726 -0
  312. package/src/components/signal-feedback-inline.tsx +591 -0
  313. package/src/components/simple-data-table.tsx +124 -0
  314. package/src/components/skeleton.tsx +15 -0
  315. package/src/components/status-badge.tsx +63 -0
  316. package/src/components/styled-bar-list.tsx +70 -0
  317. package/src/components/suggested-actions.tsx +1985 -0
  318. package/src/components/table.tsx +116 -0
  319. package/src/components/tabs.tsx +91 -0
  320. package/src/components/textarea.tsx +18 -0
  321. package/src/components/timeline-activity.tsx +234 -0
  322. package/src/components/tooltip.tsx +57 -0
  323. package/src/components/view-mode-toggle.tsx +39 -0
  324. package/src/components/virtualized-data-table.tsx +309 -0
  325. package/src/hooks/use-mobile.ts +21 -0
  326. package/src/index.ts +78 -0
  327. package/src/lib/icons.ts +18 -0
  328. package/src/lib/utils.ts +6 -0
  329. package/src/prototype/index.ts +11 -0
  330. package/src/prototype/prototype-accounts-view.tsx +112 -0
  331. package/src/prototype/prototype-admin-view.tsx +67 -0
  332. package/src/prototype/prototype-config.ts +243 -0
  333. package/src/prototype/prototype-inbox-view.tsx +810 -0
  334. package/src/prototype/prototype-insights-view.tsx +379 -0
  335. package/src/prototype/prototype-shell.tsx +219 -0
  336. package/src/prototype/prototype-work-queue-view.tsx +30 -0
  337. package/src/styles/globals.css +299 -0
  338. package/src/three/agent-orb.tsx +557 -0
  339. package/src/three/index.ts +5 -0
  340. package/src/types/r3f.d.ts +8 -0
@@ -0,0 +1,243 @@
1
+ import * as React from "react"
2
+ import type { SidebarNavSection } from "../components/quick-action-sidebar-nav"
3
+ import type { ScoreFactor } from "../components/score-breakdown"
4
+ import type { SuggestedAction, SuggestedContact } from "../components/suggested-actions"
5
+ import type { SourceDef } from "../components/detail-view"
6
+ import type { InboxFilterCategory } from "../components/inbox-toolbar"
7
+ import type { DataTableFilterCategory } from "../components/data-table-filter"
8
+ import type { DataRow } from "../components/data-table"
9
+ import type { MetricCardProps } from "../components/metric-card"
10
+ import type {
11
+ PipelineStage,
12
+ PipelineStageMetrics,
13
+ PipelineStageTiming,
14
+ } from "../charts/pipeline-overview"
15
+ import type { TimelineEvent } from "../components/timeline-activity"
16
+ import type { LucideIcon } from "lucide-react"
17
+
18
+ // ---------------------------------------------------------------------------
19
+ // Shared
20
+ // ---------------------------------------------------------------------------
21
+
22
+ export interface PrototypeBrandConfig {
23
+ name: string
24
+ logo?: string
25
+ assistantName?: string
26
+ }
27
+
28
+ export interface QueueItem {
29
+ id: string
30
+ title: string
31
+ details: string
32
+ statusColor: string
33
+ time: string
34
+ company: string
35
+ tag1: string
36
+ }
37
+
38
+ export interface SignalScoreData {
39
+ score: number
40
+ factors: ScoreFactor[]
41
+ whyNow: string
42
+ evidence: string[]
43
+ confidence: number
44
+ onFactorFeedback?: (factorKey: string, type: "up" | "down" | null, detail?: string) => void
45
+ onApproveFeedback?: (reasons: string[], detail: string) => void
46
+ onDismissFeedback?: (reasons: string[], detail: string) => void
47
+ }
48
+
49
+ // ---------------------------------------------------------------------------
50
+ // Inbox
51
+ // ---------------------------------------------------------------------------
52
+
53
+ export interface InboxDetailSections {
54
+ signalBrief?: boolean
55
+ suggestedActions?: boolean
56
+ timeline?: boolean
57
+ }
58
+
59
+ export interface InboxViewConfig {
60
+ items: QueueItem[]
61
+ filterCategories?: InboxFilterCategory[]
62
+ detailSections?: InboxDetailSections
63
+ accountContacts?: SuggestedContact[]
64
+ buildAccountContacts?: (item: QueueItem) => SuggestedContact[]
65
+ emailSignature?: string | React.ReactNode
66
+ buildSuggestedActions?: (item: QueueItem) => SuggestedAction[]
67
+ buildSourceItems?: (item: QueueItem) => SourceDef[]
68
+ getSignalScore?: (company: string) => SignalScoreData
69
+ getTimelineEvents?: (item: QueueItem) => TimelineEvent[]
70
+ iconMap?: Record<string, string>
71
+ hideToolbarActions?: boolean
72
+ hideHoverActions?: boolean
73
+ onSuggestedActionFeedback?: (actionId: number | string, feedback: string, actionTitle?: string) => void
74
+ buildEntityChips?: (item: QueueItem) => Array<{ id: string; label: string; avatarLetter: string; onClick?: () => void }>
75
+ quickFilterTabs?: Array<{ id: string; label: string; matchValue?: string; count?: number }>
76
+ hideAccountsButton?: boolean
77
+ accountDetailsLabel?: string
78
+ signalLabels?: {
79
+ approveButton?: string
80
+ dismissButton?: string
81
+ approvedStatus?: string
82
+ dismissedStatus?: string
83
+ }
84
+ }
85
+
86
+ // ---------------------------------------------------------------------------
87
+ // Insights
88
+ // ---------------------------------------------------------------------------
89
+
90
+ export interface InsightsCustomTab {
91
+ id: string
92
+ label: string
93
+ icon?: React.ComponentType<{ className?: string }>
94
+ content: React.ReactNode
95
+ }
96
+
97
+ export interface InsightsViewConfig {
98
+ customTabs?: InsightsCustomTab[]
99
+ tabs?: {
100
+ overview?: boolean
101
+ analytics?: boolean
102
+ }
103
+ coaching?: {
104
+ enabled?: boolean
105
+ message?: string
106
+ }
107
+ metrics?: MetricCardProps[]
108
+ expandedMetrics?: MetricCardProps[]
109
+ dashboardCards?: {
110
+ topTasks?: boolean
111
+ upcomingMeetings?: boolean
112
+ recentlyCompleted?: boolean
113
+ checkIns?: boolean
114
+ }
115
+ analytics?: {
116
+ pipeline?: {
117
+ stages: PipelineStage[]
118
+ stageMetrics: Record<string, PipelineStageMetrics>
119
+ stageTimings: (PipelineStageTiming | null)[]
120
+ filterBreakdowns?: Record<
121
+ string,
122
+ Record<string, Record<string, number>>
123
+ >
124
+ }
125
+ volumeChart?: {
126
+ data: Record<string, unknown>[]
127
+ dataKeys: Array<{ key: string; color: string }>
128
+ filterOptions?: Array<{ label: string; value: string }>
129
+ }
130
+ donutChart?: {
131
+ data: Array<{ name: string; value: number; color: string }>
132
+ centerLabel?: number
133
+ }
134
+ trendChart?: {
135
+ data: Record<string, unknown>[]
136
+ series: Array<{ dataKey: string; color: string }>
137
+ xAxisKey?: string
138
+ height?: number
139
+ toggleOptions?: string[]
140
+ }
141
+ barChart?: {
142
+ data: Record<string, unknown>[]
143
+ bars: Array<{
144
+ dataKey: string
145
+ color: string
146
+ name: string
147
+ icon?: LucideIcon
148
+ }>
149
+ }
150
+ barList?: {
151
+ data: Array<{ name: string; value: number }>
152
+ valueFormatter?: (v: number) => string
153
+ }
154
+ }
155
+ }
156
+
157
+ // ---------------------------------------------------------------------------
158
+ // Accounts
159
+ // ---------------------------------------------------------------------------
160
+
161
+ export interface AccountFilterTab {
162
+ label: string
163
+ count?: number
164
+ variant?: "default" | "attention" | "ghost"
165
+ }
166
+
167
+ export interface AccountsViewConfig {
168
+ filterTabs?: AccountFilterTab[]
169
+ rows?: DataRow[]
170
+ filterCategories?: DataTableFilterCategory[]
171
+ quickViews?: string[]
172
+ moreQuickViews?: string[]
173
+ quickViewFilters?: Record<string, (row: DataRow) => boolean>
174
+ iconMap?: { salesforce?: string }
175
+ entityUrlBuilder?: (row: DataRow) => string
176
+ onScoreFactorFeedback?: (account: string, scoreType: string, factorKey: string, type: "up" | "down" | null, detail?: string) => void
177
+ onScoreApproveFeedback?: (account: string, scoreType: string, reasons: string[], detail: string) => void
178
+ onScoreDismissFeedback?: (account: string, scoreType: string, reasons: string[], detail: string) => void
179
+ }
180
+
181
+ // ---------------------------------------------------------------------------
182
+ // Work Queue
183
+ // ---------------------------------------------------------------------------
184
+
185
+ export interface WorkQueueViewConfig {
186
+ // Extensible – ItemList manages its own data internally for now.
187
+ [key: string]: unknown
188
+ }
189
+
190
+ // ---------------------------------------------------------------------------
191
+ // Admin
192
+ // ---------------------------------------------------------------------------
193
+
194
+ export interface AdminTab {
195
+ id: string
196
+ label: string
197
+ icon?: React.ComponentType<{ className?: string }>
198
+ content: React.ReactNode
199
+ }
200
+
201
+ export interface AdminViewConfig {
202
+ /** View title displayed in the header. Defaults to "Admin". */
203
+ title?: string
204
+ /** Icon displayed next to the title. */
205
+ icon?: React.ComponentType<{ className?: string }>
206
+ tabs: AdminTab[]
207
+ /** Which tab is active initially. Defaults to first tab's id. */
208
+ defaultTab?: string
209
+ }
210
+
211
+ // ---------------------------------------------------------------------------
212
+ // Entity Panel
213
+ // ---------------------------------------------------------------------------
214
+
215
+ export interface EntityPanelSection {
216
+ type: "details" | "contacts" | "recentActivity" | "connectedApps" | "systemActivity"
217
+ props?: Record<string, unknown>
218
+ }
219
+
220
+ export interface EntityPanelConfig {
221
+ sections?: EntityPanelSection[]
222
+ icons?: Record<string, string>
223
+ }
224
+
225
+ // ---------------------------------------------------------------------------
226
+ // Top-level config
227
+ // ---------------------------------------------------------------------------
228
+
229
+ export interface PrototypeConfig {
230
+ brand?: PrototypeBrandConfig
231
+ sidebar: SidebarNavSection[]
232
+ views: {
233
+ inbox?: InboxViewConfig
234
+ insights?: InsightsViewConfig
235
+ accounts?: AccountsViewConfig
236
+ workQueue?: WorkQueueViewConfig
237
+ admin?: AdminViewConfig
238
+ }
239
+ defaultView: string
240
+ entityPanel?: EntityPanelConfig
241
+ /** Sidebar item IDs that trigger view navigation. Defaults to keys of `views`. */
242
+ navigableViews?: string[]
243
+ }