@flikk/ui 1.0.0-beta.30 → 1.0.0-beta.32

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 (610) hide show
  1. package/CHANGELOG.md +375 -5
  2. package/dist/components/ai/AgentRequest/AgentRequest.animations.d.ts +25 -0
  3. package/dist/components/ai/AgentRequest/AgentRequest.animations.js +81 -0
  4. package/dist/components/ai/AgentRequest/AgentRequest.d.ts +3 -0
  5. package/dist/components/ai/AgentRequest/AgentRequest.js +435 -0
  6. package/dist/components/ai/AgentRequest/AgentRequest.theme.d.ts +2 -0
  7. package/dist/components/ai/AgentRequest/AgentRequest.theme.js +106 -0
  8. package/dist/components/ai/AgentRequest/AgentRequest.types.d.ts +241 -0
  9. package/dist/components/ai/AgentRequest/index.d.ts +3 -0
  10. package/dist/components/ai/AgentStatus/AgentStatus.d.ts +3 -0
  11. package/dist/components/ai/AgentStatus/AgentStatus.js +144 -0
  12. package/dist/components/ai/AgentStatus/AgentStatus.theme.d.ts +2 -0
  13. package/dist/components/ai/AgentStatus/AgentStatus.theme.js +37 -0
  14. package/dist/components/ai/AgentStatus/AgentStatus.types.d.ts +116 -0
  15. package/dist/components/ai/AgentStatus/index.d.ts +3 -0
  16. package/dist/components/ai/CodeBlock/CodeBlock.js +3 -3
  17. package/dist/components/ai/CodeBlock/CodeBlock.theme.js +2 -2
  18. package/dist/components/ai/PromptInput/PromptInput.js +13 -14
  19. package/dist/components/ai/PromptInput/PromptInput.theme.js +3 -3
  20. package/dist/components/ai/PromptInput/VoiceRecorder.js +3 -3
  21. package/dist/components/ai/PromptSuggestion/PromptSuggestion.theme.js +2 -2
  22. package/dist/components/ai/Reasoning/Reasoning.d.ts +5 -0
  23. package/dist/components/ai/Reasoning/Reasoning.js +40 -0
  24. package/dist/components/ai/Reasoning/Reasoning.theme.d.ts +6 -0
  25. package/dist/components/ai/Reasoning/Reasoning.theme.js +36 -0
  26. package/dist/components/ai/Reasoning/Reasoning.types.d.ts +73 -0
  27. package/dist/components/ai/Reasoning/ReasoningTrace.d.ts +11 -0
  28. package/dist/components/ai/Reasoning/ReasoningTrace.js +84 -0
  29. package/dist/components/ai/Reasoning/index.d.ts +3 -0
  30. package/dist/components/ai/SourceCitation/SourceCitation.d.ts +4 -0
  31. package/dist/components/ai/SourceCitation/SourceCitation.js +29 -0
  32. package/dist/components/ai/SourceCitation/SourceCitation.theme.d.ts +2 -0
  33. package/dist/components/ai/SourceCitation/SourceCitation.theme.js +23 -0
  34. package/dist/components/ai/SourceCitation/SourceCitation.types.d.ts +55 -0
  35. package/dist/components/ai/SourceCitation/index.d.ts +3 -0
  36. package/dist/components/ai/StreamingResponse/AnimatedText.d.ts +7 -0
  37. package/dist/components/ai/StreamingResponse/AnimatedText.js +8 -7
  38. package/dist/components/ai/StreamingResponse/ErrorDisplay.js +2 -2
  39. package/dist/components/ai/StreamingResponse/MarkdownRenderer.d.ts +5 -0
  40. package/dist/components/ai/StreamingResponse/MarkdownRenderer.js +4 -4
  41. package/dist/components/ai/StreamingResponse/StreamingCursor.d.ts +2 -2
  42. package/dist/components/ai/StreamingResponse/StreamingCursor.js +10 -7
  43. package/dist/components/ai/StreamingResponse/StreamingResponse.animations.d.ts +10 -0
  44. package/dist/components/ai/StreamingResponse/StreamingResponse.animations.js +59 -33
  45. package/dist/components/ai/StreamingResponse/StreamingResponse.js +14 -10
  46. package/dist/components/ai/StreamingResponse/StreamingResponse.theme.js +3 -1
  47. package/dist/components/ai/StreamingResponse/StreamingResponse.types.d.ts +33 -2
  48. package/dist/components/ai/StreamingResponse/StreamingSurface.d.ts +13 -0
  49. package/dist/components/ai/StreamingResponse/StreamingSurface.js +38 -0
  50. package/dist/components/ai/StreamingResponse/WordAnimationContext.d.ts +5 -0
  51. package/dist/components/ai/StreamingResponse/WordAnimationContext.js +5 -4
  52. package/dist/components/ai/StreamingResponse/index.d.ts +4 -2
  53. package/dist/components/ai/TokenCounter/TokenCounter.js +2 -2
  54. package/dist/components/ai/TokenCounter/TokenCounter.theme.js +1 -1
  55. package/dist/components/ai/index.d.ts +6 -2
  56. package/dist/components/ai/index.js +10 -3
  57. package/dist/components/ai/shared/StatusIndicator.d.ts +8 -0
  58. package/dist/components/ai/shared/StatusIndicator.js +34 -0
  59. package/dist/components/canvas/BaseNode.js +1 -1
  60. package/dist/components/canvas/CanvasToolbar.js +2 -3
  61. package/dist/components/canvas/Edge.js +2 -2
  62. package/dist/components/canvas/NodeControls.js +2 -3
  63. package/dist/components/canvas/NodeRenderer.js +4 -4
  64. package/dist/components/charts/ActivityRings/ActivityRings.js +4 -4
  65. package/dist/components/charts/ActivityRings/ActivityRings.theme.js +1 -1
  66. package/dist/components/charts/AreaChart/AreaChart.js +24 -35
  67. package/dist/components/charts/AreaChart/AreaChart.theme.d.ts +1 -6
  68. package/dist/components/charts/AreaChart/AreaChart.theme.js +10 -22
  69. package/dist/components/charts/AreaChart/AreaChart.types.d.ts +18 -11
  70. package/dist/components/charts/AreaChart/AreaChart.types.js +10 -3
  71. package/dist/components/charts/AreaChart/index.d.ts +1 -1
  72. package/dist/components/charts/BarChart/BarChart.js +13 -32
  73. package/dist/components/charts/BarChart/BarChart.types.d.ts +20 -16
  74. package/dist/components/charts/BarChart/BarChart.types.js +11 -4
  75. package/dist/components/charts/ComboChart/BarRenderer.js +10 -7
  76. package/dist/components/charts/ComboChart/BarRenderer.types.d.ts +1 -1
  77. package/dist/components/charts/ComboChart/ComboChart.js +11 -24
  78. package/dist/components/charts/ComboChart/ComboChart.types.d.ts +15 -13
  79. package/dist/components/charts/ComboChart/ComboChart.types.js +14 -2
  80. package/dist/components/charts/ComboChart/ComboChartCanvas.js +1 -1
  81. package/dist/components/charts/ComboChart/LineRenderer.js +16 -11
  82. package/dist/components/charts/ComboChart/LineRenderer.types.d.ts +1 -1
  83. package/dist/components/charts/DonutChart/DonutChart.theme.js +4 -4
  84. package/dist/components/charts/DonutChart/MultiSegmentDonutChart.theme.js +1 -1
  85. package/dist/components/charts/Heatmap/Heatmap.js +49 -42
  86. package/dist/components/charts/Heatmap/Heatmap.theme.d.ts +6 -2
  87. package/dist/components/charts/Heatmap/Heatmap.theme.js +20 -8
  88. package/dist/components/charts/Heatmap/Heatmap.types.d.ts +49 -82
  89. package/dist/components/charts/Heatmap/HeatmapCell.js +30 -81
  90. package/dist/components/charts/Heatmap/HeatmapLegend.d.ts +7 -6
  91. package/dist/components/charts/Heatmap/HeatmapLegend.js +6 -6
  92. package/dist/components/charts/Heatmap/index.d.ts +1 -1
  93. package/dist/components/charts/Heatmap/utils/heatmapUtils.d.ts +7 -12
  94. package/dist/components/charts/Heatmap/utils/heatmapUtils.js +16 -61
  95. package/dist/components/charts/Heatmap/utils/heatmapUtils.test.d.ts +1 -0
  96. package/dist/components/charts/HorizontalBarChart/HorizontalBarChart.d.ts +16 -0
  97. package/dist/components/charts/HorizontalBarChart/HorizontalBarChart.js +237 -0
  98. package/dist/components/charts/HorizontalBarChart/HorizontalBarChart.types.d.ts +62 -0
  99. package/dist/components/charts/HorizontalBarChart/HorizontalBarChart.types.js +21 -0
  100. package/dist/components/charts/HorizontalBarChart/index.d.ts +3 -0
  101. package/dist/components/charts/LineChart/LineChart.js +11 -28
  102. package/dist/components/charts/LineChart/LineChart.types.d.ts +11 -14
  103. package/dist/components/charts/LineChart/LineChart.types.js +11 -3
  104. package/dist/components/charts/LollipopChart/LollipopChart.d.ts +3 -0
  105. package/dist/components/charts/LollipopChart/LollipopChart.js +361 -0
  106. package/dist/components/charts/LollipopChart/LollipopChart.types.d.ts +42 -0
  107. package/dist/components/charts/LollipopChart/LollipopChart.types.js +12 -0
  108. package/dist/components/charts/LollipopChart/index.d.ts +3 -0
  109. package/dist/components/charts/RadarChart/RadarChart.js +1 -1
  110. package/dist/components/charts/StackedBarChart/StackedBarChart.js +151 -133
  111. package/dist/components/charts/StackedBarChart/StackedBarChart.types.d.ts +20 -18
  112. package/dist/components/charts/StackedBarChart/StackedBarChart.types.js +10 -4
  113. package/dist/components/charts/hooks/useChartAccessibility.d.ts +1 -1
  114. package/dist/components/charts/hooks/useChartAccessibility.js +12 -6
  115. package/dist/components/charts/hooks/useTooltipPosition.js +18 -6
  116. package/dist/components/charts/index.d.ts +10 -8
  117. package/dist/components/charts/index.js +8 -4
  118. package/dist/components/charts/shared/ChartAxis/CategoryYAxis.d.ts +14 -0
  119. package/dist/components/charts/shared/ChartAxis/CategoryYAxis.js +35 -0
  120. package/dist/components/charts/shared/ChartAxis/ChartAxis.types.d.ts +69 -8
  121. package/dist/components/charts/shared/ChartAxis/ValueXAxis.d.ts +14 -0
  122. package/dist/components/charts/shared/ChartAxis/ValueXAxis.js +64 -0
  123. package/dist/components/charts/shared/ChartAxis/XAxis.js +1 -1
  124. package/dist/components/charts/shared/ChartAxis/YAxis.js +2 -2
  125. package/dist/components/charts/shared/ChartAxis/index.d.ts +3 -1
  126. package/dist/components/charts/shared/ChartGrid/HorizontalGrid.d.ts +0 -2
  127. package/dist/components/charts/shared/ChartGrid/HorizontalGrid.js +1 -1
  128. package/dist/components/charts/shared/ChartGrid/VerticalGrid.d.ts +29 -0
  129. package/dist/components/charts/shared/ChartGrid/VerticalGrid.js +26 -0
  130. package/dist/components/charts/shared/ChartGrid/index.d.ts +2 -0
  131. package/dist/components/charts/shared/ChartMarker/ChartMarker.js +7 -1
  132. package/dist/components/charts/shared/ChartText/ChartText.theme.js +1 -1
  133. package/dist/components/charts/shared/index.d.ts +1 -1
  134. package/dist/components/charts/theme/chart.theme.js +21 -26
  135. package/dist/components/charts/types/chart.types.d.ts +9 -5
  136. package/dist/components/charts/types/chart.types.js +1 -7
  137. package/dist/components/charts/utils/animation-utils.d.ts +12 -7
  138. package/dist/components/charts/utils/animation-utils.js +19 -21
  139. package/dist/components/charts/utils/bar-emphasis.d.ts +32 -3
  140. package/dist/components/charts/utils/bar-emphasis.js +24 -8
  141. package/dist/components/charts/utils/index.d.ts +1 -0
  142. package/dist/components/charts/utils/series-color.d.ts +7 -0
  143. package/dist/components/charts/utils/series-color.js +20 -0
  144. package/dist/components/core/Accordion/Accordion.theme.js +3 -3
  145. package/dist/components/core/Accordion/AccordionTrigger.js +2 -2
  146. package/dist/components/core/Alert/Alert.animations.d.ts +11 -3
  147. package/dist/components/core/Alert/Alert.animations.js +30 -8
  148. package/dist/components/core/Alert/Alert.js +23 -9
  149. package/dist/components/core/Alert/Alert.theme.js +1 -1
  150. package/dist/components/core/Alert/Alert.types.d.ts +4 -2
  151. package/dist/components/core/AlertDialog/AlertDialog.js +2 -2
  152. package/dist/components/core/Avatar/Avatar.js +50 -42
  153. package/dist/components/core/Avatar/Avatar.theme.d.ts +8 -4
  154. package/dist/components/core/Avatar/Avatar.theme.js +64 -8
  155. package/dist/components/core/Avatar/Avatar.types.d.ts +13 -2
  156. package/dist/components/core/Avatar/index.d.ts +1 -1
  157. package/dist/components/core/AvatarGroup/AvatarGroup.js +6 -8
  158. package/dist/components/core/AvatarGroup/AvatarGroup.theme.d.ts +1 -2
  159. package/dist/components/core/AvatarGroup/AvatarGroup.theme.js +2 -6
  160. package/dist/components/core/AvatarGroup/AvatarGroup.types.d.ts +0 -6
  161. package/dist/components/core/AvatarGroup/index.d.ts +1 -1
  162. package/dist/components/core/Badge/Badge.animations.d.ts +0 -5
  163. package/dist/components/core/Badge/Badge.animations.js +5 -82
  164. package/dist/components/core/Badge/Badge.d.ts +7 -4
  165. package/dist/components/core/Badge/Badge.js +33 -65
  166. package/dist/components/core/Badge/Badge.theme.js +26 -24
  167. package/dist/components/core/Badge/Badge.types.d.ts +18 -34
  168. package/dist/components/core/Breadcrumbs/Breadcrumbs.theme.d.ts +1 -4
  169. package/dist/components/core/Breadcrumbs/Breadcrumbs.theme.js +6 -6
  170. package/dist/components/core/Button/Button.js +14 -58
  171. package/dist/components/core/Button/Button.theme.d.ts +2 -0
  172. package/dist/components/core/Button/Button.theme.js +35 -22
  173. package/dist/components/core/Button/Button.types.d.ts +26 -13
  174. package/dist/components/core/Button/index.d.ts +0 -2
  175. package/dist/components/core/Calendar/Calendar.js +20 -5
  176. package/dist/components/core/Calendar/Calendar.theme.js +15 -23
  177. package/dist/components/core/Calendar/Calendar.types.d.ts +0 -1
  178. package/dist/components/core/Calendar/CalendarMini/CalendarMini.js +3 -3
  179. package/dist/components/core/Calendar/CalendarMini/CalendarMini.theme.js +2 -2
  180. package/dist/components/core/Card/Card.js +7 -2
  181. package/dist/components/core/Card/Card.theme.js +40 -4
  182. package/dist/components/core/Card/Card.types.d.ts +20 -0
  183. package/dist/components/core/Card/CardBody.js +9 -1
  184. package/dist/components/core/Card/CardContext.d.ts +13 -0
  185. package/dist/components/core/Card/CardContext.js +14 -0
  186. package/dist/components/core/Card/CardFooter.js +1 -1
  187. package/dist/components/core/Card/CardHeader.js +4 -1
  188. package/dist/components/core/CommandPalette/CommandPalette.js +5 -4
  189. package/dist/components/core/CommandPalette/CommandPalette.theme.js +3 -7
  190. package/dist/components/core/CommandPalette/CommandPalette.types.d.ts +2 -0
  191. package/dist/components/core/ContextMenu/ContextMenu.theme.js +4 -3
  192. package/dist/components/core/ContextMenu/ContextMenu.types.d.ts +8 -1
  193. package/dist/components/core/ContextMenu/ContextMenuItem.js +2 -2
  194. package/dist/components/core/ContextMenu/ContextMenuSub.d.ts +11 -1
  195. package/dist/components/core/ContextMenu/ContextMenuSub.js +35 -22
  196. package/dist/components/core/ContextMenu/ContextMenuSubBody.js +14 -3
  197. package/dist/components/core/ContextMenu/ContextMenuSubTrigger.js +22 -9
  198. package/dist/components/core/DragDrop/DragDrop.theme.js +2 -2
  199. package/dist/components/core/Drawer/Drawer.theme.js +7 -4
  200. package/dist/components/core/Drawer/DrawerHeader.js +2 -3
  201. package/dist/components/core/Dropdown/Dropdown.theme.js +3 -1
  202. package/dist/components/core/Dropdown/DropdownItem.js +2 -2
  203. package/dist/components/core/Dropdown/DropdownMenu.js +22 -7
  204. package/dist/components/core/Dropdown/DropdownTrigger.js +16 -5
  205. package/dist/components/core/HeroCard/HeroCard.theme.js +5 -2
  206. package/dist/components/core/Kbd/Kbd.theme.js +4 -2
  207. package/dist/components/core/Link/Link.js +7 -5
  208. package/dist/components/core/Masonry/Masonry.theme.js +1 -1
  209. package/dist/components/core/MenuItem/MenuItem.js +2 -1
  210. package/dist/components/core/MenuItem/MenuItem.theme.js +13 -1
  211. package/dist/components/core/Message/Message.js +4 -2
  212. package/dist/components/core/Message/Message.theme.js +8 -10
  213. package/dist/components/core/Message/MessageAudio.js +2 -2
  214. package/dist/components/core/Message/MessageFile.js +2 -2
  215. package/dist/components/core/Message/MessageLink.js +2 -2
  216. package/dist/components/core/Message/MessageStatusIndicator.js +5 -5
  217. package/dist/components/core/Modal/Modal.animations.d.ts +1 -1
  218. package/dist/components/core/Modal/Modal.animations.js +50 -11
  219. package/dist/components/core/Modal/Modal.d.ts +1 -1
  220. package/dist/components/core/Modal/Modal.js +6 -2
  221. package/dist/components/core/Modal/Modal.theme.js +9 -4
  222. package/dist/components/core/Modal/ModalHeader.js +2 -3
  223. package/dist/components/core/ModalStack/ModalStackModal.js +4 -2
  224. package/dist/components/core/NavItem/NavItem.js +8 -7
  225. package/dist/components/core/NavItem/NavItem.theme.js +1 -1
  226. package/dist/components/core/OfflineIndicator/OfflineIndicator.animations.d.ts +22 -0
  227. package/dist/components/core/OfflineIndicator/OfflineIndicator.animations.js +54 -0
  228. package/dist/components/core/OfflineIndicator/OfflineIndicator.js +23 -24
  229. package/dist/components/core/OfflineIndicator/OfflineIndicator.theme.js +27 -6
  230. package/dist/components/core/OfflineIndicator/OfflineIndicator.types.d.ts +17 -0
  231. package/dist/components/core/PageHeading/PageHeading.theme.js +1 -1
  232. package/dist/components/core/PageHeading/PageHeadingBackButton.js +2 -2
  233. package/dist/components/core/Pagination/Pagination.js +3 -3
  234. package/dist/components/core/Pagination/Pagination.theme.js +5 -5
  235. package/dist/components/core/Pill/Pill.js +5 -2
  236. package/dist/components/core/Pill/Pill.theme.js +9 -5
  237. package/dist/components/core/Popover/PopoverBody.js +16 -5
  238. package/dist/components/core/Progress/Progress.d.ts +0 -25
  239. package/dist/components/core/Progress/Progress.js +79 -11
  240. package/dist/components/core/Progress/Progress.theme.js +17 -0
  241. package/dist/components/core/Progress/Progress.types.d.ts +47 -1
  242. package/dist/components/core/Rating/Rating.js +4 -5
  243. package/dist/components/core/Rating/Rating.theme.js +2 -2
  244. package/dist/components/core/Rating/Rating.types.d.ts +3 -2
  245. package/dist/components/core/ScrollArea/ScrollArea.js +1 -1
  246. package/dist/components/core/ScrollArea/ScrollArea.theme.js +1 -1
  247. package/dist/components/core/Segmented/Segmented.theme.js +10 -7
  248. package/dist/components/core/Segmented/SegmentedContext.js +1 -0
  249. package/dist/components/core/Sidebar/Sidebar.js +5 -2
  250. package/dist/components/core/Sidebar/Sidebar.theme.js +2 -2
  251. package/dist/components/core/Sidebar/Sidebar.types.d.ts +4 -2
  252. package/dist/components/core/Sidebar/SidebarContent.js +1 -1
  253. package/dist/components/core/Sidebar/SidebarHeader.js +3 -3
  254. package/dist/components/core/Sidebar/SidebarMobileTrigger.js +2 -2
  255. package/dist/components/core/Sidebar/SidebarSearch.js +4 -4
  256. package/dist/components/core/Sidebar/SidebarToggle.js +3 -3
  257. package/dist/components/core/Sidebar/SidebarUserProfile.js +3 -3
  258. package/dist/components/core/Sortable/Sortable.js +2 -2
  259. package/dist/components/core/Sortable/Sortable.theme.js +1 -1
  260. package/dist/components/core/Tabs/Tabs.theme.js +1 -1
  261. package/dist/components/core/Tag/Tag.js +2 -2
  262. package/dist/components/core/Tag/Tag.theme.js +5 -3
  263. package/dist/components/core/Toast/Toast.js +3 -3
  264. package/dist/components/core/Toast/Toast.types.d.ts +1 -1
  265. package/dist/components/core/Toast/ToastProvider.js +1 -1
  266. package/dist/components/core/Toast/useToast.js +5 -5
  267. package/dist/components/core/Tooltip/Tooltip.d.ts +1 -1
  268. package/dist/components/core/Tooltip/Tooltip.js +42 -10
  269. package/dist/components/core/Tooltip/Tooltip.types.d.ts +25 -0
  270. package/dist/components/core/Tree/Tree.js +2 -2
  271. package/dist/components/core/Tree/Tree.theme.js +1 -1
  272. package/dist/components/core/index.d.ts +0 -2
  273. package/dist/components/core/index.js +0 -4
  274. package/dist/components/core/shared/ChartTooltip/ChartTooltip.animations.d.ts +4 -0
  275. package/dist/components/core/shared/ChartTooltip/ChartTooltip.animations.js +20 -0
  276. package/dist/components/{charts → core}/shared/ChartTooltip/ChartTooltip.js +1 -1
  277. package/dist/components/core/shared/Ripple.d.ts +16 -0
  278. package/dist/components/core/shared/Ripple.js +141 -0
  279. package/dist/components/core/shared/interaction.animations.d.ts +51 -0
  280. package/dist/components/core/shared/interaction.animations.js +59 -0
  281. package/dist/components/data-display/Feed/Feed.js +2 -2
  282. package/dist/components/data-display/GanttChart/GanttChart.theme.js +7 -7
  283. package/dist/components/data-display/GanttChart/GanttChartPanel.js +2 -2
  284. package/dist/components/data-display/GanttChart/GanttTableGroupRow.js +3 -3
  285. package/dist/components/data-display/GanttChart/GanttTaskBar.js +1 -1
  286. package/dist/components/data-display/GanttChart/GanttTaskContextMenu.js +2 -2
  287. package/dist/components/data-display/GanttChart/GanttTimelineHeader.js +1 -1
  288. package/dist/components/data-display/GanttChart/GanttToolbar.js +2 -3
  289. package/dist/components/data-display/KPI/KPI.js +12 -21
  290. package/dist/components/data-display/KPI/KPI.theme.js +8 -4
  291. package/dist/components/data-display/Metric/Metric.js +2 -2
  292. package/dist/components/data-display/Metric/Metric.theme.js +25 -8
  293. package/dist/components/data-display/Metric/Metric.types.d.ts +1 -1
  294. package/dist/components/data-display/Table/Table.theme.js +11 -11
  295. package/dist/components/data-display/Table/TableActions.js +2 -2
  296. package/dist/components/data-display/Table/TableActionsMenu.js +1 -1
  297. package/dist/components/data-display/Table/TableColumnManager.js +2 -3
  298. package/dist/components/data-display/Table/TableContext.js +1 -0
  299. package/dist/components/data-display/Table/TableDeclarative.js +3 -3
  300. package/dist/components/data-display/Table/TableFilter.js +13 -6
  301. package/dist/components/data-display/Table/TableHeader.js +3 -3
  302. package/dist/components/data-display/Table/TableRow.js +2 -2
  303. package/dist/components/data-display/Table/TableSelectionHeader.js +4 -4
  304. package/dist/components/data-display/Timeline/Timeline.theme.js +1 -1
  305. package/dist/components/data-display/Timeline/TimelineMarker.js +2 -2
  306. package/dist/components/effects/CustomCursor/CustomCursor.d.ts +1 -1
  307. package/dist/components/effects/CustomCursor/CustomCursor.js +3 -3
  308. package/dist/components/effects/CustomCursor/CustomCursor.theme.js +4 -4
  309. package/dist/components/effects/DotPattern/DotPattern.js +6 -0
  310. package/dist/components/effects/DotPattern/DotPattern.types.d.ts +4 -2
  311. package/dist/components/effects/MeshGradient/MeshGradient.utils.d.ts +1 -1
  312. package/dist/components/effects/MeshGradient/MeshGradient.utils.js +1 -1
  313. package/dist/components/effects/Neumorphic/InsetCircleButton.js +1 -1
  314. package/dist/components/effects/Overlay/Overlay.js +7 -3
  315. package/dist/components/effects/index.d.ts +0 -32
  316. package/dist/components/effects/index.js +0 -16
  317. package/dist/components/effects/shared/ShaderCanvas/ShaderCanvas.d.ts +0 -2
  318. package/dist/components/effects/shared/ShaderCanvas/ShaderCanvas.js +1 -93
  319. package/dist/components/effects/shared/ShaderCanvas/ShaderCanvas.types.d.ts +0 -10
  320. package/dist/components/effects/shared/ShaderCanvas/index.d.ts +1 -1
  321. package/dist/components/effects/shared/index.d.ts +1 -3
  322. package/dist/components/effects/shared/shaderNoise.glsl.d.ts +1 -1
  323. package/dist/components/effects/shared/shaderNoise.glsl.js +2 -11
  324. package/dist/components/forms/Checkbox/Checkbox.js +2 -1
  325. package/dist/components/forms/Checkbox/Checkbox.theme.js +3 -3
  326. package/dist/components/forms/ColorPicker/ColorPickerEyeDropper.js +2 -2
  327. package/dist/components/forms/ColorPicker/ColorPickerGradient.js +2 -2
  328. package/dist/components/forms/ColorPicker/ColorPickerHeader.js +2 -2
  329. package/dist/components/forms/ColorPicker/ColorPickerImage.js +3 -3
  330. package/dist/components/forms/ColorPicker/ColorPickerInput.js +2 -2
  331. package/dist/components/forms/ColorPicker/ColorPickerPresets.js +2 -2
  332. package/dist/components/forms/ColorPicker/ColorPickerSavedColors.js +2 -2
  333. package/dist/components/forms/Combobox/Combobox.js +5 -3
  334. package/dist/components/forms/Combobox/Combobox.theme.js +2 -2
  335. package/dist/components/forms/DatePicker/DatePicker.animations.js +16 -25
  336. package/dist/components/forms/DatePicker/DatePicker.theme.js +2 -2
  337. package/dist/components/forms/DatePicker/DatePickerBody.js +1 -1
  338. package/dist/components/forms/DatePicker/DatePickerTrigger.js +2 -2
  339. package/dist/components/forms/DateRangePicker/DateRangePicker.theme.js +4 -4
  340. package/dist/components/forms/DateRangePicker/DateRangePickerBody.js +1 -1
  341. package/dist/components/forms/DateRangePicker/DateRangePickerContext.js +1 -0
  342. package/dist/components/forms/DateRangePicker/DateRangePickerPresets.js +2 -2
  343. package/dist/components/forms/DateRangePicker/DateRangePickerTrigger.js +2 -2
  344. package/dist/components/forms/FileUpload/FileUpload.js +4 -4
  345. package/dist/components/forms/FileUpload/FileUpload.theme.js +7 -3
  346. package/dist/components/forms/FileUpload/FileUploadProgress.js +7 -7
  347. package/dist/components/forms/FileUpload/FileUploadProgress.theme.js +1 -1
  348. package/dist/components/forms/Input/Input.js +6 -7
  349. package/dist/components/forms/Input/Input.theme.js +19 -15
  350. package/dist/components/forms/InputAddress/InputAddress.js +10 -3
  351. package/dist/components/forms/InputAddress/InputAddress.types.d.ts +2 -2
  352. package/dist/components/forms/InputCounter/InputCounter.js +3 -3
  353. package/dist/components/forms/InputOTP/InputOTP.d.ts +3 -12
  354. package/dist/components/forms/InputOTP/InputOTP.js +140 -151
  355. package/dist/components/forms/InputOTP/InputOTP.theme.d.ts +5 -1
  356. package/dist/components/forms/InputOTP/InputOTP.theme.js +40 -5
  357. package/dist/components/forms/InputOTP/InputOTP.types.d.ts +45 -2
  358. package/dist/components/forms/InputOTP/index.d.ts +1 -1
  359. package/dist/components/forms/InputTag/InputTag.js +5 -5
  360. package/dist/components/forms/InputTag/InputTag.theme.js +1 -2
  361. package/dist/components/forms/Mention/Mention.theme.js +3 -5
  362. package/dist/components/forms/Radio/Radio.js +3 -2
  363. package/dist/components/forms/Radio/Radio.theme.js +3 -3
  364. package/dist/components/forms/RichTextEditor/RichTextEditor.d.ts +12 -16
  365. package/dist/components/forms/RichTextEditor/RichTextEditor.js +165 -1681
  366. package/dist/components/forms/RichTextEditor/RichTextEditor.theme.d.ts +12 -56
  367. package/dist/components/forms/RichTextEditor/RichTextEditor.theme.js +60 -118
  368. package/dist/components/forms/RichTextEditor/RichTextEditor.types.d.ts +62 -126
  369. package/dist/components/forms/RichTextEditor/RichTextLinkField.d.ts +18 -0
  370. package/dist/components/forms/RichTextEditor/RichTextLinkField.js +46 -0
  371. package/dist/components/forms/RichTextEditor/RichTextToolbar.d.ts +15 -0
  372. package/dist/components/forms/RichTextEditor/RichTextToolbar.js +93 -0
  373. package/dist/components/forms/RichTextEditor/editorCommands.d.ts +50 -0
  374. package/dist/components/forms/RichTextEditor/editorCommands.js +58 -0
  375. package/dist/components/forms/RichTextEditor/editorState.d.ts +19 -0
  376. package/dist/components/forms/RichTextEditor/editorState.js +103 -0
  377. package/dist/components/forms/RichTextEditor/index.d.ts +5 -3
  378. package/dist/components/forms/RichTextEditor/sanitizeHtml.d.ts +38 -0
  379. package/dist/components/forms/RichTextEditor/sanitizeHtml.js +179 -0
  380. package/dist/components/forms/RichTextEditor/sanitizeHtml.test.d.ts +1 -0
  381. package/dist/components/forms/Select/Select.d.ts +5 -1
  382. package/dist/components/forms/Select/Select.js +14 -13
  383. package/dist/components/forms/Select/Select.theme.js +4 -4
  384. package/dist/components/forms/Select/Select.types.d.ts +74 -8
  385. package/dist/components/forms/Select/useSelectState.d.ts +9 -3
  386. package/dist/components/forms/Select/useSelectState.js +4 -1
  387. package/dist/components/forms/SelectableCard/SelectableCard.animations.d.ts +1 -2
  388. package/dist/components/forms/SelectableCard/SelectableCard.animations.js +6 -7
  389. package/dist/components/forms/SelectableCard/SelectableCard.js +3 -2
  390. package/dist/components/forms/SelectableCard/SelectableCard.theme.js +1 -1
  391. package/dist/components/forms/Signature/Signature.js +1 -1
  392. package/dist/components/forms/Slider/Slider.js +24 -11
  393. package/dist/components/forms/Slider/Slider.theme.js +9 -3
  394. package/dist/components/forms/Switch/Switch.theme.js +3 -3
  395. package/dist/components/forms/TimePicker/TimePicker.theme.js +7 -8
  396. package/dist/components/forms/TimePicker/TimePickerContent.js +1 -1
  397. package/dist/components/forms/TimePicker/TimePickerTrigger.js +3 -3
  398. package/dist/components/forms/forms.theme.js +38 -13
  399. package/dist/components/forms/index.js +2 -1
  400. package/dist/components/generative/FormShell.d.ts +22 -0
  401. package/dist/components/generative/FormShell.js +102 -0
  402. package/dist/components/generative/GenerativeView.d.ts +52 -1
  403. package/dist/components/generative/GenerativeView.js +203 -11
  404. package/dist/components/generative/actions.d.ts +5 -0
  405. package/dist/components/generative/ai-sdk/index.d.ts +1 -0
  406. package/dist/components/generative/ai-sdk/index.js +1 -0
  407. package/dist/components/generative/ai-sdk/useGenerativeChat.d.ts +52 -0
  408. package/dist/components/generative/ai-sdk/useGenerativeChat.js +73 -0
  409. package/dist/components/generative/ai-sdk/useGenerativeChat.test.d.ts +1 -0
  410. package/dist/components/generative/fieldBinding.d.ts +31 -0
  411. package/dist/components/generative/fieldBinding.js +33 -0
  412. package/dist/components/generative/fieldBinding.test.d.ts +1 -0
  413. package/dist/components/generative/formScope.d.ts +71 -0
  414. package/dist/components/generative/formScope.js +135 -0
  415. package/dist/components/generative/index.d.ts +4 -0
  416. package/dist/components/generative/index.js +4 -0
  417. package/dist/components/generative/registry.d.ts +2 -0
  418. package/dist/components/generative/registry.js +197 -4
  419. package/dist/components/generative/resolvers.js +16 -16
  420. package/dist/components/generative/schema.generated.js +2522 -328
  421. package/dist/components/generative/toToolResult.d.ts +21 -0
  422. package/dist/components/generative/toToolResult.js +15 -0
  423. package/dist/components/generative/toToolResult.test.d.ts +1 -0
  424. package/dist/components/generative/validate.d.ts +10 -1
  425. package/dist/components/generative/validate.js +126 -11
  426. package/dist/components/layout/Grid/Grid.js +1 -0
  427. package/dist/components/layout/Section/Section.theme.js +1 -1
  428. package/dist/components/layout/Stack/Stack.js +1 -0
  429. package/dist/generative.schema.json +2522 -328
  430. package/dist/hooks/index.d.ts +2 -0
  431. package/dist/hooks/useElapsedTime.d.ts +28 -0
  432. package/dist/hooks/useElapsedTime.js +37 -0
  433. package/dist/hooks/useSelectPortal.d.ts +10 -2
  434. package/dist/hooks/useSelectPortal.js +6 -3
  435. package/dist/index.js +2 -5
  436. package/dist/registry.json +3262 -2464
  437. package/dist/shadcn-compat.css +6 -6
  438. package/dist/styles/theme.test.d.ts +1 -0
  439. package/dist/styles.css +1 -1
  440. package/dist/test/render.d.ts +17 -0
  441. package/dist/theme.css +5 -1
  442. package/dist/themes/ember.css +131 -0
  443. package/dist/themes/iris.css +94 -0
  444. package/dist/themes/jade.css +139 -0
  445. package/dist/themes/precision.css +232 -0
  446. package/dist/tools.json +2557 -328
  447. package/dist/utils/colorUtils.d.ts +6 -6
  448. package/dist/utils/colorUtils.js +8 -8
  449. package/dist/utils/index.d.ts +0 -1
  450. package/package.json +39 -6
  451. package/src/global.scss +32 -28
  452. package/src/styles/theme.css +547 -176
  453. package/src/styles/theme.test.ts +119 -0
  454. package/tailwind.preset.cjs +66 -38
  455. package/dist/components/charts/FunnelChart/FunnelChart.animations.d.ts +0 -35
  456. package/dist/components/charts/FunnelChart/FunnelChart.animations.js +0 -59
  457. package/dist/components/charts/FunnelChart/FunnelChart.d.ts +0 -8
  458. package/dist/components/charts/FunnelChart/FunnelChart.js +0 -410
  459. package/dist/components/charts/FunnelChart/FunnelChart.theme.d.ts +0 -2
  460. package/dist/components/charts/FunnelChart/FunnelChart.theme.js +0 -12
  461. package/dist/components/charts/FunnelChart/FunnelChart.types.d.ts +0 -105
  462. package/dist/components/charts/FunnelChart/index.d.ts +0 -4
  463. package/dist/components/charts/ScatterPlot/ScatterPlot.d.ts +0 -9
  464. package/dist/components/charts/ScatterPlot/ScatterPlot.js +0 -207
  465. package/dist/components/charts/ScatterPlot/ScatterPlot.theme.d.ts +0 -18
  466. package/dist/components/charts/ScatterPlot/ScatterPlot.theme.js +0 -42
  467. package/dist/components/charts/ScatterPlot/ScatterPlot.types.d.ts +0 -65
  468. package/dist/components/charts/ScatterPlot/ScatterPlot.types.js +0 -12
  469. package/dist/components/charts/ScatterPlot/index.d.ts +0 -3
  470. package/dist/components/core/Button/Button.ripple.d.ts +0 -71
  471. package/dist/components/core/Button/Button.ripple.js +0 -236
  472. package/dist/components/core/Calendar/CalendarEvent/CalendarEvent.d.ts +0 -4
  473. package/dist/components/core/Calendar/CalendarEvent/CalendarEvent.theme.d.ts +0 -12
  474. package/dist/components/core/Calendar/CalendarEvent/CalendarEvent.types.d.ts +0 -23
  475. package/dist/components/core/Calendar/CalendarEvent/index.d.ts +0 -2
  476. package/dist/components/core/CardStack/CardStack.animations.d.ts +0 -47
  477. package/dist/components/core/CardStack/CardStack.d.ts +0 -3
  478. package/dist/components/core/CardStack/CardStack.js +0 -187
  479. package/dist/components/core/CardStack/CardStack.theme.d.ts +0 -6
  480. package/dist/components/core/CardStack/CardStack.theme.js +0 -33
  481. package/dist/components/core/CardStack/CardStack.types.d.ts +0 -139
  482. package/dist/components/core/CardStack/index.d.ts +0 -7
  483. package/dist/components/core/Carousel/Carousel.d.ts +0 -3
  484. package/dist/components/core/Carousel/Carousel.js +0 -83
  485. package/dist/components/core/Carousel/Carousel.theme.d.ts +0 -10
  486. package/dist/components/core/Carousel/Carousel.theme.js +0 -20
  487. package/dist/components/core/Carousel/Carousel.types.d.ts +0 -113
  488. package/dist/components/core/Carousel/CarouselBody.d.ts +0 -4
  489. package/dist/components/core/Carousel/CarouselBody.js +0 -59
  490. package/dist/components/core/Carousel/CarouselContext.d.ts +0 -3
  491. package/dist/components/core/Carousel/CarouselContext.js +0 -13
  492. package/dist/components/core/Carousel/CarouselItem.d.ts +0 -4
  493. package/dist/components/core/Carousel/CarouselItem.js +0 -11
  494. package/dist/components/core/Carousel/CarouselNext.d.ts +0 -4
  495. package/dist/components/core/Carousel/CarouselNext.js +0 -16
  496. package/dist/components/core/Carousel/CarouselPrevious.d.ts +0 -4
  497. package/dist/components/core/Carousel/CarouselPrevious.js +0 -16
  498. package/dist/components/core/Carousel/index.d.ts +0 -3
  499. package/dist/components/core/Pill/Pill.animations.d.ts +0 -32
  500. package/dist/components/core/Pill/Pill.animations.js +0 -16
  501. package/dist/components/effects/ColorPanels/ColorPanels.d.ts +0 -8
  502. package/dist/components/effects/ColorPanels/ColorPanels.js +0 -66
  503. package/dist/components/effects/ColorPanels/ColorPanels.shaders.d.ts +0 -12
  504. package/dist/components/effects/ColorPanels/ColorPanels.shaders.js +0 -218
  505. package/dist/components/effects/ColorPanels/ColorPanels.types.d.ts +0 -29
  506. package/dist/components/effects/ColorPanels/ColorPanels.types.js +0 -3
  507. package/dist/components/effects/ColorPanels/index.d.ts +0 -2
  508. package/dist/components/effects/FlutedGlass/FlutedGlass.d.ts +0 -9
  509. package/dist/components/effects/FlutedGlass/FlutedGlass.js +0 -80
  510. package/dist/components/effects/FlutedGlass/FlutedGlass.shaders.d.ts +0 -12
  511. package/dist/components/effects/FlutedGlass/FlutedGlass.shaders.js +0 -335
  512. package/dist/components/effects/FlutedGlass/FlutedGlass.types.d.ts +0 -61
  513. package/dist/components/effects/FlutedGlass/FlutedGlass.types.js +0 -16
  514. package/dist/components/effects/FlutedGlass/index.d.ts +0 -3
  515. package/dist/components/effects/GlassEffect/GlassEffect.d.ts +0 -15
  516. package/dist/components/effects/GlassEffect/GlassEffect.js +0 -38
  517. package/dist/components/effects/GlassEffect/GlassEffect.types.d.ts +0 -19
  518. package/dist/components/effects/GlassEffect/index.d.ts +0 -2
  519. package/dist/components/effects/GlassSurface/GlassSurface.d.ts +0 -8
  520. package/dist/components/effects/GlassSurface/GlassSurface.js +0 -250
  521. package/dist/components/effects/GlassSurface/GlassSurface.types.d.ts +0 -66
  522. package/dist/components/effects/GlassSurface/index.d.ts +0 -2
  523. package/dist/components/effects/GodRays/GodRays.d.ts +0 -8
  524. package/dist/components/effects/GodRays/GodRays.js +0 -68
  525. package/dist/components/effects/GodRays/GodRays.shaders.d.ts +0 -10
  526. package/dist/components/effects/GodRays/GodRays.shaders.js +0 -128
  527. package/dist/components/effects/GodRays/GodRays.types.d.ts +0 -25
  528. package/dist/components/effects/GodRays/GodRays.types.js +0 -3
  529. package/dist/components/effects/GodRays/index.d.ts +0 -2
  530. package/dist/components/effects/GridPattern/GridPattern.d.ts +0 -18
  531. package/dist/components/effects/GridPattern/GridPattern.js +0 -65
  532. package/dist/components/effects/GridPattern/GridPattern.types.d.ts +0 -47
  533. package/dist/components/effects/GridPattern/index.d.ts +0 -2
  534. package/dist/components/effects/HalftoneCmyk/HalftoneCmyk.d.ts +0 -10
  535. package/dist/components/effects/HalftoneCmyk/HalftoneCmyk.js +0 -78
  536. package/dist/components/effects/HalftoneCmyk/HalftoneCmyk.shaders.d.ts +0 -22
  537. package/dist/components/effects/HalftoneCmyk/HalftoneCmyk.shaders.js +0 -239
  538. package/dist/components/effects/HalftoneCmyk/HalftoneCmyk.types.d.ts +0 -52
  539. package/dist/components/effects/HalftoneCmyk/index.d.ts +0 -2
  540. package/dist/components/effects/HalftoneDots/HalftoneDots.d.ts +0 -9
  541. package/dist/components/effects/HalftoneDots/HalftoneDots.js +0 -68
  542. package/dist/components/effects/HalftoneDots/HalftoneDots.shaders.d.ts +0 -13
  543. package/dist/components/effects/HalftoneDots/HalftoneDots.shaders.js +0 -296
  544. package/dist/components/effects/HalftoneDots/HalftoneDots.types.d.ts +0 -43
  545. package/dist/components/effects/HalftoneDots/HalftoneDots.types.js +0 -12
  546. package/dist/components/effects/HalftoneDots/index.d.ts +0 -3
  547. package/dist/components/effects/ImageDithering/ImageDithering.d.ts +0 -9
  548. package/dist/components/effects/ImageDithering/ImageDithering.js +0 -68
  549. package/dist/components/effects/ImageDithering/ImageDithering.shaders.d.ts +0 -12
  550. package/dist/components/effects/ImageDithering/ImageDithering.shaders.js +0 -117
  551. package/dist/components/effects/ImageDithering/ImageDithering.types.d.ts +0 -30
  552. package/dist/components/effects/ImageDithering/ImageDithering.types.js +0 -8
  553. package/dist/components/effects/ImageDithering/index.d.ts +0 -3
  554. package/dist/components/effects/MagneticElement/MagneticElement.d.ts +0 -30
  555. package/dist/components/effects/MagneticElement/MagneticElement.js +0 -111
  556. package/dist/components/effects/MagneticElement/MagneticElement.types.d.ts +0 -44
  557. package/dist/components/effects/MagneticElement/index.d.ts +0 -2
  558. package/dist/components/effects/Metaballs/Metaballs.d.ts +0 -8
  559. package/dist/components/effects/Metaballs/Metaballs.js +0 -59
  560. package/dist/components/effects/Metaballs/Metaballs.shaders.d.ts +0 -10
  561. package/dist/components/effects/Metaballs/Metaballs.shaders.js +0 -102
  562. package/dist/components/effects/Metaballs/Metaballs.types.d.ts +0 -16
  563. package/dist/components/effects/Metaballs/Metaballs.types.js +0 -3
  564. package/dist/components/effects/Metaballs/index.d.ts +0 -2
  565. package/dist/components/effects/PaperTexture/PaperTexture.d.ts +0 -9
  566. package/dist/components/effects/PaperTexture/PaperTexture.js +0 -61
  567. package/dist/components/effects/PaperTexture/PaperTexture.shaders.d.ts +0 -22
  568. package/dist/components/effects/PaperTexture/PaperTexture.shaders.js +0 -145
  569. package/dist/components/effects/PaperTexture/PaperTexture.types.d.ts +0 -19
  570. package/dist/components/effects/PaperTexture/index.d.ts +0 -2
  571. package/dist/components/effects/PulsingBorder/PulsingBorder.d.ts +0 -27
  572. package/dist/components/effects/PulsingBorder/PulsingBorder.js +0 -174
  573. package/dist/components/effects/PulsingBorder/PulsingBorder.shaders.d.ts +0 -14
  574. package/dist/components/effects/PulsingBorder/PulsingBorder.shaders.js +0 -258
  575. package/dist/components/effects/PulsingBorder/PulsingBorder.types.d.ts +0 -75
  576. package/dist/components/effects/PulsingBorder/PulsingBorder.types.js +0 -3
  577. package/dist/components/effects/PulsingBorder/index.d.ts +0 -2
  578. package/dist/components/effects/SmokeRing/SmokeRing.d.ts +0 -8
  579. package/dist/components/effects/SmokeRing/SmokeRing.js +0 -62
  580. package/dist/components/effects/SmokeRing/SmokeRing.shaders.d.ts +0 -14
  581. package/dist/components/effects/SmokeRing/SmokeRing.shaders.js +0 -130
  582. package/dist/components/effects/SmokeRing/SmokeRing.types.d.ts +0 -22
  583. package/dist/components/effects/SmokeRing/SmokeRing.types.js +0 -3
  584. package/dist/components/effects/SmokeRing/index.d.ts +0 -2
  585. package/dist/components/effects/StaticGradientMesh/StaticGradientMesh.d.ts +0 -9
  586. package/dist/components/effects/StaticGradientMesh/StaticGradientMesh.js +0 -59
  587. package/dist/components/effects/StaticGradientMesh/StaticGradientMesh.shaders.d.ts +0 -14
  588. package/dist/components/effects/StaticGradientMesh/StaticGradientMesh.shaders.js +0 -129
  589. package/dist/components/effects/StaticGradientMesh/StaticGradientMesh.types.d.ts +0 -23
  590. package/dist/components/effects/StaticGradientMesh/StaticGradientMesh.types.js +0 -3
  591. package/dist/components/effects/StaticGradientMesh/index.d.ts +0 -2
  592. package/dist/components/effects/Water/Water.d.ts +0 -9
  593. package/dist/components/effects/Water/Water.js +0 -65
  594. package/dist/components/effects/Water/Water.shaders.d.ts +0 -11
  595. package/dist/components/effects/Water/Water.shaders.js +0 -123
  596. package/dist/components/effects/Water/Water.types.d.ts +0 -25
  597. package/dist/components/effects/Water/index.d.ts +0 -2
  598. package/dist/components/effects/shared/bayerMatrices.glsl.d.ts +0 -10
  599. package/dist/components/effects/shared/bayerMatrices.glsl.js +0 -44
  600. package/dist/components/effects/shared/imageUV.glsl.d.ts +0 -12
  601. package/dist/components/effects/shared/imageUV.glsl.js +0 -26
  602. package/dist/components/forms/RichTextEditor/RichTextEditor.animations.d.ts +0 -7
  603. package/dist/components/forms/RichTextEditor/RichTextEditor.animations.js +0 -32
  604. package/dist/utils/calendarUtils.d.ts +0 -60
  605. /package/dist/components/{charts → core}/shared/ChartTooltip/ChartTooltip.d.ts +0 -0
  606. /package/dist/components/{charts → core}/shared/ChartTooltip/ChartTooltip.theme.d.ts +0 -0
  607. /package/dist/components/{charts → core}/shared/ChartTooltip/ChartTooltip.theme.js +0 -0
  608. /package/dist/components/{charts → core}/shared/ChartTooltip/ChartTooltip.types.d.ts +0 -0
  609. /package/dist/components/{charts → core}/shared/ChartTooltip/ChartTooltipContent.d.ts +0 -0
  610. /package/dist/components/{charts → core}/shared/ChartTooltip/index.d.ts +0 -0
