@schandlergarcia/sf-web-components 1.9.28 → 1.9.30

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 (998) hide show
  1. package/.a4drules/features/command-center-dashboard-rule.md +6 -10
  2. package/.a4drules/skills/command-center-builder/SKILL.md +29 -629
  3. package/.a4drules/skills/command-center-builder/charts-visualization.md +136 -0
  4. package/.a4drules/skills/command-center-builder/completion-checklist.md +87 -0
  5. package/.a4drules/skills/command-center-builder/components-styling.md +97 -0
  6. package/.a4drules/skills/command-center-builder/data-forms-ai.md +43 -0
  7. package/.a4drules/skills/command-center-builder/getting-started.md +127 -0
  8. package/.a4drules/skills/command-center-builder/page-layout.md +143 -0
  9. package/.a4drules/skills/command-center-guide/SKILL.md +217 -0
  10. package/.a4drules/skills/command-center-project/SKILL.md +4 -4
  11. package/.a4drules/skills/component-library/SKILL.md +27 -1000
  12. package/.a4drules/skills/component-library/card-components.md +253 -0
  13. package/.a4drules/skills/component-library/charts.md +64 -0
  14. package/.a4drules/skills/component-library/chat-data.md +184 -0
  15. package/.a4drules/skills/component-library/common-mistakes.md +25 -0
  16. package/.a4drules/skills/component-library/forms-filters.md +130 -0
  17. package/.a4drules/skills/component-library/hero-ui.md +211 -0
  18. package/.a4drules/skills/component-library/ui-primitives.md +92 -0
  19. package/.a4drules/skills/component-library/when-to-use.md +39 -0
  20. package/README.md +80 -507
  21. package/dist/components/library/cards/ActionList.d.ts +10 -10
  22. package/dist/components/library/cards/ActionList.js +4 -3
  23. package/dist/components/library/cards/ActionList.js.map +1 -1
  24. package/dist/components/library/cards/ActivityCard.d.ts +5 -18
  25. package/dist/components/library/cards/ActivityCard.js +4 -3
  26. package/dist/components/library/cards/ActivityCard.js.map +1 -1
  27. package/dist/components/library/cards/BaseCard.d.ts +24 -30
  28. package/dist/components/library/cards/BaseCard.js +3 -2
  29. package/dist/components/library/cards/BaseCard.js.map +1 -1
  30. package/dist/components/library/cards/CalloutCard.d.ts +9 -11
  31. package/dist/components/library/cards/CalloutCard.js +3 -2
  32. package/dist/components/library/cards/CalloutCard.js.map +1 -1
  33. package/dist/components/library/cards/ChartCard.d.ts +17 -29
  34. package/dist/components/library/cards/ChartCard.js +14 -13
  35. package/dist/components/library/cards/ChartCard.js.map +1 -1
  36. package/dist/components/library/cards/FeedPanel.d.ts +11 -12
  37. package/dist/components/library/cards/FeedPanel.js +4 -3
  38. package/dist/components/library/cards/FeedPanel.js.map +1 -1
  39. package/dist/components/library/cards/ListCard.d.ts +20 -33
  40. package/dist/components/library/cards/ListCard.js +38 -38
  41. package/dist/components/library/cards/ListCard.js.map +1 -1
  42. package/dist/components/library/cards/MetricCard.d.ts +17 -23
  43. package/dist/components/library/cards/MetricCard.js +11 -10
  44. package/dist/components/library/cards/MetricCard.js.map +1 -1
  45. package/dist/components/library/cards/MetricsStrip.d.ts +11 -11
  46. package/dist/components/library/cards/MetricsStrip.js +1 -1
  47. package/dist/components/library/cards/MetricsStrip.js.map +1 -1
  48. package/dist/components/library/cards/SectionCard.d.ts +12 -17
  49. package/dist/components/library/cards/SectionCard.js +19 -18
  50. package/dist/components/library/cards/SectionCard.js.map +1 -1
  51. package/dist/components/library/cards/SemanticMetricCard.d.ts +20 -15
  52. package/dist/components/library/cards/SemanticMetricCardWithLoading.d.ts +7 -8
  53. package/dist/components/library/cards/SemanticTableCard.d.ts +18 -13
  54. package/dist/components/library/cards/SemanticTableCardWithLoading.d.ts +7 -8
  55. package/dist/components/library/cards/StatusCard.d.ts +15 -29
  56. package/dist/components/library/cards/StatusCard.js +17 -16
  57. package/dist/components/library/cards/StatusCard.js.map +1 -1
  58. package/dist/components/library/cards/TableCard.d.ts +23 -40
  59. package/dist/components/library/cards/TableCard.js +56 -56
  60. package/dist/components/library/cards/TableCard.js.map +1 -1
  61. package/dist/components/library/cards/WidgetCard.d.ts +11 -19
  62. package/dist/components/library/cards/WidgetCard.js +4 -4
  63. package/dist/components/library/cards/WidgetCard.js.map +1 -1
  64. package/dist/components/library/charts/D3Chart.d.ts +16 -23
  65. package/dist/components/library/charts/D3Chart.js.map +1 -1
  66. package/dist/components/library/charts/D3ChartTemplates.d.ts +3 -33
  67. package/dist/components/library/charts/D3ChartTemplates.js +7 -7
  68. package/dist/components/library/charts/D3ChartTemplates.js.map +1 -1
  69. package/dist/components/library/charts/GeoMap.d.ts +18 -81
  70. package/dist/components/library/charts/GeoMap.js +26 -28
  71. package/dist/components/library/charts/GeoMap.js.map +1 -1
  72. package/dist/components/library/chat/ChatBar.d.ts +11 -14
  73. package/dist/components/library/chat/ChatBar.js +3 -2
  74. package/dist/components/library/chat/ChatBar.js.map +1 -1
  75. package/dist/components/library/chat/ChatInput.d.ts +8 -9
  76. package/dist/components/library/chat/ChatInput.js.map +1 -1
  77. package/dist/components/library/chat/ChatMessage.d.ts +4 -18
  78. package/dist/components/library/chat/ChatMessage.js.map +1 -1
  79. package/dist/components/library/chat/ChatMessageList.d.ts +8 -11
  80. package/dist/components/library/chat/ChatMessageList.js.map +1 -1
  81. package/dist/components/library/chat/ChatPanel.d.ts +12 -16
  82. package/dist/components/library/chat/ChatPanel.js +9 -8
  83. package/dist/components/library/chat/ChatPanel.js.map +1 -1
  84. package/dist/components/library/chat/ChatSuggestions.d.ts +4 -5
  85. package/dist/components/library/chat/ChatSuggestions.js +3 -2
  86. package/dist/components/library/chat/ChatSuggestions.js.map +1 -1
  87. package/dist/components/library/chat/ChatToolCall.d.ts +3 -11
  88. package/dist/components/library/chat/ChatToolCall.js.map +1 -1
  89. package/dist/components/library/chat/ChatTypingIndicator.d.ts +3 -4
  90. package/dist/components/library/chat/ChatTypingIndicator.js +3 -2
  91. package/dist/components/library/chat/ChatTypingIndicator.js.map +1 -1
  92. package/dist/components/library/chat/ChatWelcome.d.ts +7 -9
  93. package/dist/components/library/chat/ChatWelcome.js +7 -6
  94. package/dist/components/library/chat/ChatWelcome.js.map +1 -1
  95. package/dist/components/library/chat/index.d.ts +0 -10
  96. package/dist/components/library/chat/useChatState.d.ts +11 -37
  97. package/dist/components/library/chat/useChatState.js +46 -63
  98. package/dist/components/library/chat/useChatState.js.map +1 -1
  99. package/dist/components/library/data/DataModeProvider.d.ts +11 -15
  100. package/dist/components/library/data/DataModeProvider.js +9 -9
  101. package/dist/components/library/data/DataModeProvider.js.map +1 -1
  102. package/dist/components/library/data/DataModeToggle.d.ts +3 -4
  103. package/dist/components/library/data/DataModeToggle.js +5 -4
  104. package/dist/components/library/data/DataModeToggle.js.map +1 -1
  105. package/dist/components/library/data/chartDataProvider.d.ts +3 -41
  106. package/dist/components/library/data/filterUtils.d.ts +9 -38
  107. package/dist/components/library/data/filterUtils.js.map +1 -1
  108. package/dist/components/library/data/useDataSource.d.ts +4 -6
  109. package/dist/components/library/data/useDataSource.js.map +1 -1
  110. package/dist/components/library/data/usePageFilters.d.ts +5 -31
  111. package/dist/components/library/data/usePageFilters.js +2 -6
  112. package/dist/components/library/data/usePageFilters.js.map +1 -1
  113. package/dist/components/library/filters/FilterBar.d.ts +8 -18
  114. package/dist/components/library/filters/FilterBar.js +3 -2
  115. package/dist/components/library/filters/FilterBar.js.map +1 -1
  116. package/dist/components/library/filters/SearchFilter.d.ts +6 -7
  117. package/dist/components/library/filters/SearchFilter.js +3 -2
  118. package/dist/components/library/filters/SearchFilter.js.map +1 -1
  119. package/dist/components/library/filters/SelectFilter.d.ts +7 -13
  120. package/dist/components/library/filters/SelectFilter.js +3 -2
  121. package/dist/components/library/filters/SelectFilter.js.map +1 -1
  122. package/dist/components/library/filters/ToggleFilter.d.ts +5 -7
  123. package/dist/components/library/filters/ToggleFilter.js +3 -2
  124. package/dist/components/library/filters/ToggleFilter.js.map +1 -1
  125. package/dist/components/library/forms/FormField.d.ts +8 -10
  126. package/dist/components/library/forms/FormField.js +4 -3
  127. package/dist/components/library/forms/FormField.js.map +1 -1
  128. package/dist/components/library/forms/FormModal.d.ts +14 -23
  129. package/dist/components/library/forms/FormModal.js.map +1 -1
  130. package/dist/components/library/forms/FormRenderer.d.ts +9 -29
  131. package/dist/components/library/forms/FormRenderer.js +7 -6
  132. package/dist/components/library/forms/FormRenderer.js.map +1 -1
  133. package/dist/components/library/forms/FormSection.d.ts +8 -10
  134. package/dist/components/library/forms/FormSection.js +3 -2
  135. package/dist/components/library/forms/FormSection.js.map +1 -1
  136. package/dist/components/library/forms/index.d.ts +0 -5
  137. package/dist/components/library/forms/useFormState.d.ts +15 -23
  138. package/dist/components/library/forms/useFormState.js +47 -53
  139. package/dist/components/library/forms/useFormState.js.map +1 -1
  140. package/dist/components/library/heroui/Accordion.d.ts +5 -6
  141. package/dist/components/library/heroui/Accordion.js +8 -7
  142. package/dist/components/library/heroui/Accordion.js.map +1 -1
  143. package/dist/components/library/heroui/Alert.d.ts +5 -6
  144. package/dist/components/library/heroui/Alert.js +8 -7
  145. package/dist/components/library/heroui/Alert.js.map +1 -1
  146. package/dist/components/library/heroui/Badge.d.ts +5 -8
  147. package/dist/components/library/heroui/Badge.js +3 -2
  148. package/dist/components/library/heroui/Badge.js.map +1 -1
  149. package/dist/components/library/heroui/Breadcrumbs.d.ts +2 -5
  150. package/dist/components/library/heroui/Breadcrumbs.js +5 -4
  151. package/dist/components/library/heroui/Breadcrumbs.js.map +1 -1
  152. package/dist/components/library/heroui/Button.d.ts +26 -16
  153. package/dist/components/library/heroui/Button.js +22 -21
  154. package/dist/components/library/heroui/Button.js.map +1 -1
  155. package/dist/components/library/heroui/Card.d.ts +5 -8
  156. package/dist/components/library/heroui/Card.js +7 -6
  157. package/dist/components/library/heroui/Card.js.map +1 -1
  158. package/dist/components/library/heroui/Collapsible.d.ts +30 -19
  159. package/dist/components/library/heroui/Collapsible.js +17 -13
  160. package/dist/components/library/heroui/Collapsible.js.map +1 -1
  161. package/dist/components/library/heroui/DatePicker.d.ts +52 -24
  162. package/dist/components/library/heroui/DatePicker.js +6 -5
  163. package/dist/components/library/heroui/DatePicker.js.map +1 -1
  164. package/dist/components/library/heroui/Dialog.d.ts +32 -18
  165. package/dist/components/library/heroui/Dialog.js +7 -6
  166. package/dist/components/library/heroui/Dialog.js.map +1 -1
  167. package/dist/components/library/heroui/Drawer.d.ts +2 -6
  168. package/dist/components/library/heroui/Drawer.js +3 -2
  169. package/dist/components/library/heroui/Drawer.js.map +1 -1
  170. package/dist/components/library/heroui/Dropdown.d.ts +2 -6
  171. package/dist/components/library/heroui/Dropdown.js +3 -2
  172. package/dist/components/library/heroui/Dropdown.js.map +1 -1
  173. package/dist/components/library/heroui/Field.d.ts +38 -19
  174. package/dist/components/library/heroui/Field.js +10 -9
  175. package/dist/components/library/heroui/Field.js.map +1 -1
  176. package/dist/components/library/heroui/Input.d.ts +1 -5
  177. package/dist/components/library/heroui/Input.js +1 -0
  178. package/dist/components/library/heroui/Input.js.map +1 -1
  179. package/dist/components/library/heroui/Kbd.d.ts +5 -6
  180. package/dist/components/library/heroui/Kbd.js +5 -4
  181. package/dist/components/library/heroui/Kbd.js.map +1 -1
  182. package/dist/components/library/heroui/Meter.d.ts +5 -7
  183. package/dist/components/library/heroui/Meter.js +5 -4
  184. package/dist/components/library/heroui/Meter.js.map +1 -1
  185. package/dist/components/library/heroui/Modal.d.ts +2 -6
  186. package/dist/components/library/heroui/Modal.js +3 -2
  187. package/dist/components/library/heroui/Modal.js.map +1 -1
  188. package/dist/components/library/heroui/Pagination.d.ts +2 -6
  189. package/dist/components/library/heroui/Pagination.js +5 -4
  190. package/dist/components/library/heroui/Pagination.js.map +1 -1
  191. package/dist/components/library/heroui/Popover.d.ts +40 -23
  192. package/dist/components/library/heroui/Popover.js +20 -20
  193. package/dist/components/library/heroui/Popover.js.map +1 -1
  194. package/dist/components/library/heroui/ProgressBar.d.ts +5 -8
  195. package/dist/components/library/heroui/ProgressBar.js +1 -0
  196. package/dist/components/library/heroui/ProgressBar.js.map +1 -1
  197. package/dist/components/library/heroui/ProgressCircle.d.ts +5 -8
  198. package/dist/components/library/heroui/ProgressCircle.js +1 -0
  199. package/dist/components/library/heroui/ProgressCircle.js.map +1 -1
  200. package/dist/components/library/heroui/ScrollShadow.d.ts +5 -8
  201. package/dist/components/library/heroui/ScrollShadow.js +4 -3
  202. package/dist/components/library/heroui/ScrollShadow.js.map +1 -1
  203. package/dist/components/library/heroui/Select.d.ts +37 -31
  204. package/dist/components/library/heroui/Select.js +11 -8
  205. package/dist/components/library/heroui/Select.js.map +1 -1
  206. package/dist/components/library/heroui/Separator.d.ts +2 -6
  207. package/dist/components/library/heroui/Separator.js +5 -4
  208. package/dist/components/library/heroui/Separator.js.map +1 -1
  209. package/dist/components/library/heroui/Skeleton.d.ts +5 -8
  210. package/dist/components/library/heroui/Skeleton.js +5 -4
  211. package/dist/components/library/heroui/Skeleton.js.map +1 -1
  212. package/dist/components/library/heroui/Tabs.d.ts +5 -6
  213. package/dist/components/library/heroui/Tabs.js +8 -7
  214. package/dist/components/library/heroui/Tabs.js.map +1 -1
  215. package/dist/components/library/heroui/Toast.d.ts +3 -6
  216. package/dist/components/library/heroui/Toast.js +4 -3
  217. package/dist/components/library/heroui/Toast.js.map +1 -1
  218. package/dist/components/library/heroui/Toggle.d.ts +4 -5
  219. package/dist/components/library/heroui/Toggle.js +6 -5
  220. package/dist/components/library/heroui/Toggle.js.map +1 -1
  221. package/dist/components/library/heroui/Tooltip.d.ts +2 -6
  222. package/dist/components/library/heroui/Tooltip.js +3 -2
  223. package/dist/components/library/heroui/Tooltip.js.map +1 -1
  224. package/dist/components/library/index.d.ts +98 -129
  225. package/dist/components/library/index.js +57 -41
  226. package/dist/components/library/index.js.map +1 -1
  227. package/dist/components/library/layout/PageContainer.d.ts +4 -6
  228. package/dist/components/library/layout/PageContainer.js +5 -4
  229. package/dist/components/library/layout/PageContainer.js.map +1 -1
  230. package/dist/components/library/skeletons/CardSkeleton.d.ts +4 -5
  231. package/dist/components/library/skeletons/CardSkeleton.js +3 -2
  232. package/dist/components/library/skeletons/CardSkeleton.js.map +1 -1
  233. package/dist/components/library/theme/AppThemeProvider.d.ts +50 -13
  234. package/dist/components/library/theme/AppThemeProvider.js +4 -4
  235. package/dist/components/library/theme/AppThemeProvider.js.map +1 -1
  236. package/dist/components/library/theme/tokens.d.ts +44 -45
  237. package/dist/components/library/theme/tokens.js.map +1 -1
  238. package/dist/components/library/ui/Alert.d.ts +21 -0
  239. package/dist/components/library/ui/{alert.js → Alert.js} +14 -13
  240. package/dist/components/library/ui/Alert.js.map +1 -0
  241. package/dist/components/library/ui/Avatar.d.ts +10 -22
  242. package/dist/components/library/ui/Avatar.js +16 -39
  243. package/dist/components/library/ui/Avatar.js.map +1 -1
  244. package/dist/components/library/ui/BreadcrumbExtras.d.ts +2 -1
  245. package/dist/components/library/ui/Button.d.ts +10 -9
  246. package/dist/components/library/ui/{UIButton.js → Button.js} +31 -26
  247. package/dist/components/library/ui/Button.js.map +1 -0
  248. package/dist/components/library/ui/Card.d.ts +37 -23
  249. package/dist/components/library/ui/{card.js → Card.js} +26 -24
  250. package/dist/components/library/ui/Card.js.map +1 -0
  251. package/dist/components/library/ui/Checkbox.d.ts +4 -0
  252. package/dist/components/library/ui/{checkbox.js → Checkbox.js} +5 -4
  253. package/dist/components/library/ui/Checkbox.js.map +1 -0
  254. package/dist/components/library/ui/Chip.d.ts +7 -18
  255. package/dist/components/library/ui/Chip.js +12 -11
  256. package/dist/components/library/ui/Chip.js.map +1 -1
  257. package/dist/components/library/ui/{collapsible.d.ts → Collapsible.d.ts} +1 -1
  258. package/dist/components/library/ui/Container.d.ts +13 -12
  259. package/dist/components/library/ui/Container.js +17 -16
  260. package/dist/components/library/ui/Container.js.map +1 -1
  261. package/dist/components/library/ui/{dialog.d.ts → Dialog.d.ts} +1 -1
  262. package/dist/components/library/ui/EmptyState.d.ts +7 -34
  263. package/dist/components/library/ui/EmptyState.js +6 -5
  264. package/dist/components/library/ui/EmptyState.js.map +1 -1
  265. package/dist/components/library/ui/FieldGroup.d.ts +5 -4
  266. package/dist/components/library/ui/FieldGroup.js +5 -4
  267. package/dist/components/library/ui/FieldGroup.js.map +1 -1
  268. package/dist/components/library/ui/Input.d.ts +5 -3
  269. package/dist/components/library/ui/{UIInput.js → Input.js} +7 -6
  270. package/dist/components/library/ui/Input.js.map +1 -0
  271. package/dist/components/library/ui/Label.d.ts +7 -0
  272. package/dist/components/library/ui/Label.js +23 -0
  273. package/dist/components/library/ui/Label.js.map +1 -0
  274. package/dist/components/library/ui/PaginationExtras.d.ts +2 -1
  275. package/dist/components/library/ui/{popover.d.ts → Popover.d.ts} +1 -1
  276. package/dist/components/library/ui/{select.d.ts → Select.d.ts} +1 -1
  277. package/dist/components/library/ui/Spinner.d.ts +5 -21
  278. package/dist/components/library/ui/{spinner.js → Spinner.js} +17 -16
  279. package/dist/components/library/ui/Spinner.js.map +1 -0
  280. package/dist/components/library/ui/Text.d.ts +10 -24
  281. package/dist/components/library/ui/Text.js +23 -20
  282. package/dist/components/library/ui/Text.js.map +1 -1
  283. package/dist/components/library/ui/Toggle.d.ts +5 -0
  284. package/dist/components/library/ui/Toggle.js +47 -0
  285. package/dist/components/library/ui/Toggle.js.map +1 -0
  286. package/dist/components/workspace/ComponentRegistry.d.ts +140 -116
  287. package/dist/components/workspace/ComponentRegistry.js +46 -46
  288. package/dist/components/workspace/ComponentRegistry.js.map +1 -1
  289. package/dist/index.js +241 -229
  290. package/dist/index.js.map +1 -1
  291. package/dist/styles/base.css +0 -8
  292. package/package.json +14 -21
  293. package/scripts/reset-command-center.sh +181 -202
  294. package/scripts/validate-dashboard.sh +21 -30
  295. package/INSTALL.md +0 -200
  296. package/dist/components/library/ui/BreadcrumbExtras.js +0 -109
  297. package/dist/components/library/ui/BreadcrumbExtras.js.map +0 -1
  298. package/dist/components/library/ui/PaginationExtras.js +0 -138
  299. package/dist/components/library/ui/PaginationExtras.js.map +0 -1
  300. package/dist/components/library/ui/UIButton.d.ts +0 -22
  301. package/dist/components/library/ui/UIButton.js.map +0 -1
  302. package/dist/components/library/ui/UIInput.d.ts +0 -4
  303. package/dist/components/library/ui/UIInput.js.map +0 -1
  304. package/dist/components/library/ui/alert.d.ts +0 -23
  305. package/dist/components/library/ui/alert.js.map +0 -1
  306. package/dist/components/library/ui/badge.d.ts +0 -9
  307. package/dist/components/library/ui/badge.js +0 -43
  308. package/dist/components/library/ui/badge.js.map +0 -1
  309. package/dist/components/library/ui/breadcrumb.d.ts +0 -11
  310. package/dist/components/library/ui/breadcrumb.js +0 -103
  311. package/dist/components/library/ui/breadcrumb.js.map +0 -1
  312. package/dist/components/library/ui/button.js +0 -56
  313. package/dist/components/library/ui/button.js.map +0 -1
  314. package/dist/components/library/ui/calendar.d.ts +0 -10
  315. package/dist/components/library/ui/calendar.js +0 -187
  316. package/dist/components/library/ui/calendar.js.map +0 -1
  317. package/dist/components/library/ui/card.js.map +0 -1
  318. package/dist/components/library/ui/checkbox.d.ts +0 -4
  319. package/dist/components/library/ui/checkbox.js.map +0 -1
  320. package/dist/components/library/ui/collapsible.js +0 -29
  321. package/dist/components/library/ui/collapsible.js.map +0 -1
  322. package/dist/components/library/ui/datePicker.js +0 -25
  323. package/dist/components/library/ui/datePicker.js.map +0 -1
  324. package/dist/components/library/ui/dialog.js +0 -137
  325. package/dist/components/library/ui/dialog.js.map +0 -1
  326. package/dist/components/library/ui/field.js +0 -78
  327. package/dist/components/library/ui/field.js.map +0 -1
  328. package/dist/components/library/ui/input.js +0 -20
  329. package/dist/components/library/ui/input.js.map +0 -1
  330. package/dist/components/library/ui/label.d.ts +0 -5
  331. package/dist/components/library/ui/label.js +0 -22
  332. package/dist/components/library/ui/label.js.map +0 -1
  333. package/dist/components/library/ui/pagination.d.ts +0 -17
  334. package/dist/components/library/ui/pagination.js +0 -126
  335. package/dist/components/library/ui/pagination.js.map +0 -1
  336. package/dist/components/library/ui/popover.js +0 -35
  337. package/dist/components/library/ui/popover.js.map +0 -1
  338. package/dist/components/library/ui/select.js +0 -106
  339. package/dist/components/library/ui/select.js.map +0 -1
  340. package/dist/components/library/ui/separator.d.ts +0 -4
  341. package/dist/components/library/ui/separator.js +0 -27
  342. package/dist/components/library/ui/separator.js.map +0 -1
  343. package/dist/components/library/ui/shadcn-exports.d.ts +0 -22
  344. package/dist/components/library/ui/skeleton.d.ts +0 -3
  345. package/dist/components/library/ui/skeleton.js +0 -16
  346. package/dist/components/library/ui/skeleton.js.map +0 -1
  347. package/dist/components/library/ui/sonner.d.ts +0 -15
  348. package/dist/components/library/ui/sonner.js +0 -11
  349. package/dist/components/library/ui/sonner.js.map +0 -1
  350. package/dist/components/library/ui/spinner.js.map +0 -1
  351. package/dist/components/library/ui/table.d.ts +0 -10
  352. package/dist/components/library/ui/table.js +0 -115
  353. package/dist/components/library/ui/table.js.map +0 -1
  354. package/dist/components/library/ui/tabs.d.ts +0 -11
  355. package/dist/components/library/ui/tabs.js +0 -91
  356. package/dist/components/library/ui/tabs.js.map +0 -1
  357. package/dist/node_modules/@date-fns/tz/date/index.js +0 -62
  358. package/dist/node_modules/@date-fns/tz/date/index.js.map +0 -1
  359. package/dist/node_modules/@date-fns/tz/date/mini.js +0 -70
  360. package/dist/node_modules/@date-fns/tz/date/mini.js.map +0 -1
  361. package/dist/node_modules/@date-fns/tz/tzName/index.js +0 -12
  362. package/dist/node_modules/@date-fns/tz/tzName/index.js.map +0 -1
  363. package/dist/node_modules/@date-fns/tz/tzOffset/index.js +0 -23
  364. package/dist/node_modules/@date-fns/tz/tzOffset/index.js.map +0 -1
  365. package/dist/node_modules/@floating-ui/core/dist/floating-ui.core.js +0 -533
  366. package/dist/node_modules/@floating-ui/core/dist/floating-ui.core.js.map +0 -1
  367. package/dist/node_modules/@floating-ui/dom/dist/floating-ui.dom.js +0 -404
  368. package/dist/node_modules/@floating-ui/dom/dist/floating-ui.dom.js.map +0 -1
  369. package/dist/node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.js +0 -233
  370. package/dist/node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.js.map +0 -1
  371. package/dist/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.js +0 -137
  372. package/dist/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.js.map +0 -1
  373. package/dist/node_modules/@floating-ui/utils/dist/floating-ui.utils.js +0 -129
  374. package/dist/node_modules/@floating-ui/utils/dist/floating-ui.utils.js.map +0 -1
  375. package/dist/node_modules/@radix-ui/number/dist/index.js +0 -7
  376. package/dist/node_modules/@radix-ui/number/dist/index.js.map +0 -1
  377. package/dist/node_modules/@radix-ui/primitive/dist/index.js +0 -10
  378. package/dist/node_modules/@radix-ui/primitive/dist/index.js.map +0 -1
  379. package/dist/node_modules/@radix-ui/react-arrow/dist/index.js +0 -25
  380. package/dist/node_modules/@radix-ui/react-arrow/dist/index.js.map +0 -1
  381. package/dist/node_modules/@radix-ui/react-arrow/node_modules/@radix-ui/react-primitive/dist/index.js +0 -33
  382. package/dist/node_modules/@radix-ui/react-arrow/node_modules/@radix-ui/react-primitive/dist/index.js.map +0 -1
  383. package/dist/node_modules/@radix-ui/react-arrow/node_modules/@radix-ui/react-slot/dist/index.js +0 -50
  384. package/dist/node_modules/@radix-ui/react-arrow/node_modules/@radix-ui/react-slot/dist/index.js.map +0 -1
  385. package/dist/node_modules/@radix-ui/react-checkbox/dist/index.js +0 -252
  386. package/dist/node_modules/@radix-ui/react-checkbox/dist/index.js.map +0 -1
  387. package/dist/node_modules/@radix-ui/react-checkbox/node_modules/@radix-ui/react-context/dist/index.js +0 -54
  388. package/dist/node_modules/@radix-ui/react-checkbox/node_modules/@radix-ui/react-context/dist/index.js.map +0 -1
  389. package/dist/node_modules/@radix-ui/react-checkbox/node_modules/@radix-ui/react-primitive/dist/index.js +0 -33
  390. package/dist/node_modules/@radix-ui/react-checkbox/node_modules/@radix-ui/react-primitive/dist/index.js.map +0 -1
  391. package/dist/node_modules/@radix-ui/react-checkbox/node_modules/@radix-ui/react-slot/dist/index.js +0 -50
  392. package/dist/node_modules/@radix-ui/react-checkbox/node_modules/@radix-ui/react-slot/dist/index.js.map +0 -1
  393. package/dist/node_modules/@radix-ui/react-collapsible/dist/index.js +0 -120
  394. package/dist/node_modules/@radix-ui/react-collapsible/dist/index.js.map +0 -1
  395. package/dist/node_modules/@radix-ui/react-collapsible/node_modules/@radix-ui/react-context/dist/index.js +0 -54
  396. package/dist/node_modules/@radix-ui/react-collapsible/node_modules/@radix-ui/react-context/dist/index.js.map +0 -1
  397. package/dist/node_modules/@radix-ui/react-collapsible/node_modules/@radix-ui/react-primitive/dist/index.js +0 -33
  398. package/dist/node_modules/@radix-ui/react-collapsible/node_modules/@radix-ui/react-primitive/dist/index.js.map +0 -1
  399. package/dist/node_modules/@radix-ui/react-collapsible/node_modules/@radix-ui/react-slot/dist/index.js +0 -50
  400. package/dist/node_modules/@radix-ui/react-collapsible/node_modules/@radix-ui/react-slot/dist/index.js.map +0 -1
  401. package/dist/node_modules/@radix-ui/react-collection/dist/index.js +0 -51
  402. package/dist/node_modules/@radix-ui/react-collection/dist/index.js.map +0 -1
  403. package/dist/node_modules/@radix-ui/react-collection/node_modules/@radix-ui/react-context/dist/index.js +0 -54
  404. package/dist/node_modules/@radix-ui/react-collection/node_modules/@radix-ui/react-context/dist/index.js.map +0 -1
  405. package/dist/node_modules/@radix-ui/react-collection/node_modules/@radix-ui/react-slot/dist/index.js +0 -50
  406. package/dist/node_modules/@radix-ui/react-collection/node_modules/@radix-ui/react-slot/dist/index.js.map +0 -1
  407. package/dist/node_modules/@radix-ui/react-compose-refs/dist/index.js +0 -30
  408. package/dist/node_modules/@radix-ui/react-compose-refs/dist/index.js.map +0 -1
  409. package/dist/node_modules/@radix-ui/react-dialog/dist/index.js +0 -258
  410. package/dist/node_modules/@radix-ui/react-dialog/dist/index.js.map +0 -1
  411. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-context/dist/index.js +0 -69
  412. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-context/dist/index.js.map +0 -1
  413. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-primitive/dist/index.js +0 -33
  414. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-primitive/dist/index.js.map +0 -1
  415. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-slot/dist/index.js +0 -50
  416. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-slot/dist/index.js.map +0 -1
  417. package/dist/node_modules/@radix-ui/react-direction/dist/index.js +0 -11
  418. package/dist/node_modules/@radix-ui/react-direction/dist/index.js.map +0 -1
  419. package/dist/node_modules/@radix-ui/react-dismissable-layer/dist/index.js +0 -128
  420. package/dist/node_modules/@radix-ui/react-dismissable-layer/dist/index.js.map +0 -1
  421. package/dist/node_modules/@radix-ui/react-dismissable-layer/node_modules/@radix-ui/react-primitive/dist/index.js +0 -37
  422. package/dist/node_modules/@radix-ui/react-dismissable-layer/node_modules/@radix-ui/react-primitive/dist/index.js.map +0 -1
  423. package/dist/node_modules/@radix-ui/react-dismissable-layer/node_modules/@radix-ui/react-slot/dist/index.js +0 -50
  424. package/dist/node_modules/@radix-ui/react-dismissable-layer/node_modules/@radix-ui/react-slot/dist/index.js.map +0 -1
  425. package/dist/node_modules/@radix-ui/react-focus-guards/dist/index.js +0 -18
  426. package/dist/node_modules/@radix-ui/react-focus-guards/dist/index.js.map +0 -1
  427. package/dist/node_modules/@radix-ui/react-focus-scope/dist/index.js +0 -137
  428. package/dist/node_modules/@radix-ui/react-focus-scope/dist/index.js.map +0 -1
  429. package/dist/node_modules/@radix-ui/react-focus-scope/node_modules/@radix-ui/react-primitive/dist/index.js +0 -33
  430. package/dist/node_modules/@radix-ui/react-focus-scope/node_modules/@radix-ui/react-primitive/dist/index.js.map +0 -1
  431. package/dist/node_modules/@radix-ui/react-focus-scope/node_modules/@radix-ui/react-slot/dist/index.js +0 -50
  432. package/dist/node_modules/@radix-ui/react-focus-scope/node_modules/@radix-ui/react-slot/dist/index.js.map +0 -1
  433. package/dist/node_modules/@radix-ui/react-id/dist/index.js +0 -14
  434. package/dist/node_modules/@radix-ui/react-id/dist/index.js.map +0 -1
  435. package/dist/node_modules/@radix-ui/react-label/dist/index.js +0 -20
  436. package/dist/node_modules/@radix-ui/react-label/dist/index.js.map +0 -1
  437. package/dist/node_modules/@radix-ui/react-label/node_modules/@radix-ui/react-primitive/dist/index.js +0 -33
  438. package/dist/node_modules/@radix-ui/react-label/node_modules/@radix-ui/react-primitive/dist/index.js.map +0 -1
  439. package/dist/node_modules/@radix-ui/react-label/node_modules/@radix-ui/react-slot/dist/index.js +0 -50
  440. package/dist/node_modules/@radix-ui/react-label/node_modules/@radix-ui/react-slot/dist/index.js.map +0 -1
  441. package/dist/node_modules/@radix-ui/react-popover/dist/index.js +0 -240
  442. package/dist/node_modules/@radix-ui/react-popover/dist/index.js.map +0 -1
  443. package/dist/node_modules/@radix-ui/react-popover/node_modules/@radix-ui/react-context/dist/index.js +0 -54
  444. package/dist/node_modules/@radix-ui/react-popover/node_modules/@radix-ui/react-context/dist/index.js.map +0 -1
  445. package/dist/node_modules/@radix-ui/react-popover/node_modules/@radix-ui/react-primitive/dist/index.js +0 -33
  446. package/dist/node_modules/@radix-ui/react-popover/node_modules/@radix-ui/react-primitive/dist/index.js.map +0 -1
  447. package/dist/node_modules/@radix-ui/react-popover/node_modules/@radix-ui/react-slot/dist/index.js +0 -50
  448. package/dist/node_modules/@radix-ui/react-popover/node_modules/@radix-ui/react-slot/dist/index.js.map +0 -1
  449. package/dist/node_modules/@radix-ui/react-popper/dist/index.js +0 -220
  450. package/dist/node_modules/@radix-ui/react-popper/dist/index.js.map +0 -1
  451. package/dist/node_modules/@radix-ui/react-popper/node_modules/@radix-ui/react-context/dist/index.js +0 -54
  452. package/dist/node_modules/@radix-ui/react-popper/node_modules/@radix-ui/react-context/dist/index.js.map +0 -1
  453. package/dist/node_modules/@radix-ui/react-popper/node_modules/@radix-ui/react-primitive/dist/index.js +0 -33
  454. package/dist/node_modules/@radix-ui/react-popper/node_modules/@radix-ui/react-primitive/dist/index.js.map +0 -1
  455. package/dist/node_modules/@radix-ui/react-popper/node_modules/@radix-ui/react-slot/dist/index.js +0 -50
  456. package/dist/node_modules/@radix-ui/react-popper/node_modules/@radix-ui/react-slot/dist/index.js.map +0 -1
  457. package/dist/node_modules/@radix-ui/react-portal/dist/index.js +0 -16
  458. package/dist/node_modules/@radix-ui/react-portal/dist/index.js.map +0 -1
  459. package/dist/node_modules/@radix-ui/react-portal/node_modules/@radix-ui/react-primitive/dist/index.js +0 -33
  460. package/dist/node_modules/@radix-ui/react-portal/node_modules/@radix-ui/react-primitive/dist/index.js.map +0 -1
  461. package/dist/node_modules/@radix-ui/react-portal/node_modules/@radix-ui/react-slot/dist/index.js +0 -50
  462. package/dist/node_modules/@radix-ui/react-portal/node_modules/@radix-ui/react-slot/dist/index.js.map +0 -1
  463. package/dist/node_modules/@radix-ui/react-presence/dist/index.js +0 -71
  464. package/dist/node_modules/@radix-ui/react-presence/dist/index.js.map +0 -1
  465. package/dist/node_modules/@radix-ui/react-roving-focus/dist/index.js +0 -184
  466. package/dist/node_modules/@radix-ui/react-roving-focus/dist/index.js.map +0 -1
  467. package/dist/node_modules/@radix-ui/react-roving-focus/node_modules/@radix-ui/react-context/dist/index.js +0 -54
  468. package/dist/node_modules/@radix-ui/react-roving-focus/node_modules/@radix-ui/react-context/dist/index.js.map +0 -1
  469. package/dist/node_modules/@radix-ui/react-roving-focus/node_modules/@radix-ui/react-primitive/dist/index.js +0 -33
  470. package/dist/node_modules/@radix-ui/react-roving-focus/node_modules/@radix-ui/react-primitive/dist/index.js.map +0 -1
  471. package/dist/node_modules/@radix-ui/react-roving-focus/node_modules/@radix-ui/react-slot/dist/index.js +0 -50
  472. package/dist/node_modules/@radix-ui/react-roving-focus/node_modules/@radix-ui/react-slot/dist/index.js.map +0 -1
  473. package/dist/node_modules/@radix-ui/react-select/dist/index.js +0 -844
  474. package/dist/node_modules/@radix-ui/react-select/dist/index.js.map +0 -1
  475. package/dist/node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-context/dist/index.js +0 -54
  476. package/dist/node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-context/dist/index.js.map +0 -1
  477. package/dist/node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-primitive/dist/index.js +0 -33
  478. package/dist/node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-primitive/dist/index.js.map +0 -1
  479. package/dist/node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-slot/dist/index.js +0 -50
  480. package/dist/node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-slot/dist/index.js.map +0 -1
  481. package/dist/node_modules/@radix-ui/react-separator/dist/index.js +0 -25
  482. package/dist/node_modules/@radix-ui/react-separator/dist/index.js.map +0 -1
  483. package/dist/node_modules/@radix-ui/react-separator/node_modules/@radix-ui/react-primitive/dist/index.js +0 -33
  484. package/dist/node_modules/@radix-ui/react-separator/node_modules/@radix-ui/react-primitive/dist/index.js.map +0 -1
  485. package/dist/node_modules/@radix-ui/react-separator/node_modules/@radix-ui/react-slot/dist/index.js +0 -50
  486. package/dist/node_modules/@radix-ui/react-separator/node_modules/@radix-ui/react-slot/dist/index.js.map +0 -1
  487. package/dist/node_modules/@radix-ui/react-tabs/dist/index.js +0 -164
  488. package/dist/node_modules/@radix-ui/react-tabs/dist/index.js.map +0 -1
  489. package/dist/node_modules/@radix-ui/react-tabs/node_modules/@radix-ui/react-context/dist/index.js +0 -54
  490. package/dist/node_modules/@radix-ui/react-tabs/node_modules/@radix-ui/react-context/dist/index.js.map +0 -1
  491. package/dist/node_modules/@radix-ui/react-tabs/node_modules/@radix-ui/react-primitive/dist/index.js +0 -33
  492. package/dist/node_modules/@radix-ui/react-tabs/node_modules/@radix-ui/react-primitive/dist/index.js.map +0 -1
  493. package/dist/node_modules/@radix-ui/react-tabs/node_modules/@radix-ui/react-slot/dist/index.js +0 -50
  494. package/dist/node_modules/@radix-ui/react-tabs/node_modules/@radix-ui/react-slot/dist/index.js.map +0 -1
  495. package/dist/node_modules/@radix-ui/react-use-callback-ref/dist/index.js +0 -11
  496. package/dist/node_modules/@radix-ui/react-use-callback-ref/dist/index.js.map +0 -1
  497. package/dist/node_modules/@radix-ui/react-use-controllable-state/dist/index.js +0 -53
  498. package/dist/node_modules/@radix-ui/react-use-controllable-state/dist/index.js.map +0 -1
  499. package/dist/node_modules/@radix-ui/react-use-escape-keydown/dist/index.js +0 -15
  500. package/dist/node_modules/@radix-ui/react-use-escape-keydown/dist/index.js.map +0 -1
  501. package/dist/node_modules/@radix-ui/react-use-layout-effect/dist/index.js +0 -7
  502. package/dist/node_modules/@radix-ui/react-use-layout-effect/dist/index.js.map +0 -1
  503. package/dist/node_modules/@radix-ui/react-use-previous/dist/index.js +0 -9
  504. package/dist/node_modules/@radix-ui/react-use-previous/dist/index.js.map +0 -1
  505. package/dist/node_modules/@radix-ui/react-use-size/dist/index.js +0 -28
  506. package/dist/node_modules/@radix-ui/react-use-size/dist/index.js.map +0 -1
  507. package/dist/node_modules/@radix-ui/react-visually-hidden/dist/index.js +0 -31
  508. package/dist/node_modules/@radix-ui/react-visually-hidden/dist/index.js.map +0 -1
  509. package/dist/node_modules/@radix-ui/react-visually-hidden/node_modules/@radix-ui/react-primitive/dist/index.js +0 -33
  510. package/dist/node_modules/@radix-ui/react-visually-hidden/node_modules/@radix-ui/react-primitive/dist/index.js.map +0 -1
  511. package/dist/node_modules/@radix-ui/react-visually-hidden/node_modules/@radix-ui/react-slot/dist/index.js +0 -50
  512. package/dist/node_modules/@radix-ui/react-visually-hidden/node_modules/@radix-ui/react-slot/dist/index.js.map +0 -1
  513. package/dist/node_modules/aria-hidden/dist/es2015/index.js +0 -53
  514. package/dist/node_modules/aria-hidden/dist/es2015/index.js.map +0 -1
  515. package/dist/node_modules/class-variance-authority/dist/index.js +0 -36
  516. package/dist/node_modules/class-variance-authority/dist/index.js.map +0 -1
  517. package/dist/node_modules/date-fns/_lib/addLeadingZeros.js +0 -8
  518. package/dist/node_modules/date-fns/_lib/addLeadingZeros.js.map +0 -1
  519. package/dist/node_modules/date-fns/_lib/defaultOptions.js +0 -8
  520. package/dist/node_modules/date-fns/_lib/defaultOptions.js.map +0 -1
  521. package/dist/node_modules/date-fns/_lib/format/formatters.js +0 -549
  522. package/dist/node_modules/date-fns/_lib/format/formatters.js.map +0 -1
  523. package/dist/node_modules/date-fns/_lib/format/lightFormatters.js +0 -59
  524. package/dist/node_modules/date-fns/_lib/format/lightFormatters.js.map +0 -1
  525. package/dist/node_modules/date-fns/_lib/format/longFormatters.js +0 -50
  526. package/dist/node_modules/date-fns/_lib/format/longFormatters.js.map +0 -1
  527. package/dist/node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.js +0 -19
  528. package/dist/node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.js.map +0 -1
  529. package/dist/node_modules/date-fns/_lib/normalizeDates.js +0 -12
  530. package/dist/node_modules/date-fns/_lib/normalizeDates.js.map +0 -1
  531. package/dist/node_modules/date-fns/_lib/normalizeInterval.js +0 -9
  532. package/dist/node_modules/date-fns/_lib/normalizeInterval.js.map +0 -1
  533. package/dist/node_modules/date-fns/_lib/protectedTokens.js +0 -21
  534. package/dist/node_modules/date-fns/_lib/protectedTokens.js.map +0 -1
  535. package/dist/node_modules/date-fns/addDays.js +0 -10
  536. package/dist/node_modules/date-fns/addDays.js.map +0 -1
  537. package/dist/node_modules/date-fns/addMonths.js +0 -20
  538. package/dist/node_modules/date-fns/addMonths.js.map +0 -1
  539. package/dist/node_modules/date-fns/addWeeks.js +0 -8
  540. package/dist/node_modules/date-fns/addWeeks.js.map +0 -1
  541. package/dist/node_modules/date-fns/addYears.js +0 -8
  542. package/dist/node_modules/date-fns/addYears.js.map +0 -1
  543. package/dist/node_modules/date-fns/constants.js +0 -7
  544. package/dist/node_modules/date-fns/constants.js.map +0 -1
  545. package/dist/node_modules/date-fns/constructFrom.js +0 -8
  546. package/dist/node_modules/date-fns/constructFrom.js.map +0 -1
  547. package/dist/node_modules/date-fns/differenceInCalendarDays.js +0 -16
  548. package/dist/node_modules/date-fns/differenceInCalendarDays.js.map +0 -1
  549. package/dist/node_modules/date-fns/differenceInCalendarMonths.js +0 -13
  550. package/dist/node_modules/date-fns/differenceInCalendarMonths.js.map +0 -1
  551. package/dist/node_modules/date-fns/eachMonthOfInterval.js +0 -17
  552. package/dist/node_modules/date-fns/eachMonthOfInterval.js.map +0 -1
  553. package/dist/node_modules/date-fns/eachYearOfInterval.js +0 -17
  554. package/dist/node_modules/date-fns/eachYearOfInterval.js.map +0 -1
  555. package/dist/node_modules/date-fns/endOfISOWeek.js +0 -8
  556. package/dist/node_modules/date-fns/endOfISOWeek.js.map +0 -1
  557. package/dist/node_modules/date-fns/endOfMonth.js +0 -9
  558. package/dist/node_modules/date-fns/endOfMonth.js.map +0 -1
  559. package/dist/node_modules/date-fns/endOfWeek.js +0 -10
  560. package/dist/node_modules/date-fns/endOfWeek.js.map +0 -1
  561. package/dist/node_modules/date-fns/endOfYear.js +0 -9
  562. package/dist/node_modules/date-fns/endOfYear.js.map +0 -1
  563. package/dist/node_modules/date-fns/format.js +0 -58
  564. package/dist/node_modules/date-fns/format.js.map +0 -1
  565. package/dist/node_modules/date-fns/getDayOfYear.js +0 -11
  566. package/dist/node_modules/date-fns/getDayOfYear.js.map +0 -1
  567. package/dist/node_modules/date-fns/getDaysInMonth.js +0 -10
  568. package/dist/node_modules/date-fns/getDaysInMonth.js.map +0 -1
  569. package/dist/node_modules/date-fns/getISOWeek.js +0 -12
  570. package/dist/node_modules/date-fns/getISOWeek.js.map +0 -1
  571. package/dist/node_modules/date-fns/getISOWeekYear.js +0 -15
  572. package/dist/node_modules/date-fns/getISOWeekYear.js.map +0 -1
  573. package/dist/node_modules/date-fns/getMonth.js +0 -8
  574. package/dist/node_modules/date-fns/getMonth.js.map +0 -1
  575. package/dist/node_modules/date-fns/getWeek.js +0 -12
  576. package/dist/node_modules/date-fns/getWeek.js.map +0 -1
  577. package/dist/node_modules/date-fns/getWeekYear.js +0 -16
  578. package/dist/node_modules/date-fns/getWeekYear.js.map +0 -1
  579. package/dist/node_modules/date-fns/getYear.js +0 -8
  580. package/dist/node_modules/date-fns/getYear.js.map +0 -1
  581. package/dist/node_modules/date-fns/isAfter.js +0 -8
  582. package/dist/node_modules/date-fns/isAfter.js.map +0 -1
  583. package/dist/node_modules/date-fns/isBefore.js +0 -8
  584. package/dist/node_modules/date-fns/isBefore.js.map +0 -1
  585. package/dist/node_modules/date-fns/isDate.js +0 -7
  586. package/dist/node_modules/date-fns/isDate.js.map +0 -1
  587. package/dist/node_modules/date-fns/isSameDay.js +0 -14
  588. package/dist/node_modules/date-fns/isSameDay.js.map +0 -1
  589. package/dist/node_modules/date-fns/isSameMonth.js +0 -13
  590. package/dist/node_modules/date-fns/isSameMonth.js.map +0 -1
  591. package/dist/node_modules/date-fns/isSameYear.js +0 -13
  592. package/dist/node_modules/date-fns/isSameYear.js.map +0 -1
  593. package/dist/node_modules/date-fns/isValid.js +0 -9
  594. package/dist/node_modules/date-fns/isValid.js.map +0 -1
  595. package/dist/node_modules/date-fns/locale/_lib/buildFormatLongFn.js +0 -10
  596. package/dist/node_modules/date-fns/locale/_lib/buildFormatLongFn.js.map +0 -1
  597. package/dist/node_modules/date-fns/locale/_lib/buildLocalizeFn.js +0 -19
  598. package/dist/node_modules/date-fns/locale/_lib/buildLocalizeFn.js.map +0 -1
  599. package/dist/node_modules/date-fns/locale/_lib/buildMatchFn.js +0 -32
  600. package/dist/node_modules/date-fns/locale/_lib/buildMatchFn.js.map +0 -1
  601. package/dist/node_modules/date-fns/locale/_lib/buildMatchPatternFn.js +0 -16
  602. package/dist/node_modules/date-fns/locale/_lib/buildMatchPatternFn.js.map +0 -1
  603. package/dist/node_modules/date-fns/locale/en-US/_lib/formatDistance.js +0 -71
  604. package/dist/node_modules/date-fns/locale/en-US/_lib/formatDistance.js.map +0 -1
  605. package/dist/node_modules/date-fns/locale/en-US/_lib/formatLong.js +0 -34
  606. package/dist/node_modules/date-fns/locale/en-US/_lib/formatLong.js.map +0 -1
  607. package/dist/node_modules/date-fns/locale/en-US/_lib/formatRelative.js +0 -12
  608. package/dist/node_modules/date-fns/locale/en-US/_lib/formatRelative.js.map +0 -1
  609. package/dist/node_modules/date-fns/locale/en-US/_lib/localize.js +0 -156
  610. package/dist/node_modules/date-fns/locale/en-US/_lib/localize.js.map +0 -1
  611. package/dist/node_modules/date-fns/locale/en-US/_lib/match.js +0 -111
  612. package/dist/node_modules/date-fns/locale/en-US/_lib/match.js.map +0 -1
  613. package/dist/node_modules/date-fns/locale/en-US.js +0 -21
  614. package/dist/node_modules/date-fns/locale/en-US.js.map +0 -1
  615. package/dist/node_modules/date-fns/max.js +0 -14
  616. package/dist/node_modules/date-fns/max.js.map +0 -1
  617. package/dist/node_modules/date-fns/min.js +0 -14
  618. package/dist/node_modules/date-fns/min.js.map +0 -1
  619. package/dist/node_modules/date-fns/setMonth.js +0 -13
  620. package/dist/node_modules/date-fns/setMonth.js.map +0 -1
  621. package/dist/node_modules/date-fns/setYear.js +0 -10
  622. package/dist/node_modules/date-fns/setYear.js.map +0 -1
  623. package/dist/node_modules/date-fns/startOfDay.js +0 -9
  624. package/dist/node_modules/date-fns/startOfDay.js.map +0 -1
  625. package/dist/node_modules/date-fns/startOfISOWeek.js +0 -8
  626. package/dist/node_modules/date-fns/startOfISOWeek.js.map +0 -1
  627. package/dist/node_modules/date-fns/startOfISOWeekYear.js +0 -11
  628. package/dist/node_modules/date-fns/startOfISOWeekYear.js.map +0 -1
  629. package/dist/node_modules/date-fns/startOfMonth.js +0 -9
  630. package/dist/node_modules/date-fns/startOfMonth.js.map +0 -1
  631. package/dist/node_modules/date-fns/startOfWeek.js +0 -10
  632. package/dist/node_modules/date-fns/startOfWeek.js.map +0 -1
  633. package/dist/node_modules/date-fns/startOfWeekYear.js +0 -12
  634. package/dist/node_modules/date-fns/startOfWeekYear.js.map +0 -1
  635. package/dist/node_modules/date-fns/startOfYear.js +0 -9
  636. package/dist/node_modules/date-fns/startOfYear.js.map +0 -1
  637. package/dist/node_modules/date-fns/toDate.js +0 -8
  638. package/dist/node_modules/date-fns/toDate.js.map +0 -1
  639. package/dist/node_modules/get-nonce/dist/es2015/index.js +0 -8
  640. package/dist/node_modules/get-nonce/dist/es2015/index.js.map +0 -1
  641. package/dist/node_modules/radix-ui/node_modules/@radix-ui/react-slot/dist/index.js +0 -53
  642. package/dist/node_modules/radix-ui/node_modules/@radix-ui/react-slot/dist/index.js.map +0 -1
  643. package/dist/node_modules/react-day-picker/dist/esm/DayPicker.js +0 -235
  644. package/dist/node_modules/react-day-picker/dist/esm/DayPicker.js.map +0 -1
  645. package/dist/node_modules/react-day-picker/dist/esm/UI.js +0 -23
  646. package/dist/node_modules/react-day-picker/dist/esm/UI.js.map +0 -1
  647. package/dist/node_modules/react-day-picker/dist/esm/classes/CalendarDay.js +0 -20
  648. package/dist/node_modules/react-day-picker/dist/esm/classes/CalendarDay.js.map +0 -1
  649. package/dist/node_modules/react-day-picker/dist/esm/classes/CalendarMonth.js +0 -9
  650. package/dist/node_modules/react-day-picker/dist/esm/classes/CalendarMonth.js.map +0 -1
  651. package/dist/node_modules/react-day-picker/dist/esm/classes/CalendarWeek.js +0 -9
  652. package/dist/node_modules/react-day-picker/dist/esm/classes/CalendarWeek.js.map +0 -1
  653. package/dist/node_modules/react-day-picker/dist/esm/classes/DateLib.js +0 -149
  654. package/dist/node_modules/react-day-picker/dist/esm/classes/DateLib.js.map +0 -1
  655. package/dist/node_modules/react-day-picker/dist/esm/components/Button.js +0 -8
  656. package/dist/node_modules/react-day-picker/dist/esm/components/Button.js.map +0 -1
  657. package/dist/node_modules/react-day-picker/dist/esm/components/CaptionLabel.js +0 -8
  658. package/dist/node_modules/react-day-picker/dist/esm/components/CaptionLabel.js.map +0 -1
  659. package/dist/node_modules/react-day-picker/dist/esm/components/Chevron.js +0 -19
  660. package/dist/node_modules/react-day-picker/dist/esm/components/Chevron.js.map +0 -1
  661. package/dist/node_modules/react-day-picker/dist/esm/components/Day.js +0 -9
  662. package/dist/node_modules/react-day-picker/dist/esm/components/Day.js.map +0 -1
  663. package/dist/node_modules/react-day-picker/dist/esm/components/DayButton.js +0 -11
  664. package/dist/node_modules/react-day-picker/dist/esm/components/DayButton.js.map +0 -1
  665. package/dist/node_modules/react-day-picker/dist/esm/components/Dropdown.js +0 -20
  666. package/dist/node_modules/react-day-picker/dist/esm/components/Dropdown.js.map +0 -1
  667. package/dist/node_modules/react-day-picker/dist/esm/components/DropdownNav.js +0 -8
  668. package/dist/node_modules/react-day-picker/dist/esm/components/DropdownNav.js.map +0 -1
  669. package/dist/node_modules/react-day-picker/dist/esm/components/Footer.js +0 -8
  670. package/dist/node_modules/react-day-picker/dist/esm/components/Footer.js.map +0 -1
  671. package/dist/node_modules/react-day-picker/dist/esm/components/Month.js +0 -9
  672. package/dist/node_modules/react-day-picker/dist/esm/components/Month.js.map +0 -1
  673. package/dist/node_modules/react-day-picker/dist/esm/components/MonthCaption.js +0 -9
  674. package/dist/node_modules/react-day-picker/dist/esm/components/MonthCaption.js.map +0 -1
  675. package/dist/node_modules/react-day-picker/dist/esm/components/MonthGrid.js +0 -8
  676. package/dist/node_modules/react-day-picker/dist/esm/components/MonthGrid.js.map +0 -1
  677. package/dist/node_modules/react-day-picker/dist/esm/components/Months.js +0 -8
  678. package/dist/node_modules/react-day-picker/dist/esm/components/Months.js.map +0 -1
  679. package/dist/node_modules/react-day-picker/dist/esm/components/MonthsDropdown.js +0 -10
  680. package/dist/node_modules/react-day-picker/dist/esm/components/MonthsDropdown.js.map +0 -1
  681. package/dist/node_modules/react-day-picker/dist/esm/components/Nav.js +0 -28
  682. package/dist/node_modules/react-day-picker/dist/esm/components/Nav.js.map +0 -1
  683. package/dist/node_modules/react-day-picker/dist/esm/components/NextMonthButton.js +0 -10
  684. package/dist/node_modules/react-day-picker/dist/esm/components/NextMonthButton.js.map +0 -1
  685. package/dist/node_modules/react-day-picker/dist/esm/components/Option.js +0 -8
  686. package/dist/node_modules/react-day-picker/dist/esm/components/Option.js.map +0 -1
  687. package/dist/node_modules/react-day-picker/dist/esm/components/PreviousMonthButton.js +0 -10
  688. package/dist/node_modules/react-day-picker/dist/esm/components/PreviousMonthButton.js.map +0 -1
  689. package/dist/node_modules/react-day-picker/dist/esm/components/Root.js +0 -9
  690. package/dist/node_modules/react-day-picker/dist/esm/components/Root.js.map +0 -1
  691. package/dist/node_modules/react-day-picker/dist/esm/components/Select.js +0 -8
  692. package/dist/node_modules/react-day-picker/dist/esm/components/Select.js.map +0 -1
  693. package/dist/node_modules/react-day-picker/dist/esm/components/Week.js +0 -9
  694. package/dist/node_modules/react-day-picker/dist/esm/components/Week.js.map +0 -1
  695. package/dist/node_modules/react-day-picker/dist/esm/components/WeekNumber.js +0 -9
  696. package/dist/node_modules/react-day-picker/dist/esm/components/WeekNumber.js.map +0 -1
  697. package/dist/node_modules/react-day-picker/dist/esm/components/WeekNumberHeader.js +0 -8
  698. package/dist/node_modules/react-day-picker/dist/esm/components/WeekNumberHeader.js.map +0 -1
  699. package/dist/node_modules/react-day-picker/dist/esm/components/Weekday.js +0 -8
  700. package/dist/node_modules/react-day-picker/dist/esm/components/Weekday.js.map +0 -1
  701. package/dist/node_modules/react-day-picker/dist/esm/components/Weekdays.js +0 -12
  702. package/dist/node_modules/react-day-picker/dist/esm/components/Weekdays.js.map +0 -1
  703. package/dist/node_modules/react-day-picker/dist/esm/components/Weeks.js +0 -8
  704. package/dist/node_modules/react-day-picker/dist/esm/components/Weeks.js.map +0 -1
  705. package/dist/node_modules/react-day-picker/dist/esm/components/YearsDropdown.js +0 -10
  706. package/dist/node_modules/react-day-picker/dist/esm/components/YearsDropdown.js.map +0 -1
  707. package/dist/node_modules/react-day-picker/dist/esm/components/custom-components.js +0 -55
  708. package/dist/node_modules/react-day-picker/dist/esm/components/custom-components.js.map +0 -1
  709. package/dist/node_modules/react-day-picker/dist/esm/formatters/formatCaption.js +0 -10
  710. package/dist/node_modules/react-day-picker/dist/esm/formatters/formatCaption.js.map +0 -1
  711. package/dist/node_modules/react-day-picker/dist/esm/formatters/formatDay.js +0 -8
  712. package/dist/node_modules/react-day-picker/dist/esm/formatters/formatDay.js.map +0 -1
  713. package/dist/node_modules/react-day-picker/dist/esm/formatters/formatMonthDropdown.js +0 -8
  714. package/dist/node_modules/react-day-picker/dist/esm/formatters/formatMonthDropdown.js.map +0 -1
  715. package/dist/node_modules/react-day-picker/dist/esm/formatters/formatWeekNumber.js +0 -8
  716. package/dist/node_modules/react-day-picker/dist/esm/formatters/formatWeekNumber.js.map +0 -1
  717. package/dist/node_modules/react-day-picker/dist/esm/formatters/formatWeekNumberHeader.js +0 -7
  718. package/dist/node_modules/react-day-picker/dist/esm/formatters/formatWeekNumberHeader.js.map +0 -1
  719. package/dist/node_modules/react-day-picker/dist/esm/formatters/formatWeekdayName.js +0 -8
  720. package/dist/node_modules/react-day-picker/dist/esm/formatters/formatWeekdayName.js.map +0 -1
  721. package/dist/node_modules/react-day-picker/dist/esm/formatters/formatYearDropdown.js +0 -10
  722. package/dist/node_modules/react-day-picker/dist/esm/formatters/formatYearDropdown.js.map +0 -1
  723. package/dist/node_modules/react-day-picker/dist/esm/formatters/index.js +0 -19
  724. package/dist/node_modules/react-day-picker/dist/esm/formatters/index.js.map +0 -1
  725. package/dist/node_modules/react-day-picker/dist/esm/helpers/calculateFocusTarget.js +0 -20
  726. package/dist/node_modules/react-day-picker/dist/esm/helpers/calculateFocusTarget.js.map +0 -1
  727. package/dist/node_modules/react-day-picker/dist/esm/helpers/createGetModifiers.js +0 -43
  728. package/dist/node_modules/react-day-picker/dist/esm/helpers/createGetModifiers.js.map +0 -1
  729. package/dist/node_modules/react-day-picker/dist/esm/helpers/endOfBroadcastWeek.js +0 -10
  730. package/dist/node_modules/react-day-picker/dist/esm/helpers/endOfBroadcastWeek.js.map +0 -1
  731. package/dist/node_modules/react-day-picker/dist/esm/helpers/getBroadcastWeeksInMonth.js +0 -8
  732. package/dist/node_modules/react-day-picker/dist/esm/helpers/getBroadcastWeeksInMonth.js.map +0 -1
  733. package/dist/node_modules/react-day-picker/dist/esm/helpers/getClassNamesForModifiers.js +0 -8
  734. package/dist/node_modules/react-day-picker/dist/esm/helpers/getClassNamesForModifiers.js.map +0 -1
  735. package/dist/node_modules/react-day-picker/dist/esm/helpers/getComponents.js +0 -11
  736. package/dist/node_modules/react-day-picker/dist/esm/helpers/getComponents.js.map +0 -1
  737. package/dist/node_modules/react-day-picker/dist/esm/helpers/getDataAttributes.js +0 -17
  738. package/dist/node_modules/react-day-picker/dist/esm/helpers/getDataAttributes.js.map +0 -1
  739. package/dist/node_modules/react-day-picker/dist/esm/helpers/getDates.js +0 -20
  740. package/dist/node_modules/react-day-picker/dist/esm/helpers/getDates.js.map +0 -1
  741. package/dist/node_modules/react-day-picker/dist/esm/helpers/getDays.js +0 -11
  742. package/dist/node_modules/react-day-picker/dist/esm/helpers/getDays.js.map +0 -1
  743. package/dist/node_modules/react-day-picker/dist/esm/helpers/getDefaultClassNames.js +0 -17
  744. package/dist/node_modules/react-day-picker/dist/esm/helpers/getDefaultClassNames.js.map +0 -1
  745. package/dist/node_modules/react-day-picker/dist/esm/helpers/getDisplayMonths.js +0 -14
  746. package/dist/node_modules/react-day-picker/dist/esm/helpers/getDisplayMonths.js.map +0 -1
  747. package/dist/node_modules/react-day-picker/dist/esm/helpers/getFocusableDate.js +0 -16
  748. package/dist/node_modules/react-day-picker/dist/esm/helpers/getFocusableDate.js.map +0 -1
  749. package/dist/node_modules/react-day-picker/dist/esm/helpers/getFormatters.js +0 -11
  750. package/dist/node_modules/react-day-picker/dist/esm/helpers/getFormatters.js.map +0 -1
  751. package/dist/node_modules/react-day-picker/dist/esm/helpers/getInitialMonth.js +0 -14
  752. package/dist/node_modules/react-day-picker/dist/esm/helpers/getInitialMonth.js.map +0 -1
  753. package/dist/node_modules/react-day-picker/dist/esm/helpers/getLabels.js +0 -35
  754. package/dist/node_modules/react-day-picker/dist/esm/helpers/getLabels.js.map +0 -1
  755. package/dist/node_modules/react-day-picker/dist/esm/helpers/getMonthOptions.js +0 -14
  756. package/dist/node_modules/react-day-picker/dist/esm/helpers/getMonthOptions.js.map +0 -1
  757. package/dist/node_modules/react-day-picker/dist/esm/helpers/getMonths.js +0 -25
  758. package/dist/node_modules/react-day-picker/dist/esm/helpers/getMonths.js.map +0 -1
  759. package/dist/node_modules/react-day-picker/dist/esm/helpers/getNavMonth.js +0 -14
  760. package/dist/node_modules/react-day-picker/dist/esm/helpers/getNavMonth.js.map +0 -1
  761. package/dist/node_modules/react-day-picker/dist/esm/helpers/getNextFocus.js +0 -13
  762. package/dist/node_modules/react-day-picker/dist/esm/helpers/getNextFocus.js.map +0 -1
  763. package/dist/node_modules/react-day-picker/dist/esm/helpers/getNextMonth.js +0 -13
  764. package/dist/node_modules/react-day-picker/dist/esm/helpers/getNextMonth.js.map +0 -1
  765. package/dist/node_modules/react-day-picker/dist/esm/helpers/getPreviousMonth.js +0 -13
  766. package/dist/node_modules/react-day-picker/dist/esm/helpers/getPreviousMonth.js.map +0 -1
  767. package/dist/node_modules/react-day-picker/dist/esm/helpers/getStyleForModifiers.js +0 -14
  768. package/dist/node_modules/react-day-picker/dist/esm/helpers/getStyleForModifiers.js.map +0 -1
  769. package/dist/node_modules/react-day-picker/dist/esm/helpers/getWeekdays.js +0 -12
  770. package/dist/node_modules/react-day-picker/dist/esm/helpers/getWeekdays.js.map +0 -1
  771. package/dist/node_modules/react-day-picker/dist/esm/helpers/getWeeks.js +0 -8
  772. package/dist/node_modules/react-day-picker/dist/esm/helpers/getWeeks.js.map +0 -1
  773. package/dist/node_modules/react-day-picker/dist/esm/helpers/getYearOptions.js +0 -17
  774. package/dist/node_modules/react-day-picker/dist/esm/helpers/getYearOptions.js.map +0 -1
  775. package/dist/node_modules/react-day-picker/dist/esm/helpers/startOfBroadcastWeek.js +0 -8
  776. package/dist/node_modules/react-day-picker/dist/esm/helpers/startOfBroadcastWeek.js.map +0 -1
  777. package/dist/node_modules/react-day-picker/dist/esm/helpers/useControlledValue.js +0 -9
  778. package/dist/node_modules/react-day-picker/dist/esm/helpers/useControlledValue.js.map +0 -1
  779. package/dist/node_modules/react-day-picker/dist/esm/labels/index.js +0 -27
  780. package/dist/node_modules/react-day-picker/dist/esm/labels/index.js.map +0 -1
  781. package/dist/node_modules/react-day-picker/dist/esm/labels/labelDayButton.js +0 -11
  782. package/dist/node_modules/react-day-picker/dist/esm/labels/labelDayButton.js.map +0 -1
  783. package/dist/node_modules/react-day-picker/dist/esm/labels/labelGrid.js +0 -10
  784. package/dist/node_modules/react-day-picker/dist/esm/labels/labelGrid.js.map +0 -1
  785. package/dist/node_modules/react-day-picker/dist/esm/labels/labelGridcell.js +0 -9
  786. package/dist/node_modules/react-day-picker/dist/esm/labels/labelGridcell.js.map +0 -1
  787. package/dist/node_modules/react-day-picker/dist/esm/labels/labelMonthDropdown.js +0 -7
  788. package/dist/node_modules/react-day-picker/dist/esm/labels/labelMonthDropdown.js.map +0 -1
  789. package/dist/node_modules/react-day-picker/dist/esm/labels/labelNav.js +0 -7
  790. package/dist/node_modules/react-day-picker/dist/esm/labels/labelNav.js.map +0 -1
  791. package/dist/node_modules/react-day-picker/dist/esm/labels/labelNext.js +0 -8
  792. package/dist/node_modules/react-day-picker/dist/esm/labels/labelNext.js.map +0 -1
  793. package/dist/node_modules/react-day-picker/dist/esm/labels/labelPrevious.js +0 -7
  794. package/dist/node_modules/react-day-picker/dist/esm/labels/labelPrevious.js.map +0 -1
  795. package/dist/node_modules/react-day-picker/dist/esm/labels/labelWeekNumber.js +0 -7
  796. package/dist/node_modules/react-day-picker/dist/esm/labels/labelWeekNumber.js.map +0 -1
  797. package/dist/node_modules/react-day-picker/dist/esm/labels/labelWeekNumberHeader.js +0 -7
  798. package/dist/node_modules/react-day-picker/dist/esm/labels/labelWeekNumberHeader.js.map +0 -1
  799. package/dist/node_modules/react-day-picker/dist/esm/labels/labelWeekday.js +0 -8
  800. package/dist/node_modules/react-day-picker/dist/esm/labels/labelWeekday.js.map +0 -1
  801. package/dist/node_modules/react-day-picker/dist/esm/labels/labelYearDropdown.js +0 -7
  802. package/dist/node_modules/react-day-picker/dist/esm/labels/labelYearDropdown.js.map +0 -1
  803. package/dist/node_modules/react-day-picker/dist/esm/locale/en-US.js +0 -38
  804. package/dist/node_modules/react-day-picker/dist/esm/locale/en-US.js.map +0 -1
  805. package/dist/node_modules/react-day-picker/dist/esm/noonDateLib.js +0 -105
  806. package/dist/node_modules/react-day-picker/dist/esm/noonDateLib.js.map +0 -1
  807. package/dist/node_modules/react-day-picker/dist/esm/selection/useMulti.js +0 -22
  808. package/dist/node_modules/react-day-picker/dist/esm/selection/useMulti.js.map +0 -1
  809. package/dist/node_modules/react-day-picker/dist/esm/selection/useRange.js +0 -24
  810. package/dist/node_modules/react-day-picker/dist/esm/selection/useRange.js.map +0 -1
  811. package/dist/node_modules/react-day-picker/dist/esm/selection/useSingle.js +0 -16
  812. package/dist/node_modules/react-day-picker/dist/esm/selection/useSingle.js.map +0 -1
  813. package/dist/node_modules/react-day-picker/dist/esm/useAnimation.js +0 -57
  814. package/dist/node_modules/react-day-picker/dist/esm/useAnimation.js.map +0 -1
  815. package/dist/node_modules/react-day-picker/dist/esm/useCalendar.js +0 -76
  816. package/dist/node_modules/react-day-picker/dist/esm/useCalendar.js.map +0 -1
  817. package/dist/node_modules/react-day-picker/dist/esm/useDayPicker.js +0 -13
  818. package/dist/node_modules/react-day-picker/dist/esm/useDayPicker.js.map +0 -1
  819. package/dist/node_modules/react-day-picker/dist/esm/useFocus.js +0 -24
  820. package/dist/node_modules/react-day-picker/dist/esm/useFocus.js.map +0 -1
  821. package/dist/node_modules/react-day-picker/dist/esm/useSelection.js +0 -20
  822. package/dist/node_modules/react-day-picker/dist/esm/useSelection.js.map +0 -1
  823. package/dist/node_modules/react-day-picker/dist/esm/utils/addToRange.js +0 -33
  824. package/dist/node_modules/react-day-picker/dist/esm/utils/addToRange.js.map +0 -1
  825. package/dist/node_modules/react-day-picker/dist/esm/utils/convertMatchersToTimeZone.js +0 -27
  826. package/dist/node_modules/react-day-picker/dist/esm/utils/convertMatchersToTimeZone.js.map +0 -1
  827. package/dist/node_modules/react-day-picker/dist/esm/utils/dateMatchModifiers.js +0 -27
  828. package/dist/node_modules/react-day-picker/dist/esm/utils/dateMatchModifiers.js.map +0 -1
  829. package/dist/node_modules/react-day-picker/dist/esm/utils/rangeContainsDayOfWeek.js +0 -16
  830. package/dist/node_modules/react-day-picker/dist/esm/utils/rangeContainsDayOfWeek.js.map +0 -1
  831. package/dist/node_modules/react-day-picker/dist/esm/utils/rangeContainsModifiers.js +0 -29
  832. package/dist/node_modules/react-day-picker/dist/esm/utils/rangeContainsModifiers.js.map +0 -1
  833. package/dist/node_modules/react-day-picker/dist/esm/utils/rangeIncludesDate.js +0 -10
  834. package/dist/node_modules/react-day-picker/dist/esm/utils/rangeIncludesDate.js.map +0 -1
  835. package/dist/node_modules/react-day-picker/dist/esm/utils/rangeOverlaps.js +0 -9
  836. package/dist/node_modules/react-day-picker/dist/esm/utils/rangeOverlaps.js.map +0 -1
  837. package/dist/node_modules/react-day-picker/dist/esm/utils/toTimeZone.js +0 -9
  838. package/dist/node_modules/react-day-picker/dist/esm/utils/toTimeZone.js.map +0 -1
  839. package/dist/node_modules/react-day-picker/dist/esm/utils/typeguards.js +0 -27
  840. package/dist/node_modules/react-day-picker/dist/esm/utils/typeguards.js.map +0 -1
  841. package/dist/node_modules/react-remove-scroll/dist/es2015/Combination.js +0 -12
  842. package/dist/node_modules/react-remove-scroll/dist/es2015/Combination.js.map +0 -1
  843. package/dist/node_modules/react-remove-scroll/dist/es2015/SideEffect.js +0 -116
  844. package/dist/node_modules/react-remove-scroll/dist/es2015/SideEffect.js.map +0 -1
  845. package/dist/node_modules/react-remove-scroll/dist/es2015/UI.js +0 -32
  846. package/dist/node_modules/react-remove-scroll/dist/es2015/UI.js.map +0 -1
  847. package/dist/node_modules/react-remove-scroll/dist/es2015/aggresiveCapture.js +0 -17
  848. package/dist/node_modules/react-remove-scroll/dist/es2015/aggresiveCapture.js.map +0 -1
  849. package/dist/node_modules/react-remove-scroll/dist/es2015/handleScroll.js +0 -69
  850. package/dist/node_modules/react-remove-scroll/dist/es2015/handleScroll.js.map +0 -1
  851. package/dist/node_modules/react-remove-scroll/dist/es2015/medium.js +0 -6
  852. package/dist/node_modules/react-remove-scroll/dist/es2015/medium.js.map +0 -1
  853. package/dist/node_modules/react-remove-scroll/dist/es2015/sidecar.js +0 -8
  854. package/dist/node_modules/react-remove-scroll/dist/es2015/sidecar.js.map +0 -1
  855. package/dist/node_modules/react-remove-scroll-bar/dist/es2015/component.js +0 -72
  856. package/dist/node_modules/react-remove-scroll-bar/dist/es2015/component.js.map +0 -1
  857. package/dist/node_modules/react-remove-scroll-bar/dist/es2015/constants.js +0 -8
  858. package/dist/node_modules/react-remove-scroll-bar/dist/es2015/constants.js.map +0 -1
  859. package/dist/node_modules/react-remove-scroll-bar/dist/es2015/utils.js +0 -26
  860. package/dist/node_modules/react-remove-scroll-bar/dist/es2015/utils.js.map +0 -1
  861. package/dist/node_modules/react-style-singleton/dist/es2015/component.js +0 -12
  862. package/dist/node_modules/react-style-singleton/dist/es2015/component.js.map +0 -1
  863. package/dist/node_modules/react-style-singleton/dist/es2015/hook.js +0 -16
  864. package/dist/node_modules/react-style-singleton/dist/es2015/hook.js.map +0 -1
  865. package/dist/node_modules/react-style-singleton/dist/es2015/singleton.js +0 -31
  866. package/dist/node_modules/react-style-singleton/dist/es2015/singleton.js.map +0 -1
  867. package/dist/node_modules/sonner/dist/index.js +0 -265
  868. package/dist/node_modules/sonner/dist/index.js.map +0 -1
  869. package/dist/node_modules/tslib/tslib.es6.js +0 -28
  870. package/dist/node_modules/tslib/tslib.es6.js.map +0 -1
  871. package/dist/node_modules/use-callback-ref/dist/es2015/assignRef.js +0 -7
  872. package/dist/node_modules/use-callback-ref/dist/es2015/assignRef.js.map +0 -1
  873. package/dist/node_modules/use-callback-ref/dist/es2015/useMergeRef.js +0 -27
  874. package/dist/node_modules/use-callback-ref/dist/es2015/useMergeRef.js.map +0 -1
  875. package/dist/node_modules/use-callback-ref/dist/es2015/useRef.js +0 -26
  876. package/dist/node_modules/use-callback-ref/dist/es2015/useRef.js.map +0 -1
  877. package/dist/node_modules/use-sidecar/dist/es2015/exports.js +0 -19
  878. package/dist/node_modules/use-sidecar/dist/es2015/exports.js.map +0 -1
  879. package/dist/node_modules/use-sidecar/dist/es2015/medium.js +0 -68
  880. package/dist/node_modules/use-sidecar/dist/es2015/medium.js.map +0 -1
  881. package/dist/types/conversation.d.ts +0 -44
  882. package/scripts/convert-to-typescript.sh +0 -52
  883. package/scripts/postinstall.mjs +0 -368
  884. package/scripts/remove-local-components.mjs +0 -78
  885. package/src/components/library/cards/ActionList.tsx +0 -42
  886. package/src/components/library/cards/ActivityCard.tsx +0 -85
  887. package/src/components/library/cards/BaseCard.tsx +0 -136
  888. package/src/components/library/cards/CalloutCard.tsx +0 -39
  889. package/src/components/library/cards/ChartCard.tsx +0 -131
  890. package/src/components/library/cards/FeedPanel.tsx +0 -50
  891. package/src/components/library/cards/ListCard.tsx +0 -229
  892. package/src/components/library/cards/MetricCard.tsx +0 -128
  893. package/src/components/library/cards/MetricsStrip.tsx +0 -88
  894. package/src/components/library/cards/SectionCard.tsx +0 -102
  895. package/src/components/library/cards/SemanticMetricCard.tsx +0 -64
  896. package/src/components/library/cards/SemanticMetricCardWithLoading.tsx +0 -29
  897. package/src/components/library/cards/SemanticTableCard.tsx +0 -59
  898. package/src/components/library/cards/SemanticTableCardWithLoading.tsx +0 -26
  899. package/src/components/library/cards/StatusCard.tsx +0 -269
  900. package/src/components/library/cards/TableCard.tsx +0 -376
  901. package/src/components/library/cards/WidgetCard.tsx +0 -113
  902. package/src/components/library/charts/D3Chart.tsx +0 -129
  903. package/src/components/library/charts/D3ChartTemplates.tsx +0 -158
  904. package/src/components/library/charts/GeoMap.tsx +0 -382
  905. package/src/components/library/chat/ChatBar.tsx +0 -267
  906. package/src/components/library/chat/ChatInput.tsx +0 -91
  907. package/src/components/library/chat/ChatMessage.tsx +0 -191
  908. package/src/components/library/chat/ChatMessageList.tsx +0 -75
  909. package/src/components/library/chat/ChatPanel.tsx +0 -100
  910. package/src/components/library/chat/ChatSuggestions.tsx +0 -29
  911. package/src/components/library/chat/ChatToolCall.tsx +0 -110
  912. package/src/components/library/chat/ChatTypingIndicator.tsx +0 -26
  913. package/src/components/library/chat/ChatWelcome.tsx +0 -45
  914. package/src/components/library/chat/index.tsx +0 -26
  915. package/src/components/library/chat/useChatState.tsx +0 -182
  916. package/src/components/library/data/DataModeProvider.tsx +0 -84
  917. package/src/components/library/data/DataModeToggle.tsx +0 -39
  918. package/src/components/library/data/chartDataProvider.tsx +0 -105
  919. package/src/components/library/data/filterUtils.tsx +0 -187
  920. package/src/components/library/data/useDataSource.tsx +0 -40
  921. package/src/components/library/data/usePageFilters.tsx +0 -139
  922. package/src/components/library/filters/FilterBar.tsx +0 -105
  923. package/src/components/library/filters/SearchFilter.tsx +0 -42
  924. package/src/components/library/filters/SelectFilter.tsx +0 -62
  925. package/src/components/library/filters/ToggleFilter.tsx +0 -53
  926. package/src/components/library/filters/index.ts +0 -4
  927. package/src/components/library/forms/FormField.tsx +0 -337
  928. package/src/components/library/forms/FormModal.tsx +0 -202
  929. package/src/components/library/forms/FormRenderer.tsx +0 -68
  930. package/src/components/library/forms/FormSection.tsx +0 -75
  931. package/src/components/library/forms/index.tsx +0 -11
  932. package/src/components/library/forms/useFormState.tsx +0 -185
  933. package/src/components/library/heroui/Accordion.tsx +0 -31
  934. package/src/components/library/heroui/Alert.tsx +0 -13
  935. package/src/components/library/heroui/Badge.tsx +0 -14
  936. package/src/components/library/heroui/Breadcrumbs.tsx +0 -25
  937. package/src/components/library/heroui/Button.tsx +0 -76
  938. package/src/components/library/heroui/Card.tsx +0 -14
  939. package/src/components/library/heroui/Collapsible.tsx +0 -62
  940. package/src/components/library/heroui/DatePicker.tsx +0 -58
  941. package/src/components/library/heroui/Dialog.tsx +0 -43
  942. package/src/components/library/heroui/Drawer.tsx +0 -36
  943. package/src/components/library/heroui/Dropdown.tsx +0 -32
  944. package/src/components/library/heroui/Field.tsx +0 -68
  945. package/src/components/library/heroui/Input.tsx +0 -10
  946. package/src/components/library/heroui/Kbd.tsx +0 -11
  947. package/src/components/library/heroui/Meter.tsx +0 -13
  948. package/src/components/library/heroui/Modal.tsx +0 -35
  949. package/src/components/library/heroui/Pagination.tsx +0 -11
  950. package/src/components/library/heroui/Popover.tsx +0 -95
  951. package/src/components/library/heroui/ProgressBar.tsx +0 -14
  952. package/src/components/library/heroui/ProgressCircle.tsx +0 -14
  953. package/src/components/library/heroui/ScrollShadow.tsx +0 -14
  954. package/src/components/library/heroui/Select.tsx +0 -73
  955. package/src/components/library/heroui/Separator.tsx +0 -11
  956. package/src/components/library/heroui/Skeleton.tsx +0 -14
  957. package/src/components/library/heroui/Tabs.tsx +0 -31
  958. package/src/components/library/heroui/Toast.tsx +0 -28
  959. package/src/components/library/heroui/Toggle.tsx +0 -18
  960. package/src/components/library/heroui/Tooltip.tsx +0 -24
  961. package/src/components/library/index.ts +0 -147
  962. package/src/components/library/layout/PageContainer.tsx +0 -14
  963. package/src/components/library/skeletons/CardSkeleton.tsx +0 -31
  964. package/src/components/library/theme/AppThemeProvider.tsx +0 -80
  965. package/src/components/library/theme/tokens.tsx +0 -106
  966. package/src/components/library/ui/Alert.tsx +0 -90
  967. package/src/components/library/ui/Avatar.tsx +0 -68
  968. package/src/components/library/ui/BreadcrumbExtras.tsx +0 -119
  969. package/src/components/library/ui/Card.tsx +0 -131
  970. package/src/components/library/ui/Checkbox.tsx +0 -19
  971. package/src/components/library/ui/Chip.tsx +0 -42
  972. package/src/components/library/ui/Collapsible.tsx +0 -31
  973. package/src/components/library/ui/Container.tsx +0 -65
  974. package/src/components/library/ui/DatePicker.tsx +0 -34
  975. package/src/components/library/ui/Dialog.tsx +0 -141
  976. package/src/components/library/ui/EmptyState.tsx +0 -49
  977. package/src/components/library/ui/Field.tsx +0 -82
  978. package/src/components/library/ui/FieldGroup.tsx +0 -19
  979. package/src/components/library/ui/Label.tsx +0 -23
  980. package/src/components/library/ui/PaginationExtras.tsx +0 -143
  981. package/src/components/library/ui/Popover.tsx +0 -39
  982. package/src/components/library/ui/Select.tsx +0 -113
  983. package/src/components/library/ui/Spinner.tsx +0 -66
  984. package/src/components/library/ui/Text.tsx +0 -53
  985. package/src/components/library/ui/UIButton.tsx +0 -62
  986. package/src/components/library/ui/UIInput.tsx +0 -21
  987. package/src/components/workspace/ComponentRegistry.tsx +0 -402
  988. package/src/lib/index.ts +0 -1
  989. package/src/lib/utils.ts +0 -6
  990. package/src/templates/config/routes.tsx.template +0 -33
  991. package/src/templates/pages/BlankDashboard.tsx.template +0 -15
  992. package/src/templates/pages/Home.tsx.template +0 -58
  993. package/src/templates/pages/NotFound.tsx.template +0 -19
  994. package/src/templates/pages/Search.tsx.template +0 -13
  995. package/src/templates/workspace/CommandCenter.tsx.template +0 -15
  996. package/src/types/conversation.ts +0 -48
  997. /package/dist/components/library/ui/{datePicker.d.ts → DatePicker.d.ts} +0 -0
  998. /package/dist/components/library/ui/{field.d.ts → Field.d.ts} +0 -0
