@flikk/ui 1.0.0-beta.26 → 1.0.0-beta.29

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 (418) hide show
  1. package/dist/bg/1.webp +0 -0
  2. package/dist/bg/10.webp +0 -0
  3. package/dist/bg/11.webp +0 -0
  4. package/dist/bg/12.webp +0 -0
  5. package/dist/bg/13.webp +0 -0
  6. package/dist/bg/14.webp +0 -0
  7. package/dist/bg/15.webp +0 -0
  8. package/dist/bg/16.webp +0 -0
  9. package/dist/bg/17.webp +0 -0
  10. package/dist/bg/18.webp +0 -0
  11. package/dist/bg/19.webp +0 -0
  12. package/dist/bg/2.webp +0 -0
  13. package/dist/bg/20.webp +0 -0
  14. package/dist/bg/21.webp +0 -0
  15. package/dist/bg/22.webp +0 -0
  16. package/dist/bg/3.webp +0 -0
  17. package/dist/bg/4.webp +0 -0
  18. package/dist/bg/5.webp +0 -0
  19. package/dist/bg/6.webp +0 -0
  20. package/dist/bg/7.webp +0 -0
  21. package/dist/bg/8.webp +0 -0
  22. package/dist/bg/9.webp +0 -0
  23. package/dist/components/ai/CodeBlock/CodeBlock.theme.js +1 -1
  24. package/dist/components/ai/PromptInput/PromptInput.js +7 -140
  25. package/dist/components/ai/PromptInput/VoiceRecorder.js +0 -85
  26. package/dist/components/ai/TokenCounter/TokenCounter.theme.js +1 -1
  27. package/dist/components/canvas/Background.d.ts +19 -0
  28. package/dist/components/canvas/Background.js +23 -0
  29. package/dist/components/canvas/BaseNode.d.ts +15 -0
  30. package/dist/components/canvas/BaseNode.js +20 -0
  31. package/dist/components/canvas/CanvasToolbar.d.ts +34 -0
  32. package/dist/components/canvas/CanvasToolbar.js +34 -0
  33. package/dist/components/canvas/Edge.d.ts +35 -0
  34. package/dist/components/canvas/Edge.js +97 -0
  35. package/dist/components/canvas/EdgeLayer.d.ts +18 -0
  36. package/dist/components/canvas/EdgeLayer.js +111 -0
  37. package/dist/components/canvas/Handle.d.ts +11 -0
  38. package/dist/components/canvas/Handle.js +63 -0
  39. package/dist/components/canvas/MiniMap.d.ts +22 -0
  40. package/dist/components/canvas/MiniMap.js +105 -0
  41. package/dist/components/canvas/NodeCanvas.d.ts +10 -0
  42. package/dist/components/canvas/NodeCanvas.js +477 -0
  43. package/dist/components/canvas/NodeCanvas.theme.d.ts +7 -0
  44. package/dist/components/canvas/NodeCanvas.theme.js +9 -0
  45. package/dist/components/canvas/NodeCanvas.types.d.ts +187 -0
  46. package/dist/components/canvas/NodeControls.d.ts +25 -0
  47. package/dist/components/canvas/NodeControls.js +40 -0
  48. package/dist/components/canvas/NodeRenderer.d.ts +19 -0
  49. package/dist/components/canvas/NodeRenderer.js +117 -0
  50. package/dist/components/canvas/changes.d.ts +11 -0
  51. package/dist/components/canvas/changes.js +76 -0
  52. package/dist/components/canvas/context/CanvasContext.d.ts +32 -0
  53. package/dist/components/canvas/context/CanvasContext.js +14 -0
  54. package/dist/components/canvas/context/ConnectionContext.d.ts +33 -0
  55. package/dist/components/canvas/context/ConnectionContext.js +13 -0
  56. package/dist/components/canvas/context/HandleRegistry.d.ts +24 -0
  57. package/dist/components/canvas/context/HandleRegistry.js +15 -0
  58. package/dist/components/canvas/context/InteractionContext.d.ts +18 -0
  59. package/dist/components/canvas/context/InteractionContext.js +14 -0
  60. package/dist/components/canvas/context/NodeIdContext.d.ts +3 -0
  61. package/dist/components/canvas/context/NodeIdContext.js +15 -0
  62. package/dist/components/canvas/hooks/useConnection.d.ts +17 -0
  63. package/dist/components/canvas/hooks/useConnection.js +29 -0
  64. package/dist/components/canvas/hooks/useMarquee.d.ts +25 -0
  65. package/dist/components/canvas/hooks/useMarquee.js +91 -0
  66. package/dist/components/canvas/hooks/useNodeDrag.d.ts +23 -0
  67. package/dist/components/canvas/hooks/useNodeDrag.js +110 -0
  68. package/dist/components/canvas/hooks/usePanZoom.d.ts +30 -0
  69. package/dist/components/canvas/hooks/usePanZoom.js +189 -0
  70. package/dist/components/canvas/hooks/useViewport.d.ts +21 -0
  71. package/dist/components/canvas/hooks/useViewport.js +35 -0
  72. package/dist/components/canvas/index.d.ts +14 -0
  73. package/dist/components/canvas/index.js +12 -0
  74. package/dist/components/canvas/layout.d.ts +22 -0
  75. package/dist/components/canvas/layout.js +67 -0
  76. package/dist/components/canvas/utils.d.ts +4 -0
  77. package/dist/components/canvas/utils.js +16 -0
  78. package/dist/components/charts/AreaChart/AreaChart.js +136 -101
  79. package/dist/components/charts/AreaChart/AreaChart.types.d.ts +5 -5
  80. package/dist/components/charts/AreaChart/AreaChart.types.js +1 -0
  81. package/dist/components/charts/BarChart/BarChart.js +207 -143
  82. package/dist/components/charts/BarChart/BarChart.types.d.ts +4 -4
  83. package/dist/components/charts/BarChart/BarChart.types.js +1 -0
  84. package/dist/components/charts/ComboChart/ComboChart.types.d.ts +2 -2
  85. package/dist/components/charts/LineChart/LineChart.js +88 -72
  86. package/dist/components/charts/LineChart/LineChart.types.d.ts +3 -3
  87. package/dist/components/charts/RadarChart/RadarChart.js +1 -1
  88. package/dist/components/charts/RadarChart/RadarChart.theme.js +5 -2
  89. package/dist/components/charts/ScatterPlot/ScatterPlot.js +62 -72
  90. package/dist/components/charts/ScatterPlot/ScatterPlot.theme.js +10 -1
  91. package/dist/components/charts/ScatterPlot/ScatterPlot.types.d.ts +3 -9
  92. package/dist/components/charts/StackedBarChart/StackedBarChart.js +33 -33
  93. package/dist/components/charts/StackedBarChart/StackedBarChart.types.d.ts +2 -2
  94. package/dist/components/charts/hooks/index.d.ts +2 -0
  95. package/dist/components/charts/hooks/useChartDimensions.d.ts +29 -0
  96. package/dist/components/charts/hooks/useChartDimensions.js +42 -0
  97. package/dist/components/charts/shared/ChartTooltip/ChartTooltip.theme.js +1 -1
  98. package/dist/components/charts/types/chart.types.d.ts +11 -2
  99. package/dist/components/charts/types/chart.types.js +10 -3
  100. package/dist/components/core/Avatar/Avatar.js +5 -1
  101. package/dist/components/core/AvatarGroup/AvatarGroup.js +5 -1
  102. package/dist/components/core/AvatarGroup/AvatarGroup.theme.js +4 -2
  103. package/dist/components/core/Badge/Badge.js +1 -1
  104. package/dist/components/core/Badge/Badge.theme.js +16 -15
  105. package/dist/components/core/Button/Button.js +1 -1
  106. package/dist/components/core/Button/Button.theme.js +3 -3
  107. package/dist/components/core/Calendar/Calendar.theme.js +1 -1
  108. package/dist/components/core/Card/Card.js +7 -3
  109. package/dist/components/core/Card/Card.theme.js +3 -3
  110. package/dist/components/core/Card/Card.types.d.ts +27 -2
  111. package/dist/components/core/CommandPalette/CommandItem.js +4 -5
  112. package/dist/components/core/CommandPalette/CommandPalette.js +1 -1
  113. package/dist/components/core/CommandPalette/CommandPalette.theme.js +11 -13
  114. package/dist/components/core/CommandPalette/CommandPalette.types.d.ts +0 -2
  115. package/dist/components/core/ContextMenu/ContextMenu.theme.js +14 -15
  116. package/dist/components/core/ContextMenu/ContextMenuItem.js +1 -1
  117. package/dist/components/core/ContextMenu/ContextMenuSubTrigger.js +1 -1
  118. package/dist/components/core/DotSeparator/DotSeparator.d.ts +3 -0
  119. package/dist/components/core/DotSeparator/DotSeparator.js +19 -0
  120. package/dist/components/core/DotSeparator/DotSeparator.theme.d.ts +2 -0
  121. package/dist/components/core/DotSeparator/DotSeparator.theme.js +10 -0
  122. package/dist/components/core/DotSeparator/DotSeparator.types.d.ts +25 -0
  123. package/dist/components/core/DotSeparator/index.d.ts +3 -0
  124. package/dist/components/core/Dropdown/Dropdown.theme.js +5 -6
  125. package/dist/components/core/Dropdown/DropdownItem.js +1 -1
  126. package/dist/components/core/Dropdown/DropdownMenu.js +58 -30
  127. package/dist/components/core/HeroCard/HeroCard.d.ts +5 -0
  128. package/dist/components/core/HeroCard/HeroCard.js +99 -0
  129. package/dist/components/core/HeroCard/HeroCard.theme.d.ts +3 -0
  130. package/dist/components/core/HeroCard/HeroCard.theme.js +8 -0
  131. package/dist/components/core/HeroCard/HeroCard.types.d.ts +70 -0
  132. package/dist/components/core/HeroCard/index.d.ts +4 -0
  133. package/dist/components/core/Kbd/Kbd.theme.js +1 -1
  134. package/dist/components/core/MenuItem/MenuItem.js +5 -2
  135. package/dist/components/core/MenuItem/MenuItem.theme.d.ts +6 -0
  136. package/dist/components/core/MenuItem/MenuItem.theme.js +19 -16
  137. package/dist/components/core/MenuItem/MenuItem.types.d.ts +2 -0
  138. package/dist/components/core/Modal/Modal.d.ts +1 -1
  139. package/dist/components/core/Modal/Modal.js +2 -7
  140. package/dist/components/core/Modal/Modal.theme.js +4 -8
  141. package/dist/components/core/Modal/Modal.types.d.ts +0 -10
  142. package/dist/components/core/Modal/index.d.ts +1 -1
  143. package/dist/components/core/ModalStack/ModalStack.d.ts +1 -1
  144. package/dist/components/core/ModalStack/ModalStack.types.d.ts +1 -2
  145. package/dist/components/core/ModalStack/ModalStackModal.d.ts +1 -1
  146. package/dist/components/core/ModalStack/ModalStackModal.js +2 -7
  147. package/dist/components/core/NavItem/NavItem.js +20 -4
  148. package/dist/components/core/NavItem/NavItem.theme.js +13 -2
  149. package/dist/components/core/PageHeading/PageHeading.theme.js +2 -2
  150. package/dist/components/core/Popover/Popover.theme.js +1 -1
  151. package/dist/components/core/Popover/Popover.types.d.ts +6 -2
  152. package/dist/components/core/Popover/PopoverBody.js +10 -3
  153. package/dist/components/core/ScrollArea/ScrollArea.js +242 -4
  154. package/dist/components/core/ScrollArea/ScrollArea.types.d.ts +12 -1
  155. package/dist/components/core/ScrollArea/smooth/SmoothScrollEngine.d.ts +4 -0
  156. package/dist/components/core/ScrollArea/smooth/SmoothScrollEngine.js +23 -0
  157. package/dist/components/core/ScrollArea/smooth/useSmoothScroll.js +4 -0
  158. package/dist/components/core/ScrollArea/smooth/useSmoothScroll.types.d.ts +5 -0
  159. package/dist/components/core/Segmented/Segmented.theme.js +2 -2
  160. package/dist/components/core/Sidebar/Sidebar.d.ts +2 -0
  161. package/dist/components/core/Sidebar/Sidebar.js +15 -7
  162. package/dist/components/core/Sidebar/Sidebar.types.d.ts +92 -4
  163. package/dist/components/core/Sidebar/SidebarCard.d.ts +25 -0
  164. package/dist/components/core/Sidebar/SidebarCard.js +68 -0
  165. package/dist/components/core/Sidebar/SidebarCard.theme.d.ts +8 -0
  166. package/dist/components/core/Sidebar/SidebarCard.theme.js +18 -0
  167. package/dist/components/core/Sidebar/SidebarContent.js +5 -1
  168. package/dist/components/core/Sidebar/SidebarContext.js +1 -1
  169. package/dist/components/core/Sidebar/SidebarHeader.js +10 -2
  170. package/dist/components/core/Sidebar/SidebarLogo.js +38 -3
  171. package/dist/components/core/Sidebar/SidebarSearch.d.ts +22 -0
  172. package/dist/components/core/Sidebar/SidebarSearch.js +135 -0
  173. package/dist/components/core/Sidebar/SidebarToggle.js +1 -1
  174. package/dist/components/core/Sidebar/SidebarUserProfile.js +2 -2
  175. package/dist/components/core/Sidebar/index.d.ts +3 -1
  176. package/dist/components/core/Tag/Tag.js +29 -5
  177. package/dist/components/core/Tag/Tag.theme.js +13 -8
  178. package/dist/components/core/Tag/Tag.types.d.ts +7 -0
  179. package/dist/components/core/Tooltip/Tooltip.js +1 -1
  180. package/dist/components/core/Tooltip/Tooltip.theme.js +1 -2
  181. package/dist/components/core/index.d.ts +2 -0
  182. package/dist/components/core/index.js +6 -0
  183. package/dist/components/data-display/DescriptionList/DescriptionList.js +23 -7
  184. package/dist/components/data-display/DescriptionList/DescriptionList.theme.js +10 -3
  185. package/dist/components/data-display/DescriptionList/DescriptionList.types.d.ts +49 -10
  186. package/dist/components/data-display/DescriptionList/index.d.ts +1 -1
  187. package/dist/components/data-display/Feed/Feed.js +28 -5
  188. package/dist/components/data-display/Feed/Feed.theme.js +1 -1
  189. package/dist/components/data-display/Feed/Feed.types.d.ts +32 -1
  190. package/dist/components/data-display/Feed/index.d.ts +1 -1
  191. package/dist/components/data-display/GanttChart/GanttChart.d.ts +1 -1
  192. package/dist/components/data-display/GanttChart/GanttChart.js +31 -4
  193. package/dist/components/data-display/GanttChart/GanttChart.theme.js +19 -17
  194. package/dist/components/data-display/GanttChart/GanttChart.types.d.ts +19 -0
  195. package/dist/components/data-display/GanttChart/GanttChart.utils.js +1 -1
  196. package/dist/components/data-display/GanttChart/GanttChartPanel.d.ts +1 -1
  197. package/dist/components/data-display/GanttChart/GanttChartPanel.js +3 -3
  198. package/dist/components/data-display/GanttChart/GanttDependencyArrows.js +7 -4
  199. package/dist/components/data-display/GanttChart/GanttMilestone.js +5 -5
  200. package/dist/components/data-display/GanttChart/GanttTablePanel.js +1 -1
  201. package/dist/components/data-display/GanttChart/GanttTableTaskRow.js +2 -2
  202. package/dist/components/data-display/GanttChart/GanttTaskBar.js +37 -16
  203. package/dist/components/data-display/GanttChart/GanttTimelineGrid.js +2 -1
  204. package/dist/components/data-display/GanttChart/GanttTimelineHeader.js +35 -11
  205. package/dist/components/data-display/GanttChart/GanttToolbar.js +2 -2
  206. package/dist/components/data-display/GanttChart/hooks/useGanttDrag.js +3 -2
  207. package/dist/components/data-display/GanttChart/index.d.ts +1 -1
  208. package/dist/components/data-display/Metric/Metric.js +8 -8
  209. package/dist/components/data-display/Metric/Metric.theme.d.ts +3 -2
  210. package/dist/components/data-display/Metric/Metric.theme.js +50 -68
  211. package/dist/components/data-display/Metric/Metric.types.d.ts +19 -21
  212. package/dist/components/data-display/Table/Table.js +2 -2
  213. package/dist/components/data-display/Table/Table.theme.js +27 -9
  214. package/dist/components/data-display/Table/Table.types.d.ts +8 -0
  215. package/dist/components/data-display/Table/TableBody.js +2 -2
  216. package/dist/components/data-display/Table/TableCell.js +1 -1
  217. package/dist/components/data-display/Table/TableRow.d.ts +1 -1
  218. package/dist/components/data-display/Table/TableRow.js +9 -2
  219. package/dist/components/data-display/Timeline/Timeline.js +27 -5
  220. package/dist/components/data-display/Timeline/Timeline.theme.d.ts +10 -2
  221. package/dist/components/data-display/Timeline/Timeline.theme.js +14 -8
  222. package/dist/components/data-display/Timeline/Timeline.types.d.ts +48 -16
  223. package/dist/components/data-display/Timeline/Timeline.utils.d.ts +6 -0
  224. package/dist/components/data-display/Timeline/Timeline.utils.js +11 -0
  225. package/dist/components/data-display/Timeline/TimelineItem.js +13 -20
  226. package/dist/components/data-display/Timeline/TimelineMarker.js +10 -8
  227. package/dist/components/data-display/Timeline/index.d.ts +2 -2
  228. package/dist/components/effects/3d/index.d.ts +0 -2
  229. package/dist/components/effects/3d/index.js +0 -1
  230. package/dist/components/effects/Aurora/Aurora.d.ts +6 -17
  231. package/dist/components/effects/Aurora/Aurora.js +297 -131
  232. package/dist/components/effects/Aurora/Aurora.types.d.ts +6 -0
  233. package/dist/components/effects/DotPattern/DotPattern.js +1 -1
  234. package/dist/components/effects/Overlay/Overlay.theme.js +1 -2
  235. package/dist/components/effects/Preloader/Preloader.animations.d.ts +23 -0
  236. package/dist/components/effects/Preloader/Preloader.animations.js +150 -0
  237. package/dist/components/effects/Preloader/Preloader.d.ts +3 -0
  238. package/dist/components/effects/Preloader/Preloader.js +119 -0
  239. package/dist/components/effects/Preloader/Preloader.types.d.ts +63 -0
  240. package/dist/components/effects/Preloader/index.d.ts +2 -0
  241. package/dist/components/effects/ProgressiveBlur/ProgressiveBlur.js +25 -14
  242. package/dist/components/effects/ProgressiveBlur/ProgressiveBlur.types.d.ts +2 -0
  243. package/dist/components/effects/TiltCard/TiltCard.d.ts +12 -0
  244. package/dist/components/effects/TiltCard/TiltCard.glow.d.ts +28 -0
  245. package/dist/components/effects/TiltCard/TiltCard.glow.js +114 -0
  246. package/dist/components/effects/TiltCard/TiltCard.js +177 -0
  247. package/dist/components/effects/{SpotlightBorder/SpotlightBorder.shaders.d.ts → TiltCard/TiltCard.shaders.d.ts} +1 -1
  248. package/dist/components/effects/{SpotlightBorder/SpotlightBorder.shaders.js → TiltCard/TiltCard.shaders.js} +1 -1
  249. package/dist/components/effects/TiltCard/TiltCard.types.d.ts +88 -0
  250. package/dist/components/effects/TiltCard/index.d.ts +2 -0
  251. package/dist/components/effects/index.d.ts +4 -12
  252. package/dist/components/effects/index.js +2 -6
  253. package/dist/components/forms/Checkbox/Checkbox.js +7 -1
  254. package/dist/components/forms/Combobox/Combobox.js +1 -1
  255. package/dist/components/forms/Combobox/Combobox.theme.js +2 -4
  256. package/dist/components/forms/DatePicker/DatePicker.theme.js +11 -18
  257. package/dist/components/forms/DatePicker/DatePickerTrigger.js +1 -1
  258. package/dist/components/forms/DateRangePicker/DateRangePicker.theme.js +6 -13
  259. package/dist/components/forms/DateRangePicker/DateRangePickerTrigger.js +1 -1
  260. package/dist/components/forms/FileUpload/FileUpload.animations.d.ts +29 -0
  261. package/dist/components/forms/FileUpload/FileUpload.animations.js +19 -0
  262. package/dist/components/forms/FileUpload/FileUpload.js +85 -134
  263. package/dist/components/forms/FileUpload/FileUpload.theme.d.ts +2 -10
  264. package/dist/components/forms/FileUpload/FileUpload.theme.js +16 -30
  265. package/dist/components/forms/FileUpload/FileUpload.types.d.ts +26 -10
  266. package/dist/components/forms/FormLabel/FormLabel.theme.js +1 -1
  267. package/dist/components/forms/Input/Input.theme.js +13 -10
  268. package/dist/components/forms/InputCounter/InputCounter.theme.js +1 -1
  269. package/dist/components/forms/Mention/Mention.js +152 -57
  270. package/dist/components/forms/Mention/Mention.theme.js +16 -23
  271. package/dist/components/forms/Mention/Mention.types.d.ts +12 -12
  272. package/dist/components/forms/Mention/Mention.utils.js +32 -4
  273. package/dist/components/forms/RichTextEditor/RichTextEditor.js +3 -3
  274. package/dist/components/forms/RichTextEditor/RichTextEditor.theme.js +5 -5
  275. package/dist/components/forms/Select/Select.js +2 -2
  276. package/dist/components/forms/Select/Select.theme.js +3 -3
  277. package/dist/components/forms/Slider/Slider.theme.js +1 -1
  278. package/dist/components/forms/Switch/Switch.js +27 -15
  279. package/dist/components/forms/Switch/Switch.theme.d.ts +36 -6
  280. package/dist/components/forms/Switch/Switch.theme.js +33 -4
  281. package/dist/components/forms/Switch/Switch.types.d.ts +12 -2
  282. package/dist/components/forms/TimePicker/TimePicker.theme.js +1 -2
  283. package/dist/components/forms/TimePicker/TimePickerContent.js +1 -87
  284. package/dist/components/forms/TimePicker/TimePickerTrigger.js +1 -1
  285. package/dist/components/forms/forms.theme.js +21 -16
  286. package/dist/components/forms/index.d.ts +0 -4
  287. package/dist/components/forms/index.js +0 -89
  288. package/dist/components/generative/GenerativeView.d.ts +21 -0
  289. package/dist/components/generative/GenerativeView.js +116 -0
  290. package/dist/components/generative/actions.d.ts +26 -0
  291. package/dist/components/generative/actions.js +51 -0
  292. package/dist/components/generative/index.d.ts +11 -0
  293. package/dist/components/generative/index.js +9 -0
  294. package/dist/components/generative/registry.d.ts +43 -0
  295. package/dist/components/generative/registry.js +114 -0
  296. package/dist/components/generative/resolvers.d.ts +35 -0
  297. package/dist/components/generative/resolvers.js +93 -0
  298. package/dist/components/generative/schema.generated.d.ts +2 -0
  299. package/dist/components/generative/schema.generated.js +1639 -0
  300. package/dist/components/generative/schemaTypes.d.ts +30 -0
  301. package/dist/components/generative/streaming.d.ts +39 -0
  302. package/dist/components/generative/streaming.js +283 -0
  303. package/dist/components/generative/tools.d.ts +21 -0
  304. package/dist/components/generative/tools.js +54 -0
  305. package/dist/components/generative/types.d.ts +41 -0
  306. package/dist/components/generative/useGenerativeStream.d.ts +37 -0
  307. package/dist/components/generative/useGenerativeStream.js +36 -0
  308. package/dist/components/generative/validate.d.ts +24 -0
  309. package/dist/components/generative/validate.js +259 -0
  310. package/dist/components/layout/AppShell/AppShell.d.ts +10 -0
  311. package/dist/components/layout/AppShell/AppShell.js +84 -0
  312. package/dist/components/layout/AppShell/AppShell.theme.d.ts +3 -0
  313. package/dist/components/layout/AppShell/AppShell.theme.js +42 -0
  314. package/dist/components/layout/AppShell/AppShell.types.d.ts +127 -0
  315. package/dist/components/layout/AppShell/AppShellContext.d.ts +14 -0
  316. package/dist/components/layout/AppShell/AppShellContext.js +19 -0
  317. package/dist/components/layout/AppShell/AppShellFooter.d.ts +3 -0
  318. package/dist/components/layout/AppShell/AppShellFooter.js +12 -0
  319. package/dist/components/layout/AppShell/AppShellHeader.d.ts +3 -0
  320. package/dist/components/layout/AppShell/AppShellHeader.js +12 -0
  321. package/dist/components/layout/AppShell/AppShellMain.d.ts +3 -0
  322. package/dist/components/layout/AppShell/AppShellMain.js +19 -0
  323. package/dist/components/layout/AppShell/AppShellRightPanel.d.ts +3 -0
  324. package/dist/components/layout/AppShell/AppShellRightPanel.js +16 -0
  325. package/dist/components/layout/AppShell/AppShellSidebar.d.ts +3 -0
  326. package/dist/components/layout/AppShell/AppShellSidebar.js +16 -0
  327. package/dist/components/layout/AppShell/AppShellTopbar.d.ts +3 -0
  328. package/dist/components/layout/AppShell/AppShellTopbar.js +12 -0
  329. package/dist/components/layout/AppShell/index.d.ts +3 -0
  330. package/dist/components/layout/FormLayout/FormLayout.js +1 -87
  331. package/dist/components/layout/Grid/Grid.d.ts +3 -0
  332. package/dist/components/layout/Grid/Grid.js +50 -0
  333. package/dist/components/layout/Grid/Grid.theme.d.ts +2 -0
  334. package/dist/components/layout/Grid/Grid.theme.js +35 -0
  335. package/dist/components/layout/Grid/Grid.types.d.ts +57 -0
  336. package/dist/components/layout/Grid/index.d.ts +3 -0
  337. package/dist/components/layout/Section/Section.d.ts +3 -0
  338. package/dist/components/layout/Section/Section.js +18 -0
  339. package/dist/components/layout/Section/Section.theme.d.ts +2 -0
  340. package/dist/components/layout/Section/Section.theme.js +10 -0
  341. package/dist/components/layout/Section/Section.types.d.ts +34 -0
  342. package/dist/components/layout/Section/index.d.ts +3 -0
  343. package/dist/components/layout/Stack/Stack.d.ts +3 -0
  344. package/dist/components/layout/Stack/Stack.js +19 -0
  345. package/dist/components/layout/Stack/Stack.theme.d.ts +2 -0
  346. package/dist/components/layout/Stack/Stack.theme.js +10 -0
  347. package/dist/components/layout/Stack/Stack.types.d.ts +39 -0
  348. package/dist/components/layout/Stack/index.d.ts +3 -0
  349. package/dist/components/layout/index.d.ts +4 -0
  350. package/dist/components/layout/index.js +8 -0
  351. package/dist/generative.schema.json +1637 -0
  352. package/dist/hooks/useSelectPortal.d.ts +10 -2
  353. package/dist/hooks/useSelectPortal.js +45 -24
  354. package/dist/index.js +180 -174
  355. package/dist/registry.json +10205 -0
  356. package/dist/styles.css +1 -1
  357. package/dist/tools.json +1731 -0
  358. package/dist/utils/dateUtils.js +11 -1
  359. package/package.json +19 -4
  360. package/src/global.scss +82 -109
  361. package/src/styles/theme.css +707 -474
  362. package/dist/bg/1.jpg +0 -0
  363. package/dist/bg/10.jpg +0 -0
  364. package/dist/bg/11.jpg +0 -0
  365. package/dist/bg/14.jpg +0 -0
  366. package/dist/bg/15.jpg +0 -0
  367. package/dist/bg/16.jpg +0 -0
  368. package/dist/bg/17.jpg +0 -0
  369. package/dist/bg/18.jpg +0 -0
  370. package/dist/bg/19.jpg +0 -0
  371. package/dist/bg/2.jpg +0 -0
  372. package/dist/bg/20.jpg +0 -0
  373. package/dist/bg/21.jpg +0 -0
  374. package/dist/bg/22.jpg +0 -0
  375. package/dist/bg/23.jpg +0 -0
  376. package/dist/bg/24.jpg +0 -0
  377. package/dist/bg/3.jpg +0 -0
  378. package/dist/bg/4.jpg +0 -0
  379. package/dist/bg/5.jpg +0 -0
  380. package/dist/bg/6.jpg +0 -0
  381. package/dist/bg/7.jpg +0 -0
  382. package/dist/bg/8.jpg +0 -0
  383. package/dist/bg/9.jpg +0 -0
  384. package/dist/components/effects/MorphingText/MorphingText.d.ts +0 -17
  385. package/dist/components/effects/MorphingText/MorphingText.js +0 -125
  386. package/dist/components/effects/MorphingText/MorphingText.types.d.ts +0 -18
  387. package/dist/components/effects/MorphingText/index.d.ts +0 -2
  388. package/dist/components/effects/PageTransition/PageTransition.animations.d.ts +0 -8
  389. package/dist/components/effects/PageTransition/PageTransition.animations.js +0 -53
  390. package/dist/components/effects/PageTransition/PageTransition.d.ts +0 -3
  391. package/dist/components/effects/PageTransition/PageTransition.js +0 -82
  392. package/dist/components/effects/PageTransition/PageTransition.types.d.ts +0 -15
  393. package/dist/components/effects/PageTransition/index.d.ts +0 -2
  394. package/dist/components/effects/ParallaxSection/ParallaxSection.d.ts +0 -26
  395. package/dist/components/effects/ParallaxSection/ParallaxSection.js +0 -71
  396. package/dist/components/effects/ParallaxSection/ParallaxSection.types.d.ts +0 -11
  397. package/dist/components/effects/ParallaxSection/index.d.ts +0 -2
  398. package/dist/components/effects/Spotlight/Spotlight.d.ts +0 -36
  399. package/dist/components/effects/Spotlight/Spotlight.js +0 -112
  400. package/dist/components/effects/Spotlight/Spotlight.types.d.ts +0 -29
  401. package/dist/components/effects/Spotlight/index.d.ts +0 -2
  402. package/dist/components/effects/SpotlightBorder/SpotlightBorder.d.ts +0 -18
  403. package/dist/components/effects/SpotlightBorder/SpotlightBorder.js +0 -213
  404. package/dist/components/effects/SpotlightBorder/SpotlightBorder.types.d.ts +0 -61
  405. package/dist/components/effects/SpotlightBorder/index.d.ts +0 -2
  406. package/dist/components/effects/StickyScroll/StickyScroll.d.ts +0 -30
  407. package/dist/components/effects/StickyScroll/StickyScroll.js +0 -128
  408. package/dist/components/effects/StickyScroll/StickyScroll.types.d.ts +0 -19
  409. package/dist/components/effects/StickyScroll/index.d.ts +0 -2
  410. package/dist/components/forms/CronInput/CronInput.d.ts +0 -3
  411. package/dist/components/forms/CronInput/CronInput.js +0 -113
  412. package/dist/components/forms/CronInput/CronInput.theme.d.ts +0 -6
  413. package/dist/components/forms/CronInput/CronInput.theme.js +0 -84
  414. package/dist/components/forms/CronInput/CronInput.types.d.ts +0 -109
  415. package/dist/components/forms/CronInput/CronInput.utils.d.ts +0 -67
  416. package/dist/components/forms/CronInput/CronInput.utils.js +0 -505
  417. package/dist/components/forms/CronInput/index.d.ts +0 -4
  418. /package/dist/components/effects/{SpotlightBorder/SpotlightBorder.types.js → TiltCard/TiltCard.types.js} +0 -0