package/dist/tools.json CHANGED
@@ -21,35 +21,70 @@
21
21
  "type": "string",
22
22
  "enum": [
23
23
  "Accordion",
24
+ "ActivityRings",
24
25
  "Alert",
25
26
  "AreaChart",
27
+ "AspectRatio",
26
28
  "Avatar",
27
29
  "AvatarGroup",
28
30
  "Badge",
29
31
  "BarChart",
30
32
  "Breadcrumbs",
31
33
  "Button",
34
+ "ButtonGroup",
35
+ "Calendar",
32
36
  "Card",
37
+ "Checkbox",
38
+ "Combobox",
33
39
  "ComboChart",
40
+ "CommandPalette",
34
41
  "DescriptionList",
35
42
  "DonutChart",
43
+ "DotSeparator",
36
44
  "Empty",
37
45
  "Feed",
46
+ "Form",
47
+ "GanttChart",
38
48
  "Grid",
49
+ "Heatmap",
50
+ "HeroCard",
51
+ "HorizontalBarChart",
52
+ "Icon",
53
+ "Input",
54
+ "InputCounter",
55
+ "InputDate",
56
+ "InputOTP",
57
+ "InputTag",
58
+ "Kbd",
39
59
  "KPI",
40
60
  "LineChart",
61
+ "Link",
62
+ "Masonry",
63
+ "MenuItem",
64
+ "Message",
41
65
  "Metric",
42
66
  "PageHeading",
67
+ "Pagination",
43
68
  "Pill",
44
69
  "Progress",
70
+ "RadarChart",
45
71
  "Rating",
72
+ "ScrollArea",
46
73
  "Section",
74
+ "Select",
47
75
  "Separator",
76
+ "Skeleton",
77
+ "Slider",
78
+ "Spinner",
48
79
  "Stack",
49
80
  "StackedBarChart",
81
+ "Switch",
50
82
  "Table",
51
83
  "Tag",
52
- "Timeline"
84
+ "Textarea",
85
+ "Timeline",
86
+ "TimePicker",
87
+ "Tree"
53
88
  ]