@@ -1,4 +1,4 @@
1
- import { jsxs as p, jsx as n } from "react/jsx-runtime";
1
+ import { jsxs as p, jsx as o } from "react/jsx-runtime";
2
2
  import { useRef as P, useState as ce, useMemo as w, useEffect as F, useCallback as le } from "react";
3
3
  import * as a from "d3";
4
4
  import { feature as se } from "topojson-client";
@@ -70,7 +70,7 @@ function he({
70
70
  className: B = "",
71
71
  children: N
72
72
  }) {
73
- const o = q[D] ?? q.dark, g = P(null), [d, J] = ce(a.zoomIdentity), b = P(null), { proj: l, pathGen: Y, graticulePath: K, spherePath: L, landPath: Q } = w(() => {
73
+ const n = q[D] ?? q.dark, g = P(null), [d, J] = ce(a.zoomIdentity), b = P(null), { proj: l, pathGen: Y, graticulePath: K, spherePath: L, landPath: Q } = w(() => {
74
74
  const e = fe(k, s, i), t = a.geoPath(e);
75
75
  return {
76
76
  proj: e,
@@ -83,9 +83,7 @@ function he({
83
83
  F(() => {
84
84
  if (!x || !g.current) return;
85
85
  const e = a.select(g.current), t = a.zoom().scaleExtent([S, M]).on("zoom", (r) => J(r.transform));
86
- return b.current = t, e.call(t), () => {
87
- e.on(".zoom", null);
88
- };
86
+ return b.current = t, e.call(t), () => e.on(".zoom", null);
89
87
  }, [x, S, M]);
90
88
  const C = P(!1);
91
89
  F(() => {
@@ -94,7 +92,7 @@ function he({
94
92
  if (!c || !u) return;
95
93
  const m = Math.min(c[0], u[0]), h = Math.min(c[1], u[1]), y = Math.max(c[0], u[0]), W = Math.max(c[1], u[1]), O = y - m, A = W - h;
96
94
  if (O < 1 || A < 1) return;
97
- const I = Math.min((s - r * 2) / O, (i - r * 2) / A), ee = (m + y) / 2, te = (h + W) / 2, re = s / 2 - ee * I, oe = i / 2 - te * I, ne = Math.max(S, Math.min(M, I)), ae = a.zoomIdentity.translate(re, oe).scale(ne);
95
+ const I = Math.min((s - r * 2) / O, (i - r * 2) / A), ee = (m + y) / 2, te = (h + W) / 2, re = s / 2 - ee * I, ne = i / 2 - te * I, oe = Math.max(S, Math.min(M, I)), ae = a.zoomIdentity.translate(re, ne).scale(oe);
98
96
  a.select(g.current).call(b.current.transform, ae), C.current = !0;
99
97
  }, [$, l, s, i, S, M]);
100
98
  const U = le(() => {
@@ -121,44 +119,44 @@ function he({
121
119
  t.active && e.add(t.id);
122
120
  }), e;
123
121
  }, [G]), Z = `translate(${d.x},${d.y}) scale(${d.k})`, f = 1 / d.k;
124
- return /* @__PURE__ */ p("div", { className: `relative overflow-hidden ${B}`, style: { background: o.bg }, children: [
122
+ return /* @__PURE__ */ p("div", { className: `relative overflow-hidden ${B}`, style: { background: n.bg }, children: [
125
123
  /* @__PURE__ */ p("svg", { ref: g, viewBox: `0 0 ${s} ${i}`, className: "h-full w-full", preserveAspectRatio: "xMidYMid slice", style: x ? { cursor: "grab" } : void 0, children: [
126
124
  /* @__PURE__ */ p("defs", { children: [
127
125
  /* @__PURE__ */ p("radialGradient", { id: "geo-bg", cx: "50%", cy: "50%", r: "55%", children: [
128
- /* @__PURE__ */ n("stop", { offset: "0%", stopColor: o.bgGradient[0] }),
129
- /* @__PURE__ */ n("stop", { offset: "100%", stopColor: o.bgGradient[1] })
126
+ /* @__PURE__ */ o("stop", { offset: "0%", stopColor: n.bgGradient[0] }),
127
+ /* @__PURE__ */ o("stop", { offset: "100%", stopColor: n.bgGradient[1] })
130
128
  ] }),
131
129
  /* @__PURE__ */ p("filter", { id: "geo-glow", x: "-50%", y: "-50%", width: "200%", height: "200%", children: [
132
- /* @__PURE__ */ n("feGaussianBlur", { in: "SourceGraphic", stdDeviation: "3", result: "b" }),
130
+ /* @__PURE__ */ o("feGaussianBlur", { in: "SourceGraphic", stdDeviation: "3", result: "b" }),
133
131
  /* @__PURE__ */ p("feMerge", { children: [
134
- /* @__PURE__ */ n("feMergeNode", { in: "b" }),
135
- /* @__PURE__ */ n("feMergeNode", { in: "SourceGraphic" })
132
+ /* @__PURE__ */ o("feMergeNode", { in: "b" }),
133
+ /* @__PURE__ */ o("feMergeNode", { in: "SourceGraphic" })
136
134
  ] })
137
135
  ] })
138
136
  ] }),
139
- /* @__PURE__ */ n("style", { children: `
137
+ /* @__PURE__ */ o("style", { children: `
140
138
  .geo-arc{stroke-dasharray:8,6;animation:geo-flow 1.5s linear infinite}
141
139
  @keyframes geo-flow{to{stroke-dashoffset:-14}}
142
140
  .geo-dot{animation:geo-pulse 2s ease-in-out infinite}
143
141
  @keyframes geo-pulse{0%,100%{opacity:1}50%{opacity:.5}}
144
142
  ` }),
145
- /* @__PURE__ */ n("rect", { width: s, height: i, fill: "url(#geo-bg)" }),
143
+ /* @__PURE__ */ o("rect", { width: s, height: i, fill: "url(#geo-bg)" }),
146
144
  /* @__PURE__ */ p("g", { transform: Z, children: [
147
- /* @__PURE__ */ n("path", { d: L ?? void 0, fill: "none", stroke: o.sphere, strokeWidth: 0.8 * f }),
148
- /* @__PURE__ */ n("path", { d: Q ?? void 0, fill: o.land, stroke: o.landStroke, strokeWidth: 0.4 * f }),
149
- /* @__PURE__ */ n("path", { d: K ?? void 0, fill: "none", stroke: o.graticule, strokeWidth: 0.3 * f, opacity: o.graticuleOpacity }),
145
+ /* @__PURE__ */ o("path", { d: L, fill: "none", stroke: n.sphere, strokeWidth: 0.8 * f }),
146
+ /* @__PURE__ */ o("path", { d: Q, fill: n.land, stroke: n.landStroke, strokeWidth: 0.4 * f }),
147
+ /* @__PURE__ */ o("path", { d: K, fill: "none", stroke: n.graticule, strokeWidth: 0.3 * f, opacity: n.graticuleOpacity }),
150
148
  T.map((e) => {
151
149
  const t = l(e.center);
152
150
  if (!t) return null;
153
151
  const r = l([e.center[0] + (e.radius ?? 5), e.center[1]]), c = r ? Math.abs(r[0] - t[0]) : 30;
154
- return /* @__PURE__ */ n(
152
+ return /* @__PURE__ */ o(
155
153
  "circle",
156
154
  {
157
155
  cx: t[0],
158
156
  cy: t[1],
159
157
  r: c,
160
- fill: e.fill ?? o.overlayFill,
161
- stroke: e.stroke ?? o.overlayStroke,
158
+ fill: e.fill ?? n.overlayFill,
159
+ stroke: e.stroke ?? n.overlayStroke,
162
160
  strokeWidth: 1 * f,
163
161
  strokeDasharray: "5,5",
164
162
  className: "animate-pulse"
@@ -169,12 +167,12 @@ function he({
169
167
  R.map((e) => {
170
168
  if (!e._path) return null;
171
169
  const t = v === e.id, r = e.danger;
172
- return /* @__PURE__ */ n(
170
+ return /* @__PURE__ */ o(
173
171
  "path",
174
172
  {
175
173
  d: e._path,
176
174
  fill: "none",
177
- stroke: r ? o.arcDanger : t ? o.arcHighlight : e.color ?? o.arc,
175
+ stroke: r ? n.arcDanger : t ? n.arcHighlight : e.color ?? n.arc,
178
176
  strokeWidth: (t ? 3 : 2) * f,
179
177
  opacity: v != null && !t ? 0.15 : r ? 0.85 : 0.65,
180
178
  className: "geo-arc cursor-pointer",
@@ -188,8 +186,8 @@ function he({
188
186
  if (!t) return null;
189
187
  const r = e.active ?? X.has(e.id);
190
188
  return /* @__PURE__ */ p("g", { className: z ? "cursor-pointer" : "", onClick: () => z?.(e), children: [
191
- /* @__PURE__ */ n("circle", { cx: t[0], cy: t[1], r: (r ? 3 : 2) * f, fill: r ? o.markerActive : o.markerInactive }),
192
- e.label !== !1 && /* @__PURE__ */ n("text", { x: t[0] + 6 * f, y: t[1] + 4 * f, fontSize: 8 * f, fill: r ? o.label : o.labelInactive, fontFamily: "sans-serif", fontWeight: 600, children: e.label ?? e.id })
189
+ /* @__PURE__ */ o("circle", { cx: t[0], cy: t[1], r: (r ? 3 : 2) * f, fill: r ? n.markerActive : n.markerInactive }),
190
+ e.label !== !1 && /* @__PURE__ */ o("text", { x: t[0] + 6 * f, y: t[1] + 4 * f, fontSize: 8 * f, fill: r ? n.label : n.labelInactive, fontFamily: "sans-serif", fontWeight: 600, children: e.label ?? e.id })
193
191
  ] }, e.id);
194
192
  }),
195
193
  R.map((e) => {
@@ -197,13 +195,13 @@ function he({
197
195
  const t = a.geoInterpolate(e.from, e.to), r = l(t(Math.min(e.progress, 0.99)));
198
196
  if (!r) return null;
199
197
  const c = v === e.id;
200
- return /* @__PURE__ */ n(
198
+ return /* @__PURE__ */ o(
201
199
  "circle",
202
200
  {
203
201
  cx: r[0],
204
202
  cy: r[1],
205
203
  r: (c ? 6 : 4.5) * f,
206
- fill: e.danger ? o.dotDanger : e.dotColor ?? o.dot,
204
+ fill: e.danger ? n.dotDanger : e.dotColor ?? n.dot,
207
205
  filter: "url(#geo-glow)",
208
206
  className: "geo-dot cursor-pointer",
209
207
  opacity: v != null && !c ? 0.3 : 1,
@@ -212,10 +210,10 @@ function he({
212
210
  `dot-${e.id}`
213
211
  );
214
212
  }),
215
- typeof N == "function" ? N({ proj: l, pathGen: Y, theme: o, width: s, height: i, transform: d }) : N
213
+ typeof N == "function" ? N({ proj: l, pathGen: Y, theme: n, width: s, height: i, transform: d }) : N
216
214
  ] })
217
215
  ] }),
218
- x && V && /* @__PURE__ */ n(
216
+ x && V && /* @__PURE__ */ o(
219
217
  "button",
220
218
  {
221
219
  onClick: U,
@@ -1 +1 @@
1
- {"version":3,"file":"GeoMap.js","sources":["../../../../src/components/library/charts/GeoMap.tsx"],"sourcesContent":["import React, { useMemo, useRef, useEffect, useState, useCallback } from \"react\";\nimport * as d3 from \"d3\";\nimport { feature } from \"topojson-client\";\nimport type { Topology, GeometryCollection } from \"topojson-specification\";\nimport world from \"world-atlas/land-110m.json\";\n\nconst land = feature(world as unknown as Topology<{ land: GeometryCollection }>, (world.objects.land as unknown) as GeometryCollection);\n\ntype ProjectionType = \"naturalEarth\" | \"mercator\" | \"equirectangular\";\n\nconst PROJECTIONS = {\n naturalEarth: d3.geoNaturalEarth1,\n mercator: d3.geoMercator,\n equirectangular: d3.geoEquirectangular,\n};\n\ninterface Theme {\n bg: string;\n bgGradient: [string, string];\n land: string;\n landStroke: string;\n sphere: string;\n graticule: string;\n graticuleOpacity: number;\n markerActive: string;\n markerInactive: string;\n label: string;\n labelInactive: string;\n arc: string;\n arcHighlight: string;\n arcDanger: string;\n dot: string;\n dotDanger: string;\n overlayFill: string;\n overlayStroke: string;\n}\n\ntype ThemeName = \"dark\" | \"light\";\n\nconst THEMES: Record<ThemeName, Theme> = {\n dark: {\n bg: \"#050b15\",\n bgGradient: [\"#0a1628\", \"#050b15\"],\n land: \"#1a2d4a\",\n landStroke: \"#2a4060\",\n sphere: \"#1e3a5f\",\n graticule: \"#162a45\",\n graticuleOpacity: 0.35,\n markerActive: \"#cbd5e1\",\n markerInactive: \"#64748b\",\n label: \"#cbd5e1\",\n labelInactive: \"#64748b\",\n arc: \"#818cf8\",\n arcHighlight: \"#c4b5fd\",\n arcDanger: \"#f87171\",\n dot: \"#a5b4fc\",\n dotDanger: \"#f87171\",\n overlayFill: \"rgba(248,113,113,0.10)\",\n overlayStroke: \"rgba(248,113,113,0.30)\",\n },\n light: {\n bg: \"#f8fafc\",\n bgGradient: [\"#f8fafc\", \"#f1f5f9\"],\n land: \"#e2e8f0\",\n landStroke: \"#cbd5e1\",\n sphere: \"#cbd5e1\",\n graticule: \"#e2e8f0\",\n graticuleOpacity: 0.6,\n markerActive: \"#334155\",\n markerInactive: \"#94a3b8\",\n label: \"#334155\",\n labelInactive: \"#94a3b8\",\n arc: \"#6366f1\",\n arcHighlight: \"#4f46e5\",\n arcDanger: \"#ef4444\",\n dot: \"#6366f1\",\n dotDanger: \"#ef4444\",\n overlayFill: \"rgba(239,68,68,0.08)\",\n overlayStroke: \"rgba(239,68,68,0.3)\",\n },\n};\n\nfunction buildProjection(type: ProjectionType, width: number, height: number): d3.GeoProjection {\n const factory = PROJECTIONS[type] ?? PROJECTIONS.naturalEarth;\n return factory().fitSize([width, height], { type: \"Sphere\" });\n}\n\nexport interface Marker {\n id: string;\n lon: number;\n lat: number;\n label?: string | false;\n active?: boolean;\n}\n\nexport interface Arc {\n id: string;\n from: [number, number];\n to: [number, number];\n danger?: boolean;\n color?: string;\n dotColor?: string;\n progress?: number;\n _path?: string | null;\n}\n\nexport interface Overlay {\n id: string;\n center: [number, number];\n radius?: number;\n fill?: string;\n stroke?: string;\n}\n\nexport interface InitialBounds {\n sw: [number, number];\n ne: [number, number];\n padding?: number;\n}\n\ninterface ChildrenFunctionProps {\n proj: d3.GeoProjection;\n pathGen: d3.GeoPath;\n theme: Theme;\n width: number;\n height: number;\n transform: d3.ZoomTransform;\n}\n\nexport interface GeoMapProps {\n width?: number;\n height?: number;\n projection?: ProjectionType;\n theme?: ThemeName;\n markers?: Marker[];\n arcs?: Arc[];\n overlays?: Overlay[];\n selectedId?: string | null;\n onArcClick?: (arc: Arc) => void;\n onMarkerClick?: (marker: Marker) => void;\n zoomable?: boolean;\n minZoom?: number;\n maxZoom?: number;\n initialBounds?: InitialBounds | null;\n className?: string;\n children?: React.ReactNode | ((props: ChildrenFunctionProps) => React.ReactNode);\n}\n\nexport default function GeoMap({\n width = 960,\n height = 480,\n projection: projType = \"naturalEarth\",\n theme = \"dark\",\n markers = [],\n arcs = [],\n overlays = [],\n selectedId = null,\n onArcClick,\n onMarkerClick,\n zoomable = true,\n minZoom = 1,\n maxZoom = 8,\n initialBounds = null,\n className = \"\",\n children,\n}: GeoMapProps): React.ReactElement {\n const t = THEMES[theme] ?? THEMES.dark;\n const svgRef = useRef<SVGSVGElement>(null);\n const [transform, setTransform] = useState<d3.ZoomTransform>(d3.zoomIdentity);\n const zoomRef = useRef<d3.ZoomBehavior<SVGSVGElement, unknown> | null>(null);\n\n const { proj, pathGen, graticulePath, spherePath, landPath } = useMemo(() => {\n const proj = buildProjection(projType, width, height);\n const pathGen = d3.geoPath(proj);\n return {\n proj,\n pathGen,\n graticulePath: pathGen(d3.geoGraticule10()),\n spherePath: pathGen({ type: \"Sphere\" }),\n landPath: pathGen(land),\n };\n }, [projType, width, height]);\n\n // D3 zoom behavior\n useEffect(() => {\n if (!zoomable || !svgRef.current) return;\n const svg = d3.select(svgRef.current);\n const zoom = d3.zoom<SVGSVGElement, unknown>()\n .scaleExtent([minZoom, maxZoom])\n .on(\"zoom\", (e: d3.D3ZoomEvent<SVGSVGElement, unknown>) => setTransform(e.transform));\n zoomRef.current = zoom;\n svg.call(zoom);\n return () => {\n svg.on(\".zoom\", null);\n };\n }, [zoomable, minZoom, maxZoom]);\n\n // Apply initial zoom to fit bounds (markers/region) on mount\n const initialBoundsApplied = useRef(false);\n useEffect(() => {\n if (!initialBounds || initialBoundsApplied.current) return;\n if (!svgRef.current || !zoomRef.current || !proj) return;\n const { sw, ne, padding = 40 } = initialBounds; // sw=[lonMin,latMin], ne=[lonMax,latMax]\n const p0 = proj(sw);\n const p1 = proj(ne);\n if (!p0 || !p1) return;\n const bx0 = Math.min(p0[0], p1[0]);\n const by0 = Math.min(p0[1], p1[1]);\n const bx1 = Math.max(p0[0], p1[0]);\n const by1 = Math.max(p0[1], p1[1]);\n const bw = bx1 - bx0;\n const bh = by1 - by0;\n if (bw < 1 || bh < 1) return;\n const scale = Math.min((width - padding * 2) / bw, (height - padding * 2) / bh);\n const cx = (bx0 + bx1) / 2;\n const cy = (by0 + by1) / 2;\n const tx = width / 2 - cx * scale;\n const ty = height / 2 - cy * scale;\n const clampedScale = Math.max(minZoom, Math.min(maxZoom, scale));\n const t = d3.zoomIdentity.translate(tx, ty).scale(clampedScale);\n d3.select(svgRef.current).call(zoomRef.current.transform, t);\n initialBoundsApplied.current = true;\n }, [initialBounds, proj, width, height, minZoom, maxZoom]);\n\n const resetZoom = useCallback(() => {\n if (!svgRef.current || !zoomRef.current) return;\n d3.select(svgRef.current)\n .transition()\n .duration(400)\n .call(zoomRef.current.transform, d3.zoomIdentity);\n }, []);\n\n const isZoomed = transform.k !== 1 || transform.x !== 0 || transform.y !== 0;\n\n const arcPaths = useMemo(() => {\n const cache: Record<string, string | null> = {};\n arcs.forEach(a => {\n const key = `${a.from[0]},${a.from[1]}-${a.to[0]},${a.to[1]}`;\n if (cache[key]) { a._path = cache[key]; return; }\n const interp = d3.geoInterpolate(a.from, a.to);\n const pts: [number, number][] = [];\n for (let i = 0; i <= 1; i += 0.02) {\n const p = proj(interp(i));\n if (p) pts.push(p as [number, number]);\n }\n const path = pts.length > 1 ? d3.line()(pts) : null;\n cache[key] = path;\n a._path = path;\n });\n return arcs;\n }, [arcs, proj]);\n\n const activeMarkerIds = useMemo(() => {\n const s = new Set<string>();\n markers.forEach(m => { if (m.active) s.add(m.id); });\n return s;\n }, [markers]);\n\n const txStr = `translate(${transform.x},${transform.y}) scale(${transform.k})`;\n const invScale = 1 / transform.k;\n\n return (\n <div className={`relative overflow-hidden ${className}`} style={{ background: t.bg }}>\n <svg ref={svgRef} viewBox={`0 0 ${width} ${height}`} className=\"h-full w-full\" preserveAspectRatio=\"xMidYMid slice\" style={zoomable ? { cursor: \"grab\" } : undefined}>\n <defs>\n <radialGradient id=\"geo-bg\" cx=\"50%\" cy=\"50%\" r=\"55%\">\n <stop offset=\"0%\" stopColor={t.bgGradient[0]} />\n <stop offset=\"100%\" stopColor={t.bgGradient[1]} />\n </radialGradient>\n <filter id=\"geo-glow\" x=\"-50%\" y=\"-50%\" width=\"200%\" height=\"200%\">\n <feGaussianBlur in=\"SourceGraphic\" stdDeviation=\"3\" result=\"b\" />\n <feMerge><feMergeNode in=\"b\" /><feMergeNode in=\"SourceGraphic\" /></feMerge>\n </filter>\n </defs>\n <style>{`\n .geo-arc{stroke-dasharray:8,6;animation:geo-flow 1.5s linear infinite}\n @keyframes geo-flow{to{stroke-dashoffset:-14}}\n .geo-dot{animation:geo-pulse 2s ease-in-out infinite}\n @keyframes geo-pulse{0%,100%{opacity:1}50%{opacity:.5}}\n `}</style>\n\n <rect width={width} height={height} fill=\"url(#geo-bg)\" />\n\n {/* Zoomable content group */}\n <g transform={txStr}>\n <path d={spherePath ?? undefined} fill=\"none\" stroke={t.sphere} strokeWidth={0.8 * invScale} />\n <path d={landPath ?? undefined} fill={t.land} stroke={t.landStroke} strokeWidth={0.4 * invScale} />\n <path d={graticulePath ?? undefined} fill=\"none\" stroke={t.graticule} strokeWidth={0.3 * invScale} opacity={t.graticuleOpacity} />\n\n {/* Overlay zones (disruptions, weather) */}\n {overlays.map(o => {\n const c = proj(o.center);\n if (!c) return null;\n const edge = proj([o.center[0] + (o.radius ?? 5), o.center[1]]);\n const r = edge ? Math.abs(edge[0] - c[0]) : 30;\n return (\n <circle\n key={o.id}\n cx={c[0]} cy={c[1]} r={r}\n fill={o.fill ?? t.overlayFill}\n stroke={o.stroke ?? t.overlayStroke}\n strokeWidth={1 * invScale}\n strokeDasharray=\"5,5\"\n className=\"animate-pulse\"\n />\n );\n })}\n\n {/* Arcs */}\n {arcPaths.map(a => {\n if (!a._path) return null;\n const sel = selectedId === a.id;\n const danger = a.danger;\n return (\n <path\n key={`arc-${a.id}`}\n d={a._path}\n fill=\"none\"\n stroke={danger ? t.arcDanger : sel ? t.arcHighlight : a.color ?? t.arc}\n strokeWidth={(sel ? 3 : 2) * invScale}\n opacity={selectedId != null && !sel ? 0.15 : danger ? 0.85 : 0.65}\n className=\"geo-arc cursor-pointer\"\n onClick={() => onArcClick?.(a)}\n />\n );\n })}\n\n {/* Markers */}\n {markers.map(m => {\n const p = proj([m.lon, m.lat]);\n if (!p) return null;\n const active = m.active ?? activeMarkerIds.has(m.id);\n return (\n <g key={m.id} className={onMarkerClick ? \"cursor-pointer\" : \"\"} onClick={() => onMarkerClick?.(m)}>\n <circle cx={p[0]} cy={p[1]} r={(active ? 3 : 2) * invScale} fill={active ? t.markerActive : t.markerInactive} />\n {m.label !== false && (\n <text x={p[0] + 6 * invScale} y={p[1] + 4 * invScale} fontSize={8 * invScale} fill={active ? t.label : t.labelInactive} fontFamily=\"sans-serif\" fontWeight={600}>\n {m.label ?? m.id}\n </text>\n )}\n </g>\n );\n })}\n\n {/* Moving dots (flight positions) */}\n {arcPaths.map(a => {\n if (a.progress == null || a.progress <= 0) return null;\n const interp = d3.geoInterpolate(a.from, a.to);\n const p = proj(interp(Math.min(a.progress, 0.99)));\n if (!p) return null;\n const sel = selectedId === a.id;\n return (\n <circle\n key={`dot-${a.id}`}\n cx={p[0]} cy={p[1]}\n r={(sel ? 6 : 4.5) * invScale}\n fill={a.danger ? t.dotDanger : a.dotColor ?? t.dot}\n filter=\"url(#geo-glow)\"\n className=\"geo-dot cursor-pointer\"\n opacity={selectedId != null && !sel ? 0.3 : 1}\n onClick={() => onArcClick?.(a)}\n />\n );\n })}\n\n {/* Custom children get access to projection */}\n {typeof children === \"function\" ? children({ proj, pathGen, theme: t, width, height, transform }) : children}\n </g>\n </svg>\n\n {/* Reset zoom button */}\n {zoomable && isZoomed && (\n <button\n onClick={resetZoom}\n className=\"absolute bottom-3 right-3 rounded-lg border border-white/15 bg-black/50 px-2.5 py-1.5 text-[11px] font-medium text-white/80 backdrop-blur-md transition hover:bg-black/70 hover:text-white\"\n >\n Reset view\n </button>\n )}\n </div>\n );\n}\n"],"names":["land","feature","world","PROJECTIONS","d3","THEMES","buildProjection","type","width","height","GeoMap","projType","theme","markers","arcs","overlays","selectedId","onArcClick","onMarkerClick","zoomable","minZoom","maxZoom","initialBounds","className","children","t","svgRef","useRef","transform","setTransform","useState","zoomRef","proj","pathGen","graticulePath","spherePath","landPath","useMemo","useEffect","svg","zoom","e","initialBoundsApplied","sw","ne","padding","p0","p1","bx0","by0","bx1","by1","bw","bh","scale","cx","cy","tx","ty","clampedScale","resetZoom","useCallback","isZoomed","arcPaths","cache","a","key","interp","pts","i","p","path","activeMarkerIds","s","m","txStr","invScale","jsxs","jsx","o","c","edge","r","sel","danger","active"],"mappings":"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"}
1
+ {"version":3,"file":"GeoMap.js","sources":["../../../../src/components/library/charts/GeoMap.jsx"],"sourcesContent":["import React, { useMemo, useRef, useEffect, useState, useCallback } from \"react\";\nimport * as d3 from \"d3\";\nimport { feature } from \"topojson-client\";\nimport world from \"world-atlas/land-110m.json\";\n\nconst land = feature(world, world.objects.land);\n\nconst PROJECTIONS = {\n naturalEarth: d3.geoNaturalEarth1,\n mercator: d3.geoMercator,\n equirectangular: d3.geoEquirectangular,\n};\n\nconst THEMES = {\n dark: {\n bg: \"#050b15\",\n bgGradient: [\"#0a1628\", \"#050b15\"],\n land: \"#1a2d4a\",\n landStroke: \"#2a4060\",\n sphere: \"#1e3a5f\",\n graticule: \"#162a45\",\n graticuleOpacity: 0.35,\n markerActive: \"#cbd5e1\",\n markerInactive: \"#64748b\",\n label: \"#cbd5e1\",\n labelInactive: \"#64748b\",\n arc: \"#818cf8\",\n arcHighlight: \"#c4b5fd\",\n arcDanger: \"#f87171\",\n dot: \"#a5b4fc\",\n dotDanger: \"#f87171\",\n overlayFill: \"rgba(248,113,113,0.10)\",\n overlayStroke: \"rgba(248,113,113,0.30)\",\n },\n light: {\n bg: \"#f8fafc\",\n bgGradient: [\"#f8fafc\", \"#f1f5f9\"],\n land: \"#e2e8f0\",\n landStroke: \"#cbd5e1\",\n sphere: \"#cbd5e1\",\n graticule: \"#e2e8f0\",\n graticuleOpacity: 0.6,\n markerActive: \"#334155\",\n markerInactive: \"#94a3b8\",\n label: \"#334155\",\n labelInactive: \"#94a3b8\",\n arc: \"#6366f1\",\n arcHighlight: \"#4f46e5\",\n arcDanger: \"#ef4444\",\n dot: \"#6366f1\",\n dotDanger: \"#ef4444\",\n overlayFill: \"rgba(239,68,68,0.08)\",\n overlayStroke: \"rgba(239,68,68,0.3)\",\n },\n};\n\nfunction buildProjection(type, width, height) {\n const factory = PROJECTIONS[type] ?? PROJECTIONS.naturalEarth;\n return factory().fitSize([width, height], { type: \"Sphere\" });\n}\n\nexport default function GeoMap({\n width = 960,\n height = 480,\n projection: projType = \"naturalEarth\",\n theme = \"dark\",\n markers = [],\n arcs = [],\n overlays = [],\n selectedId = null,\n onArcClick,\n onMarkerClick,\n zoomable = true,\n minZoom = 1,\n maxZoom = 8,\n initialBounds = null,\n className = \"\",\n children,\n}) {\n const t = THEMES[theme] ?? THEMES.dark;\n const svgRef = useRef(null);\n const [transform, setTransform] = useState(d3.zoomIdentity);\n const zoomRef = useRef(null);\n\n const { proj, pathGen, graticulePath, spherePath, landPath } = useMemo(() => {\n const proj = buildProjection(projType, width, height);\n const pathGen = d3.geoPath(proj);\n return {\n proj,\n pathGen,\n graticulePath: pathGen(d3.geoGraticule10()),\n spherePath: pathGen({ type: \"Sphere\" }),\n landPath: pathGen(land),\n };\n }, [projType, width, height]);\n\n // D3 zoom behavior\n useEffect(() => {\n if (!zoomable || !svgRef.current) return;\n const svg = d3.select(svgRef.current);\n const zoom = d3.zoom()\n .scaleExtent([minZoom, maxZoom])\n .on(\"zoom\", (e) => setTransform(e.transform));\n zoomRef.current = zoom;\n svg.call(zoom);\n return () => svg.on(\".zoom\", null);\n }, [zoomable, minZoom, maxZoom]);\n\n // Apply initial zoom to fit bounds (markers/region) on mount\n const initialBoundsApplied = useRef(false);\n useEffect(() => {\n if (!initialBounds || initialBoundsApplied.current) return;\n if (!svgRef.current || !zoomRef.current || !proj) return;\n const { sw, ne, padding = 40 } = initialBounds; // sw=[lonMin,latMin], ne=[lonMax,latMax]\n const p0 = proj(sw);\n const p1 = proj(ne);\n if (!p0 || !p1) return;\n const bx0 = Math.min(p0[0], p1[0]);\n const by0 = Math.min(p0[1], p1[1]);\n const bx1 = Math.max(p0[0], p1[0]);\n const by1 = Math.max(p0[1], p1[1]);\n const bw = bx1 - bx0;\n const bh = by1 - by0;\n if (bw < 1 || bh < 1) return;\n const scale = Math.min((width - padding * 2) / bw, (height - padding * 2) / bh);\n const cx = (bx0 + bx1) / 2;\n const cy = (by0 + by1) / 2;\n const tx = width / 2 - cx * scale;\n const ty = height / 2 - cy * scale;\n const clampedScale = Math.max(minZoom, Math.min(maxZoom, scale));\n const t = d3.zoomIdentity.translate(tx, ty).scale(clampedScale);\n d3.select(svgRef.current).call(zoomRef.current.transform, t);\n initialBoundsApplied.current = true;\n }, [initialBounds, proj, width, height, minZoom, maxZoom]);\n\n const resetZoom = useCallback(() => {\n if (!svgRef.current || !zoomRef.current) return;\n d3.select(svgRef.current)\n .transition()\n .duration(400)\n .call(zoomRef.current.transform, d3.zoomIdentity);\n }, []);\n\n const isZoomed = transform.k !== 1 || transform.x !== 0 || transform.y !== 0;\n\n const arcPaths = useMemo(() => {\n const cache = {};\n arcs.forEach(a => {\n const key = `${a.from[0]},${a.from[1]}-${a.to[0]},${a.to[1]}`;\n if (cache[key]) { a._path = cache[key]; return; }\n const interp = d3.geoInterpolate(a.from, a.to);\n const pts = [];\n for (let i = 0; i <= 1; i += 0.02) {\n const p = proj(interp(i));\n if (p) pts.push(p);\n }\n const path = pts.length > 1 ? d3.line()(pts) : null;\n cache[key] = path;\n a._path = path;\n });\n return arcs;\n }, [arcs, proj]);\n\n const activeMarkerIds = useMemo(() => {\n const s = new Set();\n markers.forEach(m => { if (m.active) s.add(m.id); });\n return s;\n }, [markers]);\n\n const txStr = `translate(${transform.x},${transform.y}) scale(${transform.k})`;\n const invScale = 1 / transform.k;\n\n return (\n <div className={`relative overflow-hidden ${className}`} style={{ background: t.bg }}>\n <svg ref={svgRef} viewBox={`0 0 ${width} ${height}`} className=\"h-full w-full\" preserveAspectRatio=\"xMidYMid slice\" style={zoomable ? { cursor: \"grab\" } : undefined}>\n <defs>\n <radialGradient id=\"geo-bg\" cx=\"50%\" cy=\"50%\" r=\"55%\">\n <stop offset=\"0%\" stopColor={t.bgGradient[0]} />\n <stop offset=\"100%\" stopColor={t.bgGradient[1]} />\n </radialGradient>\n <filter id=\"geo-glow\" x=\"-50%\" y=\"-50%\" width=\"200%\" height=\"200%\">\n <feGaussianBlur in=\"SourceGraphic\" stdDeviation=\"3\" result=\"b\" />\n <feMerge><feMergeNode in=\"b\" /><feMergeNode in=\"SourceGraphic\" /></feMerge>\n </filter>\n </defs>\n <style>{`\n .geo-arc{stroke-dasharray:8,6;animation:geo-flow 1.5s linear infinite}\n @keyframes geo-flow{to{stroke-dashoffset:-14}}\n .geo-dot{animation:geo-pulse 2s ease-in-out infinite}\n @keyframes geo-pulse{0%,100%{opacity:1}50%{opacity:.5}}\n `}</style>\n\n <rect width={width} height={height} fill=\"url(#geo-bg)\" />\n\n {/* Zoomable content group */}\n <g transform={txStr}>\n <path d={spherePath} fill=\"none\" stroke={t.sphere} strokeWidth={0.8 * invScale} />\n <path d={landPath} fill={t.land} stroke={t.landStroke} strokeWidth={0.4 * invScale} />\n <path d={graticulePath} fill=\"none\" stroke={t.graticule} strokeWidth={0.3 * invScale} opacity={t.graticuleOpacity} />\n\n {/* Overlay zones (disruptions, weather) */}\n {overlays.map(o => {\n const c = proj(o.center);\n if (!c) return null;\n const edge = proj([o.center[0] + (o.radius ?? 5), o.center[1]]);\n const r = edge ? Math.abs(edge[0] - c[0]) : 30;\n return (\n <circle\n key={o.id}\n cx={c[0]} cy={c[1]} r={r}\n fill={o.fill ?? t.overlayFill}\n stroke={o.stroke ?? t.overlayStroke}\n strokeWidth={1 * invScale}\n strokeDasharray=\"5,5\"\n className=\"animate-pulse\"\n />\n );\n })}\n\n {/* Arcs */}\n {arcPaths.map(a => {\n if (!a._path) return null;\n const sel = selectedId === a.id;\n const danger = a.danger;\n return (\n <path\n key={`arc-${a.id}`}\n d={a._path}\n fill=\"none\"\n stroke={danger ? t.arcDanger : sel ? t.arcHighlight : a.color ?? t.arc}\n strokeWidth={(sel ? 3 : 2) * invScale}\n opacity={selectedId != null && !sel ? 0.15 : danger ? 0.85 : 0.65}\n className=\"geo-arc cursor-pointer\"\n onClick={() => onArcClick?.(a)}\n />\n );\n })}\n\n {/* Markers */}\n {markers.map(m => {\n const p = proj([m.lon, m.lat]);\n if (!p) return null;\n const active = m.active ?? activeMarkerIds.has(m.id);\n return (\n <g key={m.id} className={onMarkerClick ? \"cursor-pointer\" : \"\"} onClick={() => onMarkerClick?.(m)}>\n <circle cx={p[0]} cy={p[1]} r={(active ? 3 : 2) * invScale} fill={active ? t.markerActive : t.markerInactive} />\n {m.label !== false && (\n <text x={p[0] + 6 * invScale} y={p[1] + 4 * invScale} fontSize={8 * invScale} fill={active ? t.label : t.labelInactive} fontFamily=\"sans-serif\" fontWeight={600}>\n {m.label ?? m.id}\n </text>\n )}\n </g>\n );\n })}\n\n {/* Moving dots (flight positions) */}\n {arcPaths.map(a => {\n if (a.progress == null || a.progress <= 0) return null;\n const interp = d3.geoInterpolate(a.from, a.to);\n const p = proj(interp(Math.min(a.progress, 0.99)));\n if (!p) return null;\n const sel = selectedId === a.id;\n return (\n <circle\n key={`dot-${a.id}`}\n cx={p[0]} cy={p[1]}\n r={(sel ? 6 : 4.5) * invScale}\n fill={a.danger ? t.dotDanger : a.dotColor ?? t.dot}\n filter=\"url(#geo-glow)\"\n className=\"geo-dot cursor-pointer\"\n opacity={selectedId != null && !sel ? 0.3 : 1}\n onClick={() => onArcClick?.(a)}\n />\n );\n })}\n\n {/* Custom children get access to projection */}\n {typeof children === \"function\" ? children({ proj, pathGen, theme: t, width, height, transform }) : children}\n </g>\n </svg>\n\n {/* Reset zoom button */}\n {zoomable && isZoomed && (\n <button\n onClick={resetZoom}\n className=\"absolute bottom-3 right-3 rounded-lg border border-white/15 bg-black/50 px-2.5 py-1.5 text-[11px] font-medium text-white/80 backdrop-blur-md transition hover:bg-black/70 hover:text-white\"\n >\n Reset view\n </button>\n )}\n </div>\n );\n}\n"],"names":["land","feature","world","PROJECTIONS","d3","THEMES","buildProjection","type","width","height","GeoMap","projType","theme","markers","arcs","overlays","selectedId","onArcClick","onMarkerClick","zoomable","minZoom","maxZoom","initialBounds","className","children","t","svgRef","useRef","transform","setTransform","useState","zoomRef","proj","pathGen","graticulePath","spherePath","landPath","useMemo","useEffect","svg","zoom","e","initialBoundsApplied","sw","ne","padding","p0","p1","bx0","by0","bx1","by1","bw","bh","scale","cx","cy","tx","ty","clampedScale","resetZoom","useCallback","isZoomed","arcPaths","cache","a","key","interp","pts","i","p","path","activeMarkerIds","s","m","txStr","invScale","jsxs","jsx","o","c","edge","r","sel","danger","active"],"mappings":"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"}
@@ -1,16 +1,3 @@
1
- import React from "react";
2
- import { UseChatStateOptions, ChatMessage } from "./useChatState";
3
- import { ChatMessageData } from "./ChatMessage";
4
- export interface ChatBarProps {
5
- onSend?: UseChatStateOptions["onSend"];
6
- suggestions?: string[];
7
- placeholder?: string;
8
- title?: string;
9
- initialMessages?: UseChatStateOptions["initialMessages"];
10
- className?: string;
11
- renderAvatar?: (message: ChatMessageData) => React.ReactNode;
12
- onOpenInTab?: (messages: ChatMessage[]) => void;
13
- }
14
1
  /**
15
2
  * Command-palette style AI chat bar.
16
3
  *
@@ -21,4 +8,14 @@ export interface ChatBarProps {
21
8
  * Activate: click the bar, press ⌘K / Ctrl+K, or click a suggestion chip.
22
9
  * Dismiss: Escape or click the backdrop.
23
10
  */
24
- export default function ChatBar({ onSend, suggestions, placeholder, title, initialMessages, className, renderAvatar, onOpenInTab, }: ChatBarProps): import("react/jsx-runtime").JSX.Element;
11
+ export default function ChatBar({ onSend, suggestions, placeholder, title, initialMessages, className, panelHeight, renderAvatar, onOpenInTab, }: {
12
+ onSend: any;
13
+ suggestions?: never[] | undefined;
14
+ placeholder?: string | undefined;
15
+ title?: string | undefined;
16
+ initialMessages?: never[] | undefined;
17
+ className?: string | undefined;
18
+ panelHeight: any;
19
+ renderAvatar: any;
20
+ onOpenInTab: any;
21
+ }): import("react/jsx-runtime").JSX.Element;
@@ -20,13 +20,14 @@ const z = {
20
20
  },
21
21
  exit: { opacity: 0, y: 10, scale: 0.97, transition: { duration: 0.12 } }
22
22
  };
23
- function W({
23
+ function Y({
24
24
  onSend: p,
25
25
  suggestions: c = [],
26
26
  placeholder: h = "Ask a question…",
27
27
  title: g = "AI Assistant",
28
28
  initialMessages: k = [],
29
29
  className: v = "",
30
+ panelHeight: H,
30
31
  renderAvatar: y,
31
32
  onOpenInTab: u
32
33
  }) {
@@ -188,6 +189,6 @@ function W({
188
189
  ] });
189
190
  }
190
191
  export {
191
- W as default
192
+ Y as default
192
193
  };
193
194
  //# sourceMappingURL=ChatBar.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ChatBar.js","sources":["../../../../src/components/library/chat/ChatBar.tsx"],"sourcesContent":["import React, { useState, useRef, useEffect, useCallback } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { AnimatePresence, motion } from \"framer-motion\";\nimport {\n SparklesIcon,\n XMarkIcon,\n TrashIcon,\n ArrowTopRightOnSquareIcon,\n} from \"@heroicons/react/24/outline\";\nimport ChatMessageList from \"./ChatMessageList\";\nimport ChatInput from \"./ChatInput\";\nimport useChatState, { UseChatStateOptions, ChatMessage } from \"./useChatState\";\nimport { ChatMessageData } from \"./ChatMessage\";\n\nconst BACKDROP_VARIANTS = {\n hidden: { opacity: 0 },\n visible: { opacity: 1, transition: { duration: 0.15 } },\n exit: { opacity: 0, transition: { duration: 0.12 } },\n};\n\nconst PANEL_VARIANTS = {\n hidden: { opacity: 0, y: 20, scale: 0.97 },\n visible: {\n opacity: 1,\n y: 0,\n scale: 1,\n transition: { type: \"spring\" as const, damping: 28, stiffness: 380 },\n },\n exit: { opacity: 0, y: 10, scale: 0.97, transition: { duration: 0.12 } },\n};\n\nexport interface ChatBarProps {\n onSend?: UseChatStateOptions[\"onSend\"];\n suggestions?: string[];\n placeholder?: string;\n title?: string;\n initialMessages?: UseChatStateOptions[\"initialMessages\"];\n className?: string;\n renderAvatar?: (message: ChatMessageData) => React.ReactNode;\n onOpenInTab?: (messages: ChatMessage[]) => void;\n}\n\n/**\n * Command-palette style AI chat bar.\n *\n * Collapsed: a slim, clickable input strip with sparkle icon and ⌘K hint.\n * Expanded: a centered floating overlay (portal) with backdrop, full chat,\n * suggestions, and message history. No layout shift.\n *\n * Activate: click the bar, press ⌘K / Ctrl+K, or click a suggestion chip.\n * Dismiss: Escape or click the backdrop.\n */\nexport default function ChatBar({\n onSend,\n suggestions = [],\n placeholder = \"Ask a question…\",\n title = \"AI Assistant\",\n initialMessages = [],\n className = \"\",\n renderAvatar,\n onOpenInTab,\n}: ChatBarProps) {\n const [open, setOpen] = useState(false);\n const [portalVisible, setPortalVisible] = useState(false);\n const panelRef = useRef<HTMLDivElement>(null);\n const chat = useChatState({ initialMessages, onSend });\n const isEmpty = chat.messages.length === 0;\n\n const close = useCallback(() => setOpen(false), []);\n\n useEffect(() => {\n if (open) setPortalVisible(true);\n }, [open]);\n\n useEffect(() => {\n function onKey(e: KeyboardEvent) {\n if ((e.metaKey || e.ctrlKey) && e.key === \"k\") {\n e.preventDefault();\n setOpen((prev) => !prev);\n }\n if (e.key === \"Escape\" && open) close();\n }\n document.addEventListener(\"keydown\", onKey);\n return () => document.removeEventListener(\"keydown\", onKey);\n }, [open, close]);\n\n useEffect(() => {\n if (open) document.body.style.overflow = \"hidden\";\n else document.body.style.overflow = \"\";\n return () => { document.body.style.overflow = \"\"; };\n }, [open]);\n\n function handleSend(content: string) {\n if (!open) setOpen(true);\n chat.sendMessage(content);\n }\n\n const [shortcutLabel, setShortcutLabel] = useState(\"⌘K\");\n useEffect(() => {\n setShortcutLabel(/Mac|iPhone|iPad/.test(navigator.userAgent) ? \"⌘K\" : \"Ctrl K\");\n }, []);\n\n const overlay =\n typeof document !== \"undefined\" && portalVisible\n ? createPortal(\n <AnimatePresence onExitComplete={() => setPortalVisible(false)}>\n {open && (\n <>\n {/* Backdrop */}\n <motion.div\n variants={BACKDROP_VARIANTS}\n initial=\"hidden\"\n animate=\"visible\"\n exit=\"exit\"\n className=\"fixed inset-0 z-50 bg-black/30 backdrop-blur-sm\"\n onClick={close}\n aria-hidden=\"true\"\n />\n\n {/* Centered panel */}\n <motion.div\n ref={panelRef}\n variants={PANEL_VARIANTS}\n initial=\"hidden\"\n animate=\"visible\"\n exit=\"exit\"\n className=\"fixed inset-x-0 top-[10vh] z-50 mx-auto flex w-full max-w-4xl flex-col overflow-hidden rounded-2xl border border-slate-200 bg-white shadow-2xl dark:border-slate-700 dark:bg-slate-900\"\n style={{ maxHeight: \"75vh\" }}\n >\n {/* Header */}\n <div className=\"flex items-center justify-between border-b border-slate-100 px-4 py-2.5 dark:border-slate-800\">\n <div className=\"flex items-center gap-2\">\n <SparklesIcon className=\"h-4 w-4 text-brand-500\" />\n <h3 className=\"text-sm font-semibold text-slate-900 dark:text-slate-50\">\n {title}\n </h3>\n </div>\n <div className=\"flex items-center gap-1\">\n {onOpenInTab ? (\n <button\n type=\"button\"\n onClick={() => {\n setOpen(false);\n setPortalVisible(false);\n document.body.style.overflow = \"\";\n onOpenInTab(chat.messages);\n }}\n className=\"rounded p-1 text-slate-400 transition hover:bg-slate-100 hover:text-slate-600 dark:text-slate-500 dark:hover:bg-slate-800 dark:hover:text-slate-300\"\n aria-label=\"Open in new tab\"\n title=\"Open in new tab\"\n >\n <ArrowTopRightOnSquareIcon className=\"h-4 w-4\" />\n </button>\n ) : null}\n {chat.messages.length > 0 ? (\n <button\n type=\"button\"\n onClick={chat.clearMessages}\n className=\"rounded p-1 text-slate-400 transition hover:bg-slate-100 hover:text-slate-600 dark:text-slate-500 dark:hover:bg-slate-800 dark:hover:text-slate-300\"\n aria-label=\"Clear chat\"\n >\n <TrashIcon className=\"h-4 w-4\" />\n </button>\n ) : null}\n <button\n type=\"button\"\n onClick={close}\n className=\"rounded p-1 text-slate-400 transition hover:bg-slate-100 hover:text-slate-600 dark:text-slate-500 dark:hover:bg-slate-800 dark:hover:text-slate-300\"\n aria-label=\"Close\"\n >\n <XMarkIcon className=\"h-4 w-4\" />\n </button>\n <kbd className=\"ml-1 hidden rounded border border-slate-200 bg-slate-50 px-1.5 py-0.5 text-[10px] font-medium text-slate-400 dark:border-slate-700 dark:bg-slate-800 dark:text-slate-500 sm:inline-block\">\n esc\n </kbd>\n </div>\n </div>\n\n {/* Body — messages or empty state */}\n <div className=\"min-h-0 flex-1\">\n {isEmpty ? (\n <div className=\"flex h-full min-h-[200px] flex-col items-center justify-center gap-4 px-6 py-8\">\n <div className=\"flex h-10 w-10 items-center justify-center rounded-full bg-brand-50 dark:bg-brand-950/30\">\n <SparklesIcon className=\"h-5 w-5 text-brand-500\" />\n </div>\n <p className=\"text-sm text-slate-500 dark:text-slate-400\">\n Ask me anything about your data.\n </p>\n {suggestions.length > 0 ? (\n <div className=\"flex flex-wrap justify-center gap-2\">\n {suggestions.map((text) => (\n <button\n key={text}\n type=\"button\"\n onClick={() => handleSend(text)}\n className=\"inline-flex items-center gap-1.5 rounded-full border border-slate-200 bg-white px-3 py-1.5 text-xs font-medium text-slate-600 shadow-sm transition hover:border-brand-300 hover:bg-brand-50 hover:text-brand-700 dark:border-slate-700 dark:bg-slate-800 dark:text-slate-300 dark:hover:border-brand-700 dark:hover:bg-brand-950/30 dark:hover:text-brand-300\"\n >\n <SparklesIcon\n className=\"h-3 w-3\"\n aria-hidden=\"true\"\n />\n {text}\n </button>\n ))}\n </div>\n ) : null}\n </div>\n ) : (\n <ChatMessageList\n messages={chat.messages}\n isLoading={chat.isLoading}\n isStreaming={chat.isStreaming}\n suggestions={suggestions}\n onSuggestion={(text) => chat.sendMessage(text)}\n renderAvatar={renderAvatar}\n />\n )}\n </div>\n\n {/* Input */}\n <div className=\"border-t border-slate-100 p-3 dark:border-slate-800\">\n <ChatInput\n onSend={(content) => chat.sendMessage(content)}\n disabled={chat.isLoading}\n isLoading={chat.isLoading}\n placeholder={placeholder}\n />\n </div>\n </motion.div>\n </>\n )}\n </AnimatePresence>,\n document.body\n )\n : null;\n\n return (\n <>\n {overlay}\n\n {/* Trigger bar */}\n <button\n type=\"button\"\n onClick={() => setOpen(true)}\n className={[\n \"group flex w-full items-center gap-3 rounded-xl border border-slate-200 bg-white px-4 py-2.5 text-left shadow-sm transition-all hover:border-brand-300 hover:shadow-md focus:outline-none focus:ring-2 focus:ring-brand-500/20 dark:border-slate-800 dark:bg-slate-900 dark:hover:border-brand-700\",\n className,\n ]\n .filter(Boolean)\n .join(\" \")}\n >\n <SparklesIcon className=\"h-5 w-5 shrink-0 text-brand-500\" />\n <span className=\"flex-1 text-sm text-slate-400 dark:text-slate-500\">\n {placeholder}\n </span>\n {chat.messages.length > 0 ? (\n <span className=\"rounded-full bg-brand-50 px-2 py-0.5 text-xs font-medium text-brand-600 dark:bg-brand-950/30 dark:text-brand-400\">\n {chat.messages.length} msgs\n </span>\n ) : null}\n <kbd className=\"hidden rounded border border-slate-200 bg-slate-50 px-1.5 py-0.5 text-[10px] font-medium text-slate-400 group-hover:border-brand-200 group-hover:text-brand-500 dark:border-slate-700 dark:bg-slate-800 dark:text-slate-500 sm:inline-block\">\n {shortcutLabel}\n </kbd>\n </button>\n </>\n );\n}\n"],"names":["BACKDROP_VARIANTS","PANEL_VARIANTS","ChatBar","onSend","suggestions","placeholder","title","initialMessages","className","renderAvatar","onOpenInTab","open","setOpen","useState","portalVisible","setPortalVisible","panelRef","useRef","chat","useChatState","isEmpty","close","useCallback","useEffect","onKey","e","prev","handleSend","content","shortcutLabel","setShortcutLabel","overlay","createPortal","jsx","AnimatePresence","jsxs","Fragment","motion","SparklesIcon","ArrowTopRightOnSquareIcon","TrashIcon","XMarkIcon","text","ChatMessageList","ChatInput"],"mappings":"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"}
1
+ {"version":3,"file":"ChatBar.js","sources":["../../../../src/components/library/chat/ChatBar.jsx"],"sourcesContent":["import React, { useState, useRef, useEffect, useCallback } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { AnimatePresence, motion } from \"framer-motion\";\nimport {\n SparklesIcon,\n XMarkIcon,\n TrashIcon,\n ArrowTopRightOnSquareIcon,\n} from \"@heroicons/react/24/outline\";\nimport ChatMessageList from \"./ChatMessageList\";\nimport ChatInput from \"./ChatInput\";\nimport useChatState from \"./useChatState\";\n\nconst BACKDROP_VARIANTS = {\n hidden: { opacity: 0 },\n visible: { opacity: 1, transition: { duration: 0.15 } },\n exit: { opacity: 0, transition: { duration: 0.12 } },\n};\n\nconst PANEL_VARIANTS = {\n hidden: { opacity: 0, y: 20, scale: 0.97 },\n visible: {\n opacity: 1,\n y: 0,\n scale: 1,\n transition: { type: \"spring\", damping: 28, stiffness: 380 },\n },\n exit: { opacity: 0, y: 10, scale: 0.97, transition: { duration: 0.12 } },\n};\n\n/**\n * Command-palette style AI chat bar.\n *\n * Collapsed: a slim, clickable input strip with sparkle icon and ⌘K hint.\n * Expanded: a centered floating overlay (portal) with backdrop, full chat,\n * suggestions, and message history. No layout shift.\n *\n * Activate: click the bar, press ⌘K / Ctrl+K, or click a suggestion chip.\n * Dismiss: Escape or click the backdrop.\n */\nexport default function ChatBar({\n onSend,\n suggestions = [],\n placeholder = \"Ask a question\\u2026\",\n title = \"AI Assistant\",\n initialMessages = [],\n className = \"\",\n panelHeight,\n renderAvatar,\n onOpenInTab,\n}) {\n const [open, setOpen] = useState(false);\n const [portalVisible, setPortalVisible] = useState(false);\n const panelRef = useRef(null);\n const chat = useChatState({ initialMessages, onSend });\n const isEmpty = chat.messages.length === 0;\n\n const close = useCallback(() => setOpen(false), []);\n\n useEffect(() => {\n if (open) setPortalVisible(true);\n }, [open]);\n\n useEffect(() => {\n function onKey(e) {\n if ((e.metaKey || e.ctrlKey) && e.key === \"k\") {\n e.preventDefault();\n setOpen((prev) => !prev);\n }\n if (e.key === \"Escape\" && open) close();\n }\n document.addEventListener(\"keydown\", onKey);\n return () => document.removeEventListener(\"keydown\", onKey);\n }, [open, close]);\n\n useEffect(() => {\n if (open) document.body.style.overflow = \"hidden\";\n else document.body.style.overflow = \"\";\n return () => { document.body.style.overflow = \"\"; };\n }, [open]);\n\n function handleSend(content) {\n if (!open) setOpen(true);\n chat.sendMessage(content);\n }\n\n const [shortcutLabel, setShortcutLabel] = useState(\"⌘K\");\n useEffect(() => {\n setShortcutLabel(/Mac|iPhone|iPad/.test(navigator.userAgent) ? \"⌘K\" : \"Ctrl K\");\n }, []);\n\n const overlay =\n typeof document !== \"undefined\" && portalVisible\n ? createPortal(\n <AnimatePresence onExitComplete={() => setPortalVisible(false)}>\n {open && (\n <>\n {/* Backdrop */}\n <motion.div\n variants={BACKDROP_VARIANTS}\n initial=\"hidden\"\n animate=\"visible\"\n exit=\"exit\"\n className=\"fixed inset-0 z-50 bg-black/30 backdrop-blur-sm\"\n onClick={close}\n aria-hidden=\"true\"\n />\n\n {/* Centered panel */}\n <motion.div\n ref={panelRef}\n variants={PANEL_VARIANTS}\n initial=\"hidden\"\n animate=\"visible\"\n exit=\"exit\"\n className=\"fixed inset-x-0 top-[10vh] z-50 mx-auto flex w-full max-w-4xl flex-col overflow-hidden rounded-2xl border border-slate-200 bg-white shadow-2xl dark:border-slate-700 dark:bg-slate-900\"\n style={{ maxHeight: \"75vh\" }}\n >\n {/* Header */}\n <div className=\"flex items-center justify-between border-b border-slate-100 px-4 py-2.5 dark:border-slate-800\">\n <div className=\"flex items-center gap-2\">\n <SparklesIcon className=\"h-4 w-4 text-brand-500\" />\n <h3 className=\"text-sm font-semibold text-slate-900 dark:text-slate-50\">\n {title}\n </h3>\n </div>\n <div className=\"flex items-center gap-1\">\n {onOpenInTab ? (\n <button\n type=\"button\"\n onClick={() => {\n setOpen(false);\n setPortalVisible(false);\n document.body.style.overflow = \"\";\n onOpenInTab(chat.messages);\n }}\n className=\"rounded p-1 text-slate-400 transition hover:bg-slate-100 hover:text-slate-600 dark:text-slate-500 dark:hover:bg-slate-800 dark:hover:text-slate-300\"\n aria-label=\"Open in new tab\"\n title=\"Open in new tab\"\n >\n <ArrowTopRightOnSquareIcon className=\"h-4 w-4\" />\n </button>\n ) : null}\n {chat.messages.length > 0 ? (\n <button\n type=\"button\"\n onClick={chat.clearMessages}\n className=\"rounded p-1 text-slate-400 transition hover:bg-slate-100 hover:text-slate-600 dark:text-slate-500 dark:hover:bg-slate-800 dark:hover:text-slate-300\"\n aria-label=\"Clear chat\"\n >\n <TrashIcon className=\"h-4 w-4\" />\n </button>\n ) : null}\n <button\n type=\"button\"\n onClick={close}\n className=\"rounded p-1 text-slate-400 transition hover:bg-slate-100 hover:text-slate-600 dark:text-slate-500 dark:hover:bg-slate-800 dark:hover:text-slate-300\"\n aria-label=\"Close\"\n >\n <XMarkIcon className=\"h-4 w-4\" />\n </button>\n <kbd className=\"ml-1 hidden rounded border border-slate-200 bg-slate-50 px-1.5 py-0.5 text-[10px] font-medium text-slate-400 dark:border-slate-700 dark:bg-slate-800 dark:text-slate-500 sm:inline-block\">\n esc\n </kbd>\n </div>\n </div>\n\n {/* Body — messages or empty state */}\n <div className=\"min-h-0 flex-1\">\n {isEmpty ? (\n <div className=\"flex h-full min-h-[200px] flex-col items-center justify-center gap-4 px-6 py-8\">\n <div className=\"flex h-10 w-10 items-center justify-center rounded-full bg-brand-50 dark:bg-brand-950/30\">\n <SparklesIcon className=\"h-5 w-5 text-brand-500\" />\n </div>\n <p className=\"text-sm text-slate-500 dark:text-slate-400\">\n Ask me anything about your data.\n </p>\n {suggestions.length > 0 ? (\n <div className=\"flex flex-wrap justify-center gap-2\">\n {suggestions.map((text) => (\n <button\n key={text}\n type=\"button\"\n onClick={() => handleSend(text)}\n className=\"inline-flex items-center gap-1.5 rounded-full border border-slate-200 bg-white px-3 py-1.5 text-xs font-medium text-slate-600 shadow-sm transition hover:border-brand-300 hover:bg-brand-50 hover:text-brand-700 dark:border-slate-700 dark:bg-slate-800 dark:text-slate-300 dark:hover:border-brand-700 dark:hover:bg-brand-950/30 dark:hover:text-brand-300\"\n >\n <SparklesIcon\n className=\"h-3 w-3\"\n aria-hidden=\"true\"\n />\n {text}\n </button>\n ))}\n </div>\n ) : null}\n </div>\n ) : (\n <ChatMessageList\n messages={chat.messages}\n isLoading={chat.isLoading}\n isStreaming={chat.isStreaming}\n suggestions={suggestions}\n onSuggestion={(text) => chat.sendMessage(text)}\n renderAvatar={renderAvatar}\n />\n )}\n </div>\n\n {/* Input */}\n <div className=\"border-t border-slate-100 p-3 dark:border-slate-800\">\n <ChatInput\n onSend={(content) => chat.sendMessage(content)}\n disabled={chat.isLoading}\n isLoading={chat.isLoading}\n placeholder={placeholder}\n />\n </div>\n </motion.div>\n </>\n )}\n </AnimatePresence>,\n document.body\n )\n : null;\n\n return (\n <>\n {overlay}\n\n {/* Trigger bar */}\n <button\n type=\"button\"\n onClick={() => setOpen(true)}\n className={[\n \"group flex w-full items-center gap-3 rounded-xl border border-slate-200 bg-white px-4 py-2.5 text-left shadow-sm transition-all hover:border-brand-300 hover:shadow-md focus:outline-none focus:ring-2 focus:ring-brand-500/20 dark:border-slate-800 dark:bg-slate-900 dark:hover:border-brand-700\",\n className,\n ]\n .filter(Boolean)\n .join(\" \")}\n >\n <SparklesIcon className=\"h-5 w-5 shrink-0 text-brand-500\" />\n <span className=\"flex-1 text-sm text-slate-400 dark:text-slate-500\">\n {placeholder}\n </span>\n {chat.messages.length > 0 ? (\n <span className=\"rounded-full bg-brand-50 px-2 py-0.5 text-xs font-medium text-brand-600 dark:bg-brand-950/30 dark:text-brand-400\">\n {chat.messages.length} msgs\n </span>\n ) : null}\n <kbd className=\"hidden rounded border border-slate-200 bg-slate-50 px-1.5 py-0.5 text-[10px] font-medium text-slate-400 group-hover:border-brand-200 group-hover:text-brand-500 dark:border-slate-700 dark:bg-slate-800 dark:text-slate-500 sm:inline-block\">\n {shortcutLabel}\n </kbd>\n </button>\n </>\n );\n}\n"],"names":["BACKDROP_VARIANTS","PANEL_VARIANTS","ChatBar","onSend","suggestions","placeholder","title","initialMessages","className","panelHeight","renderAvatar","onOpenInTab","open","setOpen","useState","portalVisible","setPortalVisible","panelRef","useRef","chat","useChatState","isEmpty","close","useCallback","useEffect","onKey","e","prev","handleSend","content","shortcutLabel","setShortcutLabel","overlay","createPortal","jsx","AnimatePresence","jsxs","Fragment","motion","SparklesIcon","ArrowTopRightOnSquareIcon","TrashIcon","XMarkIcon","text","ChatMessageList","ChatInput"],"mappings":"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"}
@@ -1,13 +1,12 @@
1
- export interface ChatInputProps {
2
- onSend?: (content: string) => void;
3
- disabled?: boolean;
4
- isLoading?: boolean;
5
- onStop?: () => void;
6
- placeholder?: string;
7
- maxRows?: number;
8
- }
9
1
  /**
10
2
  * Chat input with auto-resize textarea, Send button, and keyboard shortcuts.
11
3
  * Enter sends, Shift+Enter inserts newline.
4
+ *
5
+ * @param {Function} onSend — (content: string) => void
6
+ * @param {boolean} disabled — disable input while agent is processing
7
+ * @param {boolean} isLoading — show stop button instead of send
8
+ * @param {Function} onStop — optional: called when stop is clicked
9
+ * @param {string} placeholder
10
+ * @param {number} maxRows — max visible rows before scroll (default 6)
12
11
  */
13
- export default function ChatInput({ onSend, disabled, isLoading, onStop, placeholder, maxRows, }: ChatInputProps): import("react/jsx-runtime").JSX.Element;
12
+ export default function ChatInput({ onSend, disabled, isLoading, onStop, placeholder, maxRows, }: Function): import("react/jsx-runtime").JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"ChatInput.js","sources":["../../../../src/components/library/chat/ChatInput.tsx"],"sourcesContent":["import { useState, useRef, useEffect } from \"react\";\nimport { PaperAirplaneIcon, StopCircleIcon } from \"@heroicons/react/24/solid\";\n\nexport interface ChatInputProps {\n onSend?: (content: string) => void;\n disabled?: boolean;\n isLoading?: boolean;\n onStop?: () => void;\n placeholder?: string;\n maxRows?: number;\n}\n\n/**\n * Chat input with auto-resize textarea, Send button, and keyboard shortcuts.\n * Enter sends, Shift+Enter inserts newline.\n */\nexport default function ChatInput({\n onSend,\n disabled = false,\n isLoading = false,\n onStop,\n placeholder = \"Type a message…\",\n maxRows = 6,\n}: ChatInputProps) {\n const [value, setValue] = useState(\"\");\n const textareaRef = useRef<HTMLTextAreaElement>(null);\n\n useEffect(() => {\n const ta = textareaRef.current;\n if (!ta) return;\n ta.style.height = \"auto\";\n const lineHeight = 22;\n const maxHeight = lineHeight * maxRows;\n ta.style.height = `${Math.min(ta.scrollHeight, maxHeight)}px`;\n }, [value, maxRows]);\n\n function handleSend() {\n if (!value.trim() || disabled) return;\n onSend?.(value);\n setValue(\"\");\n if (textareaRef.current) {\n textareaRef.current.style.height = \"auto\";\n }\n }\n\n function handleKeyDown(e: React.KeyboardEvent<HTMLTextAreaElement>) {\n if (e.key === \"Enter\" && !e.shiftKey) {\n e.preventDefault();\n handleSend();\n }\n }\n\n const canSend = value.trim().length > 0 && !disabled;\n\n return (\n <div className=\"flex items-end gap-2 rounded-xl border border-slate-200 bg-white p-2 shadow-sm transition-colors focus-within:border-brand-300 focus-within:ring-2 focus-within:ring-brand-500/20 dark:border-slate-700 dark:bg-slate-900 dark:focus-within:border-brand-700 dark:focus-within:ring-brand-400/20\">\n <textarea\n ref={textareaRef}\n value={value}\n onChange={(e) => setValue(e.target.value)}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n disabled={disabled}\n rows={1}\n className=\"max-h-36 min-h-[22px] flex-1 resize-none bg-transparent px-2 py-1.5 text-sm text-slate-900 placeholder:text-slate-400 focus:outline-none disabled:cursor-not-allowed disabled:opacity-60 dark:text-slate-50 dark:placeholder:text-slate-500\"\n aria-label=\"Chat message input\"\n />\n\n {isLoading && onStop ? (\n <button\n type=\"button\"\n onClick={onStop}\n className=\"flex h-8 w-8 shrink-0 items-center justify-center rounded-lg text-slate-400 transition hover:bg-slate-100 hover:text-slate-600 dark:text-slate-500 dark:hover:bg-slate-800 dark:hover:text-slate-300\"\n aria-label=\"Stop generating\"\n >\n <StopCircleIcon className=\"h-5 w-5\" />\n </button>\n ) : (\n <button\n type=\"button\"\n onClick={handleSend}\n disabled={!canSend}\n className=\"flex h-8 w-8 shrink-0 items-center justify-center rounded-lg bg-brand-600 text-white transition hover:bg-brand-500 disabled:cursor-not-allowed disabled:opacity-40 dark:bg-brand-500 dark:hover:bg-brand-400\"\n aria-label=\"Send message\"\n >\n <PaperAirplaneIcon className=\"h-4 w-4\" />\n </button>\n )}\n </div>\n );\n}\n"],"names":["ChatInput","onSend","disabled","isLoading","onStop","placeholder","maxRows","value","setValue","useState","textareaRef","useRef","useEffect","ta","maxHeight","handleSend","handleKeyDown","canSend","jsxs","jsx","StopCircleIcon","PaperAirplaneIcon"],"mappings":";;;AAgBA,SAAwBA,EAAU;AAAA,EAChC,QAAAC;AAAA,EACA,UAAAC,IAAW;AAAA,EACX,WAAAC,IAAY;AAAA,EACZ,QAAAC;AAAA,EACA,aAAAC,IAAc;AAAA,EACd,SAAAC,IAAU;AACZ,GAAmB;AACjB,QAAM,CAACC,GAAOC,CAAQ,IAAIC,EAAS,EAAE,GAC/BC,IAAcC,EAA4B,IAAI;AAEpD,EAAAC,EAAU,MAAM;AACd,UAAMC,IAAKH,EAAY;AACvB,QAAI,CAACG,EAAI;AACT,IAAAA,EAAG,MAAM,SAAS;AAElB,UAAMC,IADa,KACYR;AAC/B,IAAAO,EAAG,MAAM,SAAS,GAAG,KAAK,IAAIA,EAAG,cAAcC,CAAS,CAAC;AAAA,EAC3D,GAAG,CAACP,GAAOD,CAAO,CAAC;AAEnB,WAASS,IAAa;AACpB,IAAI,CAACR,EAAM,KAAA,KAAUL,MACrBD,IAASM,CAAK,GACdC,EAAS,EAAE,GACPE,EAAY,YACdA,EAAY,QAAQ,MAAM,SAAS;AAAA,EAEvC;AAEA,WAASM,EAAc,GAA6C;AAClE,IAAI,EAAE,QAAQ,WAAW,CAAC,EAAE,aAC1B,EAAE,eAAA,GACFD,EAAA;AAAA,EAEJ;AAEA,QAAME,IAAUV,EAAM,KAAA,EAAO,SAAS,KAAK,CAACL;AAE5C,SACE,gBAAAgB,EAAC,OAAA,EAAI,WAAU,oSACb,UAAA;AAAA,IAAA,gBAAAC;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAKT;AAAA,QACL,OAAAH;AAAA,QACA,UAAU,CAAC,MAAMC,EAAS,EAAE,OAAO,KAAK;AAAA,QACxC,WAAWQ;AAAA,QACX,aAAAX;AAAA,QACA,UAAAH;AAAA,QACA,MAAM;AAAA,QACN,WAAU;AAAA,QACV,cAAW;AAAA,MAAA;AAAA,IAAA;AAAA,IAGZC,KAAaC,IACZ,gBAAAe;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,SAASf;AAAA,QACT,WAAU;AAAA,QACV,cAAW;AAAA,QAEX,UAAA,gBAAAe,EAACC,GAAA,EAAe,WAAU,UAAA,CAAU;AAAA,MAAA;AAAA,IAAA,IAGtC,gBAAAD;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,SAASJ;AAAA,QACT,UAAU,CAACE;AAAA,QACX,WAAU;AAAA,QACV,cAAW;AAAA,QAEX,UAAA,gBAAAE,EAACE,GAAA,EAAkB,WAAU,UAAA,CAAU;AAAA,MAAA;AAAA,IAAA;AAAA,EACzC,GAEJ;AAEJ;"}
1
+ {"version":3,"file":"ChatInput.js","sources":["../../../../src/components/library/chat/ChatInput.jsx"],"sourcesContent":["import React, { useState, useRef, useEffect } from \"react\";\nimport { PaperAirplaneIcon, StopCircleIcon } from \"@heroicons/react/24/solid\";\n\n/**\n * Chat input with auto-resize textarea, Send button, and keyboard shortcuts.\n * Enter sends, Shift+Enter inserts newline.\n *\n * @param {Function} onSend (content: string) => void\n * @param {boolean} disabled — disable input while agent is processing\n * @param {boolean} isLoading show stop button instead of send\n * @param {Function} onStop optional: called when stop is clicked\n * @param {string} placeholder\n * @param {number} maxRows — max visible rows before scroll (default 6)\n */\nexport default function ChatInput({\n onSend,\n disabled = false,\n isLoading = false,\n onStop,\n placeholder = \"Type a message…\",\n maxRows = 6,\n}) {\n const [value, setValue] = useState(\"\");\n const textareaRef = useRef(null);\n\n useEffect(() => {\n const ta = textareaRef.current;\n if (!ta) return;\n ta.style.height = \"auto\";\n const lineHeight = 22;\n const maxHeight = lineHeight * maxRows;\n ta.style.height = `${Math.min(ta.scrollHeight, maxHeight)}px`;\n }, [value, maxRows]);\n\n function handleSend() {\n if (!value.trim() || disabled) return;\n onSend?.(value);\n setValue(\"\");\n if (textareaRef.current) {\n textareaRef.current.style.height = \"auto\";\n }\n }\n\n function handleKeyDown(e) {\n if (e.key === \"Enter\" && !e.shiftKey) {\n e.preventDefault();\n handleSend();\n }\n }\n\n const canSend = value.trim().length > 0 && !disabled;\n\n return (\n <div className=\"flex items-end gap-2 rounded-xl border border-slate-200 bg-white p-2 shadow-sm transition-colors focus-within:border-brand-300 focus-within:ring-2 focus-within:ring-brand-500/20 dark:border-slate-700 dark:bg-slate-900 dark:focus-within:border-brand-700 dark:focus-within:ring-brand-400/20\">\n <textarea\n ref={textareaRef}\n value={value}\n onChange={(e) => setValue(e.target.value)}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n disabled={disabled}\n rows={1}\n className=\"max-h-36 min-h-[22px] flex-1 resize-none bg-transparent px-2 py-1.5 text-sm text-slate-900 placeholder:text-slate-400 focus:outline-none disabled:cursor-not-allowed disabled:opacity-60 dark:text-slate-50 dark:placeholder:text-slate-500\"\n aria-label=\"Chat message input\"\n />\n\n {isLoading && onStop ? (\n <button\n type=\"button\"\n onClick={onStop}\n className=\"flex h-8 w-8 shrink-0 items-center justify-center rounded-lg text-slate-400 transition hover:bg-slate-100 hover:text-slate-600 dark:text-slate-500 dark:hover:bg-slate-800 dark:hover:text-slate-300\"\n aria-label=\"Stop generating\"\n >\n <StopCircleIcon className=\"h-5 w-5\" />\n </button>\n ) : (\n <button\n type=\"button\"\n onClick={handleSend}\n disabled={!canSend}\n className=\"flex h-8 w-8 shrink-0 items-center justify-center rounded-lg bg-brand-600 text-white transition hover:bg-brand-500 disabled:cursor-not-allowed disabled:opacity-40 dark:bg-brand-500 dark:hover:bg-brand-400\"\n aria-label=\"Send message\"\n >\n <PaperAirplaneIcon className=\"h-4 w-4\" />\n </button>\n )}\n </div>\n );\n}\n"],"names":["ChatInput","onSend","disabled","isLoading","onStop","placeholder","maxRows","value","setValue","useState","textareaRef","useRef","useEffect","ta","maxHeight","handleSend","handleKeyDown","canSend","jsxs","jsx","StopCircleIcon","PaperAirplaneIcon"],"mappings":";;;AAcA,SAAwBA,EAAU;AAAA,EAChC,QAAAC;AAAA,EACA,UAAAC,IAAW;AAAA,EACX,WAAAC,IAAY;AAAA,EACZ,QAAAC;AAAA,EACA,aAAAC,IAAc;AAAA,EACd,SAAAC,IAAU;AACZ,GAAG;AACD,QAAM,CAACC,GAAOC,CAAQ,IAAIC,EAAS,EAAE,GAC/BC,IAAcC,EAAO,IAAI;AAE/B,EAAAC,EAAU,MAAM;AACd,UAAMC,IAAKH,EAAY;AACvB,QAAI,CAACG,EAAI;AACT,IAAAA,EAAG,MAAM,SAAS;AAElB,UAAMC,IADa,KACYR;AAC/B,IAAAO,EAAG,MAAM,SAAS,GAAG,KAAK,IAAIA,EAAG,cAAcC,CAAS,CAAC;AAAA,EAC3D,GAAG,CAACP,GAAOD,CAAO,CAAC;AAEnB,WAASS,IAAa;AACpB,IAAI,CAACR,EAAM,KAAA,KAAUL,MACrBD,IAASM,CAAK,GACdC,EAAS,EAAE,GACPE,EAAY,YACdA,EAAY,QAAQ,MAAM,SAAS;AAAA,EAEvC;AAEA,WAASM,EAAc,GAAG;AACxB,IAAI,EAAE,QAAQ,WAAW,CAAC,EAAE,aAC1B,EAAE,eAAA,GACFD,EAAA;AAAA,EAEJ;AAEA,QAAME,IAAUV,EAAM,KAAA,EAAO,SAAS,KAAK,CAACL;AAE5C,SACE,gBAAAgB,EAAC,OAAA,EAAI,WAAU,oSACb,UAAA;AAAA,IAAA,gBAAAC;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAKT;AAAA,QACL,OAAAH;AAAA,QACA,UAAU,CAAC,MAAMC,EAAS,EAAE,OAAO,KAAK;AAAA,QACxC,WAAWQ;AAAA,QACX,aAAAX;AAAA,QACA,UAAAH;AAAA,QACA,MAAM;AAAA,QACN,WAAU;AAAA,QACV,cAAW;AAAA,MAAA;AAAA,IAAA;AAAA,IAGZC,KAAaC,IACZ,gBAAAe;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,SAASf;AAAA,QACT,WAAU;AAAA,QACV,cAAW;AAAA,QAEX,UAAA,gBAAAe,EAACC,GAAA,EAAe,WAAU,UAAA,CAAU;AAAA,MAAA;AAAA,IAAA,IAGtC,gBAAAD;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,SAASJ;AAAA,QACT,UAAU,CAACE;AAAA,QACX,WAAU;AAAA,QACV,cAAW;AAAA,QAEX,UAAA,gBAAAE,EAACE,GAAA,EAAkB,WAAU,UAAA,CAAU;AAAA,MAAA;AAAA,IAAA;AAAA,EACzC,GAEJ;AAEJ;"}
@@ -1,21 +1,7 @@
1
- import React from "react";
2
- import { type SchemaComponent } from "@/components/workspace/ComponentRegistry";
3
- import { ToolCall } from "./ChatToolCall";
4
- export interface ChatMessageData {
5
- id: string;
6
- role: "user" | "assistant" | "system";
7
- content?: string;
8
- components?: SchemaComponent[];
9
- toolCalls?: ToolCall[];
10
- isError?: boolean;
11
- isStreaming?: boolean;
12
- timestamp?: string;
13
- }
14
- export interface ChatMessageProps {
15
- message: ChatMessageData;
16
- avatar?: React.ReactNode;
17
- }
18
1
  /**
19
2
  * Renders a single chat message.
3
+ *
4
+ * @param {Object} message — { id, role, content, components?, toolCalls?, isError?, isStreaming?, timestamp? }
5
+ * @param {React.ReactNode} avatar — custom avatar override
20
6
  */
21
- export default function ChatMessage({ message, avatar }: ChatMessageProps): import("react/jsx-runtime").JSX.Element;
7
+ export default function ChatMessage({ message, avatar }: Object): import("react/jsx-runtime").JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"ChatMessage.js","sources":["../../../../src/components/library/chat/ChatMessage.tsx"],"sourcesContent":["import React from \"react\";\nimport { renderSchemaComponent, type SchemaComponent } from \"@/components/workspace/ComponentRegistry\";\nimport ChatToolCall, { ToolCall } from \"./ChatToolCall\";\nimport { UserCircleIcon, CpuChipIcon } from \"@heroicons/react/24/solid\";\n\nfunction cx(...classes: (string | boolean | undefined)[]): string {\n return classes.filter(Boolean).join(\" \");\n}\n\n/**\n * Lightweight inline formatter for assistant messages.\n * Handles code blocks, inline code, bold, italic, and line breaks.\n */\nfunction formatContent(text: string): React.ReactNode {\n if (!text) return null;\n const parts: React.ReactNode[] = [];\n let key = 0;\n\n const codeBlockRegex = /```(\\w*)\\n?([\\s\\S]*?)```/g;\n let lastIndex = 0;\n let match;\n\n while ((match = codeBlockRegex.exec(text)) !== null) {\n if (match.index > lastIndex) {\n parts.push(\n <span key={key++}>{formatInline(text.slice(lastIndex, match.index))}</span>\n );\n }\n parts.push(\n <pre\n key={key++}\n className=\"my-2 overflow-x-auto rounded-lg border border-slate-200 bg-slate-50 p-3 text-xs leading-relaxed dark:border-slate-700 dark:bg-slate-800/50\"\n >\n <code>{match[2]}</code>\n </pre>\n );\n lastIndex = match.index + match[0].length;\n }\n\n if (lastIndex < text.length) {\n parts.push(\n <span key={key++}>{formatInline(text.slice(lastIndex))}</span>\n );\n }\n\n return parts;\n}\n\nfunction formatInline(text: string): React.ReactNode {\n const tokens = text.split(/(`[^`]+`|\\*\\*[^*]+\\*\\*|\\*[^*]+\\*)/g);\n return tokens.map((token, i) => {\n if (token.startsWith(\"**\") && token.endsWith(\"**\")) {\n return <strong key={i} className=\"font-semibold\">{token.slice(2, -2)}</strong>;\n }\n if (token.startsWith(\"*\") && token.endsWith(\"*\")) {\n return <em key={i}>{token.slice(1, -1)}</em>;\n }\n if (token.startsWith(\"`\") && token.endsWith(\"`\")) {\n return (\n <code\n key={i}\n className=\"rounded bg-slate-100 px-1 py-0.5 text-xs font-mono dark:bg-slate-800\"\n >\n {token.slice(1, -1)}\n </code>\n );\n }\n return token.split(\"\\n\").map((line, j, arr) => (\n <React.Fragment key={`${i}-${j}`}>\n {line}\n {j < arr.length - 1 ? <br /> : null}\n </React.Fragment>\n ));\n });\n}\n\nexport interface ChatMessageData {\n id: string;\n role: \"user\" | \"assistant\" | \"system\";\n content?: string;\n components?: SchemaComponent[];\n toolCalls?: ToolCall[];\n isError?: boolean;\n isStreaming?: boolean;\n timestamp?: string;\n}\n\nexport interface ChatMessageProps {\n message: ChatMessageData;\n avatar?: React.ReactNode;\n}\n\n/**\n * Renders a single chat message.\n */\nexport default function ChatMessage({ message, avatar }: ChatMessageProps) {\n const isUser = message.role === \"user\";\n const isSystem = message.role === \"system\";\n const isAssistant = message.role === \"assistant\";\n\n const defaultAvatar = isUser ? (\n <UserCircleIcon className=\"h-7 w-7 text-slate-400 dark:text-slate-500\" />\n ) : (\n <div className=\"flex h-7 w-7 items-center justify-center rounded-lg bg-brand-100 dark:bg-brand-900/40\">\n <CpuChipIcon className=\"h-4 w-4 text-brand-600 dark:text-brand-400\" />\n </div>\n );\n\n if (isSystem) {\n return (\n <div\n className={cx(\n \"mx-auto max-w-lg rounded-lg px-4 py-2 text-center text-xs\",\n message.isError\n ? \"bg-red-50 text-red-600 dark:bg-red-950/30 dark:text-red-400\"\n : \"text-slate-400 dark:text-slate-500\"\n )}\n >\n {message.content}\n </div>\n );\n }\n\n return (\n <div\n className={cx(\n \"flex gap-3\",\n isUser ? \"flex-row-reverse\" : \"flex-row\"\n )}\n >\n {/* Avatar */}\n <div className=\"shrink-0 pt-0.5\">{avatar ?? defaultAvatar}</div>\n\n {/* Bubble */}\n <div\n className={cx(\n \"max-w-[80%] space-y-2\",\n isUser ? \"items-end\" : \"items-start\"\n )}\n >\n {/* Text content */}\n {message.content ? (\n <div\n className={cx(\n \"rounded-2xl px-4 py-2.5 text-sm leading-relaxed\",\n isUser\n ? \"rounded-tr-md bg-brand-600 text-white dark:bg-brand-500\"\n : \"rounded-tl-md bg-slate-100 text-slate-800 dark:bg-slate-800 dark:text-slate-100\",\n message.isStreaming && \"animate-pulse\"\n )}\n >\n {isAssistant ? formatContent(message.content) : message.content}\n </div>\n ) : null}\n\n {/* Tool calls */}\n {message.toolCalls?.length ? (\n <div className=\"space-y-1.5 pl-1\">\n {message.toolCalls.map((tc, idx) => (\n <ChatToolCall key={tc.id ?? idx} toolCall={tc} />\n ))}\n </div>\n ) : null}\n\n {/* Inline components — render real command center components */}\n {message.components?.length ? (\n <div className=\"w-full space-y-3 pt-1\">\n {message.components.map((comp, idx) =>\n renderSchemaComponent(comp, idx)\n )}\n </div>\n ) : null}\n\n {/* Timestamp */}\n {message.timestamp ? (\n <div\n className={cx(\n \"px-1 text-[10px] text-slate-400 dark:text-slate-500\",\n isUser ? \"text-right\" : \"text-left\"\n )}\n >\n {new Date(message.timestamp).toLocaleTimeString([], {\n hour: \"2-digit\",\n minute: \"2-digit\",\n })}\n </div>\n ) : null}\n </div>\n </div>\n );\n}\n"],"names":["cx","classes","formatContent","text","parts","key","codeBlockRegex","lastIndex","match","jsx","formatInline","token","i","line","j","arr","jsxs","React","ChatMessage","message","avatar","isUser","isSystem","isAssistant","defaultAvatar","UserCircleIcon","CpuChipIcon","tc","idx","ChatToolCall","comp","renderSchemaComponent"],"mappings":"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"}
1
+ {"version":3,"file":"ChatMessage.js","sources":["../../../../src/components/library/chat/ChatMessage.jsx"],"sourcesContent":["import React from \"react\";\nimport { renderSchemaComponent } from \"@/components/workspace/ComponentRegistry\";\nimport ChatToolCall from \"./ChatToolCall\";\nimport { UserCircleIcon, CpuChipIcon } from \"@heroicons/react/24/solid\";\n\nfunction cx(...classes) {\n return classes.filter(Boolean).join(\" \");\n}\n\n/**\n * Lightweight inline formatter for assistant messages.\n * Handles code blocks, inline code, bold, italic, and line breaks.\n */\nfunction formatContent(text) {\n if (!text) return null;\n const parts = [];\n let key = 0;\n\n const codeBlockRegex = /```(\\w*)\\n?([\\s\\S]*?)```/g;\n let lastIndex = 0;\n let match;\n\n while ((match = codeBlockRegex.exec(text)) !== null) {\n if (match.index > lastIndex) {\n parts.push(\n <span key={key++}>{formatInline(text.slice(lastIndex, match.index))}</span>\n );\n }\n parts.push(\n <pre\n key={key++}\n className=\"my-2 overflow-x-auto rounded-lg border border-slate-200 bg-slate-50 p-3 text-xs leading-relaxed dark:border-slate-700 dark:bg-slate-800/50\"\n >\n <code>{match[2]}</code>\n </pre>\n );\n lastIndex = match.index + match[0].length;\n }\n\n if (lastIndex < text.length) {\n parts.push(\n <span key={key++}>{formatInline(text.slice(lastIndex))}</span>\n );\n }\n\n return parts;\n}\n\nfunction formatInline(text) {\n const tokens = text.split(/(`[^`]+`|\\*\\*[^*]+\\*\\*|\\*[^*]+\\*)/g);\n return tokens.map((token, i) => {\n if (token.startsWith(\"**\") && token.endsWith(\"**\")) {\n return <strong key={i} className=\"font-semibold\">{token.slice(2, -2)}</strong>;\n }\n if (token.startsWith(\"*\") && token.endsWith(\"*\")) {\n return <em key={i}>{token.slice(1, -1)}</em>;\n }\n if (token.startsWith(\"`\") && token.endsWith(\"`\")) {\n return (\n <code\n key={i}\n className=\"rounded bg-slate-100 px-1 py-0.5 text-xs font-mono dark:bg-slate-800\"\n >\n {token.slice(1, -1)}\n </code>\n );\n }\n return token.split(\"\\n\").map((line, j, arr) => (\n <React.Fragment key={`${i}-${j}`}>\n {line}\n {j < arr.length - 1 ? <br /> : null}\n </React.Fragment>\n ));\n });\n}\n\n/**\n * Renders a single chat message.\n *\n * @param {Object} message — { id, role, content, components?, toolCalls?, isError?, isStreaming?, timestamp? }\n * @param {React.ReactNode} avatar custom avatar override\n */\nexport default function ChatMessage({ message, avatar }) {\n const isUser = message.role === \"user\";\n const isSystem = message.role === \"system\";\n const isAssistant = message.role === \"assistant\";\n\n const defaultAvatar = isUser ? (\n <UserCircleIcon className=\"h-7 w-7 text-slate-400 dark:text-slate-500\" />\n ) : (\n <div className=\"flex h-7 w-7 items-center justify-center rounded-lg bg-brand-100 dark:bg-brand-900/40\">\n <CpuChipIcon className=\"h-4 w-4 text-brand-600 dark:text-brand-400\" />\n </div>\n );\n\n if (isSystem) {\n return (\n <div\n className={cx(\n \"mx-auto max-w-lg rounded-lg px-4 py-2 text-center text-xs\",\n message.isError\n ? \"bg-red-50 text-red-600 dark:bg-red-950/30 dark:text-red-400\"\n : \"text-slate-400 dark:text-slate-500\"\n )}\n >\n {message.content}\n </div>\n );\n }\n\n return (\n <div\n className={cx(\n \"flex gap-3\",\n isUser ? \"flex-row-reverse\" : \"flex-row\"\n )}\n >\n {/* Avatar */}\n <div className=\"shrink-0 pt-0.5\">{avatar ?? defaultAvatar}</div>\n\n {/* Bubble */}\n <div\n className={cx(\n \"max-w-[80%] space-y-2\",\n isUser ? \"items-end\" : \"items-start\"\n )}\n >\n {/* Text content */}\n {message.content ? (\n <div\n className={cx(\n \"rounded-2xl px-4 py-2.5 text-sm leading-relaxed\",\n isUser\n ? \"rounded-tr-md bg-brand-600 text-white dark:bg-brand-500\"\n : \"rounded-tl-md bg-slate-100 text-slate-800 dark:bg-slate-800 dark:text-slate-100\",\n message.isStreaming && \"animate-pulse\"\n )}\n >\n {isAssistant ? formatContent(message.content) : message.content}\n </div>\n ) : null}\n\n {/* Tool calls */}\n {message.toolCalls?.length ? (\n <div className=\"space-y-1.5 pl-1\">\n {message.toolCalls.map((tc, idx) => (\n <ChatToolCall key={tc.id ?? idx} toolCall={tc} />\n ))}\n </div>\n ) : null}\n\n {/* Inline components — render real command center components */}\n {message.components?.length ? (\n <div className=\"w-full space-y-3 pt-1\">\n {message.components.map((comp, idx) =>\n renderSchemaComponent(comp, idx)\n )}\n </div>\n ) : null}\n\n {/* Timestamp */}\n {message.timestamp ? (\n <div\n className={cx(\n \"px-1 text-[10px] text-slate-400 dark:text-slate-500\",\n isUser ? \"text-right\" : \"text-left\"\n )}\n >\n {new Date(message.timestamp).toLocaleTimeString([], {\n hour: \"2-digit\",\n minute: \"2-digit\",\n })}\n </div>\n ) : null}\n </div>\n </div>\n );\n}\n"],"names":["cx","classes","formatContent","text","parts","key","codeBlockRegex","lastIndex","match","jsx","formatInline","token","i","line","j","arr","jsxs","React","ChatMessage","message","avatar","isUser","isSystem","isAssistant","defaultAvatar","UserCircleIcon","CpuChipIcon","tc","idx","ChatToolCall","comp","renderSchemaComponent"],"mappings":"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"}
@@ -1,14 +1,11 @@
1
- import React from "react";
2
- import { ChatMessageData } from "./ChatMessage";
3
- export interface ChatMessageListProps {
4
- messages?: ChatMessageData[];
5
- isLoading?: boolean;
6
- isStreaming?: boolean;
7
- suggestions?: string[];
8
- onSuggestion?: (text: string) => void;
9
- renderAvatar?: (message: ChatMessageData) => React.ReactNode;
10
- }
11
1
  /**
12
2
  * Scrollable message area with auto-scroll to latest message.
3
+ *
4
+ * @param {Array} messages — array of message objects
5
+ * @param {boolean} isLoading — show typing indicator
6
+ * @param {boolean} isStreaming — agent is streaming (show different indicator text)
7
+ * @param {string[]} suggestions — follow-up suggestions shown after last assistant message
8
+ * @param {Function} onSuggestion — (text) => void
9
+ * @param {Function} renderAvatar — (message) => ReactNode, optional per-message avatar
13
10
  */
14
- export default function ChatMessageList({ messages, isLoading, isStreaming, suggestions, onSuggestion, renderAvatar, }: ChatMessageListProps): import("react/jsx-runtime").JSX.Element;
11
+ export default function ChatMessageList({ messages, isLoading, isStreaming, suggestions, onSuggestion, renderAvatar, }: any[]): import("react/jsx-runtime").JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"ChatMessageList.js","sources":["../../../../src/components/library/chat/ChatMessageList.tsx"],"sourcesContent":["import React, { useRef, useEffect } from \"react\";\nimport ChatMessage, { ChatMessageData } from \"./ChatMessage\";\nimport ChatTypingIndicator from \"./ChatTypingIndicator\";\nimport ChatSuggestions from \"./ChatSuggestions\";\n\nexport interface ChatMessageListProps {\n messages?: ChatMessageData[];\n isLoading?: boolean;\n isStreaming?: boolean;\n suggestions?: string[];\n onSuggestion?: (text: string) => void;\n renderAvatar?: (message: ChatMessageData) => React.ReactNode;\n}\n\n/**\n * Scrollable message area with auto-scroll to latest message.\n */\nexport default function ChatMessageList({\n messages = [],\n isLoading = false,\n isStreaming = false,\n suggestions = [],\n onSuggestion,\n renderAvatar,\n}: ChatMessageListProps) {\n const bottomRef = useRef<HTMLDivElement>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n bottomRef.current?.scrollIntoView({ behavior: \"smooth\" });\n }, [messages.length, isLoading, isStreaming]);\n\n const lastMessage = messages[messages.length - 1];\n const showSuggestions =\n suggestions.length > 0 &&\n !isLoading &&\n !isStreaming &&\n lastMessage?.role === \"assistant\";\n\n return (\n <div\n ref={containerRef}\n className=\"flex-1 overflow-y-auto px-4 py-4\"\n >\n <div className=\"mx-auto max-w-3xl space-y-4\">\n {messages.map((msg) => (\n <ChatMessage\n key={msg.id}\n message={msg}\n avatar={renderAvatar?.(msg)}\n />\n ))}\n\n {showSuggestions ? (\n <div className=\"pl-10\">\n <ChatSuggestions\n suggestions={suggestions}\n onSelect={onSuggestion}\n />\n </div>\n ) : null}\n\n {isLoading && !isStreaming ? (\n <ChatTypingIndicator label=\"Thinking\" />\n ) : null}\n\n {isStreaming ? (\n <ChatTypingIndicator label=\"Generating\" />\n ) : null}\n\n <div ref={bottomRef} />\n </div>\n </div>\n );\n}\n"],"names":["ChatMessageList","messages","isLoading","isStreaming","suggestions","onSuggestion","renderAvatar","bottomRef","useRef","containerRef","useEffect","lastMessage","showSuggestions","jsx","jsxs","msg","ChatMessage","ChatSuggestions","ChatTypingIndicator"],"mappings":";;;;;AAiBA,SAAwBA,EAAgB;AAAA,EACtC,UAAAC,IAAW,CAAA;AAAA,EACX,WAAAC,IAAY;AAAA,EACZ,aAAAC,IAAc;AAAA,EACd,aAAAC,IAAc,CAAA;AAAA,EACd,cAAAC;AAAA,EACA,cAAAC;AACF,GAAyB;AACvB,QAAMC,IAAYC,EAAuB,IAAI,GACvCC,IAAeD,EAAuB,IAAI;AAEhD,EAAAE,EAAU,MAAM;AACd,IAAAH,EAAU,SAAS,eAAe,EAAE,UAAU,UAAU;AAAA,EAC1D,GAAG,CAACN,EAAS,QAAQC,GAAWC,CAAW,CAAC;AAE5C,QAAMQ,IAAcV,EAASA,EAAS,SAAS,CAAC,GAC1CW,IACJR,EAAY,SAAS,KACrB,CAACF,KACD,CAACC,KACDQ,GAAa,SAAS;AAExB,SACE,gBAAAE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAKJ;AAAA,MACL,WAAU;AAAA,MAEV,UAAA,gBAAAK,EAAC,OAAA,EAAI,WAAU,+BACZ,UAAA;AAAA,QAAAb,EAAS,IAAI,CAACc,MACb,gBAAAF;AAAA,UAACG;AAAA,UAAA;AAAA,YAEC,SAASD;AAAA,YACT,QAAQT,IAAeS,CAAG;AAAA,UAAA;AAAA,UAFrBA,EAAI;AAAA,QAAA,CAIZ;AAAA,QAEAH,IACC,gBAAAC,EAAC,OAAA,EAAI,WAAU,SACb,UAAA,gBAAAA;AAAA,UAACI;AAAA,UAAA;AAAA,YACC,aAAAb;AAAA,YACA,UAAUC;AAAA,UAAA;AAAA,QAAA,GAEd,IACE;AAAA,QAEHH,KAAa,CAACC,sBACZe,GAAA,EAAoB,OAAM,YAAW,IACpC;AAAA,QAEHf,IACC,gBAAAU,EAACK,GAAA,EAAoB,OAAM,cAAa,IACtC;AAAA,QAEJ,gBAAAL,EAAC,OAAA,EAAI,KAAKN,EAAA,CAAW;AAAA,MAAA,EAAA,CACvB;AAAA,IAAA;AAAA,EAAA;AAGN;"}
1
+ {"version":3,"file":"ChatMessageList.js","sources":["../../../../src/components/library/chat/ChatMessageList.jsx"],"sourcesContent":["import React, { useRef, useEffect } from \"react\";\nimport ChatMessage from \"./ChatMessage\";\nimport ChatTypingIndicator from \"./ChatTypingIndicator\";\nimport ChatSuggestions from \"./ChatSuggestions\";\n\n/**\n * Scrollable message area with auto-scroll to latest message.\n *\n * @param {Array} messages — array of message objects\n * @param {boolean} isLoading — show typing indicator\n * @param {boolean} isStreaming — agent is streaming (show different indicator text)\n * @param {string[]} suggestions — follow-up suggestions shown after last assistant message\n * @param {Function} onSuggestion (text) => void\n * @param {Function} renderAvatar (message) => ReactNode, optional per-message avatar\n */\nexport default function ChatMessageList({\n messages = [],\n isLoading = false,\n isStreaming = false,\n suggestions = [],\n onSuggestion,\n renderAvatar,\n}) {\n const bottomRef = useRef(null);\n const containerRef = useRef(null);\n\n useEffect(() => {\n bottomRef.current?.scrollIntoView({ behavior: \"smooth\" });\n }, [messages.length, isLoading, isStreaming]);\n\n const lastMessage = messages[messages.length - 1];\n const showSuggestions =\n suggestions.length > 0 &&\n !isLoading &&\n !isStreaming &&\n lastMessage?.role === \"assistant\";\n\n return (\n <div\n ref={containerRef}\n className=\"flex-1 overflow-y-auto px-4 py-4\"\n >\n <div className=\"mx-auto max-w-3xl space-y-4\">\n {messages.map((msg) => (\n <ChatMessage\n key={msg.id}\n message={msg}\n avatar={renderAvatar?.(msg)}\n />\n ))}\n\n {showSuggestions ? (\n <div className=\"pl-10\">\n <ChatSuggestions\n suggestions={suggestions}\n onSelect={onSuggestion}\n />\n </div>\n ) : null}\n\n {isLoading && !isStreaming ? (\n <ChatTypingIndicator label=\"Thinking\" />\n ) : null}\n\n {isStreaming ? (\n <ChatTypingIndicator label=\"Generating\" />\n ) : null}\n\n <div ref={bottomRef} />\n </div>\n </div>\n );\n}\n"],"names":["ChatMessageList","messages","isLoading","isStreaming","suggestions","onSuggestion","renderAvatar","bottomRef","useRef","containerRef","useEffect","lastMessage","showSuggestions","jsx","jsxs","msg","ChatMessage","ChatSuggestions","ChatTypingIndicator"],"mappings":";;;;;AAeA,SAAwBA,EAAgB;AAAA,EACtC,UAAAC,IAAW,CAAA;AAAA,EACX,WAAAC,IAAY;AAAA,EACZ,aAAAC,IAAc;AAAA,EACd,aAAAC,IAAc,CAAA;AAAA,EACd,cAAAC;AAAA,EACA,cAAAC;AACF,GAAG;AACD,QAAMC,IAAYC,EAAO,IAAI,GACvBC,IAAeD,EAAO,IAAI;AAEhC,EAAAE,EAAU,MAAM;AACd,IAAAH,EAAU,SAAS,eAAe,EAAE,UAAU,UAAU;AAAA,EAC1D,GAAG,CAACN,EAAS,QAAQC,GAAWC,CAAW,CAAC;AAE5C,QAAMQ,IAAcV,EAASA,EAAS,SAAS,CAAC,GAC1CW,IACJR,EAAY,SAAS,KACrB,CAACF,KACD,CAACC,KACDQ,GAAa,SAAS;AAExB,SACE,gBAAAE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAKJ;AAAA,MACL,WAAU;AAAA,MAEV,UAAA,gBAAAK,EAAC,OAAA,EAAI,WAAU,+BACZ,UAAA;AAAA,QAAAb,EAAS,IAAI,CAACc,MACb,gBAAAF;AAAA,UAACG;AAAA,UAAA;AAAA,YAEC,SAASD;AAAA,YACT,QAAQT,IAAeS,CAAG;AAAA,UAAA;AAAA,UAFrBA,EAAI;AAAA,QAAA,CAIZ;AAAA,QAEAH,IACC,gBAAAC,EAAC,OAAA,EAAI,WAAU,SACb,UAAA,gBAAAA;AAAA,UAACI;AAAA,UAAA;AAAA,YACC,aAAAb;AAAA,YACA,UAAUC;AAAA,UAAA;AAAA,QAAA,GAEd,IACE;AAAA,QAEHH,KAAa,CAACC,sBACZe,GAAA,EAAoB,OAAM,YAAW,IACpC;AAAA,QAEHf,IACC,gBAAAU,EAACK,GAAA,EAAoB,OAAM,cAAa,IACtC;AAAA,QAEJ,gBAAAL,EAAC,OAAA,EAAI,KAAKN,EAAA,CAAW;AAAA,MAAA,EAAA,CACvB;AAAA,IAAA;AAAA,EAAA;AAGN;"}