@@ -0,0 +1,30 @@
1
+ import { JSONValue } from "./types";
2
+ /**
3
+ * The schema vocabulary the generator emits and the validator consumes.
4
+ * Deliberately tiny — NOT a general JSON Schema engine (PER-139 scope guard).
5
+ */
6
+ export type SchemaPropKind = "enum" | "string" | "number" | "boolean" | "union" | "icon" | "text" | "shape";
7
+ export interface SchemaProp {
8
+ kind: SchemaPropKind;
9
+ options?: JSONValue[];
10
+ types?: string[];
11
+ required?: boolean;
12
+ default?: JSONValue;
13
+ description?: string;
14
+ shape?: string;
15
+ }
16
+ export interface ComponentSchema {
17
+ role: "container" | "leaf";
18
+ description?: string;
19
+ props: Record<string, SchemaProp>;
20
+ }
21
+ export interface GenerativeSchemaDoc {
22
+ version: number;
23
+ /** Closed icon NAME set (mirrors DEFAULT_ICONS in resolvers.tsx). */
24
+ icons: string[];
25
+ components: Record<string, ComponentSchema>;
26
+ /** Named data-shape documentation referenced by `kind:"shape"` props. */
27
+ shapes: Record<string, JSONValue>;
28
+ /** Canonical spec examples (not codegen examples). */
29
+ examples: JSONValue[];
30
+ }
@@ -0,0 +1,39 @@
1
+ import { UISpec, JSONValue } from "./types";
2
+ import { GenerativeSchemaDoc } from "./schemaTypes";
3
+ /**
4
+ * Streaming render support (PER-140).
5
+ *
6
+ * The model streams ONE recursive UINode tree as JSON (the P2 tools.json
7
+ * contract) — we parse the truncated text permissively, render containers as
8
+ * soon as they're identifiable, and stand in correctly-sized Skeletons for
9
+ * leaves whose JSON hasn't fully arrived yet.
10
+ */
11
+ /** Pseudo component name for placeholder nodes (rendered natively by GenerativeView). */
12
+ export declare const SKELETON_NODE = "__skeleton__";
13
+ /** Per-component Skeleton heights (px) — approximate final footprint so hydration doesn't shift layout. */
14
+ export declare const SKELETON_PRESETS: Record<string, number>;
15
+ /** True when the parser saw this object/array's closing bracket. Primitives count as complete. */
16
+ export declare function isJSONComplete(value: JSONValue | undefined): boolean;
17
+ /**
18
+ * Parse possibly-truncated JSON text. Never throws. Objects/arrays carry a
19
+ * completeness mark readable via isJSONComplete().
20
+ */
21
+ export declare function parsePartialJSON(text: string): JSONValue | undefined;
22
+ export interface StreamingSpecResult {
23
+ /** Renderable spec: settled nodes + __skeleton__ placeholders. Null while nothing parseable arrived. */
24
+ spec: UISpec | null;
25
+ /** Number of placeholder nodes still pending. */
26
+ pending: number;
27
+ /** True once the root JSON closed and nothing is pending. */
28
+ complete: boolean;
29
+ }
30
+ export interface ParseStreamingSpecOptions {
31
+ schema?: GenerativeSchemaDoc;
32
+ }
33
+ /**
34
+ * Turn accumulating JSON text into a progressively-renderable spec:
35
+ * - containers render as soon as their `component` is known (children stream in)
36
+ * - incomplete leaves become __skeleton__ nodes sized by preset/sizeHint
37
+ * - a complete spec passes through untouched (one-shot fallback)
38
+ */
39
+ export declare function parseStreamingSpec(text: string, options?: ParseStreamingSpecOptions): StreamingSpecResult;
@@ -0,0 +1,283 @@
1
+ import { GENERATIVE_SCHEMA } from './schema.generated.js';
2
+
3
+ /**
4
+ * Streaming render support (PER-140).
5
+ *
6
+ * The model streams ONE recursive UINode tree as JSON (the P2 tools.json
7
+ * contract) — we parse the truncated text permissively, render containers as
8
+ * soon as they're identifiable, and stand in correctly-sized Skeletons for
9
+ * leaves whose JSON hasn't fully arrived yet.
10
+ */
11
+ /** Pseudo component name for placeholder nodes (rendered natively by GenerativeView). */
12
+ const SKELETON_NODE = "__skeleton__";
13
+ /** Per-component Skeleton heights (px) — approximate final footprint so hydration doesn't shift layout. */
14
+ const SKELETON_PRESETS = {
15
+ Metric: 96,
16
+ KPI: 128,
17
+ Alert: 64,
18
+ Badge: 24,
19
+ Avatar: 40,
20
+ Progress: 16,
21
+ Separator: 1,
22
+ Table: 280,
23
+ Timeline: 220,
24
+ Feed: 220,
25
+ DescriptionList: 160,
26
+ AreaChart: 264,
27
+ BarChart: 264,
28
+ DonutChart: 240,
29
+ };
30
+ const DEFAULT_SKELETON_HEIGHT = 80;
31
+ /* ────────────────────────────────────────────────────────────────────────
32
+ * Permissive JSON parser — tolerates EOF anywhere. Every object/array is
33
+ * tagged with a non-enumerable completeness symbol (true once its closing
34
+ * bracket was actually seen in the input).
35
+ * ──────────────────────────────────────────────────────────────────────── */
36
+ const COMPLETE = Symbol("flikkui.json.complete");
37
+ const WS = new Set([" ", "\t", "\n", "\r"]);
38
+ const skipWs = (s, i) => {
39
+ while (i < s.length && WS.has(s[i]))
40
+ i++;
41
+ return i;
42
+ };
43
+ function markComplete(value, complete) {
44
+ if (value !== null && typeof value === "object") {
45
+ Object.defineProperty(value, COMPLETE, { value: complete, enumerable: false });
46
+ }
47
+ }
48
+ /** True when the parser saw this object/array's closing bracket. Primitives count as complete. */
49
+ function isJSONComplete(value) {
50
+ if (value === undefined)
51
+ return false;
52
+ if (value === null || typeof value !== "object")
53
+ return true;
54
+ return value[COMPLETE] === true;
55
+ }
56
+ function parseString(s, i) {
57
+ var _a;
58
+ // s[i] === '"'
59
+ i++;
60
+ let out = "";
61
+ while (i < s.length) {
62
+ const ch = s[i];
63
+ if (ch === '"')
64
+ return { value: out, end: i + 1, complete: true };
65
+ if (ch === "\\") {
66
+ if (i + 1 >= s.length)
67
+ return { value: out, end: s.length, complete: false }; // truncated escape
68
+ const esc = s[i + 1];
69
+ if (esc === "u") {
70
+ if (i + 6 > s.length)
71
+ return { value: out, end: s.length, complete: false };
72
+ const hex = s.slice(i + 2, i + 6);
73
+ if (/^[0-9a-fA-F]{4}$/.test(hex))
74
+ out += String.fromCharCode(parseInt(hex, 16));
75
+ i += 6;
76
+ continue;
77
+ }
78
+ const map = { '"': '"', "\\": "\\", "/": "/", b: "\b", f: "\f", n: "\n", r: "\r", t: "\t" };
79
+ out += (_a = map[esc]) !== null && _a !== void 0 ? _a : esc;
80
+ i += 2;
81
+ continue;
82
+ }
83
+ out += ch;
84
+ i++;
85
+ }
86
+ return { value: out, end: s.length, complete: false };
87
+ }
88
+ function parseNumber(s, i) {
89
+ const match = /^-?\d*\.?\d*(?:[eE][+-]?\d*)?/.exec(s.slice(i));
90
+ const raw = match ? match[0] : "";
91
+ const end = i + raw.length;
92
+ // trim trailing chars that make the prefix unparseable ("-", "12.", "1e", "1e-")
93
+ const trimmed = raw.replace(/[.eE+-]+$/, "");
94
+ const value = trimmed === "" ? undefined : Number(trimmed);
95
+ const complete = end < s.length; // a number followed by anything is finished; at EOF it might still grow
96
+ return { value: Number.isNaN(value) ? undefined : value, end, complete };
97
+ }
98
+ function parseLiteral(s, i) {
99
+ for (const [word, val] of [["true", true], ["false", false], ["null", null]]) {
100
+ if (s.startsWith(word, i))
101
+ return { value: val, end: i + word.length, complete: true };
102
+ if (word.startsWith(s.slice(i)) && s.length - i < word.length)
103
+ return { value: undefined, end: s.length, complete: false };
104
+ }
105
+ return { value: undefined, end: i + 1, complete: false }; // unknown char — skip it
106
+ }
107
+ function parseArray(s, i) {
108
+ // s[i] === '['
109
+ i++;
110
+ const arr = [];
111
+ for (;;) {
112
+ i = skipWs(s, i);
113
+ if (i >= s.length) {
114
+ markComplete(arr, false);
115
+ return { value: arr, end: i, complete: false };
116
+ }
117
+ if (s[i] === "]") {
118
+ markComplete(arr, true);
119
+ return { value: arr, end: i + 1, complete: true };
120
+ }
121
+ if (s[i] === ",") {
122
+ i++;
123
+ continue;
124
+ }
125
+ const item = parseValue(s, i);
126
+ if (item.value !== undefined)
127
+ arr.push(item.value);
128
+ i = item.end;
129
+ if (!item.complete) {
130
+ markComplete(arr, false);
131
+ return { value: arr, end: i, complete: false };
132
+ }
133
+ }
134
+ }
135
+ function parseObject(s, i) {
136
+ // s[i] === '{'
137
+ i++;
138
+ const obj = {};
139
+ for (;;) {
140
+ i = skipWs(s, i);
141
+ if (i >= s.length) {
142
+ markComplete(obj, false);
143
+ return { value: obj, end: i, complete: false };
144
+ }
145
+ if (s[i] === "}") {
146
+ markComplete(obj, true);
147
+ return { value: obj, end: i + 1, complete: true };
148
+ }
149
+ if (s[i] === ",") {
150
+ i++;
151
+ continue;
152
+ }
153
+ if (s[i] !== '"') {
154
+ // malformed — stop here rather than guessing
155
+ markComplete(obj, false);
156
+ return { value: obj, end: i, complete: false };
157
+ }
158
+ const key = parseString(s, i);
159
+ if (!key.complete) {
160
+ // truncated key — drop it
161
+ markComplete(obj, false);
162
+ return { value: obj, end: s.length, complete: false };
163
+ }
164
+ i = skipWs(s, key.end);
165
+ if (i >= s.length || s[i] !== ":") {
166
+ markComplete(obj, false);
167
+ return { value: obj, end: i, complete: false };
168
+ }
169
+ i = skipWs(s, i + 1);
170
+ if (i >= s.length) {
171
+ // key with no value yet — drop it
172
+ markComplete(obj, false);
173
+ return { value: obj, end: i, complete: false };
174
+ }
175
+ const val = parseValue(s, i);
176
+ if (val.value !== undefined)
177
+ obj[key.value] = val.value;
178
+ i = val.end;
179
+ if (!val.complete) {
180
+ markComplete(obj, false);
181
+ return { value: obj, end: i, complete: false };
182
+ }
183
+ }
184
+ }
185
+ function parseValue(s, i) {
186
+ i = skipWs(s, i);
187
+ if (i >= s.length)
188
+ return { value: undefined, end: i, complete: false };
189
+ const ch = s[i];
190
+ if (ch === "{")
191
+ return parseObject(s, i);
192
+ if (ch === "[")
193
+ return parseArray(s, i);
194
+ if (ch === '"')
195
+ return parseString(s, i);
196
+ if (ch === "-" || (ch >= "0" && ch <= "9"))
197
+ return parseNumber(s, i);
198
+ return parseLiteral(s, i);
199
+ }
200
+ /**
201
+ * Parse possibly-truncated JSON text. Never throws. Objects/arrays carry a
202
+ * completeness mark readable via isJSONComplete().
203
+ */
204
+ function parsePartialJSON(text) {
205
+ // strip markdown fences a model may wrap around the JSON
206
+ let s = text;
207
+ const fence = s.indexOf("```");
208
+ if (fence !== -1 && fence < 20) {
209
+ s = s.slice(s.indexOf("\n", fence) + 1);
210
+ const closing = s.lastIndexOf("```");
211
+ if (closing !== -1)
212
+ s = s.slice(0, closing);
213
+ }
214
+ const start = s.search(/[{[]/);
215
+ if (start === -1)
216
+ return undefined;
217
+ return parseValue(s, start).value;
218
+ }
219
+ const skeletonHeight = (component, node) => {
220
+ var _a;
221
+ const hinted = (_a = node === null || node === void 0 ? void 0 : node.sizeHint) === null || _a === void 0 ? void 0 : _a.height;
222
+ if (hinted !== undefined)
223
+ return hinted;
224
+ return (component && SKELETON_PRESETS[component]) || DEFAULT_SKELETON_HEIGHT;
225
+ };
226
+ /**
227
+ * Turn accumulating JSON text into a progressively-renderable spec:
228
+ * - containers render as soon as their `component` is known (children stream in)
229
+ * - incomplete leaves become __skeleton__ nodes sized by preset/sizeHint
230
+ * - a complete spec passes through untouched (one-shot fallback)
231
+ */
232
+ function parseStreamingSpec(text, options = {}) {
233
+ var _a;
234
+ const schema = (_a = options.schema) !== null && _a !== void 0 ? _a : GENERATIVE_SCHEMA;
235
+ let root = parsePartialJSON(text);
236
+ if (root === undefined || root === null || typeof root !== "object")
237
+ return { spec: null, pending: 0, complete: false };
238
+ // tool-call args arrive as { "spec": <tree> } (the tools.json shape) — unwrap
239
+ if (!Array.isArray(root) && typeof root.component !== "string" && root.spec !== undefined) {
240
+ const inner = root.spec;
241
+ if (inner === null || typeof inner !== "object")
242
+ return { spec: null, pending: 0, complete: false };
243
+ root = inner;
244
+ }
245
+ const state = { pending: 0 };
246
+ const skeleton = (forComponent, source) => {
247
+ state.pending++;
248
+ return {
249
+ component: SKELETON_NODE,
250
+ props: { height: skeletonHeight(forComponent, source), forComponent: forComponent !== null && forComponent !== void 0 ? forComponent : null },
251
+ };
252
+ };
253
+ const transform = (value) => {
254
+ var _a;
255
+ if (value === null || typeof value !== "object" || Array.isArray(value))
256
+ return skeleton();
257
+ const node = value;
258
+ const name = node.component;
259
+ if (typeof name !== "string" || name.length === 0)
260
+ return skeleton(undefined, node);
261
+ const role = (_a = schema.components[name]) === null || _a === void 0 ? void 0 : _a.role;
262
+ const nodeComplete = isJSONComplete(value);
263
+ if (role === "container") {
264
+ // render immediately; children hydrate beneath it
265
+ const kids = Array.isArray(node.children) ? node.children.map((c) => transform(c)) : undefined;
266
+ return {
267
+ component: name,
268
+ ...(node.id ? { id: node.id } : {}),
269
+ ...(node.sizeHint ? { sizeHint: node.sizeHint } : {}),
270
+ ...(node.props && typeof node.props === "object" ? { props: node.props } : {}),
271
+ ...(kids && kids.length ? { children: kids } : {}),
272
+ };
273
+ }
274
+ // leaf (or unknown component): only hydrate once its JSON object closed
275
+ if (!nodeComplete)
276
+ return skeleton(role ? name : undefined, node);
277
+ return node;
278
+ };
279
+ const spec = Array.isArray(root) ? root.map(transform) : transform(root);
280
+ return { spec, pending: state.pending, complete: state.pending === 0 && isJSONComplete(root) };
281
+ }
282
+
283
+ export { SKELETON_NODE, SKELETON_PRESETS, isJSONComplete, parsePartialJSON, parseStreamingSpec };
@@ -0,0 +1,21 @@
1
+ import { GenerativeSchemaDoc } from "./schemaTypes";
2
+ import { JSONValue } from "./types";
3
+ /** Anthropic/OpenAI-compatible tool definition for spec emission. */
4
+ export interface GenerativeToolDefinition {
5
+ name: string;
6
+ description: string;
7
+ input_schema: Record<string, JSONValue>;
8
+ /** Per-component prop contracts — inline into the system prompt or tool description. */
9
+ contracts: GenerativeSchemaDoc["components"];
10
+ icons: string[];
11
+ shapes: GenerativeSchemaDoc["shapes"];
12
+ examples: GenerativeSchemaDoc["examples"];
13
+ }
14
+ /**
15
+ * Build the render_ui tool definition from a generative schema. The build
16
+ * script uses this same function to emit dist/tools.json — one builder, no
17
+ * drift between the runtime export and the artifact.
18
+ */
19
+ export declare function buildToolDefinition(schema?: GenerativeSchemaDoc): GenerativeToolDefinition;
20
+ /** The default tool definition, built from the checked-in generated schema. */
21
+ export declare const GENERATIVE_TOOL: GenerativeToolDefinition;
@@ -0,0 +1,54 @@
1
+ import { GENERATIVE_SCHEMA } from './schema.generated.js';
2
+
3
+ /**
4
+ * Build the render_ui tool definition from a generative schema. The build
5
+ * script uses this same function to emit dist/tools.json — one builder, no
6
+ * drift between the runtime export and the artifact.
7
+ */
8
+ function buildToolDefinition(schema = GENERATIVE_SCHEMA) {
9
+ const componentNames = Object.keys(schema.components);
10
+ return {
11
+ name: "render_ui",
12
+ description: "Render a UI from FlikkUI components. Emit a recursive UINode spec: containers (Grid/Stack/Section/Card) take children; leaves take serializable props only. Icons are NAMES from the closed icon set. Follow the per-component contracts.",
13
+ input_schema: {
14
+ type: "object",
15
+ properties: { spec: { $ref: "#/$defs/UINode" } },
16
+ required: ["spec"],
17
+ $defs: {
18
+ UINode: {
19
+ type: "object",
20
+ properties: {
21
+ component: { type: "string", enum: componentNames },
22
+ props: { type: "object" },
23
+ children: { type: "array", items: { $ref: "#/$defs/UINode" } },
24
+ id: { type: "string" },
25
+ sizeHint: {
26
+ type: "object",
27
+ description: "Optional height hint (px or CSS size) so streaming skeletons reserve the right space.",
28
+ properties: { height: { type: ["number", "string"] } },
29
+ },
30
+ actions: {
31
+ type: "object",
32
+ description: 'Named interactions: { click: { type, payload? } } on Button/leaves; { rowClick: { type, payload? } } on Table (the clicked row arrives as dispatch context). Fully serializable.',
33
+ additionalProperties: {
34
+ type: "object",
35
+ properties: { type: { type: "string" }, payload: {} },
36
+ required: ["type"],
37
+ },
38
+ },
39
+ },
40
+ required: ["component"],
41
+ additionalProperties: false,
42
+ },
43
+ },
44
+ },
45
+ contracts: schema.components,
46
+ icons: schema.icons,
47
+ shapes: schema.shapes,
48
+ examples: schema.examples,
49
+ };
50
+ }
51
+ /** The default tool definition, built from the checked-in generated schema. */
52
+ const GENERATIVE_TOOL = buildToolDefinition();
53
+
54
+ export { GENERATIVE_TOOL, buildToolDefinition };
@@ -0,0 +1,41 @@
1
+ /**
2
+ * The serializable spec format a model emits. A spec contains ONLY
3
+ * JSON-serializable values — icons are NAMES, table cell renderers are
4
+ * `cellType` hints; the resolver chain hydrates them into React at render
5
+ * time. This is what gets saved to a DB and replayed with no LLM.
6
+ */
7
+ /** Any JSON-serializable value. */
8
+ export type JSONValue = string | number | boolean | null | JSONValue[] | {
9
+ [key: string]: JSONValue;
10
+ };
11
+ /**
12
+ * A serializable description of an interaction (P4 wires dispatch; the type
13
+ * ships now so specs are forward-compatible).
14
+ */
15
+ export interface ActionDescriptor {
16
+ type: string;
17
+ payload?: JSONValue;
18
+ }
19
+ /** One node of the recursive UI tree. */
20
+ export interface UINode {
21
+ /** Registry key — must exist in the registry's `components` map. */
22
+ component: string;
23
+ /** Fully serializable props (icon NAMES, `cellType` hints — never JSX/functions). */
24
+ props?: Record<string, JSONValue>;
25
+ /** Recursive children — only rendered by container components (Grid/Stack/Section/Card). */
26
+ children?: UINode[];
27
+ /** Named interactions, e.g. { click: { type: "select-order", payload: { id } } }. */
28
+ actions?: Record<string, ActionDescriptor>;
29
+ /** Stable identity for streaming/patching; falls back to the child index. */
30
+ id?: string;
31
+ /**
32
+ * Optional footprint hint for streaming Skeleton placeholders (height in px
33
+ * or any CSS size). Width comes from the parent container, which renders
34
+ * before its children — so height is the only axis that needs reserving.
35
+ */
36
+ sizeHint?: {
37
+ height?: number | string;
38
+ };
39
+ }
40
+ /** A complete spec: a single root node, or a list of top-level siblings. */
41
+ export type UISpec = UINode | UINode[];
@@ -0,0 +1,37 @@
1
+ import { useStreamingSSE } from "../../hooks/useStreamingSSE";
2
+ import { StreamingSpecResult } from "./streaming";
3
+ import { GenerativeSchemaDoc } from "./schemaTypes";
4
+ type SSEPassThrough = Omit<Parameters<typeof useStreamingSSE>[0], "url" | "onToken" | "onComplete">;
5
+ export interface UseGenerativeStreamOptions extends Partial<SSEPassThrough> {
6
+ /**
7
+ * Transport-agnostic mode: pass the accumulated (possibly truncated) JSON
8
+ * text from ANY source — an SDK's tool-call partial args, a websocket, a
9
+ * replayed fixture. When set, `url` is ignored and no request is made.
10
+ */
11
+ text?: string;
12
+ /** SSE mode: stream from this endpoint via useStreamingSSE. */
13
+ url?: string;
14
+ /** Schema for container/leaf roles. @default GENERATIVE_SCHEMA */
15
+ schema?: GenerativeSchemaDoc;
16
+ }
17
+ export interface UseGenerativeStreamReturn extends StreamingSpecResult {
18
+ /** The raw accumulated JSON text the spec was parsed from. */
19
+ rawText: string;
20
+ /** SSE-mode stream state (always false/null in text mode). */
21
+ isStreaming: boolean;
22
+ error: ReturnType<typeof useStreamingSSE>["error"];
23
+ start: () => void;
24
+ stop: () => void;
25
+ reset: () => void;
26
+ }
27
+ /**
28
+ * Progressive spec streaming: feeds accumulating JSON text through
29
+ * parseStreamingSpec so GenerativeView can render skeletons → content.
30
+ * Falls back to a plain one-shot parse when handed complete text.
31
+ *
32
+ * Note: for provider tool-call streams (e.g. Anthropic `input_json_delta`),
33
+ * pass a custom `format` parser to extract `partial_json` deltas, or use
34
+ * text mode with your SDK's accumulated arguments string.
35
+ */
36
+ export declare function useGenerativeStream(options: UseGenerativeStreamOptions): UseGenerativeStreamReturn;
37
+ export {};
@@ -0,0 +1,36 @@
1
+ import { useMemo } from 'react';
2
+ import { useStreamingSSE } from '../../hooks/useStreamingSSE.js';
3
+ import { parseStreamingSpec } from './streaming.js';
4
+
5
+ /**
6
+ * Progressive spec streaming: feeds accumulating JSON text through
7
+ * parseStreamingSpec so GenerativeView can render skeletons → content.
8
+ * Falls back to a plain one-shot parse when handed complete text.
9
+ *
10
+ * Note: for provider tool-call streams (e.g. Anthropic `input_json_delta`),
11
+ * pass a custom `format` parser to extract `partial_json` deltas, or use
12
+ * text mode with your SDK's accumulated arguments string.
13
+ */
14
+ function useGenerativeStream(options) {
15
+ var _a;
16
+ const { text, url, schema, ...sseOptions } = options;
17
+ const sseMode = text === undefined && !!url;
18
+ const sse = useStreamingSSE({
19
+ ...sseOptions,
20
+ url: url !== null && url !== void 0 ? url : "",
21
+ autoStart: sseMode ? (_a = sseOptions.autoStart) !== null && _a !== void 0 ? _a : true : false,
22
+ });
23
+ const rawText = text !== null && text !== void 0 ? text : sse.accumulatedText;
24
+ const parsed = useMemo(() => parseStreamingSpec(rawText, { schema }), [rawText, schema]);
25
+ return {
26
+ ...parsed,
27
+ rawText,
28
+ isStreaming: sseMode ? sse.isStreaming : false,
29
+ error: sseMode ? sse.error : null,
30
+ start: sse.start,
31
+ stop: sse.stop,
32
+ reset: sse.reset,
33
+ };
34
+ }
35
+
36
+ export { useGenerativeStream };
@@ -0,0 +1,24 @@
1
+ import { UISpec } from "./types";
2
+ import { GenerativeSchemaDoc } from "./schemaTypes";
3
+ export interface ValidationIssue {
4
+ /** JSONPath-ish locator, e.g. `$.children[2].props.color`. */
5
+ path: string;
6
+ code: "invalid-node" | "unknown-component" | "blocked-prop" | "unknown-prop" | "invalid-enum" | "coerced-value" | "invalid-value" | "invalid-shape" | "missing-required" | "applied-default" | "children-ignored" | "invalid-action";
7
+ message: string;
8
+ severity: "error" | "warning";
9
+ }
10
+ export interface ValidateOptions {
11
+ /** Override the generated schema (e.g. for a custom registry). */
12
+ schema?: GenerativeSchemaDoc;
13
+ }
14
+ export interface ValidateResult {
15
+ spec: UISpec;
16
+ issues: ValidationIssue[];
17
+ }
18
+ /**
19
+ * Validate + repair a model-emitted spec against the generated schema.
20
+ * Never throws; never mutates the input. Every repair is recorded in `issues`.
21
+ * Unknown components are kept (GenerativeView renders its safe placeholder)
22
+ * but their props/children are stripped.
23
+ */
24
+ export declare function validate(spec: UISpec, options?: ValidateOptions): ValidateResult;