54
89
  },
55
90
  "props": {
@@ -132,6 +167,59 @@
132
167
  }
133
168
  }
134
169
  },
170
+ "ActivityRings": {
171
+ "role": "leaf",
172
+ "description": "Concentric circular progress rings (auto Card shell).",
173
+ "props": {
174
+ "rings": {
175
+ "kind": "shape",
176
+ "shape": "activityRings",
177
+ "required": true,
178
+ "description": "Array of rings (ordered from outer to inner)"
179
+ },
180
+ "centerLabel": {
181
+ "kind": "text",
182
+ "description": "Center label content (text or ReactNode)"
183
+ },
184
+ "centerSuffix": {
185
+ "kind": "string",
186
+ "description": "Optional suffix for center label (e.g., \"cal\", \"steps\")"
187
+ },
188
+ "size": {
189
+ "kind": "union",
190
+ "types": [
191
+ "number",
192
+ "string"
193
+ ],
194
+ "description": "Size of the chart (px or string with units)"
195
+ },
196
+ "strokeWidth": {
197
+ "kind": "number",
198
+ "description": "Ring stroke width (default: 12)"
199
+ },
200
+ "gap": {
201
+ "kind": "number",
202
+ "description": "Gap between rings (default: 8)"
203
+ },
204
+ "showAnimation": {
205
+ "kind": "boolean",
206
+ "description": "Whether to show animations (default: true)"
207
+ },
208
+ "colors": {
209
+ "kind": "shape",
210
+ "shape": "colorList",
211
+ "description": "Custom color palette for rings. Colors are applied in order from outer to inner ring."
212
+ },
213
+ "title": {
214
+ "kind": "text",
215
+ "description": "Card header title (the auto shell)"
216
+ },
217
+ "subtitle": {
218
+ "kind": "text",
219
+ "description": "Card header subtitle (the auto shell)"
220
+ }
221
+ }
222
+ },
135
223
  "Alert": {
136
224
  "role": "leaf",
137
225
  "description": "Inline callout with semantic color.",
@@ -139,7 +227,7 @@
139
227
  "color": {
140
228
  "kind": "enum",
141
229
  "options": [
142
- "neutral",
230
+ "mono",
143
231
  "primary",
144
232
  "success",
145
233
  "warning",
@@ -252,15 +340,6 @@
252
340
  "gradient"
253
341
  ]
254
342
  },
255
- "barRadius": {
256
- "kind": "number"
257
- },
258
- "cellRadius": {
259
- "kind": "number"
260
- },
261
- "gap": {
262
- "kind": "number"
263
- },
264
343
  "curveType": {
265
344
  "kind": "enum",
266
345
  "options": [
@@ -281,6 +360,16 @@
281
360
  }
282
361
  }
283
362
  },
363
+ "AspectRatio": {
364
+ "role": "container",
365
+ "description": "Fixed-ratio box. Children are spec nodes.",
366
+ "props": {
367
+ "ratio": {
368
+ "kind": "number",
369
+ "description": "The desired ratio (width / height). e.g., 16/9, 4/3, 1"
370
+ }
371
+ }
372
+ },
284
373
  "Avatar": {
285
374
  "role": "leaf",
286
375
  "description": "User avatar with initials fallback.",
@@ -300,7 +389,7 @@
300
389
  "string"
301
390
  ],
302
391
  "default": "md",
303
- "description": "The size of the avatar"
392
+ "description": "The size of the avatar — a named rung (`\"md\"`) or an exact pixel size"
304
393
  },
305
394
  "status": {
306
395
  "kind": "enum",
@@ -373,16 +462,6 @@
373
462
  "default": "md",
374
463
  "description": "Size for all avatars in the group"
375
464
  },
376
- "spacing": {
377
- "kind": "enum",
378
- "options": [
379
- "tight",
380
- "normal",
381
- "loose"
382
- ],
383
- "default": "normal",
384
- "description": "Amount of overlap between avatars (higher value = more overlap)"
385
- },
386
465
  "direction": {
387
466
  "kind": "enum",
388
467
  "options": [
@@ -420,13 +499,13 @@
420
499
  "outline",
421
500
  "soft"
422
501
  ],
423
- "default": "filled",
424
- "description": "The visual style variant of the badge (filled, outline, soft)"
502
+ "default": "soft",
503
+ "description": "The visual style variant of the badge."
425
504
  },
426
505
  "color": {
427
506
  "kind": "enum",
428
507
  "options": [
429
- "neutral",
508
+ "mono",
430
509
  "primary",
431
510
  "success",
432
511
  "warning",
@@ -457,11 +536,6 @@
457
536
  "iconStart": {
458
537
  "kind": "icon",
459
538
  "description": "Icon element at the start (before content)"
460
- },
461
- "disabled": {
462
- "kind": "boolean",
463
- "default": false,
464
- "description": "Whether the badge is disabled"
465
539
  }
466
540
  }
467
541
  },
@@ -548,47 +622,6 @@
548
622
  "gradient"
549
623
  ]
550
624
  },
551
- "dotRadius": {
552
- "kind": "number"
553
- },
554
- "cellRadius": {
555
- "kind": "number"
556
- },
557
- "strokeWidth": {
558
- "kind": "number"
559
- },
560
- "curved": {
561
- "kind": "boolean"
562
- },
563
- "curveType": {
564
- "kind": "enum",
565
- "options": [
566
- "linear",
567
- "monotone",
568
- "step",
569
- "stepBefore",
570
- "stepAfter"
571
- ]
572
- },
573
- "showDots": {
574
- "kind": "boolean"
575
- },
576
- "fillOpacity": {
577
- "kind": "number"
578
- },
579
- "showStroke": {
580
- "kind": "boolean"
581
- },
582
- "stacked": {
583
- "kind": "boolean"
584
- },
585
- "orientation": {
586
- "kind": "enum",
587
- "options": [
588
- "vertical",
589
- "horizontal"
590
- ]
591
- },
592
625
  "title": {
593
626
  "kind": "text",
594
627
  "description": "Card header title (the auto shell)"
@@ -634,7 +667,7 @@
634
667
  "color": {
635
668
  "kind": "enum",
636
669
  "options": [
637
- "neutral",
670
+ "mono",
638
671
  "primary",
639
672
  "danger"
640
673
  ],
@@ -676,37 +709,96 @@
676
709
  "kind": "boolean",
677
710
  "description": "Whether the button should be full width"
678
711
  },
712
+ "iconStart": {
713
+ "kind": "icon",
714
+ "description": "Small decorative icon before the label, auto-sized to the button's `size`."
715
+ },
716
+ "iconEnd": {
717
+ "kind": "icon",
718
+ "description": "Small decorative icon after the label, auto-sized to the button's `size`. See `iconStart`."
719
+ },
679
720
  "children": {
680
721
  "kind": "text",
681
722
  "description": "Button contents"
682
723
  },
683
724
  "enableRipple": {
684
725
  "kind": "boolean",
685
- "description": "Whether to enable ripple effect on click"
726
+ "default": true,
727
+ "description": "Whether to show the press ripple."
686
728
  },
687
- "rippleEffect": {
729
+ "showReflection": {
730
+ "kind": "boolean",
731
+ "description": "Whether to show the glass reflection effect (default: true)"
732
+ }
733
+ }
734
+ },
735
+ "ButtonGroup": {
736
+ "role": "container",
737
+ "description": "Groups adjacent Buttons with joined borders. Children are spec nodes (Button leaves).",
738
+ "props": {
739
+ "orientation": {
688
740
  "kind": "enum",
689
741
  "options": [
690
- "default",
691
- "neon",
692
- "aurora",
693
- "particle",
694
- "glass",
695
- "echo"
742
+ "horizontal",
743
+ "vertical"
696
744
  ],
697
- "description": "Type of ripple effect: 'default' | 'aurora' | 'particle' | 'glass' | 'neon' | 'echo'"
745
+ "description": "The layout direction of the button group"
746
+ }
747
+ }
748
+ },
749
+ "Calendar": {
750
+ "role": "leaf",
751
+ "description": "Date picker grid (range mode not supported in generative specs). value/minDate/maxDate accept ISO date strings, coerced to Date internally. Bind node.actions.change to onChange (fires with the selected ISO date string).",
752
+ "props": {
753
+ "showToday": {
754
+ "kind": "boolean",
755
+ "description": "Whether to highlight today's date (default: true)"
698
756
  },
699
- "rippleClassName": {
700
- "kind": "string",
701
- "description": "Custom class name for ripple styling"
757
+ "selectTodayByDefault": {
758
+ "kind": "boolean",
759
+ "description": "Auto-select today's date when calendar opens without a value (default: false)"
702
760
  },
703
- "rippleScale": {
704
- "kind": "number",
705
- "description": "Scale multiplier for ripple expansion (default: 10)"
761
+ "size": {
762
+ "kind": "enum",
763
+ "options": [
764
+ "sm",
765
+ "md",
766
+ "lg"
767
+ ],
768
+ "description": "Size variant"
706
769
  },
707
- "showReflection": {
770
+ "headerMode": {
771
+ "kind": "enum",
772
+ "options": [
773
+ "dropdown",
774
+ "static",
775
+ "mixed"
776
+ ],
777
+ "description": "Header display mode - dropdown (default), static text, or mixed (default: 'dropdown')"
778
+ },
779
+ "enableMonthDropdown": {
708
780
  "kind": "boolean",
709
- "description": "Whether to show the glass reflection effect (default: true)"
781
+ "description": "Whether to enable month dropdown instead of navigation arrows (default: true)"
782
+ },
783
+ "enableYearDropdown": {
784
+ "kind": "boolean",
785
+ "description": "Whether to enable year dropdown instead of navigation arrows (default: true)"
786
+ },
787
+ "showOtherMonthDays": {
788
+ "kind": "boolean",
789
+ "description": "Whether to show days from adjacent months (default: true)"
790
+ },
791
+ "value": {
792
+ "kind": "string",
793
+ "description": "Selected date, ISO format (e.g. \"2024-01-01\")"
794
+ },
795
+ "minDate": {
796
+ "kind": "string",
797
+ "description": "Minimum selectable date, ISO format"
798
+ },
799
+ "maxDate": {
800
+ "kind": "string",
801
+ "description": "Maximum selectable date, ISO format"
710
802
  }
711
803
  }
712
804
  },
@@ -724,6 +816,131 @@
724
816
  }
725
817
  }
726
818
  },
819
+ "Checkbox": {
820
+ "role": "leaf",
821
+ "description": "Single checkbox. `value` is its HTML group-identity string, NOT the checked state. Bind node.actions.change to onChange — only the checked boolean (first argument) reaches the action, the value argument is dropped.",
822
+ "props": {
823
+ "value": {
824
+ "kind": "string",
825
+ "required": true
826
+ },
827
+ "indeterminate": {
828
+ "kind": "boolean"
829
+ },
830
+ "label": {
831
+ "kind": "text"
832
+ },
833
+ "description": {
834
+ "kind": "text"
835
+ },
836
+ "state": {
837
+ "kind": "enum",
838
+ "options": [
839
+ "default",
840
+ "disabled",
841
+ "invalid"
842
+ ]
843
+ },
844
+ "size": {
845
+ "kind": "enum",
846
+ "options": [
847
+ "sm",
848
+ "md",
849
+ "lg"
850
+ ]
851
+ },
852
+ "checked": {
853
+ "kind": "boolean",
854
+ "description": "Whether the checkbox is checked"
855
+ },
856
+ "disabled": {
857
+ "kind": "boolean",
858
+ "description": "Whether the checkbox is disabled"
859
+ },
860
+ "required": {
861
+ "kind": "boolean",
862
+ "description": "Marks this field as required. A parent Form refuses to submit while it is empty, and lists it in the form's error summary."
863
+ },
864
+ "name": {
865
+ "kind": "string",
866
+ "description": "Field name. Required for this control's value to be included when a parent Form is submitted. Must match /^[A-Za-z_][A-Za-z0-9_-]*$/."
867
+ }
868
+ }
869
+ },
870
+ "Combobox": {
871
+ "role": "leaf",
872
+ "description": "Searchable single-select. Bind node.actions.change to onChange (fires with the selected option's value, or undefined when cleared).",
873
+ "props": {
874
+ "options": {
875
+ "kind": "shape",
876
+ "shape": "optionItems",
877
+ "required": true,
878
+ "description": "Array of options to display"
879
+ },
880
+ "placeholder": {
881
+ "kind": "string",
882
+ "description": "Placeholder text when no value is selected"
883
+ },
884
+ "label": {
885
+ "kind": "text",
886
+ "description": "Label text displayed above the input"
887
+ },
888
+ "helperText": {
889
+ "kind": "text",
890
+ "description": "Helper text displayed below the input"
891
+ },
892
+ "size": {
893
+ "kind": "enum",
894
+ "options": [
895
+ "sm",
896
+ "md",
897
+ "lg"
898
+ ],
899
+ "description": "Size variant"
900
+ },
901
+ "state": {
902
+ "kind": "enum",
903
+ "options": [
904
+ "default",
905
+ "disabled",
906
+ "invalid"
907
+ ],
908
+ "description": "State variant (controls styling)"
909
+ },
910
+ "clearable": {
911
+ "kind": "boolean",
912
+ "description": "Whether the clear button is shown (default: true)"
913
+ },
914
+ "iconStart": {
915
+ "kind": "icon",
916
+ "description": "Icon displayed at the start of the input"
917
+ },
918
+ "iconEnd": {
919
+ "kind": "icon",
920
+ "description": "Icon displayed at the end of the input"
921
+ },
922
+ "openOnFocus": {
923
+ "kind": "boolean",
924
+ "description": "Whether to open dropdown on focus (default: true)"
925
+ },
926
+ "emptyMessage": {
927
+ "kind": "string",
928
+ "description": "Message shown when no options match the filter"
929
+ },
930
+ "required": {
931
+ "kind": "boolean",
932
+ "description": "Whether the input is required"
933
+ },
934
+ "name": {
935
+ "kind": "string",
936
+ "description": "Field name. Required for this control's value to be included when a parent Form is submitted. Must match /^[A-Za-z_][A-Za-z0-9_-]*$/."
937
+ },
938
+ "value": {
939
+ "kind": "string",
940
+ "description": "Currently selected value (controlled)"
941
+ }
942
+ }
943
+ },
727
944
  "ComboChart": {
728
945
  "role": "leaf",
729
946
  "description": "Combined bar+line chart — per-series type via config[key].type (auto Card shell).",
@@ -815,10 +1032,10 @@
815
1032
  "barRadius": {
816
1033
  "kind": "number"
817
1034
  },
818
- "dotRadius": {
1035
+ "gap": {
819
1036
  "kind": "number"
820
1037
  },
821
- "cellRadius": {
1038
+ "dotRadius": {
822
1039
  "kind": "number"
823
1040
  },
824
1041
  "radius": {
@@ -827,15 +1044,6 @@
827
1044
  "strokeWidth": {
828
1045
  "kind": "number"
829
1046
  },
830
- "gap": {
831
- "kind": "number"
832
- },
833
- "fillOpacity": {
834
- "kind": "number"
835
- },
836
- "showStroke": {
837
- "kind": "boolean"
838
- },
839
1047
  "title": {
840
1048
  "kind": "text",
841
1049
  "description": "Card header title (the auto shell)"
@@ -846,15 +1054,64 @@
846
1054
  }
847
1055
  }
848
1056
  },
849
- "DescriptionList": {
1057
+ "CommandPalette": {
850
1058
  "role": "leaf",
851
- "description": "Label/value pairs driven by a serializable items array.",
1059
+ "description": "Searchable command list, rendered as a full-screen modal overlay (pair with node.actions.select/close).",
852
1060
  "props": {
853
- "variant": {
854
- "kind": "enum",
855
- "options": [
856
- "vertical",
857
- "horizontal"
1061
+ "commands": {
1062
+ "kind": "shape",
1063
+ "shape": "commandItems",
1064
+ "required": true,
1065
+ "description": "Array of commands or command groups"
1066
+ },
1067
+ "placeholder": {
1068
+ "kind": "string",
1069
+ "description": "Placeholder text for search input"
1070
+ },
1071
+ "emptyMessage": {
1072
+ "kind": "string",
1073
+ "description": "Custom empty state message"
1074
+ },
1075
+ "maxHeight": {
1076
+ "kind": "union",
1077
+ "types": [
1078
+ "number",
1079
+ "string"
1080
+ ],
1081
+ "description": "Maximum height of the command list"
1082
+ },
1083
+ "grouped": {
1084
+ "kind": "boolean",
1085
+ "description": "Whether to group commands by category"
1086
+ },
1087
+ "elevation": {
1088
+ "kind": "union",
1089
+ "types": [
1090
+ "number",
1091
+ "string"
1092
+ ],
1093
+ "description": "Pin the surface elevation rung (overrides the automatic relative lift)."
1094
+ },
1095
+ "lift": {
1096
+ "kind": "boolean",
1097
+ "description": "`false` opts out of the relative lift — paints at the palette's base rung."
1098
+ },
1099
+ "isOpen": {
1100
+ "kind": "boolean",
1101
+ "description": "Always rendered open in a generative spec.",
1102
+ "default": true
1103
+ }
1104
+ }
1105
+ },
1106
+ "DescriptionList": {
1107
+ "role": "leaf",
1108
+ "description": "Label/value pairs driven by a serializable items array.",
1109
+ "props": {
1110
+ "variant": {
1111
+ "kind": "enum",
1112
+ "options": [
1113
+ "horizontal",
1114
+ "vertical"
858
1115
  ],
859
1116
  "description": "Layout variant: \"horizontal\" (default) or \"vertical\""
860
1117
  },
@@ -939,6 +1196,22 @@
939
1196
  }
940
1197
  }
941
1198
  },
1199
+ "DotSeparator": {
1200
+ "role": "leaf",
1201
+ "description": "Small dot glyph used as an inline separator.",
1202
+ "props": {
1203
+ "size": {
1204
+ "kind": "enum",
1205
+ "options": [
1206
+ "sm",
1207
+ "md",
1208
+ "lg"
1209
+ ],
1210
+ "default": "md",
1211
+ "description": "The size of the dot (also scales its horizontal spacing)"
1212
+ }
1213
+ }
1214
+ },
942
1215
  "Empty": {
943
1216
  "role": "leaf",
944
1217
  "description": "Empty-state placeholder with icon, title and subtitle.",
@@ -980,6 +1253,128 @@
980
1253
  }
981
1254
  }
982
1255
  },
1256
+ "Form": {
1257
+ "role": "container",
1258
+ "description": "A form that collects structured input from the user. Children with a `name` prop become fields; submitting delivers all field values at once in a single action. Use this whenever you need information from the user rather than free text.",
1259
+ "props": {
1260
+ "title": {
1261
+ "kind": "text",
1262
+ "description": "Heading for the form. Also becomes its accessible name."
1263
+ },
1264
+ "description": {
1265
+ "kind": "text",
1266
+ "description": "Optional helper text shown above the fields."
1267
+ },
1268
+ "submitLabel": {
1269
+ "kind": "string",
1270
+ "default": "Submit",
1271
+ "description": "Label for the submit button. A button is rendered automatically when the form's children do not include one."
1272
+ },
1273
+ "errorSummaryTitle": {
1274
+ "kind": "text",
1275
+ "default": "Please fix the following before continuing:",
1276
+ "description": "Heading for the error summary shown when submit is blocked because a required field is empty. Set it to match the spec's language."
1277
+ }
1278
+ }
1279
+ },
1280
+ "GanttChart": {
1281
+ "role": "leaf",
1282
+ "description": "Project timeline chart. startDate/endDate and task dates accept ISO date strings directly (the real prop type is Date | string). Custom columns are not supported (uses the built-in default columns). Bind node.actions.taskClick to onTaskClick.",
1283
+ "props": {
1284
+ "data": {
1285
+ "kind": "shape",
1286
+ "shape": "ganttTasks",
1287
+ "required": true
1288
+ },
1289
+ "groups": {
1290
+ "kind": "shape",
1291
+ "shape": "ganttGroups",
1292
+ "required": true
1293
+ },
1294
+ "todayMarker": {
1295
+ "kind": "boolean"
1296
+ },
1297
+ "scrollToToday": {
1298
+ "kind": "boolean"
1299
+ },
1300
+ "showTable": {
1301
+ "kind": "boolean"
1302
+ },
1303
+ "showDependencies": {
1304
+ "kind": "boolean"
1305
+ },
1306
+ "showTaskLabels": {
1307
+ "kind": "enum",
1308
+ "options": [
1309
+ "none",
1310
+ "auto",
1311
+ "inside",
1312
+ "outside"
1313
+ ]
1314
+ },
1315
+ "readonly": {
1316
+ "kind": "boolean"
1317
+ },
1318
+ "readonlyDates": {
1319
+ "kind": "boolean"
1320
+ },
1321
+ "readonlyProgress": {
1322
+ "kind": "boolean"
1323
+ },
1324
+ "zoom": {
1325
+ "kind": "enum",
1326
+ "options": [
1327
+ "day",
1328
+ "week",
1329
+ "quarter",
1330
+ "month",
1331
+ "year"
1332
+ ]
1333
+ },
1334
+ "defaultZoom": {
1335
+ "kind": "enum",
1336
+ "options": [
1337
+ "day",
1338
+ "week",
1339
+ "quarter",
1340
+ "month",
1341
+ "year"
1342
+ ]
1343
+ },
1344
+ "hideCompleted": {
1345
+ "kind": "boolean"
1346
+ },
1347
+ "defaultHideCompleted": {
1348
+ "kind": "boolean"
1349
+ },
1350
+ "tablePanelWidth": {
1351
+ "kind": "number"
1352
+ },
1353
+ "defaultTablePanelWidth": {
1354
+ "kind": "number"
1355
+ },
1356
+ "gridLines": {
1357
+ "kind": "enum",
1358
+ "options": [
1359
+ "none",
1360
+ "horizontal",
1361
+ "vertical",
1362
+ "both"
1363
+ ]
1364
+ },
1365
+ "rowHeight": {
1366
+ "kind": "number"
1367
+ },
1368
+ "startDate": {
1369
+ "kind": "string",
1370
+ "description": "Visible range start, ISO date format"
1371
+ },
1372
+ "endDate": {
1373
+ "kind": "string",
1374
+ "description": "Visible range end, ISO date format"
1375
+ }
1376
+ }
1377
+ },
983
1378
  "Grid": {
984
1379
  "role": "container",
985
1380
  "description": "Responsive CSS-grid container. Children are spec nodes.",
@@ -987,6 +1382,7 @@
987
1382
  "as": {
988
1383
  "kind": "enum",
989
1384
  "options": [
1385
+ "form",
990
1386
  "div",
991
1387
  "ul",
992
1388
  "ol",
@@ -995,7 +1391,6 @@
995
1391
  "header",
996
1392
  "footer",
997
1393
  "aside",
998
- "form",
999
1394
  "fieldset"
1000
1395
  ],
1001
1396
  "default": "div",
@@ -1055,119 +1450,70 @@
1055
1450
  }
1056
1451
  }
1057
1452
  },
1058
- "KPI": {
1453
+ "Heatmap": {
1059
1454
  "role": "leaf",
1060
- "description": "KPI stat with trend and progress bar (auto Card shell).",
1455
+ "description": "Calendar/matrix heatmap (auto Card shell). Bind node.actions.cellClick to onCellClick (fires with the clicked cell's data).",
1061
1456
  "props": {
1062
- "value": {
1063
- "kind": "text",
1064
- "required": true,
1065
- "description": "The main metric value to display (e.g. \"$25.5M\", \"1,234\", \"89%\")"
1066
- },
1067
- "label": {
1068
- "kind": "text",
1069
- "description": "Label describing the metric (e.g. \"Fund raised\", \"Total Revenue\")"
1070
- },
1071
- "trend": {
1072
- "kind": "number",
1073
- "description": "Percentage change value (e.g. 20, -5.3). Determines trend direction & color."
1074
- },
1075
- "trendLabel": {
1076
- "kind": "text",
1077
- "description": "Custom trend label override (default: auto-formats as \"+20%\" or \"-5.3%\")"
1078
- },
1079
- "progress": {
1080
- "kind": "number",
1081
- "description": "Progress value from 0-100. Controls how many bars are filled."
1082
- },
1083
- "barCount": {
1084
- "kind": "number",
1085
- "default": 24,
1086
- "description": "Total number of bars in the visualization."
1087
- },
1088
- "subtitle": {
1089
- "kind": "text",
1090
- "description": "Subtitle text below the bars (e.g. \"Compared to last month\")"
1091
- },
1092
- "icon": {
1093
- "kind": "icon",
1094
- "description": "Icon to display before the label."
1095
- },
1096
- "size": {
1457
+ "legend": {
1097
1458
  "kind": "enum",
1098
1459
  "options": [
1099
- "sm",
1100
- "md",
1101
- "lg"
1460
+ "top",
1461
+ "bottom",
1462
+ "none"
1102
1463
  ],
1103
- "default": "md",
1104
- "description": "Size variant."
1464
+ "default": "bottom",
1465
+ "description": "Colour-ramp legend position — Heatmap draws its own gradient ramp, not per-series swatches from `config`. Always defaults to 'bottom' when omitted."
1466
+ },
1467
+ "data": {
1468
+ "kind": "shape",
1469
+ "shape": "heatmapPoints",
1470
+ "description": "Heatmap data array — optional when using ChartContainer context"
1105
1471
  },
1106
1472
  "color": {
1107
1473
  "kind": "enum",
1108
1474
  "options": [
1109
- "neutral",
1475
+ "mono",
1110
1476
  "primary",
1111
1477
  "success",
1112
1478
  "warning",
1113
1479
  "danger"
1114
1480
  ],
1115
1481
  "default": "primary",
1116
- "description": "Color for the filled bars and positive trend."
1117
- }
1118
- }
1119
- },
1120
- "LineChart": {
1121
- "role": "leaf",
1122
- "description": "Line chart (auto Card shell + shared-height container).",
1123
- "props": {
1124
- "color": {
1125
- "kind": "enum",
1126
- "options": [
1127
- "primary",
1128
- "success",
1129
- "warning",
1130
- "danger"
1131
- ]
1132
- },
1133
- "dotRadius": {
1134
- "kind": "number"
1135
- },
1136
- "radius": {
1137
- "kind": "number"
1138
- },
1139
- "strokeWidth": {
1140
- "kind": "number"
1141
- },
1142
- "curved": {
1143
- "kind": "boolean"
1482
+ "description": "Semantic colour for heatmap cells"
1144
1483
  },
1145
- "curveType": {
1484
+ "variant": {
1146
1485
  "kind": "enum",
1147
1486
  "options": [
1148
- "linear",
1149
- "monotone"
1150
- ]
1151
- },
1152
- "showDots": {
1153
- "kind": "boolean"
1154
- },
1155
- "data": {
1156
- "kind": "shape",
1157
- "shape": "chartData",
1158
- "required": true
1487
+ "default",
1488
+ "minimal"
1489
+ ],
1490
+ "default": "default",
1491
+ "description": "Visual variant"
1159
1492
  },
1160
- "config": {
1493
+ "legendLabels": {
1161
1494
  "kind": "shape",
1162
- "shape": "chartConfig",
1163
- "required": true
1495
+ "shape": "heatmapLegendLabels",
1496
+ "default": "{ min: 'Low activity', max: 'High activity' }",
1497
+ "description": "Captions at each end of the colour ramp."
1164
1498
  },
1165
- "width": {
1499
+ "cellGap": {
1166
1500
  "kind": "union",
1167
1501
  "types": [
1168
1502
  "number",
1169
1503
  "string"
1170
- ]
1504
+ ],
1505
+ "default": 6,
1506
+ "description": "Gap between cells"
1507
+ },
1508
+ "minOpacity": {
1509
+ "kind": "number",
1510
+ "default": 0.1,
1511
+ "description": "Opacity floor for zero/lowest-intensity cells"
1512
+ },
1513
+ "showTooltip": {
1514
+ "kind": "boolean",
1515
+ "default": true,
1516
+ "description": "Show the hover tooltip"
1171
1517
  },
1172
1518
  "height": {
1173
1519
  "kind": "union",
@@ -1176,11 +1522,12 @@
1176
1522
  "string"
1177
1523
  ]
1178
1524
  },
1179
- "enableKeyboardNavigation": {
1180
- "kind": "boolean"
1181
- },
1182
- "showGrid": {
1183
- "kind": "boolean"
1525
+ "width": {
1526
+ "kind": "union",
1527
+ "types": [
1528
+ "number",
1529
+ "string"
1530
+ ]
1184
1531
  },
1185
1532
  "showXAxis": {
1186
1533
  "kind": "boolean"
@@ -1188,15 +1535,6 @@
1188
1535
  "showYAxis": {
1189
1536
  "kind": "boolean"
1190
1537
  },
1191
- "legend": {
1192
- "kind": "enum",
1193
- "options": [
1194
- "top",
1195
- "bottom",
1196
- "none"
1197
- ],
1198
- "description": "Always-visible legend position, rendered from `config`'s labels/colors."
1199
- },
1200
1538
  "minValue": {
1201
1539
  "kind": "number"
1202
1540
  },
@@ -1213,22 +1551,987 @@
1213
1551
  }
1214
1552
  }
1215
1553
  },
1216
- "Metric": {
1217
- "role": "leaf",
1218
- "description": "Single business metric with optional icon and trend.",
1554
+ "HeroCard": {
1555
+ "role": "container",
1556
+ "description": "Gradient hero shell with an ambient blurred backdrop image. Children are spec nodes rendered above the backdrop.",
1219
1557
  "props": {
1220
- "value": {
1221
- "kind": "union",
1222
- "types": [
1223
- "number",
1224
- "string"
1225
- ],
1226
- "required": true,
1227
- "description": "The main value to display (number or formatted string)"
1558
+ "image": {
1559
+ "kind": "string",
1560
+ "description": "Backdrop image src. Defaults to the bundled `/bg/3.webp`"
1561
+ },
1562
+ "imageBlur": {
1563
+ "kind": "number",
1564
+ "default": 24,
1565
+ "description": "Backdrop blur radius in px."
1566
+ },
1567
+ "imageScale": {
1568
+ "kind": "number",
1569
+ "default": 1.25,
1570
+ "description": "Backdrop scale factor — zooming the abstract blobs in/out reframes the texture."
1571
+ },
1572
+ "imageOpacity": {
1573
+ "kind": "number",
1574
+ "default": 0.5,
1575
+ "description": "Backdrop opacity, 0–1."
1576
+ },
1577
+ "imageBlend": {
1578
+ "kind": "enum",
1579
+ "options": [
1580
+ "overlay",
1581
+ "multiply",
1582
+ "soft-light",
1583
+ "hard-light",
1584
+ "screen",
1585
+ "luminosity",
1586
+ "normal"
1587
+ ],
1588
+ "default": "multiply",
1589
+ "description": "Blend mode compositing the image over the gradient."
1590
+ },
1591
+ "imagePosition": {
1592
+ "kind": "string",
1593
+ "default": "center",
1594
+ "description": "CSS `background-position` — e.g. `\"top right\"`, `\"30% 70%\"`."
1595
+ },
1596
+ "parallax": {
1597
+ "kind": "boolean",
1598
+ "default": false,
1599
+ "description": "On pointer hover, drift the backdrop image opposite the cursor (damped) for a"
1600
+ },
1601
+ "parallaxIntensity": {
1602
+ "kind": "number",
1603
+ "default": 32,
1604
+ "description": "Max backdrop travel in px (each direction) when `parallax` is on. Auto-clamped"
1605
+ }
1606
+ }
1607
+ },
1608
+ "HorizontalBarChart": {
1609
+ "role": "leaf",
1610
+ "description": "Horizontal bar chart — categories down the left, values extending right. Prefer over BarChart when category names are long or numerous, or when ranking items.",
1611
+ "props": {
1612
+ "categoryGap": {
1613
+ "kind": "number",
1614
+ "description": "Gap between category rows."
1615
+ },
1616
+ "categoryWidth": {
1617
+ "kind": "number",
1618
+ "default": 120,
1619
+ "description": "Width reserved for the category labels running down the left. Category names are"
1620
+ },
1621
+ "colors": {
1622
+ "kind": "shape",
1623
+ "shape": "colorList",
1624
+ "description": "Custom color palette for bar series, applied in order and cycled if there are more"
1625
+ },
1626
+ "showAnimation": {
1627
+ "kind": "boolean",
1628
+ "description": "Whether to play the staggered grow-from-left entrance on mount."
1629
+ },
1630
+ "data": {
1631
+ "kind": "shape",
1632
+ "shape": "chartData",
1633
+ "required": true
1634
+ },
1635
+ "config": {
1636
+ "kind": "shape",
1637
+ "shape": "chartConfig",
1638
+ "required": true
1639
+ },
1640
+ "width": {
1641
+ "kind": "union",
1642
+ "types": [
1643
+ "number",
1644
+ "string"
1645
+ ]
1646
+ },
1647
+ "height": {
1648
+ "kind": "union",
1649
+ "types": [
1650
+ "number",
1651
+ "string"
1652
+ ]
1653
+ },
1654
+ "enableKeyboardNavigation": {
1655
+ "kind": "boolean"
1656
+ },
1657
+ "showXAxis": {
1658
+ "kind": "boolean"
1659
+ },
1660
+ "showYAxis": {
1661
+ "kind": "boolean"
1662
+ },
1663
+ "minValue": {
1664
+ "kind": "number"
1665
+ },
1666
+ "maxValue": {
1667
+ "kind": "number"
1668
+ },
1669
+ "showGrid": {
1670
+ "kind": "boolean"
1671
+ },
1672
+ "legend": {
1673
+ "kind": "enum",
1674
+ "options": [
1675
+ "top",
1676
+ "bottom",
1677
+ "none"
1678
+ ],
1679
+ "description": "Always-visible legend position, rendered from `config`'s labels/colors."
1680
+ },
1681
+ "barRadius": {
1682
+ "kind": "number"
1683
+ },
1684
+ "gap": {
1685
+ "kind": "number"
1686
+ },
1687
+ "radius": {
1688
+ "kind": "number"
1689
+ },
1690
+ "title": {
1691
+ "kind": "text",
1692
+ "description": "Card header title (the auto shell)"
1693
+ },
1694
+ "subtitle": {
1695
+ "kind": "text",
1696
+ "description": "Card header subtitle (the auto shell)"
1697
+ }
1698
+ }
1699
+ },
1700
+ "Icon": {
1701
+ "role": "leaf",
1702
+ "description": "Brand/payment/file-type glyph. `icon` is a name from IconName (payment/social/filetype glyphs) — a DIFFERENT, separate namespace from the icon-slot names (iconStart/iconEnd etc.) used elsewhere in this schema.",
1703
+ "props": {
1704
+ "icon": {
1705
+ "kind": "enum",
1706
+ "options": [
1707
+ "visa",
1708
+ "mastercard",
1709
+ "amex",
1710
+ "applepay",
1711
+ "paypal",
1712
+ "github",
1713
+ "x",
1714
+ "linkedin",
1715
+ "instagram",
1716
+ "facebook",
1717
+ "youtube",
1718
+ "discord",
1719
+ "dribbble",
1720
+ "tiktok",
1721
+ "reddit",
1722
+ "twitch",
1723
+ "slack",
1724
+ "medium",
1725
+ "pinterest",
1726
+ "snapchat",
1727
+ "whatsapp",
1728
+ "telegram",
1729
+ "google",
1730
+ "apple",
1731
+ "pdf",
1732
+ "doc",
1733
+ "docx",
1734
+ "txt",
1735
+ "xls",
1736
+ "xlsx",
1737
+ "csv",
1738
+ "ppt",
1739
+ "mp3",
1740
+ "wav",
1741
+ "mp4",
1742
+ "mov",
1743
+ "jpg",
1744
+ "png",
1745
+ "svg",
1746
+ "gif",
1747
+ "zip",
1748
+ "rar"
1749
+ ],
1750
+ "required": true
1751
+ },
1752
+ "size": {
1753
+ "kind": "union",
1754
+ "types": [
1755
+ "number",
1756
+ "string"
1757
+ ],
1758
+ "description": "Named size preset or custom pixel value. Payment icons scale at 3:2 ratio; others are square."
1759
+ },
1760
+ "colorMode": {
1761
+ "kind": "enum",
1762
+ "options": [
1763
+ "color",
1764
+ "mono"
1765
+ ]
1766
+ }
1767
+ }
1768
+ },
1769
+ "Input": {
1770
+ "role": "leaf",
1771
+ "description": "Single-line text input. Bind node.actions.change to onValueChange (fires with the raw string value).",
1772
+ "props": {
1773
+ "size": {
1774
+ "kind": "enum",
1775
+ "options": [
1776
+ "sm",
1777
+ "md",
1778
+ "lg"
1779
+ ],
1780
+ "description": "The size of the input"
1781
+ },
1782
+ "state": {
1783
+ "kind": "enum",
1784
+ "options": [
1785
+ "default",
1786
+ "disabled",
1787
+ "invalid"
1788
+ ],
1789
+ "description": "The state of the input (default, disabled, invalid)"
1790
+ },
1791
+ "type": {
1792
+ "kind": "enum",
1793
+ "options": [
1794
+ "number",
1795
+ "hidden",
1796
+ "color",
1797
+ "week",
1798
+ "month",
1799
+ "text",
1800
+ "password",
1801
+ "email",
1802
+ "tel",
1803
+ "url",
1804
+ "search",
1805
+ "date",
1806
+ "time",
1807
+ "datetime-local",
1808
+ "file",
1809
+ "image",
1810
+ "range",
1811
+ "reset",
1812
+ "submit",
1813
+ "creditCard",
1814
+ "expiryDate",
1815
+ "phone",
1816
+ "ssn",
1817
+ "currency"
1818
+ ],
1819
+ "description": "The type of input. In addition to standard HTML types,"
1820
+ },
1821
+ "label": {
1822
+ "kind": "text",
1823
+ "description": "Optional label for the input — pass a string for default styling, or a ReactNode for full control"
1824
+ },
1825
+ "helperText": {
1826
+ "kind": "text",
1827
+ "description": "Optional helper text below the input — pass a string for default styling, or a ReactNode for full control"
1828
+ },
1829
+ "errorMessage": {
1830
+ "kind": "text",
1831
+ "description": "Error message shown instead of `helperText` when `state=\"invalid\"`."
1832
+ },
1833
+ "iconStart": {
1834
+ "kind": "icon",
1835
+ "description": "Icon to display before the input (small decorative)"
1836
+ },
1837
+ "iconEnd": {
1838
+ "kind": "icon",
1839
+ "description": "Icon to display after the input (small decorative)"
1840
+ },
1841
+ "required": {
1842
+ "kind": "boolean",
1843
+ "description": "Whether the input is required"
1844
+ },
1845
+ "placeholder": {
1846
+ "kind": "string",
1847
+ "description": "Placeholder text"
1848
+ },
1849
+ "value": {
1850
+ "kind": "string",
1851
+ "description": "Current value (controlled)"
1852
+ },
1853
+ "disabled": {
1854
+ "kind": "boolean",
1855
+ "description": "Whether the input is disabled"
1856
+ },
1857
+ "name": {
1858
+ "kind": "string",
1859
+ "description": "Field name. Required for this control's value to be included when a parent Form is submitted. Must match /^[A-Za-z_][A-Za-z0-9_-]*$/."
1860
+ },
1861
+ "min": {
1862
+ "kind": "number",
1863
+ "description": "Minimum value (type=\"number\")"
1864
+ },
1865
+ "max": {
1866
+ "kind": "number",
1867
+ "description": "Maximum value (type=\"number\")"
1868
+ },
1869
+ "step": {
1870
+ "kind": "number",
1871
+ "description": "Step value (type=\"number\")"
1872
+ }
1873
+ }
1874
+ },
1875
+ "InputCounter": {
1876
+ "role": "leaf",
1877
+ "description": "Numeric stepper input. Bind node.actions.change to onChange (fires with the new number).",
1878
+ "props": {
1879
+ "value": {
1880
+ "kind": "number",
1881
+ "required": true,
1882
+ "description": "Current counter value (controlled)"
1883
+ },
1884
+ "state": {
1885
+ "kind": "enum",
1886
+ "options": [
1887
+ "default",
1888
+ "disabled",
1889
+ "invalid"
1890
+ ],
1891
+ "description": "Validation/interaction state"
1892
+ },
1893
+ "label": {
1894
+ "kind": "text",
1895
+ "description": "Field label rendered above the counter"
1896
+ },
1897
+ "helperText": {
1898
+ "kind": "text",
1899
+ "description": "Helper text rendered below the counter"
1900
+ },
1901
+ "errorMessage": {
1902
+ "kind": "text",
1903
+ "description": "Error message shown instead of `helperText` when `state=\"invalid\"`."
1904
+ },
1905
+ "min": {
1906
+ "kind": "number",
1907
+ "description": "Minimum allowed value (optional)"
1908
+ },
1909
+ "max": {
1910
+ "kind": "number",
1911
+ "description": "Maximum allowed value (optional)"
1912
+ },
1913
+ "step": {
1914
+ "kind": "number",
1915
+ "description": "Increment/decrement step size (default: 1)"
1916
+ },
1917
+ "disabled": {
1918
+ "kind": "boolean",
1919
+ "description": "Whether the counter is disabled"
1920
+ },
1921
+ "decimalPlaces": {
1922
+ "kind": "number",
1923
+ "description": "Number of decimal places to display (auto-detected from step if not specified)"
1924
+ },
1925
+ "required": {
1926
+ "kind": "boolean",
1927
+ "description": "Marks this field as required. A parent Form refuses to submit while it is empty, and lists it in the form's error summary."
1928
+ },
1929
+ "name": {
1930
+ "kind": "string",
1931
+ "description": "Field name. Required for this control's value to be included when a parent Form is submitted. Must match /^[A-Za-z_][A-Za-z0-9_-]*$/."
1932
+ }
1933
+ }
1934
+ },
1935
+ "InputDate": {
1936
+ "role": "leaf",
1937
+ "description": "Masked date input. value/onChange deal in a formatted display string, not a Date object. minDate/maxDate accept ISO date strings (coerced to Date internally before render). Bind node.actions.change to onChange — do NOT bind onComplete, it passes a raw Date object.",
1938
+ "props": {
1939
+ "value": {
1940
+ "kind": "string",
1941
+ "description": "Current date value (formatted string like \"12/25/2024\" or ISO string)"
1942
+ },
1943
+ "dateFormat": {
1944
+ "kind": "enum",
1945
+ "options": [
1946
+ "MM/DD/YYYY",
1947
+ "DD/MM/YYYY",
1948
+ "YYYY/MM/DD"
1949
+ ],
1950
+ "description": "Date format for display and parsing (default: auto-detected from locale)"
1951
+ },
1952
+ "size": {
1953
+ "kind": "enum",
1954
+ "options": [
1955
+ "sm",
1956
+ "md",
1957
+ "lg"
1958
+ ],
1959
+ "description": "The size of the input"
1960
+ },
1961
+ "required": {
1962
+ "kind": "boolean",
1963
+ "description": "Whether the input is required"
1964
+ },
1965
+ "state": {
1966
+ "kind": "enum",
1967
+ "options": [
1968
+ "default",
1969
+ "disabled",
1970
+ "invalid"
1971
+ ],
1972
+ "description": "The state of the input (default, disabled, invalid)"
1973
+ },
1974
+ "label": {
1975
+ "kind": "text",
1976
+ "description": "Optional label for the input — pass a string for default styling, or a ReactNode for full control"
1977
+ },
1978
+ "helperText": {
1979
+ "kind": "text",
1980
+ "description": "Optional helper text below the input — pass a string for default styling, or a ReactNode for full control"
1981
+ },
1982
+ "errorMessage": {
1983
+ "kind": "text",
1984
+ "description": "Error message shown instead of `helperText` when `state=\"invalid\"`."
1985
+ },
1986
+ "iconStart": {
1987
+ "kind": "icon",
1988
+ "description": "Icon to display before the input (small decorative)"
1989
+ },
1990
+ "iconEnd": {
1991
+ "kind": "icon",
1992
+ "description": "Icon to display after the input (small decorative)"
1993
+ },
1994
+ "placeholder": {
1995
+ "kind": "string",
1996
+ "description": "Placeholder text"
1997
+ },
1998
+ "disabled": {
1999
+ "kind": "boolean",
2000
+ "description": "Whether the input is disabled"
2001
+ },
2002
+ "minDate": {
2003
+ "kind": "string",
2004
+ "description": "Minimum selectable date, ISO format (e.g. \"2024-01-01\")"
2005
+ },
2006
+ "maxDate": {
2007
+ "kind": "string",
2008
+ "description": "Maximum selectable date, ISO format"
2009
+ },
2010
+ "name": {
2011
+ "kind": "string",
2012
+ "description": "Field name. Required for this control's value to be included when a parent Form is submitted. Must match /^[A-Za-z_][A-Za-z0-9_-]*$/."
2013
+ }
2014
+ }
2015
+ },
2016
+ "InputOTP": {
2017
+ "role": "leaf",
2018
+ "description": "One-time-code input. Bind node.actions.complete to onComplete (fires once every digit is filled) and/or node.actions.change to onChange (fires every keystroke).",
2019
+ "props": {
2020
+ "length": {
2021
+ "kind": "number",
2022
+ "default": 6,
2023
+ "description": "Number of OTP input fields"
2024
+ },
2025
+ "size": {
2026
+ "kind": "enum",
2027
+ "options": [
2028
+ "sm",
2029
+ "md",
2030
+ "lg",
2031
+ "xl"
2032
+ ],
2033
+ "default": "lg",
2034
+ "description": "Size of the OTP slots."
2035
+ },
2036
+ "value": {
2037
+ "kind": "string",
2038
+ "description": "Current OTP value (controlled)"
2039
+ },
2040
+ "defaultValue": {
2041
+ "kind": "string",
2042
+ "description": "Default OTP value (uncontrolled)"
2043
+ },
2044
+ "charset": {
2045
+ "kind": "enum",
2046
+ "options": [
2047
+ "numeric",
2048
+ "alphanumeric"
2049
+ ],
2050
+ "default": "alphanumeric",
2051
+ "description": "Which characters the code accepts. Drives the sanitizer (typed and pasted"
2052
+ },
2053
+ "state": {
2054
+ "kind": "enum",
2055
+ "options": [
2056
+ "default",
2057
+ "disabled",
2058
+ "invalid"
2059
+ ],
2060
+ "default": "default",
2061
+ "description": "Visual and functional state of the OTP input group."
2062
+ },
2063
+ "label": {
2064
+ "kind": "text",
2065
+ "description": "Label for the OTP input group"
2066
+ },
2067
+ "helperText": {
2068
+ "kind": "text",
2069
+ "description": "Helper text below the inputs"
2070
+ },
2071
+ "errorMessage": {
2072
+ "kind": "text",
2073
+ "description": "Error message shown instead of `helperText` when `state=\"invalid\"`."
2074
+ },
2075
+ "autoFocus": {
2076
+ "kind": "boolean",
2077
+ "default": true,
2078
+ "description": "Auto-focus the first input on mount"
2079
+ },
2080
+ "required": {
2081
+ "kind": "boolean",
2082
+ "description": "Marks this field as required. A parent Form refuses to submit while it is empty, and lists it in the form's error summary."
2083
+ },
2084
+ "name": {
2085
+ "kind": "string",
2086
+ "description": "Field name. Required for this control's value to be included when a parent Form is submitted. Must match /^[A-Za-z_][A-Za-z0-9_-]*$/."
2087
+ }
2088
+ }
2089
+ },
2090
+ "InputTag": {
2091
+ "role": "leaf",
2092
+ "description": "Free-form tag/chip input. Bind node.actions.change to onChange (fires with the full array of tag strings).",
2093
+ "props": {
2094
+ "value": {
2095
+ "kind": "shape",
2096
+ "shape": "stringList",
2097
+ "description": "Controlled value - array of tag strings"
2098
+ },
2099
+ "maxTags": {
2100
+ "kind": "number",
2101
+ "description": "Maximum number of tags allowed"
2102
+ },
2103
+ "allowDuplicates": {
2104
+ "kind": "boolean",
2105
+ "description": "Whether to allow duplicate tags (default: false)"
2106
+ },
2107
+ "size": {
2108
+ "kind": "enum",
2109
+ "options": [
2110
+ "sm",
2111
+ "md"
2112
+ ],
2113
+ "description": "The size of the input and tags (sm or md only)"
2114
+ },
2115
+ "state": {
2116
+ "kind": "enum",
2117
+ "options": [
2118
+ "default",
2119
+ "disabled",
2120
+ "invalid"
2121
+ ],
2122
+ "description": "The state of the input"
2123
+ },
2124
+ "label": {
2125
+ "kind": "text",
2126
+ "description": "Label for the input"
2127
+ },
2128
+ "helperText": {
2129
+ "kind": "text",
2130
+ "description": "Helper text displayed below the tags"
2131
+ },
2132
+ "placeholder": {
2133
+ "kind": "string",
2134
+ "description": "Placeholder text for the input"
2135
+ },
2136
+ "disabled": {
2137
+ "kind": "boolean",
2138
+ "description": "Whether the input is disabled"
2139
+ },
2140
+ "suggestions": {
2141
+ "kind": "shape",
2142
+ "shape": "optionItems",
2143
+ "description": "Array of suggestions to show in dropdown. When provided, enables dropdown mode"
2144
+ },
2145
+ "creatable": {
2146
+ "kind": "boolean",
2147
+ "description": "Allow free-form tags not in suggestions (default: true)"
2148
+ },
2149
+ "openOnFocus": {
2150
+ "kind": "boolean",
2151
+ "description": "Open dropdown on focus when suggestions are provided (default: true)"
2152
+ },
2153
+ "emptyMessage": {
2154
+ "kind": "string",
2155
+ "description": "Message shown when no suggestions match (default: \"No suggestions\")"
2156
+ },
2157
+ "required": {
2158
+ "kind": "boolean",
2159
+ "description": "Marks this field as required. A parent Form refuses to submit while it is empty, and lists it in the form's error summary."
2160
+ },
2161
+ "name": {
2162
+ "kind": "string",
2163
+ "description": "Field name. Required for this control's value to be included when a parent Form is submitted. Must match /^[A-Za-z_][A-Za-z0-9_-]*$/."
2164
+ }
2165
+ }
2166
+ },
2167
+ "Kbd": {
2168
+ "role": "leaf",
2169
+ "description": "Keyboard key/shortcut display. Use either `keys` (named keys) or `children` (custom text), not both.",
2170
+ "props": {
2171
+ "keys": {
2172
+ "kind": "shape",
2173
+ "shape": "kbdKeys",
2174
+ "description": "Array of keyboard keys to display"
2175
+ },
2176
+ "children": {
2177
+ "kind": "text",
2178
+ "description": "Custom content to display instead of using keys prop"
2179
+ },
2180
+ "size": {
2181
+ "kind": "enum",
2182
+ "options": [
2183
+ "sm",
2184
+ "md"
2185
+ ],
2186
+ "default": "md",
2187
+ "description": "Size variant"
2188
+ }
2189
+ }
2190
+ },
2191
+ "KPI": {
2192
+ "role": "leaf",
2193
+ "description": "KPI stat with trend and progress bar (auto Card shell).",
2194
+ "props": {
2195
+ "value": {
2196
+ "kind": "text",
2197
+ "required": true,
2198
+ "description": "The main metric value to display (e.g. \"$25.5M\", \"1,234\", \"89%\")"
2199
+ },
2200
+ "label": {
2201
+ "kind": "text",
2202
+ "description": "Label describing the metric (e.g. \"Fund raised\", \"Total Revenue\")"
2203
+ },
2204
+ "trend": {
2205
+ "kind": "number",
2206
+ "description": "Percentage change value (e.g. 20, -5.3). Determines trend direction & color."
2207
+ },
2208
+ "trendLabel": {
2209
+ "kind": "text",
2210
+ "description": "Custom trend label override (default: auto-formats as \"+20%\" or \"-5.3%\")"
2211
+ },
2212
+ "progress": {
2213
+ "kind": "number",
2214
+ "description": "Progress value from 0-100. Controls how many bars are filled."
2215
+ },
2216
+ "barCount": {
2217
+ "kind": "number",
2218
+ "default": 24,
2219
+ "description": "Total number of bars in the visualization."
2220
+ },
2221
+ "subtitle": {
2222
+ "kind": "text",
2223
+ "description": "Subtitle text below the bars (e.g. \"Compared to last month\")"
2224
+ },
2225
+ "icon": {
2226
+ "kind": "icon",
2227
+ "description": "Icon to display before the label."
2228
+ },
2229
+ "size": {
2230
+ "kind": "enum",
2231
+ "options": [
2232
+ "sm",
2233
+ "md",
2234
+ "lg"
2235
+ ],
2236
+ "default": "md",
2237
+ "description": "Size variant."
1228
2238
  },
1229
- "label": {
2239
+ "color": {
2240
+ "kind": "enum",
2241
+ "options": [
2242
+ "mono",
2243
+ "primary",
2244
+ "success",
2245
+ "warning",
2246
+ "danger"
2247
+ ],
2248
+ "default": "primary",
2249
+ "description": "Color for the filled bars and positive trend."
2250
+ }
2251
+ }
2252
+ },
2253
+ "LineChart": {
2254
+ "role": "leaf",
2255
+ "description": "Line chart (auto Card shell + shared-height container).",
2256
+ "props": {
2257
+ "color": {
2258
+ "kind": "enum",
2259
+ "options": [
2260
+ "primary",
2261
+ "success",
2262
+ "warning",
2263
+ "danger"
2264
+ ]
2265
+ },
2266
+ "dotRadius": {
2267
+ "kind": "number"
2268
+ },
2269
+ "radius": {
2270
+ "kind": "number"
2271
+ },
2272
+ "strokeWidth": {
2273
+ "kind": "number"
2274
+ },
2275
+ "curved": {
2276
+ "kind": "boolean"
2277
+ },
2278
+ "curveType": {
2279
+ "kind": "enum",
2280
+ "options": [
2281
+ "linear",
2282
+ "monotone"
2283
+ ]
2284
+ },
2285
+ "showDots": {
2286
+ "kind": "boolean"
2287
+ },
2288
+ "data": {
2289
+ "kind": "shape",
2290
+ "shape": "chartData",
2291
+ "required": true
2292
+ },
2293
+ "config": {
2294
+ "kind": "shape",
2295
+ "shape": "chartConfig",
2296
+ "required": true
2297
+ },
2298
+ "width": {
2299
+ "kind": "union",
2300
+ "types": [
2301
+ "number",
2302
+ "string"
2303
+ ]
2304
+ },
2305
+ "height": {
2306
+ "kind": "union",
2307
+ "types": [
2308
+ "number",
2309
+ "string"
2310
+ ]
2311
+ },
2312
+ "enableKeyboardNavigation": {
2313
+ "kind": "boolean"
2314
+ },
2315
+ "showXAxis": {
2316
+ "kind": "boolean"
2317
+ },
2318
+ "showYAxis": {
2319
+ "kind": "boolean"
2320
+ },
2321
+ "minValue": {
2322
+ "kind": "number"
2323
+ },
2324
+ "maxValue": {
2325
+ "kind": "number"
2326
+ },
2327
+ "showGrid": {
2328
+ "kind": "boolean"
2329
+ },
2330
+ "legend": {
2331
+ "kind": "enum",
2332
+ "options": [
2333
+ "top",
2334
+ "bottom",
2335
+ "none"
2336
+ ],
2337
+ "description": "Always-visible legend position, rendered from `config`'s labels/colors."
2338
+ },
2339
+ "title": {
2340
+ "kind": "text",
2341
+ "description": "Card header title (the auto shell)"
2342
+ },
2343
+ "subtitle": {
2344
+ "kind": "text",
2345
+ "description": "Card header subtitle (the auto shell)"
2346
+ }
2347
+ }
2348
+ },
2349
+ "Link": {
2350
+ "role": "leaf",
2351
+ "description": "Hyperlink (pass href) or low-emphasis link-styled button (omit href, pair with node.actions.click).",
2352
+ "props": {
2353
+ "size": {
2354
+ "kind": "enum",
2355
+ "options": [
2356
+ "sm",
2357
+ "md",
2358
+ "inherit"
2359
+ ],
2360
+ "default": "inherit",
2361
+ "description": "The size of the link."
2362
+ },
2363
+ "color": {
2364
+ "kind": "enum",
2365
+ "options": [
2366
+ "mono",
2367
+ "primary",
2368
+ "success",
2369
+ "warning",
2370
+ "danger"
2371
+ ],
2372
+ "default": "primary",
2373
+ "description": "Semantic color."
2374
+ },
2375
+ "disabled": {
2376
+ "kind": "boolean",
2377
+ "description": "Whether the link is disabled."
2378
+ },
2379
+ "children": {
2380
+ "kind": "text",
2381
+ "description": "Link contents"
2382
+ },
2383
+ "href": {
2384
+ "kind": "string",
2385
+ "description": "The URL the hyperlink points to. When set, Link renders an `<a>`."
2386
+ },
2387
+ "target": {
2388
+ "kind": "string",
2389
+ "description": "Anchor target (only meaningful with `href`)."
2390
+ },
2391
+ "rel": {
2392
+ "kind": "string",
2393
+ "description": "Anchor rel (only meaningful with `href`)."
2394
+ },
2395
+ "type": {
2396
+ "kind": "enum",
2397
+ "options": [
2398
+ "reset",
2399
+ "submit",
2400
+ "button"
2401
+ ],
2402
+ "default": "button",
2403
+ "description": "Button type when rendered as a `<button>` (no `href`)."
2404
+ }
2405
+ }
2406
+ },
2407
+ "Masonry": {
2408
+ "role": "container",
2409
+ "description": "Masonry/waterfall grid layout (responsive per-breakpoint column config not supported in generative specs — use a static column count). Children are spec nodes.",
2410
+ "props": {
2411
+ "gap": {
2412
+ "kind": "number",
2413
+ "description": "Gap between items in pixels"
2414
+ },
2415
+ "minColumns": {
2416
+ "kind": "number",
2417
+ "description": "Minimum columns count"
2418
+ },
2419
+ "maxColumns": {
2420
+ "kind": "number",
2421
+ "description": "Maximum columns count"
2422
+ },
2423
+ "sequential": {
2424
+ "kind": "boolean",
2425
+ "description": "Enable sequential placement (items placed in order vs optimal placement)"
2426
+ },
2427
+ "loading": {
2428
+ "kind": "boolean",
2429
+ "description": "Loading state"
2430
+ },
2431
+ "columns": {
2432
+ "kind": "number",
2433
+ "description": "Static column count"
2434
+ }
2435
+ }
2436
+ },
2437
+ "MenuItem": {
2438
+ "role": "leaf",
2439
+ "description": "Single menu/list row. Bind node.actions.activate to onActivate.",
2440
+ "props": {
2441
+ "children": {
2442
+ "kind": "text",
2443
+ "required": true,
2444
+ "description": "Main label content"
2445
+ },
2446
+ "startContent": {
2447
+ "kind": "icon",
2448
+ "description": "Icon or element at the start (left side)"
2449
+ },
2450
+ "endContent": {
2451
+ "kind": "icon",
2452
+ "description": "Icon or element at the end (right side)"
2453
+ },
2454
+ "subtitle": {
2455
+ "kind": "text",
2456
+ "description": "Secondary text below the label"
2457
+ },
2458
+ "shortcut": {
2459
+ "kind": "text",
2460
+ "description": "Keyboard shortcut display"
2461
+ },
2462
+ "disabled": {
2463
+ "kind": "boolean",
2464
+ "description": "Whether the item is disabled"
2465
+ },
2466
+ "isDanger": {
2467
+ "kind": "boolean",
2468
+ "description": "Whether the item has danger/destructive styling"
2469
+ },
2470
+ "selected": {
2471
+ "kind": "boolean",
2472
+ "description": "Whether the item is in a selected state (drives selected styling)"
2473
+ }
2474
+ }
2475
+ },
2476
+ "Message": {
2477
+ "role": "leaf",
2478
+ "description": "Chat message bubble (streaming/attachments/reactions/reply-quote not supported in generative specs — those are live-interaction features, not static display).",
2479
+ "props": {
2480
+ "variant": {
2481
+ "kind": "enum",
2482
+ "options": [
2483
+ "sender",
2484
+ "receiver",
2485
+ "system"
2486
+ ],
2487
+ "default": "receiver",
2488
+ "description": "The variant of the message (Chat UI semantic naming)"
2489
+ },
2490
+ "content": {
1230
2491
  "kind": "text",
2492
+ "description": "The message content (supports rich content, markdown, etc.)"
2493
+ },
2494
+ "showTimestamp": {
2495
+ "kind": "boolean",
2496
+ "default": true,
2497
+ "description": "Whether to show the timestamp"
2498
+ },
2499
+ "status": {
2500
+ "kind": "enum",
2501
+ "options": [
2502
+ "sending",
2503
+ "sent",
2504
+ "delivered",
2505
+ "read",
2506
+ "failed"
2507
+ ],
2508
+ "description": "Delivery status indicator (sending/sent/delivered/read/failed)"
2509
+ },
2510
+ "isGrouped": {
2511
+ "kind": "boolean",
2512
+ "description": "Whether this is a consecutive message from the same sender (hides avatar & name)"
2513
+ },
2514
+ "timestamp": {
2515
+ "kind": "string",
2516
+ "description": "Message timestamp, ISO format"
2517
+ }
2518
+ }
2519
+ },
2520
+ "Metric": {
2521
+ "role": "leaf",
2522
+ "description": "Single business metric with optional icon and trend.",
2523
+ "props": {
2524
+ "value": {
2525
+ "kind": "union",
2526
+ "types": [
2527
+ "number",
2528
+ "string"
2529
+ ],
1231
2530
  "required": true,
2531
+ "description": "The main value to display (number or formatted string)"
2532
+ },
2533
+ "label": {
2534
+ "kind": "text",
1232
2535
  "description": "Label describing the metric"
1233
2536
  },
1234
2537
  "subtitle": {
@@ -1270,7 +2573,7 @@
1270
2573
  "color": {
1271
2574
  "kind": "enum",
1272
2575
  "options": [
1273
- "neutral",
2576
+ "mono",
1274
2577
  "primary",
1275
2578
  "success",
1276
2579
  "warning",
@@ -1293,14 +2596,50 @@
1293
2596
  "kind": "text",
1294
2597
  "description": "Heading title (serializable slot). Setting any slot-prop"
1295
2598
  },
1296
- "subtitle": {
1297
- "kind": "text",
1298
- "description": "Secondary line under the title (serializable slot)."
2599
+ "subtitle": {
2600
+ "kind": "text",
2601
+ "description": "Secondary line under the title (serializable slot)."
2602
+ },
2603
+ "separator": {
2604
+ "kind": "boolean",
2605
+ "default": true,
2606
+ "description": "Show bottom separator."
2607
+ }
2608
+ }
2609
+ },
2610
+ "Pagination": {
2611
+ "role": "leaf",
2612
+ "description": "Page navigator. Bind node.actions.pageChange to onPageChange (fires with the new page number).",
2613
+ "props": {
2614
+ "currentPage": {
2615
+ "kind": "number",
2616
+ "required": true,
2617
+ "description": "The current active page number (1-based)"
2618
+ },
2619
+ "totalPages": {
2620
+ "kind": "number",
2621
+ "required": true,
2622
+ "description": "The total number of pages"
2623
+ },
2624
+ "size": {
2625
+ "kind": "enum",
2626
+ "options": [
2627
+ "sm",
2628
+ "md"
2629
+ ],
2630
+ "description": "Size variant of pagination"
2631
+ },
2632
+ "showFirstLast": {
2633
+ "kind": "boolean",
2634
+ "description": "Whether to show first/last page buttons"
1299
2635
  },
1300
- "separator": {
2636
+ "showPrevNext": {
1301
2637
  "kind": "boolean",
1302
- "default": true,
1303
- "description": "Show bottom separator."
2638
+ "description": "Whether to show previous/next buttons"
2639
+ },
2640
+ "siblingCount": {
2641
+ "kind": "number",
2642
+ "description": "Number of sibling pages to show around current page"
1304
2643
  }
1305
2644
  }
1306
2645
  },
@@ -1343,7 +2682,21 @@
1343
2682
  "props": {
1344
2683
  "value": {
1345
2684
  "kind": "number",
1346
- "description": "Progress value from 0 to 100."
2685
+ "description": "Progress value, from 0 to `max`."
2686
+ },
2687
+ "max": {
2688
+ "kind": "number",
2689
+ "default": 100,
2690
+ "description": "Upper bound of the range `value` is measured against."
2691
+ },
2692
+ "segments": {
2693
+ "kind": "number",
2694
+ "description": "Number of cells to render the bar as an LED-style segmented meter."
2695
+ },
2696
+ "segmentFade": {
2697
+ "kind": "boolean",
2698
+ "default": false,
2699
+ "description": "Fade the meter out across its last few lit cells (segmented form only)."
1347
2700
  },
1348
2701
  "size": {
1349
2702
  "kind": "enum",
@@ -1365,8 +2718,8 @@
1365
2718
  "options": [
1366
2719
  "top",
1367
2720
  "bottom",
1368
- "right",
1369
- "inside"
2721
+ "inside",
2722
+ "right"
1370
2723
  ],
1371
2724
  "default": "right",
1372
2725
  "description": "Position of the label"
@@ -1378,6 +2731,82 @@
1378
2731
  }
1379
2732
  }
1380
2733
  },
2734
+ "RadarChart": {
2735
+ "role": "leaf",
2736
+ "description": "Radar/spider chart (auto Card shell).",
2737
+ "props": {
2738
+ "axes": {
2739
+ "kind": "shape",
2740
+ "shape": "stringList",
2741
+ "required": true,
2742
+ "description": "Array of axis/category labels displayed at each spoke endpoint"
2743
+ },
2744
+ "series": {
2745
+ "kind": "shape",
2746
+ "shape": "radarSeries",
2747
+ "required": true,
2748
+ "description": "Array of data series to plot as filled polygons"
2749
+ },
2750
+ "size": {
2751
+ "kind": "number",
2752
+ "default": 400,
2753
+ "description": "SVG size in pixels (width and height of the SVG viewBox)"
2754
+ },
2755
+ "gridLevels": {
2756
+ "kind": "number",
2757
+ "default": 5,
2758
+ "description": "Number of concentric grid rings drawn from center to outer edge"
2759
+ },
2760
+ "maxValue": {
2761
+ "kind": "number",
2762
+ "default": "undefined (auto)",
2763
+ "description": "Maximum data value used for scaling."
2764
+ },
2765
+ "showGrid": {
2766
+ "kind": "boolean",
2767
+ "default": true,
2768
+ "description": "Whether to render the concentric grid polygons"
2769
+ },
2770
+ "showLabels": {
2771
+ "kind": "boolean",
2772
+ "default": true,
2773
+ "description": "Whether to render axis labels at each spoke endpoint"
2774
+ },
2775
+ "showLegend": {
2776
+ "kind": "boolean",
2777
+ "default": true,
2778
+ "description": "Whether to render the legend below the chart"
2779
+ },
2780
+ "showAnimation": {
2781
+ "kind": "boolean",
2782
+ "default": true,
2783
+ "description": "Whether to animate on mount using Framer Motion"
2784
+ },
2785
+ "fillOpacity": {
2786
+ "kind": "number",
2787
+ "default": 0.25,
2788
+ "description": "Fill opacity for the data polygons (0 to 1)"
2789
+ },
2790
+ "strokeWidth": {
2791
+ "kind": "number",
2792
+ "default": 2,
2793
+ "description": "Stroke width for the data polygon outlines"
2794
+ },
2795
+ "showTooltip": {
2796
+ "kind": "boolean",
2797
+ "default": true,
2798
+ "description": "Whether to show a tooltip on hover over data points"
2799
+ },
2800
+ "title": {
2801
+ "kind": "text",
2802
+ "description": "Card header title (the auto shell)"
2803
+ },
2804
+ "subtitle": {
2805
+ "kind": "text",
2806
+ "description": "Card header subtitle (the auto shell)"
2807
+ }
2808
+ }
2809
+ },
1381
2810
  "Rating": {
1382
2811
  "role": "leaf",
1383
2812
  "description": "Read-only star rating display.",
@@ -1431,6 +2860,80 @@
1431
2860
  "kind": "boolean",
1432
2861
  "default": false,
1433
2862
  "description": "Enable half-step rating increments"
2863
+ },
2864
+ "required": {
2865
+ "kind": "boolean",
2866
+ "description": "Marks this field as required. A parent Form refuses to submit while it is empty, and lists it in the form's error summary."
2867
+ },
2868
+ "name": {
2869
+ "kind": "string",
2870
+ "description": "Field name. Required for this control's value to be included when a parent Form is submitted. Must match /^[A-Za-z_][A-Za-z0-9_-]*$/."
2871
+ }
2872
+ }
2873
+ },
2874
+ "ScrollArea": {
2875
+ "role": "container",
2876
+ "description": "Custom-scrollbar viewport. Children are spec nodes.",
2877
+ "props": {
2878
+ "type": {
2879
+ "kind": "enum",
2880
+ "options": [
2881
+ "none",
2882
+ "auto",
2883
+ "always",
2884
+ "scroll",
2885
+ "hover"
2886
+ ],
2887
+ "default": "hover",
2888
+ "description": "Scrollbar visibility behavior"
2889
+ },
2890
+ "size": {
2891
+ "kind": "enum",
2892
+ "options": [
2893
+ "default",
2894
+ "thin"
2895
+ ],
2896
+ "default": "default",
2897
+ "description": "Scrollbar size"
2898
+ },
2899
+ "orientation": {
2900
+ "kind": "enum",
2901
+ "options": [
2902
+ "horizontal",
2903
+ "vertical",
2904
+ "both"
2905
+ ],
2906
+ "default": "vertical",
2907
+ "description": "Scroll direction"
2908
+ },
2909
+ "snap": {
2910
+ "kind": "enum",
2911
+ "options": [
2912
+ "mandatory",
2913
+ "proximity"
2914
+ ],
2915
+ "default": "undefined (no snapping)",
2916
+ "description": "Enable scroll snapping. Sets scroll-snap-type on the viewport (axis derived from orientation)."
2917
+ },
2918
+ "snapAlign": {
2919
+ "kind": "enum",
2920
+ "options": [
2921
+ "start",
2922
+ "center",
2923
+ "end"
2924
+ ],
2925
+ "default": "start",
2926
+ "description": "Snap alignment applied to direct children via [&>*]:snap-*."
2927
+ },
2928
+ "dragToScroll": {
2929
+ "kind": "boolean",
2930
+ "default": false,
2931
+ "description": "Enable mouse drag-to-scroll panning (grab the content and drag, like touch)."
2932
+ },
2933
+ "smooth": {
2934
+ "kind": "boolean",
2935
+ "default": true,
2936
+ "description": "Enable smooth momentum-based scrolling"
1434
2937
  }
1435
2938
  }
1436
2939
  },
@@ -1465,16 +2968,232 @@
1465
2968
  }
1466
2969
  }
1467
2970
  },
1468
- "Separator": {
2971
+ "Select": {
2972
+ "role": "leaf",
2973
+ "description": "Single-select dropdown (multi-select not supported in generative specs). Bind node.actions.change to onChange (fires with the selected option's value).",
2974
+ "props": {
2975
+ "name": {
2976
+ "kind": "string",
2977
+ "description": "Field name. Required for this control's value to be included when a parent Form is submitted. Must match /^[A-Za-z_][A-Za-z0-9_-]*$/."
2978
+ },
2979
+ "size": {
2980
+ "kind": "enum",
2981
+ "options": [
2982
+ "sm",
2983
+ "md",
2984
+ "lg"
2985
+ ],
2986
+ "description": "Size of the select component"
2987
+ },
2988
+ "state": {
2989
+ "kind": "enum",
2990
+ "options": [
2991
+ "default",
2992
+ "disabled",
2993
+ "invalid"
2994
+ ],
2995
+ "description": "Current state of the select component"
2996
+ },
2997
+ "placeholder": {
2998
+ "kind": "string",
2999
+ "description": "Placeholder text when no option is selected"
3000
+ },
3001
+ "disabled": {
3002
+ "kind": "boolean",
3003
+ "description": "Whether the select is disabled"
3004
+ },
3005
+ "required": {
3006
+ "kind": "boolean",
3007
+ "description": "Whether the select is required"
3008
+ },
3009
+ "options": {
3010
+ "kind": "shape",
3011
+ "shape": "optionItems",
3012
+ "required": true,
3013
+ "description": "Array of options to display"
3014
+ },
3015
+ "label": {
3016
+ "kind": "text",
3017
+ "description": "Label for the select — pass a string for default styling, or a ReactNode for full control"
3018
+ },
3019
+ "helperText": {
3020
+ "kind": "text",
3021
+ "description": "Helper text below the select — pass a string for default styling, or a ReactNode for full control"
3022
+ },
3023
+ "iconStart": {
3024
+ "kind": "icon",
3025
+ "description": "Left icon to display in the select button"
3026
+ },
3027
+ "iconEnd": {
3028
+ "kind": "icon",
3029
+ "description": "Right icon to display in the select button (default is chevron)"
3030
+ },
3031
+ "searchable": {
3032
+ "kind": "boolean",
3033
+ "description": "Whether the select is searchable"
3034
+ },
3035
+ "searchPlaceholder": {
3036
+ "kind": "string",
3037
+ "default": "Search...",
3038
+ "description": "Placeholder text for the search input shown when `searchable` is true."
3039
+ },
3040
+ "enableTypeahead": {
3041
+ "kind": "boolean",
3042
+ "description": "Whether to enable typeahead functionality (default: true)"
3043
+ },
3044
+ "aria-label": {
3045
+ "kind": "string",
3046
+ "description": "Accessible name for a Select with no visible `label` — e.g. a control sitting"
3047
+ },
3048
+ "value": {
3049
+ "kind": "string",
3050
+ "description": "Currently selected option's value (controlled)"
3051
+ }
3052
+ }
3053
+ },
3054
+ "Separator": {
3055
+ "role": "leaf",
3056
+ "description": "Horizontal or vertical divider.",
3057
+ "props": {
3058
+ "vertical": {
3059
+ "kind": "boolean",
3060
+ "default": false,
3061
+ "description": "Whether the separator is vertical (default is horizontal)"
3062
+ },
3063
+ "margin": {
3064
+ "kind": "enum",
3065
+ "options": [
3066
+ "sm",
3067
+ "md",
3068
+ "lg"
3069
+ ],
3070
+ "default": "md",
3071
+ "description": "The margin size for spacing"
3072
+ }
3073
+ }
3074
+ },
3075
+ "Skeleton": {
3076
+ "role": "leaf",
3077
+ "description": "Loading placeholder shape.",
3078
+ "props": {
3079
+ "variant": {
3080
+ "kind": "enum",
3081
+ "options": [
3082
+ "text",
3083
+ "circular",
3084
+ "rectangle"
3085
+ ],
3086
+ "default": "rectangle",
3087
+ "description": "The variant of the skeleton"
3088
+ },
3089
+ "width": {
3090
+ "kind": "union",
3091
+ "types": [
3092
+ "number",
3093
+ "string"
3094
+ ],
3095
+ "description": "Width of the skeleton"
3096
+ },
3097
+ "height": {
3098
+ "kind": "union",
3099
+ "types": [
3100
+ "number",
3101
+ "string"
3102
+ ],
3103
+ "description": "Height of the skeleton"
3104
+ },
3105
+ "lines": {
3106
+ "kind": "number",
3107
+ "default": 1,
3108
+ "description": "Number of skeleton lines to render (for text variant)"
3109
+ },
3110
+ "animate": {
3111
+ "kind": "boolean",
3112
+ "default": true,
3113
+ "description": "Whether to show pulse animation"
3114
+ }
3115
+ }
3116
+ },
3117
+ "Slider": {
3118
+ "role": "leaf",
3119
+ "description": "Single-thumb range slider (range/dual-thumb mode not supported in generative specs). Bind node.actions.change to onChange and/or node.actions.changeCommitted to onChangeCommitted (both fire with the new number).",
3120
+ "props": {
3121
+ "state": {
3122
+ "kind": "enum",
3123
+ "options": [
3124
+ "default",
3125
+ "disabled",
3126
+ "invalid"
3127
+ ],
3128
+ "description": "The state of the slider (default, disabled, invalid)"
3129
+ },
3130
+ "label": {
3131
+ "kind": "text",
3132
+ "description": "Optional label text for the slider"
3133
+ },
3134
+ "helperText": {
3135
+ "kind": "text",
3136
+ "description": "Optional helper text displayed below the slider"
3137
+ },
3138
+ "min": {
3139
+ "kind": "number",
3140
+ "description": "Minimum value for the slider"
3141
+ },
3142
+ "max": {
3143
+ "kind": "number",
3144
+ "description": "Maximum value for the slider"
3145
+ },
3146
+ "step": {
3147
+ "kind": "number",
3148
+ "description": "Step value for slider increments"
3149
+ },
3150
+ "showValue": {
3151
+ "kind": "boolean",
3152
+ "description": "Whether to show the current value"
3153
+ },
3154
+ "unit": {
3155
+ "kind": "string",
3156
+ "description": "Unit to display with the value (e.g., \"px\", \"%\", \"°\")"
3157
+ },
3158
+ "showMinMax": {
3159
+ "kind": "boolean",
3160
+ "description": "Whether to show min/max labels"
3161
+ },
3162
+ "showTicks": {
3163
+ "kind": "boolean",
3164
+ "description": "Whether to show tick marks"
3165
+ },
3166
+ "tickStep": {
3167
+ "kind": "number",
3168
+ "description": "Step for tick marks (defaults to step)"
3169
+ },
3170
+ "iconStart": {
3171
+ "kind": "icon",
3172
+ "description": "Icon to display at the start of the slider"
3173
+ },
3174
+ "iconEnd": {
3175
+ "kind": "icon",
3176
+ "description": "Icon to display at the end of the slider"
3177
+ },
3178
+ "required": {
3179
+ "kind": "boolean",
3180
+ "description": "Whether the slider is required"
3181
+ },
3182
+ "name": {
3183
+ "kind": "string",
3184
+ "description": "Field name. Required for this control's value to be included when a parent Form is submitted. Must match /^[A-Za-z_][A-Za-z0-9_-]*$/."
3185
+ },
3186
+ "value": {
3187
+ "kind": "number",
3188
+ "description": "Current value (controlled)"
3189
+ }
3190
+ }
3191
+ },
3192
+ "Spinner": {
1469
3193
  "role": "leaf",
1470
- "description": "Horizontal or vertical divider.",
3194
+ "description": "Loading spinner.",
1471
3195
  "props": {
1472
- "vertical": {
1473
- "kind": "boolean",
1474
- "default": false,
1475
- "description": "Whether the separator is vertical (default is horizontal)"
1476
- },
1477
- "margin": {
3196
+ "size": {
1478
3197
  "kind": "enum",
1479
3198
  "options": [
1480
3199
  "sm",
@@ -1482,7 +3201,20 @@
1482
3201
  "lg"
1483
3202
  ],
1484
3203
  "default": "md",
1485
- "description": "The margin size for spacing"
3204
+ "description": "The size of the spinner"
3205
+ },
3206
+ "color": {
3207
+ "kind": "enum",
3208
+ "options": [
3209
+ "mono",
3210
+ "primary",
3211
+ "success",
3212
+ "warning",
3213
+ "danger",
3214
+ "dark"
3215
+ ],
3216
+ "default": "primary",
3217
+ "description": "The color of the spinner"
1486
3218
  }
1487
3219
  }
1488
3220
  },
@@ -1493,6 +3225,7 @@
1493
3225
  "as": {
1494
3226
  "kind": "enum",
1495
3227
  "options": [
3228
+ "form",
1496
3229
  "div",
1497
3230
  "ul",
1498
3231
  "ol",
@@ -1501,7 +3234,6 @@
1501
3234
  "header",
1502
3235
  "footer",
1503
3236
  "aside",
1504
- "form",
1505
3237
  "fieldset"
1506
3238
  ],
1507
3239
  "default": "div",
@@ -1566,9 +3298,6 @@
1566
3298
  "barRadius": {
1567
3299
  "kind": "number"
1568
3300
  },
1569
- "gap": {
1570
- "kind": "number"
1571
- },
1572
3301
  "categoryGap": {
1573
3302
  "kind": "number"
1574
3303
  },
@@ -1646,57 +3375,72 @@
1646
3375
  "gradient"
1647
3376
  ]
1648
3377
  },
1649
- "dotRadius": {
1650
- "kind": "number"
3378
+ "title": {
3379
+ "kind": "text",
3380
+ "description": "Card header title (the auto shell)"
1651
3381
  },
1652
- "cellRadius": {
1653
- "kind": "number"
3382
+ "subtitle": {
3383
+ "kind": "text",
3384
+ "description": "Card header subtitle (the auto shell)"
3385
+ }
3386
+ }
3387
+ },
3388
+ "Switch": {
3389
+ "role": "leaf",
3390
+ "description": "Toggle switch. `checked` is the on/off state; `value` is a separate HTML form-submission identity, not the checked state. Bind node.actions.change to onChange (fires with the new checked boolean).",
3391
+ "props": {
3392
+ "checked": {
3393
+ "kind": "boolean",
3394
+ "description": "Whether the switch is checked (controlled mode)"
1654
3395
  },
1655
- "radius": {
1656
- "kind": "number"
3396
+ "defaultChecked": {
3397
+ "kind": "boolean",
3398
+ "description": "Initial checked state for uncontrolled mode"
1657
3399
  },
1658
- "strokeWidth": {
1659
- "kind": "number"
3400
+ "label": {
3401
+ "kind": "text",
3402
+ "description": "Label for the switch — pass a string for default styling, or a ReactNode for full control"
1660
3403
  },
1661
- "curved": {
1662
- "kind": "boolean"
3404
+ "description": {
3405
+ "kind": "text",
3406
+ "description": "Optional description — pass a string for default styling, or a ReactNode for full control"
1663
3407
  },
1664
- "curveType": {
3408
+ "state": {
1665
3409
  "kind": "enum",
1666
3410
  "options": [
1667
- "linear",
1668
- "monotone",
1669
- "step",
1670
- "stepBefore",
1671
- "stepAfter"
1672
- ]
1673
- },
1674
- "showDots": {
1675
- "kind": "boolean"
1676
- },
1677
- "fillOpacity": {
1678
- "kind": "number"
1679
- },
1680
- "showStroke": {
1681
- "kind": "boolean"
3411
+ "default",
3412
+ "disabled"
3413
+ ],
3414
+ "description": "The state of the switch (default, disabled, invalid)"
1682
3415
  },
1683
- "stacked": {
1684
- "kind": "boolean"
3416
+ "labelPosition": {
3417
+ "kind": "enum",
3418
+ "options": [
3419
+ "start",
3420
+ "end"
3421
+ ],
3422
+ "description": "Position of the label relative to the switch"
1685
3423
  },
1686
- "orientation": {
3424
+ "size": {
1687
3425
  "kind": "enum",
1688
3426
  "options": [
1689
- "vertical",
1690
- "horizontal"
1691
- ]
3427
+ "sm",
3428
+ "md",
3429
+ "lg"
3430
+ ],
3431
+ "description": "Size of the switch track and thumb"
1692
3432
  },
1693
- "title": {
1694
- "kind": "text",
1695
- "description": "Card header title (the auto shell)"
3433
+ "name": {
3434
+ "kind": "string",
3435
+ "description": "Field name. Required for this control's value to be included when a parent Form is submitted. Must match /^[A-Za-z_][A-Za-z0-9_-]*$/."
1696
3436
  },
1697
- "subtitle": {
1698
- "kind": "text",
1699
- "description": "Card header subtitle (the auto shell)"
3437
+ "value": {
3438
+ "kind": "string",
3439
+ "description": "HTML value attribute for the hidden input"
3440
+ },
3441
+ "required": {
3442
+ "kind": "boolean",
3443
+ "description": "Whether the hidden input is required"
1700
3444
  }
1701
3445
  }
1702
3446
  },
@@ -1789,65 +3533,246 @@
1789
3533
  "kind": "text",
1790
3534
  "description": "Card header title (the auto shell)"
1791
3535
  },
1792
- "subtitle": {
1793
- "kind": "text",
1794
- "description": "Card header subtitle (the auto shell)"
3536
+ "subtitle": {
3537
+ "kind": "text",
3538
+ "description": "Card header subtitle (the auto shell)"
3539
+ },
3540
+ "rowKey": {
3541
+ "kind": "string",
3542
+ "description": "Row field that uniquely identifies a row",
3543
+ "required": true
3544
+ }
3545
+ }
3546
+ },
3547
+ "Tag": {
3548
+ "role": "leaf",
3549
+ "description": "Compact label chip.",
3550
+ "props": {
3551
+ "children": {
3552
+ "kind": "text",
3553
+ "required": true,
3554
+ "description": "The content of the tag"
3555
+ },
3556
+ "size": {
3557
+ "kind": "enum",
3558
+ "options": [
3559
+ "sm",
3560
+ "md"
3561
+ ],
3562
+ "description": "The size of the tag"
3563
+ },
3564
+ "removable": {
3565
+ "kind": "boolean",
3566
+ "description": "Whether to show the remove button (default: true)"
3567
+ },
3568
+ "disabled": {
3569
+ "kind": "boolean",
3570
+ "description": "Whether the tag is disabled"
3571
+ },
3572
+ "animated": {
3573
+ "kind": "boolean",
3574
+ "description": "Whether to render with motion (layout + enter/exit animation). Default true."
3575
+ }
3576
+ }
3577
+ },
3578
+ "Textarea": {
3579
+ "role": "leaf",
3580
+ "description": "Multi-line text input. Bind node.actions.change to onValueChange (fires with the raw string value).",
3581
+ "props": {
3582
+ "size": {
3583
+ "kind": "enum",
3584
+ "options": [
3585
+ "sm",
3586
+ "md",
3587
+ "lg"
3588
+ ],
3589
+ "description": "The size of the textarea"
3590
+ },
3591
+ "state": {
3592
+ "kind": "enum",
3593
+ "options": [
3594
+ "default",
3595
+ "disabled",
3596
+ "invalid"
3597
+ ],
3598
+ "description": "The state of the textarea (default, disabled, invalid)"
3599
+ },
3600
+ "label": {
3601
+ "kind": "text",
3602
+ "description": "Optional label for the textarea — pass a string for default styling, or a ReactNode for full control"
3603
+ },
3604
+ "helperText": {
3605
+ "kind": "text",
3606
+ "description": "Optional helper text below the textarea — pass a string for default styling, or a ReactNode for full control"
3607
+ },
3608
+ "errorMessage": {
3609
+ "kind": "text",
3610
+ "description": "Error message shown instead of `helperText` when `state=\"invalid\"`."
3611
+ },
3612
+ "required": {
3613
+ "kind": "boolean",
3614
+ "description": "Whether the textarea is required"
3615
+ },
3616
+ "rows": {
3617
+ "kind": "number",
3618
+ "description": "Number of rows"
3619
+ },
3620
+ "cols": {
3621
+ "kind": "number",
3622
+ "description": "Number of columns"
3623
+ },
3624
+ "placeholder": {
3625
+ "kind": "string",
3626
+ "description": "Placeholder text"
3627
+ },
3628
+ "value": {
3629
+ "kind": "string",
3630
+ "description": "Current value (controlled)"
3631
+ },
3632
+ "disabled": {
3633
+ "kind": "boolean",
3634
+ "description": "Whether the textarea is disabled"
3635
+ },
3636
+ "name": {
3637
+ "kind": "string",
3638
+ "description": "Field name. Required for this control's value to be included when a parent Form is submitted. Must match /^[A-Za-z_][A-Za-z0-9_-]*$/."
3639
+ }
3640
+ }
3641
+ },
3642
+ "Timeline": {
3643
+ "role": "leaf",
3644
+ "description": "Event timeline driven by a serializable items array.",
3645
+ "props": {
3646
+ "layout": {
3647
+ "kind": "enum",
3648
+ "options": [
3649
+ "horizontal",
3650
+ "vertical"
3651
+ ],
3652
+ "default": "vertical",
3653
+ "description": "Layout orientation of the timeline"
3654
+ },
3655
+ "items": {
3656
+ "kind": "shape",
3657
+ "shape": "timelineItems",
3658
+ "description": "Data-driven items. When provided, the timeline renders from this array and"
3659
+ }
3660
+ }
3661
+ },
3662
+ "TimePicker": {
3663
+ "role": "leaf",
3664
+ "description": "Time-of-day picker. value/onChange deal in plain \"HH:mm\" strings, not Date objects. Bind node.actions.change to onChange.",
3665
+ "props": {
3666
+ "value": {
3667
+ "kind": "string",
3668
+ "description": "The selected time value in \"HH:mm\" format"
3669
+ },
3670
+ "defaultValue": {
3671
+ "kind": "string",
3672
+ "description": "Default time value for uncontrolled mode"
3673
+ },
3674
+ "format": {
3675
+ "kind": "enum",
3676
+ "options": [
3677
+ "12h",
3678
+ "24h"
3679
+ ],
3680
+ "description": "Display format: 12-hour or 24-hour"
3681
+ },
3682
+ "step": {
3683
+ "kind": "number",
3684
+ "description": "Step interval for minutes (1, 5, 10, 15, 30)"
3685
+ },
3686
+ "minTime": {
3687
+ "kind": "string",
3688
+ "description": "Minimum selectable time in \"HH:mm\" format"
3689
+ },
3690
+ "maxTime": {
3691
+ "kind": "string",
3692
+ "description": "Maximum selectable time in \"HH:mm\" format"
3693
+ },
3694
+ "disabled": {
3695
+ "kind": "boolean",
3696
+ "description": "Whether the component is disabled"
3697
+ },
3698
+ "placeholder": {
3699
+ "kind": "string",
3700
+ "description": "Placeholder text for the input"
3701
+ },
3702
+ "size": {
3703
+ "kind": "enum",
3704
+ "options": [
3705
+ "sm",
3706
+ "md",
3707
+ "lg"
3708
+ ],
3709
+ "description": "Size variant of the component"
3710
+ },
3711
+ "state": {
3712
+ "kind": "enum",
3713
+ "options": [
3714
+ "default",
3715
+ "disabled",
3716
+ "invalid"
3717
+ ],
3718
+ "description": "State variant of the component"
3719
+ },
3720
+ "clearable": {
3721
+ "kind": "boolean",
3722
+ "description": "Whether to show a clear button"
3723
+ },
3724
+ "label": {
3725
+ "kind": "text",
3726
+ "description": "Optional label text"
3727
+ },
3728
+ "helperText": {
3729
+ "kind": "text",
3730
+ "description": "Optional helper text"
3731
+ },
3732
+ "iconStart": {
3733
+ "kind": "icon",
3734
+ "description": "Icon to display at the start (left side)"
3735
+ },
3736
+ "iconEnd": {
3737
+ "kind": "icon",
3738
+ "description": "Icon to display at the end (right side)"
1795
3739
  },
1796
- "rowKey": {
3740
+ "required": {
3741
+ "kind": "boolean",
3742
+ "description": "Marks this field as required. A parent Form refuses to submit while it is empty, and lists it in the form's error summary."
3743
+ },
3744
+ "name": {
1797
3745
  "kind": "string",
1798
- "description": "Row field that uniquely identifies a row",
1799
- "required": true
3746
+ "description": "Field name. Required for this control's value to be included when a parent Form is submitted. Must match /^[A-Za-z_][A-Za-z0-9_-]*$/."
1800
3747
  }
1801
3748
  }
1802
3749
  },
1803
- "Tag": {
3750
+ "Tree": {
1804
3751
  "role": "leaf",
1805
- "description": "Compact label chip.",
3752
+ "description": "Hierarchical tree view driven by a serializable data array.",
1806
3753
  "props": {
1807
- "children": {
1808
- "kind": "text",
3754
+ "data": {
3755
+ "kind": "shape",
3756
+ "shape": "treeData",
1809
3757
  "required": true,
1810
- "description": "The content of the tag"
1811
- },
1812
- "size": {
1813
- "kind": "enum",
1814
- "options": [
1815
- "sm",
1816
- "md"
1817
- ],
1818
- "description": "The size of the tag"
3758
+ "description": "Tree data structure"
1819
3759
  },
1820
- "removable": {
3760
+ "selectable": {
1821
3761
  "kind": "boolean",
1822
- "description": "Whether to show the remove button (default: true)"
3762
+ "description": "Whether nodes can be selected"
1823
3763
  },
1824
- "disabled": {
3764
+ "checkable": {
1825
3765
  "kind": "boolean",
1826
- "description": "Whether the tag is disabled"
3766
+ "description": "Whether to show checkboxes for multi-selection"
1827
3767
  },
1828
- "animated": {
3768
+ "expandable": {
1829
3769
  "kind": "boolean",
1830
- "description": "Whether to render with motion (layout + enter/exit animation). Default true."
1831
- }
1832
- }
1833
- },
1834
- "Timeline": {
1835
- "role": "leaf",
1836
- "description": "Event timeline driven by a serializable items array.",
1837
- "props": {
1838
- "layout": {
1839
- "kind": "enum",
1840
- "options": [
1841
- "vertical",
1842
- "horizontal"
1843
- ],
1844
- "default": "vertical",
1845
- "description": "Layout orientation of the timeline"
3770
+ "description": "Whether nodes can be expanded/collapsed"
1846
3771
  },
1847
- "items": {
1848
- "kind": "shape",
1849
- "shape": "timelineItems",
1850
- "description": "Data-driven items. When provided, the timeline renders from this array and"
3772
+ "hierarchicalSelection": {
3773
+ "kind": "boolean",
3774
+ "default": "automatically enabled when checkable=true, false otherwise",
3775
+ "description": "Enable hierarchical selection behavior"
1851
3776
  }
1852
3777
  }
1853
3778
  }
@@ -1967,7 +3892,7 @@
1967
3892
  "success",
1968
3893
  "warning",
1969
3894
  "danger",
1970
- "neutral",
3895
+ "mono",
1971
3896
  "dark"
1972
3897
  ]
1973
3898
  }
@@ -2054,6 +3979,310 @@
2054
3979
  }
2055
3980
  }
2056
3981
  }
3982
+ },
3983
+ "treeData": {
3984
+ "description": "Recursive array of { id, label } (required strings) plus optional children (nested TreeNode[]), expanded/selected/disabled (booleans), and data (freeform passthrough object). Per-node icons are not supported.",
3985
+ "type": "array",
3986
+ "items": {
3987
+ "type": "object",
3988
+ "required": [
3989
+ "id",
3990
+ "label"
3991
+ ],
3992
+ "properties": {
3993
+ "id": {
3994
+ "type": "string"
3995
+ },
3996
+ "label": {
3997
+ "type": "string"
3998
+ },
3999
+ "children": {
4000
+ "type": "array"
4001
+ },
4002
+ "expanded": {
4003
+ "type": "boolean"
4004
+ },
4005
+ "selected": {
4006
+ "type": "boolean"
4007
+ },
4008
+ "disabled": {
4009
+ "type": "boolean"
4010
+ },
4011
+ "data": {
4012
+ "type": "object"
4013
+ }
4014
+ }
4015
+ }
4016
+ },
4017
+ "commandItems": {
4018
+ "description": "Array of { id, label } (required strings) plus optional subtitle, shortcut (string), and group (string, for grouped display). Per-item icons (contentStart/contentEnd) are not supported.",
4019
+ "type": "array",
4020
+ "items": {
4021
+ "type": "object",
4022
+ "required": [
4023
+ "id",
4024
+ "label"
4025
+ ],
4026
+ "properties": {
4027
+ "id": {
4028
+ "type": "string"
4029
+ },
4030
+ "label": {
4031
+ "type": "string"
4032
+ },
4033
+ "subtitle": {
4034
+ "type": "string"
4035
+ },
4036
+ "shortcut": {
4037
+ "type": "string"
4038
+ },
4039
+ "group": {
4040
+ "type": "string"
4041
+ }
4042
+ }
4043
+ }
4044
+ },
4045
+ "optionItems": {
4046
+ "description": "Array of { id, label, value } (all strings, required) plus optional disabled (boolean). Shared shape for Select/Combobox options and InputTag suggestions.",
4047
+ "type": "array",
4048
+ "items": {
4049
+ "type": "object",
4050
+ "required": [
4051
+ "id",
4052
+ "label",
4053
+ "value"
4054
+ ],
4055
+ "properties": {
4056
+ "id": {
4057
+ "type": "string"
4058
+ },
4059
+ "label": {
4060
+ "type": "string"
4061
+ },
4062
+ "value": {
4063
+ "type": "string"
4064
+ },
4065
+ "disabled": {
4066
+ "type": "boolean"
4067
+ }
4068
+ }
4069
+ }
4070
+ },
4071
+ "stringList": {
4072
+ "description": "Array of plain strings.",
4073
+ "type": "array",
4074
+ "items": {
4075
+ "type": "string"
4076
+ }
4077
+ },
4078
+ "kbdKeys": {
4079
+ "description": "Array of named keyboard keys.",
4080
+ "type": "array",
4081
+ "items": {
4082
+ "enum": [
4083
+ "command",
4084
+ "shift",
4085
+ "ctrl",
4086
+ "option",
4087
+ "enter",
4088
+ "delete",
4089
+ "escape",
4090
+ "tab",
4091
+ "capslock",
4092
+ "up",
4093
+ "right",
4094
+ "down",
4095
+ "left",
4096
+ "pageup",
4097
+ "pagedown",
4098
+ "home",
4099
+ "end",
4100
+ "help",
4101
+ "space",
4102
+ "fn",
4103
+ "win",
4104
+ "alt"
4105
+ ]
4106
+ }
4107
+ },
4108
+ "ganttTasks": {
4109
+ "description": "Array of task bars: { id, groupId, title, startDate, endDate, progress } all required (dates: ISO strings, progress: number 0-100), plus optional color (CSS string), completed (boolean), milestone (boolean), dependencies (array of task id strings).",
4110
+ "type": "array",
4111
+ "items": {
4112
+ "type": "object",
4113
+ "required": [
4114
+ "id",
4115
+ "groupId",
4116
+ "title",
4117
+ "startDate",
4118
+ "endDate",
4119
+ "progress"
4120
+ ],
4121
+ "properties": {
4122
+ "id": {
4123
+ "type": "string"
4124
+ },
4125
+ "groupId": {
4126
+ "type": "string"
4127
+ },
4128
+ "title": {
4129
+ "type": "string"
4130
+ },
4131
+ "startDate": {
4132
+ "type": "string"
4133
+ },
4134
+ "endDate": {
4135
+ "type": "string"
4136
+ },
4137
+ "progress": {
4138
+ "type": "number"
4139
+ },
4140
+ "color": {
4141
+ "type": "string"
4142
+ },
4143
+ "completed": {
4144
+ "type": "boolean"
4145
+ },
4146
+ "milestone": {
4147
+ "type": "boolean"
4148
+ },
4149
+ "dependencies": {
4150
+ "type": "array",
4151
+ "items": {
4152
+ "type": "string"
4153
+ }
4154
+ }
4155
+ }
4156
+ }
4157
+ },
4158
+ "ganttGroups": {
4159
+ "description": "Array of task-row groupings: { id, title, color } (all required strings) plus optional order (number).",
4160
+ "type": "array",
4161
+ "items": {
4162
+ "type": "object",
4163
+ "required": [
4164
+ "id",
4165
+ "title",
4166
+ "color"
4167
+ ],
4168
+ "properties": {
4169
+ "id": {
4170
+ "type": "string"
4171
+ },
4172
+ "title": {
4173
+ "type": "string"
4174
+ },
4175
+ "color": {
4176
+ "type": "string"
4177
+ },
4178
+ "order": {
4179
+ "type": "number"
4180
+ }
4181
+ }
4182
+ }
4183
+ },
4184
+ "radarSeries": {
4185
+ "description": "Array of data series: { label, data, color } all required — data is an array of numbers (one per axis, same length as the axes array), color is a CSS/hex color string.",
4186
+ "type": "array",
4187
+ "items": {
4188
+ "type": "object",
4189
+ "required": [
4190
+ "label",
4191
+ "data",
4192
+ "color"
4193
+ ],
4194
+ "properties": {
4195
+ "label": {
4196
+ "type": "string"
4197
+ },
4198
+ "data": {
4199
+ "type": "array",
4200
+ "items": {
4201
+ "type": "number"
4202
+ }
4203
+ },
4204
+ "color": {
4205
+ "type": "string"
4206
+ }
4207
+ }
4208
+ }
4209
+ },
4210
+ "activityRings": {
4211
+ "description": "Array of rings, ordered outer to inner: { value } (number 0-100, required) plus optional label (string) and color (CSS/hex string).",
4212
+ "type": "array",
4213
+ "items": {
4214
+ "type": "object",
4215
+ "required": [
4216
+ "value"
4217
+ ],
4218
+ "properties": {
4219
+ "value": {
4220
+ "type": "number"
4221
+ },
4222
+ "label": {
4223
+ "type": "string"
4224
+ },
4225
+ "color": {
4226
+ "type": "string"
4227
+ }
4228
+ }
4229
+ }
4230
+ },
4231
+ "heatmapPoints": {
4232
+ "description": "Array of cells: { x, y, value } all required — x/y are the axis categories (string or number), value is a number or null (renders as empty/muted).",
4233
+ "type": "array",
4234
+ "items": {
4235
+ "type": "object",
4236
+ "required": [
4237
+ "x",
4238
+ "y",
4239
+ "value"
4240
+ ],
4241
+ "properties": {
4242
+ "x": {
4243
+ "oneOf": [
4244
+ {
4245
+ "type": "string"
4246
+ },
4247
+ {
4248
+ "type": "number"
4249
+ }
4250
+ ]
4251
+ },
4252
+ "y": {
4253
+ "oneOf": [
4254
+ {
4255
+ "type": "string"
4256
+ },
4257
+ {
4258
+ "type": "number"
4259
+ }
4260
+ ]
4261
+ },
4262
+ "value": {
4263
+ "oneOf": [
4264
+ {
4265
+ "type": "number"
4266
+ },
4267
+ {
4268
+ "type": "null"
4269
+ }
4270
+ ]
4271
+ }
4272
+ }
4273
+ }
4274
+ },
4275
+ "heatmapLegendLabels": {
4276
+ "description": "Captions at each end of the colour ramp, both optional: { min, max }.",
4277
+ "type": "object",
4278
+ "properties": {
4279
+ "min": {
4280
+ "type": "string"
4281
+ },
4282
+ "max": {
4283
+ "type": "string"
4284
+ }
4285
+ }
2057
4286
  }
2058
4287
  },
2059
4288
  "examples": [