@signalflare-ai/ui 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (765) hide show
  1. package/CHANGELOG.md +96 -0
  2. package/README.md +527 -0
  3. package/ai/USAGE.md +200 -0
  4. package/ai/component-registry.json +7103 -0
  5. package/ai/component-registry.md +3046 -0
  6. package/ai/schemas.ts +1230 -0
  7. package/bin/intent.js +23 -0
  8. package/bin/sf.js +34 -0
  9. package/dist/.build-complete +1 -0
  10. package/dist/ai/schemas.d.ts +7056 -0
  11. package/dist/ai/schemas.d.ts.map +1 -0
  12. package/dist/ai-actions-DG1dhDMP.js +57 -0
  13. package/dist/ai-actions-DG1dhDMP.js.map +1 -0
  14. package/dist/ai-agent-card-BbtL4NII.js +171 -0
  15. package/dist/ai-agent-card-BbtL4NII.js.map +1 -0
  16. package/dist/ai-approval-Mb7-BY6i.js +184 -0
  17. package/dist/ai-approval-Mb7-BY6i.js.map +1 -0
  18. package/dist/ai-code-block-BI_z0UVR.js +110 -0
  19. package/dist/ai-code-block-BI_z0UVR.js.map +1 -0
  20. package/dist/ai-conversation-DYtExcrw.js +184 -0
  21. package/dist/ai-conversation-DYtExcrw.js.map +1 -0
  22. package/dist/ai-info-banner-BpzauUAY.js +76 -0
  23. package/dist/ai-info-banner-BpzauUAY.js.map +1 -0
  24. package/dist/ai-loader-Cr3eQkNS.js +134 -0
  25. package/dist/ai-loader-Cr3eQkNS.js.map +1 -0
  26. package/dist/ai-message-CV8SBoHM.js +286 -0
  27. package/dist/ai-message-CV8SBoHM.js.map +1 -0
  28. package/dist/ai-mission-header-ByYkJ6YP.js +171 -0
  29. package/dist/ai-mission-header-ByYkJ6YP.js.map +1 -0
  30. package/dist/ai-prompt-input-Bo1YuJly.js +769 -0
  31. package/dist/ai-prompt-input-Bo1YuJly.js.map +1 -0
  32. package/dist/ai-question-Dp1g9k2o.js +149 -0
  33. package/dist/ai-question-Dp1g9k2o.js.map +1 -0
  34. package/dist/ai-reasoning-UAmNx_LD.js +270 -0
  35. package/dist/ai-reasoning-UAmNx_LD.js.map +1 -0
  36. package/dist/ai-response-BWoVsNQG.js +42 -0
  37. package/dist/ai-response-BWoVsNQG.js.map +1 -0
  38. package/dist/ai-shimmer-BpOmfonu.js +43 -0
  39. package/dist/ai-shimmer-BpOmfonu.js.map +1 -0
  40. package/dist/ai-status-badge-WhbKVeqn.js +63 -0
  41. package/dist/ai-status-badge-WhbKVeqn.js.map +1 -0
  42. package/dist/ai-streaming-text-ClL7FwvD.js +81 -0
  43. package/dist/ai-streaming-text-ClL7FwvD.js.map +1 -0
  44. package/dist/ai-subagent-BruGN1UE.js +133 -0
  45. package/dist/ai-subagent-BruGN1UE.js.map +1 -0
  46. package/dist/ai-suggestion-CNsCZj5P.js +55 -0
  47. package/dist/ai-suggestion-CNsCZj5P.js.map +1 -0
  48. package/dist/ai-task-list-B9CpMDYN.js +120 -0
  49. package/dist/ai-task-list-B9CpMDYN.js.map +1 -0
  50. package/dist/ai-timeline-Bb5ntsr3.js +373 -0
  51. package/dist/ai-timeline-Bb5ntsr3.js.map +1 -0
  52. package/dist/ai-tool-BGH8nQ_D.js +437 -0
  53. package/dist/ai-tool-BGH8nQ_D.js.map +1 -0
  54. package/dist/ai-usage-bar-BI-p-JBk.js +70 -0
  55. package/dist/ai-usage-bar-BI-p-JBk.js.map +1 -0
  56. package/dist/badge-D_eaA6wv.js +128 -0
  57. package/dist/badge-D_eaA6wv.js.map +1 -0
  58. package/dist/banner-B_6oBrsu.js +54 -0
  59. package/dist/banner-B_6oBrsu.js.map +1 -0
  60. package/dist/breadcrumbs-BlmeYfgq.js +128 -0
  61. package/dist/breadcrumbs-BlmeYfgq.js.map +1 -0
  62. package/dist/button-De0267YU.js +170 -0
  63. package/dist/button-De0267YU.js.map +1 -0
  64. package/dist/catalog.js +506 -0
  65. package/dist/catalog.js.map +1 -0
  66. package/dist/chart-Bes4MN3C.js +618 -0
  67. package/dist/chart-Bes4MN3C.js.map +1 -0
  68. package/dist/checkbox-CPX7lBaU.js +153 -0
  69. package/dist/checkbox-CPX7lBaU.js.map +1 -0
  70. package/dist/clipboard-text-92YeCybc.js +176 -0
  71. package/dist/clipboard-text-92YeCybc.js.map +1 -0
  72. package/dist/cn-YROP2_ox.js +25 -0
  73. package/dist/cn-YROP2_ox.js.map +1 -0
  74. package/dist/code-DE1Yy1Cu.js +97 -0
  75. package/dist/code-DE1Yy1Cu.js.map +1 -0
  76. package/dist/collapsible-DWsXeXmS.js +72 -0
  77. package/dist/collapsible-DWsXeXmS.js.map +1 -0
  78. package/dist/combobox-B0bLdsX8.js +197 -0
  79. package/dist/combobox-B0bLdsX8.js.map +1 -0
  80. package/dist/command-line/cli.js +823 -0
  81. package/dist/command-palette-CBTY8EiF.js +484 -0
  82. package/dist/command-palette-CBTY8EiF.js.map +1 -0
  83. package/dist/components/ai-actions.js +3 -0
  84. package/dist/components/ai-agent-card.js +3 -0
  85. package/dist/components/ai-approval.js +3 -0
  86. package/dist/components/ai-code-block.js +3 -0
  87. package/dist/components/ai-conversation.js +3 -0
  88. package/dist/components/ai-info-banner.js +3 -0
  89. package/dist/components/ai-loader.js +3 -0
  90. package/dist/components/ai-message.js +3 -0
  91. package/dist/components/ai-mission-header.js +3 -0
  92. package/dist/components/ai-prompt-input.js +3 -0
  93. package/dist/components/ai-question.js +3 -0
  94. package/dist/components/ai-reasoning.js +3 -0
  95. package/dist/components/ai-response.js +3 -0
  96. package/dist/components/ai-shimmer.js +3 -0
  97. package/dist/components/ai-status-badge.js +3 -0
  98. package/dist/components/ai-streaming-text.js +3 -0
  99. package/dist/components/ai-subagent.js +3 -0
  100. package/dist/components/ai-suggestion.js +3 -0
  101. package/dist/components/ai-task-list.js +3 -0
  102. package/dist/components/ai-timeline.js +3 -0
  103. package/dist/components/ai-tool.js +3 -0
  104. package/dist/components/ai-usage-bar.js +3 -0
  105. package/dist/components/badge.js +3 -0
  106. package/dist/components/banner.js +3 -0
  107. package/dist/components/breadcrumbs.js +3 -0
  108. package/dist/components/button.js +3 -0
  109. package/dist/components/chart.js +3 -0
  110. package/dist/components/checkbox.js +3 -0
  111. package/dist/components/clipboard-text.js +3 -0
  112. package/dist/components/code.js +3 -0
  113. package/dist/components/collapsible.js +3 -0
  114. package/dist/components/combobox.js +3 -0
  115. package/dist/components/command-palette.js +3 -0
  116. package/dist/components/data-grid.js +3 -0
  117. package/dist/components/date-picker.js +3 -0
  118. package/dist/components/date-range-picker.js +3 -0
  119. package/dist/components/dialog.js +3 -0
  120. package/dist/components/dropdown.js +3 -0
  121. package/dist/components/empty.js +3 -0
  122. package/dist/components/field.js +3 -0
  123. package/dist/components/filters.js +3 -0
  124. package/dist/components/flow.js +3 -0
  125. package/dist/components/grid.js +3 -0
  126. package/dist/components/input.js +4 -0
  127. package/dist/components/label.js +3 -0
  128. package/dist/components/layer-card.js +3 -0
  129. package/dist/components/link.js +92 -0
  130. package/dist/components/link.js.map +1 -0
  131. package/dist/components/loader.js +4 -0
  132. package/dist/components/menubar.js +3 -0
  133. package/dist/components/meter.js +3 -0
  134. package/dist/components/pagination.js +3 -0
  135. package/dist/components/popover.js +3 -0
  136. package/dist/components/radio.js +3 -0
  137. package/dist/components/select.js +3 -0
  138. package/dist/components/sensitive-input.js +3 -0
  139. package/dist/components/sidebar.js +3 -0
  140. package/dist/components/signalflare-ai-logo.js +3 -0
  141. package/dist/components/surface.js +3 -0
  142. package/dist/components/switch.js +3 -0
  143. package/dist/components/table.js +3 -0
  144. package/dist/components/tabs.js +3 -0
  145. package/dist/components/text.js +3 -0
  146. package/dist/components/theme-toggle.js +3 -0
  147. package/dist/components/toast.js +3 -0
  148. package/dist/components/tooltip.js +3 -0
  149. package/dist/components/use-agent-harness.js +3 -0
  150. package/dist/data-grid-UJ9ja5cu.js +305 -0
  151. package/dist/data-grid-UJ9ja5cu.js.map +1 -0
  152. package/dist/date-picker-ebekkC3R.js +57 -0
  153. package/dist/date-picker-ebekkC3R.js.map +1 -0
  154. package/dist/date-range-picker-D75LLINc.js +347 -0
  155. package/dist/date-range-picker-D75LLINc.js.map +1 -0
  156. package/dist/dialog-CyHEQXEY.js +104 -0
  157. package/dist/dialog-CyHEQXEY.js.map +1 -0
  158. package/dist/dist-BNlyONdD.js +3546 -0
  159. package/dist/dist-BNlyONdD.js.map +1 -0
  160. package/dist/dropdown-J5T4pHaR.js +202 -0
  161. package/dist/dropdown-J5T4pHaR.js.map +1 -0
  162. package/dist/empty-D2TypIId.js +90 -0
  163. package/dist/empty-D2TypIId.js.map +1 -0
  164. package/dist/favicon.svg +4 -0
  165. package/dist/field-Y_UK1_Cg.js +57 -0
  166. package/dist/field-Y_UK1_Cg.js.map +1 -0
  167. package/dist/filters-BdBogf7D.js +682 -0
  168. package/dist/filters-BdBogf7D.js.map +1 -0
  169. package/dist/flow-BRsYUCJa.js +741 -0
  170. package/dist/flow-BRsYUCJa.js.map +1 -0
  171. package/dist/genui.js +40 -0
  172. package/dist/genui.js.map +1 -0
  173. package/dist/grid-qUAN9hFx.js +119 -0
  174. package/dist/grid-qUAN9hFx.js.map +1 -0
  175. package/dist/highlight-to-react-ClEfL81q.js +57 -0
  176. package/dist/highlight-to-react-ClEfL81q.js.map +1 -0
  177. package/dist/index.js +215 -0
  178. package/dist/index.js.map +1 -0
  179. package/dist/input-BxQAnXki.js +81 -0
  180. package/dist/input-BxQAnXki.js.map +1 -0
  181. package/dist/input-Cn25I4o5.js +121 -0
  182. package/dist/input-Cn25I4o5.js.map +1 -0
  183. package/dist/label-QtJxtJ4u.js +70 -0
  184. package/dist/label-QtJxtJ4u.js.map +1 -0
  185. package/dist/layer-card-BME0eljh.js +44 -0
  186. package/dist/layer-card-BME0eljh.js.map +1 -0
  187. package/dist/link-provider-BUZKXaNE.js +25 -0
  188. package/dist/link-provider-BUZKXaNE.js.map +1 -0
  189. package/dist/loader-DAcc-Uag.js +84 -0
  190. package/dist/loader-DAcc-Uag.js.map +1 -0
  191. package/dist/logo.svg +1 -0
  192. package/dist/menubar-C8NzAjfd.js +102 -0
  193. package/dist/menubar-C8NzAjfd.js.map +1 -0
  194. package/dist/meter-CpmTenEr.js +37 -0
  195. package/dist/meter-CpmTenEr.js.map +1 -0
  196. package/dist/pagination-C_YqCy8l.js +117 -0
  197. package/dist/pagination-C_YqCy8l.js.map +1 -0
  198. package/dist/popover-BRQZ2b6z.js +147 -0
  199. package/dist/popover-BRQZ2b6z.js.map +1 -0
  200. package/dist/primitives/accordion.js +2 -0
  201. package/dist/primitives/alert-dialog.js +2 -0
  202. package/dist/primitives/autocomplete.js +2 -0
  203. package/dist/primitives/avatar.js +2 -0
  204. package/dist/primitives/button.js +2 -0
  205. package/dist/primitives/checkbox-group.js +2 -0
  206. package/dist/primitives/checkbox.js +2 -0
  207. package/dist/primitives/collapsible.js +2 -0
  208. package/dist/primitives/combobox.js +2 -0
  209. package/dist/primitives/context-menu.js +2 -0
  210. package/dist/primitives/csp-provider.js +2 -0
  211. package/dist/primitives/dialog.js +2 -0
  212. package/dist/primitives/direction-provider.js +2 -0
  213. package/dist/primitives/drawer.js +2 -0
  214. package/dist/primitives/field.js +2 -0
  215. package/dist/primitives/fieldset.js +2 -0
  216. package/dist/primitives/form.js +2 -0
  217. package/dist/primitives/input.js +2 -0
  218. package/dist/primitives/menu.js +2 -0
  219. package/dist/primitives/menubar.js +2 -0
  220. package/dist/primitives/meter.js +2 -0
  221. package/dist/primitives/navigation-menu.js +2 -0
  222. package/dist/primitives/number-field.js +2 -0
  223. package/dist/primitives/popover.js +2 -0
  224. package/dist/primitives/preview-card.js +2 -0
  225. package/dist/primitives/progress.js +2 -0
  226. package/dist/primitives/radio-group.js +2 -0
  227. package/dist/primitives/radio.js +2 -0
  228. package/dist/primitives/scroll-area.js +2 -0
  229. package/dist/primitives/select.js +2 -0
  230. package/dist/primitives/separator.js +2 -0
  231. package/dist/primitives/slider.js +2 -0
  232. package/dist/primitives/switch.js +2 -0
  233. package/dist/primitives/tabs.js +2 -0
  234. package/dist/primitives/toast.js +2 -0
  235. package/dist/primitives/toggle-group.js +2 -0
  236. package/dist/primitives/toggle.js +2 -0
  237. package/dist/primitives/toolbar.js +2 -0
  238. package/dist/primitives/tooltip.js +2 -0
  239. package/dist/primitives.js +40 -0
  240. package/dist/radio-B7zg1wUI.js +101 -0
  241. package/dist/radio-B7zg1wUI.js.map +1 -0
  242. package/dist/registry.js +1 -0
  243. package/dist/select-9p721G00.js +95 -0
  244. package/dist/select-9p721G00.js.map +1 -0
  245. package/dist/sensitive-input-D5je2NLl.js +248 -0
  246. package/dist/sensitive-input-D5je2NLl.js.map +1 -0
  247. package/dist/sidebar-DOwBrq57.js +964 -0
  248. package/dist/sidebar-DOwBrq57.js.map +1 -0
  249. package/dist/signalflare-ai-logo-DDhxMJD6.js +260 -0
  250. package/dist/signalflare-ai-logo-DDhxMJD6.js.map +1 -0
  251. package/dist/skeleton-line-Do3UmGk9.js +36 -0
  252. package/dist/skeleton-line-Do3UmGk9.js.map +1 -0
  253. package/dist/src/blocks/agent-harness/agent-harness.d.ts +177 -0
  254. package/dist/src/blocks/agent-harness/agent-harness.d.ts.map +1 -0
  255. package/dist/src/blocks/agent-harness/agent-harness.tsx +1122 -0
  256. package/dist/src/blocks/agent-harness/index.d.ts +2 -0
  257. package/dist/src/blocks/agent-harness/index.d.ts.map +1 -0
  258. package/dist/src/blocks/commander/commander.d.ts +101 -0
  259. package/dist/src/blocks/commander/commander.d.ts.map +1 -0
  260. package/dist/src/blocks/commander/commander.tsx +477 -0
  261. package/dist/src/blocks/commander/index.d.ts +2 -0
  262. package/dist/src/blocks/commander/index.d.ts.map +1 -0
  263. package/dist/src/blocks/delete-resource/delete-resource.d.ts +46 -0
  264. package/dist/src/blocks/delete-resource/delete-resource.d.ts.map +1 -0
  265. package/dist/src/blocks/delete-resource/delete-resource.tsx +214 -0
  266. package/dist/src/blocks/delete-resource/index.d.ts +2 -0
  267. package/dist/src/blocks/delete-resource/index.d.ts.map +1 -0
  268. package/dist/src/blocks/map-block/index.d.ts +2 -0
  269. package/dist/src/blocks/map-block/index.d.ts.map +1 -0
  270. package/dist/src/blocks/map-block/map-block.d.ts +79 -0
  271. package/dist/src/blocks/map-block/map-block.d.ts.map +1 -0
  272. package/dist/src/blocks/map-block/map-block.tsx +522 -0
  273. package/dist/src/blocks/page-header/index.d.ts +2 -0
  274. package/dist/src/blocks/page-header/index.d.ts.map +1 -0
  275. package/dist/src/blocks/page-header/page-header.d.ts +38 -0
  276. package/dist/src/blocks/page-header/page-header.d.ts.map +1 -0
  277. package/dist/src/blocks/page-header/page-header.tsx +96 -0
  278. package/dist/src/blocks/resource-list/index.d.ts +2 -0
  279. package/dist/src/blocks/resource-list/index.d.ts.map +1 -0
  280. package/dist/src/blocks/resource-list/resource-list.d.ts +18 -0
  281. package/dist/src/blocks/resource-list/resource-list.d.ts.map +1 -0
  282. package/dist/src/blocks/resource-list/resource-list.test.tsx +27 -0
  283. package/dist/src/blocks/resource-list/resource-list.tsx +65 -0
  284. package/dist/src/catalog/catalog.d.ts +75 -0
  285. package/dist/src/catalog/catalog.d.ts.map +1 -0
  286. package/dist/src/catalog/data.d.ts +44 -0
  287. package/dist/src/catalog/data.d.ts.map +1 -0
  288. package/dist/src/catalog/index.d.ts +35 -0
  289. package/dist/src/catalog/index.d.ts.map +1 -0
  290. package/dist/src/catalog/sf-components.d.ts +8 -0
  291. package/dist/src/catalog/sf-components.d.ts.map +1 -0
  292. package/dist/src/catalog/sf-registry.d.ts +4 -0
  293. package/dist/src/catalog/sf-registry.d.ts.map +1 -0
  294. package/dist/src/catalog/types.d.ts +226 -0
  295. package/dist/src/catalog/types.d.ts.map +1 -0
  296. package/dist/src/catalog/visibility.d.ts +37 -0
  297. package/dist/src/catalog/visibility.d.ts.map +1 -0
  298. package/dist/src/command-line/build-cli.d.ts +7 -0
  299. package/dist/src/command-line/build-cli.d.ts.map +1 -0
  300. package/dist/src/command-line/cli.d.ts +13 -0
  301. package/dist/src/command-line/cli.d.ts.map +1 -0
  302. package/dist/src/command-line/commands/add.d.ts +10 -0
  303. package/dist/src/command-line/commands/add.d.ts.map +1 -0
  304. package/dist/src/command-line/commands/ai.d.ts +10 -0
  305. package/dist/src/command-line/commands/ai.d.ts.map +1 -0
  306. package/dist/src/command-line/commands/blocks.d.ts +10 -0
  307. package/dist/src/command-line/commands/blocks.d.ts.map +1 -0
  308. package/dist/src/command-line/commands/doc.d.ts +14 -0
  309. package/dist/src/command-line/commands/doc.d.ts.map +1 -0
  310. package/dist/src/command-line/commands/init.d.ts +18 -0
  311. package/dist/src/command-line/commands/init.d.ts.map +1 -0
  312. package/dist/src/command-line/commands/ls.d.ts +10 -0
  313. package/dist/src/command-line/commands/ls.d.ts.map +1 -0
  314. package/dist/src/command-line/commands/migrate.d.ts +10 -0
  315. package/dist/src/command-line/commands/migrate.d.ts.map +1 -0
  316. package/dist/src/command-line/utils/config.d.ts +42 -0
  317. package/dist/src/command-line/utils/config.d.ts.map +1 -0
  318. package/dist/src/command-line/utils/transformer.d.ts +21 -0
  319. package/dist/src/command-line/utils/transformer.d.ts.map +1 -0
  320. package/dist/src/components/ai-actions/ai-actions.d.ts +35 -0
  321. package/dist/src/components/ai-actions/ai-actions.d.ts.map +1 -0
  322. package/dist/src/components/ai-actions/index.d.ts +2 -0
  323. package/dist/src/components/ai-actions/index.d.ts.map +1 -0
  324. package/dist/src/components/ai-agent-card/ai-agent-card.d.ts +82 -0
  325. package/dist/src/components/ai-agent-card/ai-agent-card.d.ts.map +1 -0
  326. package/dist/src/components/ai-agent-card/index.d.ts +2 -0
  327. package/dist/src/components/ai-agent-card/index.d.ts.map +1 -0
  328. package/dist/src/components/ai-approval/ai-approval.d.ts +102 -0
  329. package/dist/src/components/ai-approval/ai-approval.d.ts.map +1 -0
  330. package/dist/src/components/ai-approval/index.d.ts +2 -0
  331. package/dist/src/components/ai-approval/index.d.ts.map +1 -0
  332. package/dist/src/components/ai-code-block/ai-code-block.d.ts +48 -0
  333. package/dist/src/components/ai-code-block/ai-code-block.d.ts.map +1 -0
  334. package/dist/src/components/ai-code-block/index.d.ts +2 -0
  335. package/dist/src/components/ai-code-block/index.d.ts.map +1 -0
  336. package/dist/src/components/ai-conversation/ai-conversation.d.ts +125 -0
  337. package/dist/src/components/ai-conversation/ai-conversation.d.ts.map +1 -0
  338. package/dist/src/components/ai-conversation/index.d.ts +2 -0
  339. package/dist/src/components/ai-conversation/index.d.ts.map +1 -0
  340. package/dist/src/components/ai-info-banner/ai-info-banner.d.ts +55 -0
  341. package/dist/src/components/ai-info-banner/ai-info-banner.d.ts.map +1 -0
  342. package/dist/src/components/ai-info-banner/index.d.ts +2 -0
  343. package/dist/src/components/ai-info-banner/index.d.ts.map +1 -0
  344. package/dist/src/components/ai-loader/ai-loader.d.ts +44 -0
  345. package/dist/src/components/ai-loader/ai-loader.d.ts.map +1 -0
  346. package/dist/src/components/ai-loader/index.d.ts +2 -0
  347. package/dist/src/components/ai-loader/index.d.ts.map +1 -0
  348. package/dist/src/components/ai-message/ai-message.d.ts +97 -0
  349. package/dist/src/components/ai-message/ai-message.d.ts.map +1 -0
  350. package/dist/src/components/ai-message/index.d.ts +2 -0
  351. package/dist/src/components/ai-message/index.d.ts.map +1 -0
  352. package/dist/src/components/ai-mission-header/ai-mission-header.d.ts +62 -0
  353. package/dist/src/components/ai-mission-header/ai-mission-header.d.ts.map +1 -0
  354. package/dist/src/components/ai-mission-header/index.d.ts +2 -0
  355. package/dist/src/components/ai-mission-header/index.d.ts.map +1 -0
  356. package/dist/src/components/ai-prompt-input/ai-prompt-input.d.ts +260 -0
  357. package/dist/src/components/ai-prompt-input/ai-prompt-input.d.ts.map +1 -0
  358. package/dist/src/components/ai-prompt-input/index.d.ts +2 -0
  359. package/dist/src/components/ai-prompt-input/index.d.ts.map +1 -0
  360. package/dist/src/components/ai-question/ai-question.d.ts +73 -0
  361. package/dist/src/components/ai-question/ai-question.d.ts.map +1 -0
  362. package/dist/src/components/ai-question/index.d.ts +2 -0
  363. package/dist/src/components/ai-question/index.d.ts.map +1 -0
  364. package/dist/src/components/ai-reasoning/ai-reasoning.d.ts +107 -0
  365. package/dist/src/components/ai-reasoning/ai-reasoning.d.ts.map +1 -0
  366. package/dist/src/components/ai-reasoning/index.d.ts +2 -0
  367. package/dist/src/components/ai-reasoning/index.d.ts.map +1 -0
  368. package/dist/src/components/ai-response/ai-response.d.ts +26 -0
  369. package/dist/src/components/ai-response/ai-response.d.ts.map +1 -0
  370. package/dist/src/components/ai-response/index.d.ts +2 -0
  371. package/dist/src/components/ai-response/index.d.ts.map +1 -0
  372. package/dist/src/components/ai-shimmer/ai-shimmer.d.ts +29 -0
  373. package/dist/src/components/ai-shimmer/ai-shimmer.d.ts.map +1 -0
  374. package/dist/src/components/ai-shimmer/index.d.ts +2 -0
  375. package/dist/src/components/ai-shimmer/index.d.ts.map +1 -0
  376. package/dist/src/components/ai-status-badge/ai-status-badge.d.ts +46 -0
  377. package/dist/src/components/ai-status-badge/ai-status-badge.d.ts.map +1 -0
  378. package/dist/src/components/ai-status-badge/index.d.ts +2 -0
  379. package/dist/src/components/ai-status-badge/index.d.ts.map +1 -0
  380. package/dist/src/components/ai-streaming-text/ai-streaming-text.d.ts +27 -0
  381. package/dist/src/components/ai-streaming-text/ai-streaming-text.d.ts.map +1 -0
  382. package/dist/src/components/ai-streaming-text/index.d.ts +2 -0
  383. package/dist/src/components/ai-streaming-text/index.d.ts.map +1 -0
  384. package/dist/src/components/ai-subagent/ai-subagent.d.ts +74 -0
  385. package/dist/src/components/ai-subagent/ai-subagent.d.ts.map +1 -0
  386. package/dist/src/components/ai-subagent/index.d.ts +2 -0
  387. package/dist/src/components/ai-subagent/index.d.ts.map +1 -0
  388. package/dist/src/components/ai-suggestion/ai-suggestion.d.ts +40 -0
  389. package/dist/src/components/ai-suggestion/ai-suggestion.d.ts.map +1 -0
  390. package/dist/src/components/ai-suggestion/index.d.ts +2 -0
  391. package/dist/src/components/ai-suggestion/index.d.ts.map +1 -0
  392. package/dist/src/components/ai-task-list/ai-task-list.d.ts +61 -0
  393. package/dist/src/components/ai-task-list/ai-task-list.d.ts.map +1 -0
  394. package/dist/src/components/ai-task-list/index.d.ts +2 -0
  395. package/dist/src/components/ai-task-list/index.d.ts.map +1 -0
  396. package/dist/src/components/ai-timeline/ai-timeline.d.ts +130 -0
  397. package/dist/src/components/ai-timeline/ai-timeline.d.ts.map +1 -0
  398. package/dist/src/components/ai-timeline/index.d.ts +2 -0
  399. package/dist/src/components/ai-timeline/index.d.ts.map +1 -0
  400. package/dist/src/components/ai-tool/ai-tool.d.ts +138 -0
  401. package/dist/src/components/ai-tool/ai-tool.d.ts.map +1 -0
  402. package/dist/src/components/ai-tool/index.d.ts +2 -0
  403. package/dist/src/components/ai-tool/index.d.ts.map +1 -0
  404. package/dist/src/components/ai-usage-bar/ai-usage-bar.d.ts +38 -0
  405. package/dist/src/components/ai-usage-bar/ai-usage-bar.d.ts.map +1 -0
  406. package/dist/src/components/ai-usage-bar/index.d.ts +2 -0
  407. package/dist/src/components/ai-usage-bar/index.d.ts.map +1 -0
  408. package/dist/src/components/badge/badge.d.ts +129 -0
  409. package/dist/src/components/badge/badge.d.ts.map +1 -0
  410. package/dist/src/components/badge/index.d.ts +2 -0
  411. package/dist/src/components/badge/index.d.ts.map +1 -0
  412. package/dist/src/components/banner/banner.d.ts +80 -0
  413. package/dist/src/components/banner/banner.d.ts.map +1 -0
  414. package/dist/src/components/banner/index.d.ts +2 -0
  415. package/dist/src/components/banner/index.d.ts.map +1 -0
  416. package/dist/src/components/breadcrumbs/breadcrumbs.d.ts +78 -0
  417. package/dist/src/components/breadcrumbs/breadcrumbs.d.ts.map +1 -0
  418. package/dist/src/components/breadcrumbs/index.d.ts +2 -0
  419. package/dist/src/components/breadcrumbs/index.d.ts.map +1 -0
  420. package/dist/src/components/button/button.d.ts +212 -0
  421. package/dist/src/components/button/button.d.ts.map +1 -0
  422. package/dist/src/components/button/index.d.ts +2 -0
  423. package/dist/src/components/button/index.d.ts.map +1 -0
  424. package/dist/src/components/chart/color.d.ts +98 -0
  425. package/dist/src/components/chart/color.d.ts.map +1 -0
  426. package/dist/src/components/chart/echart.d.ts +135 -0
  427. package/dist/src/components/chart/echart.d.ts.map +1 -0
  428. package/dist/src/components/chart/index.d.ts +5 -0
  429. package/dist/src/components/chart/index.d.ts.map +1 -0
  430. package/dist/src/components/chart/legend.d.ts +42 -0
  431. package/dist/src/components/chart/legend.d.ts.map +1 -0
  432. package/dist/src/components/chart/timeseries-chart.d.ts +119 -0
  433. package/dist/src/components/chart/timeseries-chart.d.ts.map +1 -0
  434. package/dist/src/components/checkbox/checkbox.d.ts +174 -0
  435. package/dist/src/components/checkbox/checkbox.d.ts.map +1 -0
  436. package/dist/src/components/checkbox/index.d.ts +2 -0
  437. package/dist/src/components/checkbox/index.d.ts.map +1 -0
  438. package/dist/src/components/clipboard-text/clipboard-text.d.ts +86 -0
  439. package/dist/src/components/clipboard-text/clipboard-text.d.ts.map +1 -0
  440. package/dist/src/components/clipboard-text/index.d.ts +2 -0
  441. package/dist/src/components/clipboard-text/index.d.ts.map +1 -0
  442. package/dist/src/components/code/code.d.ts +165 -0
  443. package/dist/src/components/code/code.d.ts.map +1 -0
  444. package/dist/src/components/code/index.d.ts +4 -0
  445. package/dist/src/components/code/index.d.ts.map +1 -0
  446. package/dist/src/components/collapsible/collapsible.d.ts +72 -0
  447. package/dist/src/components/collapsible/collapsible.d.ts.map +1 -0
  448. package/dist/src/components/collapsible/index.d.ts +2 -0
  449. package/dist/src/components/collapsible/index.d.ts.map +1 -0
  450. package/dist/src/components/combobox/combobox.d.ts +188 -0
  451. package/dist/src/components/combobox/combobox.d.ts.map +1 -0
  452. package/dist/src/components/combobox/index.d.ts +2 -0
  453. package/dist/src/components/combobox/index.d.ts.map +1 -0
  454. package/dist/src/components/command-palette/command-palette.d.ts +260 -0
  455. package/dist/src/components/command-palette/command-palette.d.ts.map +1 -0
  456. package/dist/src/components/command-palette/index.d.ts +3 -0
  457. package/dist/src/components/command-palette/index.d.ts.map +1 -0
  458. package/dist/src/components/command-palette/types.d.ts +149 -0
  459. package/dist/src/components/command-palette/types.d.ts.map +1 -0
  460. package/dist/src/components/data-grid/data-grid.d.ts +78 -0
  461. package/dist/src/components/data-grid/data-grid.d.ts.map +1 -0
  462. package/dist/src/components/data-grid/index.d.ts +3 -0
  463. package/dist/src/components/data-grid/index.d.ts.map +1 -0
  464. package/dist/src/components/data-grid/types.d.ts +236 -0
  465. package/dist/src/components/data-grid/types.d.ts.map +1 -0
  466. package/dist/src/components/date-picker/date-picker.d.ts +65 -0
  467. package/dist/src/components/date-picker/date-picker.d.ts.map +1 -0
  468. package/dist/src/components/date-picker/index.d.ts +4 -0
  469. package/dist/src/components/date-picker/index.d.ts.map +1 -0
  470. package/dist/src/components/date-range-picker/date-range-picker.d.ts +125 -0
  471. package/dist/src/components/date-range-picker/date-range-picker.d.ts.map +1 -0
  472. package/dist/src/components/date-range-picker/index.d.ts +5 -0
  473. package/dist/src/components/date-range-picker/index.d.ts.map +1 -0
  474. package/dist/src/components/dialog/dialog.d.ts +189 -0
  475. package/dist/src/components/dialog/dialog.d.ts.map +1 -0
  476. package/dist/src/components/dialog/index.d.ts +2 -0
  477. package/dist/src/components/dialog/index.d.ts.map +1 -0
  478. package/dist/src/components/dropdown/dropdown.d.ts +91 -0
  479. package/dist/src/components/dropdown/dropdown.d.ts.map +1 -0
  480. package/dist/src/components/dropdown/index.d.ts +2 -0
  481. package/dist/src/components/dropdown/index.d.ts.map +1 -0
  482. package/dist/src/components/empty/empty.d.ts +69 -0
  483. package/dist/src/components/empty/empty.d.ts.map +1 -0
  484. package/dist/src/components/empty/index.d.ts +2 -0
  485. package/dist/src/components/empty/index.d.ts.map +1 -0
  486. package/dist/src/components/field/field.d.ts +68 -0
  487. package/dist/src/components/field/field.d.ts.map +1 -0
  488. package/dist/src/components/field/index.d.ts +2 -0
  489. package/dist/src/components/field/index.d.ts.map +1 -0
  490. package/dist/src/components/filters/filters.d.ts +54 -0
  491. package/dist/src/components/filters/filters.d.ts.map +1 -0
  492. package/dist/src/components/filters/helpers.d.ts +56 -0
  493. package/dist/src/components/filters/helpers.d.ts.map +1 -0
  494. package/dist/src/components/filters/index.d.ts +3 -0
  495. package/dist/src/components/filters/index.d.ts.map +1 -0
  496. package/dist/src/components/filters/types.d.ts +148 -0
  497. package/dist/src/components/filters/types.d.ts.map +1 -0
  498. package/dist/src/components/flow/connectors.d.ts +35 -0
  499. package/dist/src/components/flow/connectors.d.ts.map +1 -0
  500. package/dist/src/components/flow/diagram.d.ts +62 -0
  501. package/dist/src/components/flow/diagram.d.ts.map +1 -0
  502. package/dist/src/components/flow/index.d.ts +26 -0
  503. package/dist/src/components/flow/index.d.ts.map +1 -0
  504. package/dist/src/components/flow/node.d.ts +52 -0
  505. package/dist/src/components/flow/node.d.ts.map +1 -0
  506. package/dist/src/components/flow/parallel.d.ts +5 -0
  507. package/dist/src/components/flow/parallel.d.ts.map +1 -0
  508. package/dist/src/components/flow/use-children.d.ts +69 -0
  509. package/dist/src/components/flow/use-children.d.ts.map +1 -0
  510. package/dist/src/components/grid/grid.d.ts +135 -0
  511. package/dist/src/components/grid/grid.d.ts.map +1 -0
  512. package/dist/src/components/grid/index.d.ts +2 -0
  513. package/dist/src/components/grid/index.d.ts.map +1 -0
  514. package/dist/src/components/input/index.d.ts +4 -0
  515. package/dist/src/components/input/index.d.ts.map +1 -0
  516. package/dist/src/components/input/input-area.d.ts +65 -0
  517. package/dist/src/components/input/input-area.d.ts.map +1 -0
  518. package/dist/src/components/input/input-group.d.ts +39 -0
  519. package/dist/src/components/input/input-group.d.ts.map +1 -0
  520. package/dist/src/components/input/input.d.ts +172 -0
  521. package/dist/src/components/input/input.d.ts.map +1 -0
  522. package/dist/src/components/label/index.d.ts +2 -0
  523. package/dist/src/components/label/index.d.ts.map +1 -0
  524. package/dist/src/components/label/label.d.ts +67 -0
  525. package/dist/src/components/label/label.d.ts.map +1 -0
  526. package/dist/src/components/layer-card/index.d.ts +2 -0
  527. package/dist/src/components/layer-card/index.d.ts.map +1 -0
  528. package/dist/src/components/layer-card/layer-card.d.ts +29 -0
  529. package/dist/src/components/layer-card/layer-card.d.ts.map +1 -0
  530. package/dist/src/components/link/index.d.ts +2 -0
  531. package/dist/src/components/link/index.d.ts.map +1 -0
  532. package/dist/src/components/link/link.d.ts +55 -0
  533. package/dist/src/components/link/link.d.ts.map +1 -0
  534. package/dist/src/components/loader/index.d.ts +3 -0
  535. package/dist/src/components/loader/index.d.ts.map +1 -0
  536. package/dist/src/components/loader/loader.d.ts +65 -0
  537. package/dist/src/components/loader/loader.d.ts.map +1 -0
  538. package/dist/src/components/loader/skeleton-line.d.ts +10 -0
  539. package/dist/src/components/loader/skeleton-line.d.ts.map +1 -0
  540. package/dist/src/components/menubar/index.d.ts +3 -0
  541. package/dist/src/components/menubar/index.d.ts.map +1 -0
  542. package/dist/src/components/menubar/menubar.d.ts +66 -0
  543. package/dist/src/components/menubar/menubar.d.ts.map +1 -0
  544. package/dist/src/components/menubar/use-menu-navigation.d.ts +8 -0
  545. package/dist/src/components/menubar/use-menu-navigation.d.ts.map +1 -0
  546. package/dist/src/components/meter/index.d.ts +2 -0
  547. package/dist/src/components/meter/index.d.ts.map +1 -0
  548. package/dist/src/components/meter/meter.d.ts +44 -0
  549. package/dist/src/components/meter/meter.d.ts.map +1 -0
  550. package/dist/src/components/pagination/index.d.ts +2 -0
  551. package/dist/src/components/pagination/index.d.ts.map +1 -0
  552. package/dist/src/components/pagination/pagination.d.ts +60 -0
  553. package/dist/src/components/pagination/pagination.d.ts.map +1 -0
  554. package/dist/src/components/popover/index.d.ts +3 -0
  555. package/dist/src/components/popover/index.d.ts.map +1 -0
  556. package/dist/src/components/popover/popover.d.ts +138 -0
  557. package/dist/src/components/popover/popover.d.ts.map +1 -0
  558. package/dist/src/components/radio/index.d.ts +2 -0
  559. package/dist/src/components/radio/index.d.ts.map +1 -0
  560. package/dist/src/components/radio/radio.d.ts +163 -0
  561. package/dist/src/components/radio/radio.d.ts.map +1 -0
  562. package/dist/src/components/select/index.d.ts +2 -0
  563. package/dist/src/components/select/index.d.ts.map +1 -0
  564. package/dist/src/components/select/select.d.ts +150 -0
  565. package/dist/src/components/select/select.d.ts.map +1 -0
  566. package/dist/src/components/sensitive-input/index.d.ts +2 -0
  567. package/dist/src/components/sensitive-input/index.d.ts.map +1 -0
  568. package/dist/src/components/sensitive-input/sensitive-input.d.ts +94 -0
  569. package/dist/src/components/sensitive-input/sensitive-input.d.ts.map +1 -0
  570. package/dist/src/components/sidebar/index.d.ts +2 -0
  571. package/dist/src/components/sidebar/index.d.ts.map +1 -0
  572. package/dist/src/components/sidebar/sidebar.d.ts +556 -0
  573. package/dist/src/components/sidebar/sidebar.d.ts.map +1 -0
  574. package/dist/src/components/signalflare-ai-logo/index.d.ts +2 -0
  575. package/dist/src/components/signalflare-ai-logo/index.d.ts.map +1 -0
  576. package/dist/src/components/signalflare-ai-logo/signalflare-ai-logo.d.ts +171 -0
  577. package/dist/src/components/signalflare-ai-logo/signalflare-ai-logo.d.ts.map +1 -0
  578. package/dist/src/components/surface/index.d.ts +2 -0
  579. package/dist/src/components/surface/index.d.ts.map +1 -0
  580. package/dist/src/components/surface/surface.d.ts +60 -0
  581. package/dist/src/components/surface/surface.d.ts.map +1 -0
  582. package/dist/src/components/switch/index.d.ts +2 -0
  583. package/dist/src/components/switch/index.d.ts.map +1 -0
  584. package/dist/src/components/switch/switch.d.ts +169 -0
  585. package/dist/src/components/switch/switch.d.ts.map +1 -0
  586. package/dist/src/components/table/index.d.ts +2 -0
  587. package/dist/src/components/table/index.d.ts.map +1 -0
  588. package/dist/src/components/table/table.d.ts +89 -0
  589. package/dist/src/components/table/table.d.ts.map +1 -0
  590. package/dist/src/components/tabs/index.d.ts +3 -0
  591. package/dist/src/components/tabs/index.d.ts.map +1 -0
  592. package/dist/src/components/tabs/tabs.d.ts +105 -0
  593. package/dist/src/components/tabs/tabs.d.ts.map +1 -0
  594. package/dist/src/components/text/index.d.ts +2 -0
  595. package/dist/src/components/text/index.d.ts.map +1 -0
  596. package/dist/src/components/text/text.d.ts +181 -0
  597. package/dist/src/components/text/text.d.ts.map +1 -0
  598. package/dist/src/components/theme-toggle/index.d.ts +2 -0
  599. package/dist/src/components/theme-toggle/index.d.ts.map +1 -0
  600. package/dist/src/components/theme-toggle/theme-toggle.d.ts +68 -0
  601. package/dist/src/components/theme-toggle/theme-toggle.d.ts.map +1 -0
  602. package/dist/src/components/toast/index.d.ts +5 -0
  603. package/dist/src/components/toast/index.d.ts.map +1 -0
  604. package/dist/src/components/toast/toast.d.ts +152 -0
  605. package/dist/src/components/toast/toast.d.ts.map +1 -0
  606. package/dist/src/components/tooltip/index.d.ts +2 -0
  607. package/dist/src/components/tooltip/index.d.ts.map +1 -0
  608. package/dist/src/components/tooltip/tooltip.d.ts +82 -0
  609. package/dist/src/components/tooltip/tooltip.d.ts.map +1 -0
  610. package/dist/src/components/use-agent-harness/index.d.ts +2 -0
  611. package/dist/src/components/use-agent-harness/index.d.ts.map +1 -0
  612. package/dist/src/components/use-agent-harness/use-agent-harness.d.ts +642 -0
  613. package/dist/src/components/use-agent-harness/use-agent-harness.d.ts.map +1 -0
  614. package/dist/src/genui/genui.d.ts +17 -0
  615. package/dist/src/genui/genui.d.ts.map +1 -0
  616. package/dist/src/genui/index.d.ts +19 -0
  617. package/dist/src/genui/index.d.ts.map +1 -0
  618. package/dist/src/index.d.ts +102 -0
  619. package/dist/src/index.d.ts.map +1 -0
  620. package/dist/src/lib/utils.d.ts +2 -0
  621. package/dist/src/lib/utils.d.ts.map +1 -0
  622. package/dist/src/primitives/accordion.d.ts +13 -0
  623. package/dist/src/primitives/accordion.d.ts.map +1 -0
  624. package/dist/src/primitives/alert-dialog.d.ts +13 -0
  625. package/dist/src/primitives/alert-dialog.d.ts.map +1 -0
  626. package/dist/src/primitives/autocomplete.d.ts +13 -0
  627. package/dist/src/primitives/autocomplete.d.ts.map +1 -0
  628. package/dist/src/primitives/avatar.d.ts +13 -0
  629. package/dist/src/primitives/avatar.d.ts.map +1 -0
  630. package/dist/src/primitives/button.d.ts +13 -0
  631. package/dist/src/primitives/button.d.ts.map +1 -0
  632. package/dist/src/primitives/checkbox-group.d.ts +13 -0
  633. package/dist/src/primitives/checkbox-group.d.ts.map +1 -0
  634. package/dist/src/primitives/checkbox.d.ts +13 -0
  635. package/dist/src/primitives/checkbox.d.ts.map +1 -0
  636. package/dist/src/primitives/collapsible.d.ts +13 -0
  637. package/dist/src/primitives/collapsible.d.ts.map +1 -0
  638. package/dist/src/primitives/combobox.d.ts +13 -0
  639. package/dist/src/primitives/combobox.d.ts.map +1 -0
  640. package/dist/src/primitives/context-menu.d.ts +13 -0
  641. package/dist/src/primitives/context-menu.d.ts.map +1 -0
  642. package/dist/src/primitives/csp-provider.d.ts +13 -0
  643. package/dist/src/primitives/csp-provider.d.ts.map +1 -0
  644. package/dist/src/primitives/dialog.d.ts +13 -0
  645. package/dist/src/primitives/dialog.d.ts.map +1 -0
  646. package/dist/src/primitives/direction-provider.d.ts +13 -0
  647. package/dist/src/primitives/direction-provider.d.ts.map +1 -0
  648. package/dist/src/primitives/drawer.d.ts +13 -0
  649. package/dist/src/primitives/drawer.d.ts.map +1 -0
  650. package/dist/src/primitives/field.d.ts +13 -0
  651. package/dist/src/primitives/field.d.ts.map +1 -0
  652. package/dist/src/primitives/fieldset.d.ts +13 -0
  653. package/dist/src/primitives/fieldset.d.ts.map +1 -0
  654. package/dist/src/primitives/form.d.ts +13 -0
  655. package/dist/src/primitives/form.d.ts.map +1 -0
  656. package/dist/src/primitives/index.d.ts +54 -0
  657. package/dist/src/primitives/index.d.ts.map +1 -0
  658. package/dist/src/primitives/input.d.ts +13 -0
  659. package/dist/src/primitives/input.d.ts.map +1 -0
  660. package/dist/src/primitives/menu.d.ts +13 -0
  661. package/dist/src/primitives/menu.d.ts.map +1 -0
  662. package/dist/src/primitives/menubar.d.ts +13 -0
  663. package/dist/src/primitives/menubar.d.ts.map +1 -0
  664. package/dist/src/primitives/meter.d.ts +13 -0
  665. package/dist/src/primitives/meter.d.ts.map +1 -0
  666. package/dist/src/primitives/navigation-menu.d.ts +13 -0
  667. package/dist/src/primitives/navigation-menu.d.ts.map +1 -0
  668. package/dist/src/primitives/number-field.d.ts +13 -0
  669. package/dist/src/primitives/number-field.d.ts.map +1 -0
  670. package/dist/src/primitives/popover.d.ts +13 -0
  671. package/dist/src/primitives/popover.d.ts.map +1 -0
  672. package/dist/src/primitives/preview-card.d.ts +13 -0
  673. package/dist/src/primitives/preview-card.d.ts.map +1 -0
  674. package/dist/src/primitives/progress.d.ts +13 -0
  675. package/dist/src/primitives/progress.d.ts.map +1 -0
  676. package/dist/src/primitives/radio-group.d.ts +13 -0
  677. package/dist/src/primitives/radio-group.d.ts.map +1 -0
  678. package/dist/src/primitives/radio.d.ts +13 -0
  679. package/dist/src/primitives/radio.d.ts.map +1 -0
  680. package/dist/src/primitives/scroll-area.d.ts +13 -0
  681. package/dist/src/primitives/scroll-area.d.ts.map +1 -0
  682. package/dist/src/primitives/select.d.ts +13 -0
  683. package/dist/src/primitives/select.d.ts.map +1 -0
  684. package/dist/src/primitives/separator.d.ts +13 -0
  685. package/dist/src/primitives/separator.d.ts.map +1 -0
  686. package/dist/src/primitives/slider.d.ts +13 -0
  687. package/dist/src/primitives/slider.d.ts.map +1 -0
  688. package/dist/src/primitives/switch.d.ts +13 -0
  689. package/dist/src/primitives/switch.d.ts.map +1 -0
  690. package/dist/src/primitives/tabs.d.ts +13 -0
  691. package/dist/src/primitives/tabs.d.ts.map +1 -0
  692. package/dist/src/primitives/toast.d.ts +13 -0
  693. package/dist/src/primitives/toast.d.ts.map +1 -0
  694. package/dist/src/primitives/toggle-group.d.ts +13 -0
  695. package/dist/src/primitives/toggle-group.d.ts.map +1 -0
  696. package/dist/src/primitives/toggle.d.ts +13 -0
  697. package/dist/src/primitives/toggle.d.ts.map +1 -0
  698. package/dist/src/primitives/toolbar.d.ts +13 -0
  699. package/dist/src/primitives/toolbar.d.ts.map +1 -0
  700. package/dist/src/primitives/tooltip.d.ts +13 -0
  701. package/dist/src/primitives/tooltip.d.ts.map +1 -0
  702. package/dist/src/registry/index.d.ts +8 -0
  703. package/dist/src/registry/index.d.ts.map +1 -0
  704. package/dist/src/registry/types.d.ts +191 -0
  705. package/dist/src/registry/types.d.ts.map +1 -0
  706. package/dist/src/utils/cn.d.ts +4 -0
  707. package/dist/src/utils/cn.d.ts.map +1 -0
  708. package/dist/src/utils/highlight-to-react.d.ts +12 -0
  709. package/dist/src/utils/highlight-to-react.d.ts.map +1 -0
  710. package/dist/src/utils/index.d.ts +3 -0
  711. package/dist/src/utils/index.d.ts.map +1 -0
  712. package/dist/src/utils/link-provider.d.ts +12 -0
  713. package/dist/src/utils/link-provider.d.ts.map +1 -0
  714. package/dist/src/utils/prop-examples.d.ts +36 -0
  715. package/dist/src/utils/prop-examples.d.ts.map +1 -0
  716. package/dist/styles/sf-binding.css +255 -0
  717. package/dist/styles/sf-standalone.css +2 -0
  718. package/dist/styles/sf.css +596 -0
  719. package/dist/styles/theme-fedramp.css +22 -0
  720. package/dist/styles/theme-minimal.css +127 -0
  721. package/dist/styles/theme-navigator.css +137 -0
  722. package/dist/styles/theme-sf.css +191 -0
  723. package/dist/surface-BduI7Ehl.js +18 -0
  724. package/dist/surface-BduI7Ehl.js.map +1 -0
  725. package/dist/switch-CzZBRBL7.js +169 -0
  726. package/dist/switch-CzZBRBL7.js.map +1 -0
  727. package/dist/table-CIMx0Oq0.js +200 -0
  728. package/dist/table-CIMx0Oq0.js.map +1 -0
  729. package/dist/tabs-1cHrYoel.js +54 -0
  730. package/dist/tabs-1cHrYoel.js.map +1 -0
  731. package/dist/text-KJmGkwnf.js +103 -0
  732. package/dist/text-KJmGkwnf.js.map +1 -0
  733. package/dist/theme-toggle-Dpgnoj_Q.js +129 -0
  734. package/dist/theme-toggle-Dpgnoj_Q.js.map +1 -0
  735. package/dist/toast-Nw28a5Cx.js +161 -0
  736. package/dist/toast-Nw28a5Cx.js.map +1 -0
  737. package/dist/tooltip-Cb7QW-7H.js +79 -0
  738. package/dist/tooltip-Cb7QW-7H.js.map +1 -0
  739. package/dist/use-agent-harness-DZzcn96L.js +929 -0
  740. package/dist/use-agent-harness-DZzcn96L.js.map +1 -0
  741. package/dist/utils.js +4 -0
  742. package/package.json +620 -0
  743. package/scripts/component-registry/cache.ts +124 -0
  744. package/scripts/component-registry/discovery.ts +464 -0
  745. package/scripts/component-registry/example-cleanup.ts +168 -0
  746. package/scripts/component-registry/index.test.ts +678 -0
  747. package/scripts/component-registry/index.ts +931 -0
  748. package/scripts/component-registry/markdown-generator.ts +222 -0
  749. package/scripts/component-registry/metadata.ts +653 -0
  750. package/scripts/component-registry/props-filter.ts +313 -0
  751. package/scripts/component-registry/schema-generator.ts +332 -0
  752. package/scripts/component-registry/sub-components.ts +350 -0
  753. package/scripts/component-registry/types.ts +156 -0
  754. package/scripts/component-registry/utils.ts +280 -0
  755. package/scripts/component-registry/variant-parser.ts +262 -0
  756. package/scripts/css-build.ts +117 -0
  757. package/scripts/generate-primitives.ts +178 -0
  758. package/scripts/theme-generator/config.ts +538 -0
  759. package/scripts/theme-generator/generate-css.ts +256 -0
  760. package/scripts/theme-generator/index.ts +161 -0
  761. package/scripts/theme-generator/migrate.ts +584 -0
  762. package/scripts/theme-generator/types.ts +86 -0
  763. package/skills/component-selection/SKILL.md +64 -0
  764. package/skills/installing-blocks/SKILL.md +47 -0
  765. package/skills/theming-and-tokens/SKILL.md +62 -0
package/ai/schemas.ts ADDED
@@ -0,0 +1,1230 @@
1
+ /**
2
+ * Auto-generated Zod schemas for SF components
3
+ * DO NOT EDIT - Generated by scripts/component-registry/index.ts
4
+ *
5
+ * These schemas enable runtime validation of AI-generated UI trees.
6
+ */
7
+
8
+ import { z } from "zod";
9
+
10
+ // SafeParseReturnType was removed in Zod v4, but we still want stable typing.
11
+ export type SafeParseResult<T> =
12
+ | { success: true; data: T; error?: never }
13
+ | { success: false; error: z.ZodError<any>; data?: never };
14
+
15
+ // =============================================================================
16
+ // Dynamic Value Schema (for data binding)
17
+ // =============================================================================
18
+
19
+ /**
20
+ * A value that can either be a literal or a reference to the data model.
21
+ * Example: "Hello" or { path: "/user/name" }
22
+ */
23
+ export const DynamicValueSchema = z.union([
24
+ z.string(),
25
+ z.number(),
26
+ z.boolean(),
27
+ z.null(),
28
+ z.object({ path: z.string() }),
29
+ ]);
30
+
31
+ export type DynamicValue<T = unknown> = T | { path: string };
32
+
33
+ // =============================================================================
34
+ // Visibility Condition Schemas
35
+ // =============================================================================
36
+
37
+ /**
38
+ * Visibility conditions for conditional rendering.
39
+ * Components can be shown/hidden based on data, auth, or logic expressions.
40
+ */
41
+
42
+ // Forward declaration for recursive types
43
+ // Note: Numeric comparisons use DynamicValue (not DynamicValue<number>) for Zod compatibility
44
+ export type LogicExpression =
45
+ | { and: LogicExpression[] }
46
+ | { or: LogicExpression[] }
47
+ | { not: LogicExpression }
48
+ | { path: string }
49
+ | { eq: [DynamicValue, DynamicValue] }
50
+ | { neq: [DynamicValue, DynamicValue] }
51
+ | { gt: [DynamicValue, DynamicValue] }
52
+ | { gte: [DynamicValue, DynamicValue] }
53
+ | { lt: [DynamicValue, DynamicValue] }
54
+ | { lte: [DynamicValue, DynamicValue] };
55
+
56
+ // Lazy schema for recursive logic expressions
57
+ const LogicExpressionSchema: z.ZodType<LogicExpression> = z.lazy(() =>
58
+ z.union([
59
+ z.object({ and: z.array(LogicExpressionSchema) }),
60
+ z.object({ or: z.array(LogicExpressionSchema) }),
61
+ z.object({ not: LogicExpressionSchema }),
62
+ z.object({ path: z.string() }),
63
+ z.object({ eq: z.tuple([DynamicValueSchema, DynamicValueSchema]) }),
64
+ z.object({ neq: z.tuple([DynamicValueSchema, DynamicValueSchema]) }),
65
+ z.object({ gt: z.tuple([DynamicValueSchema, DynamicValueSchema]) }),
66
+ z.object({ gte: z.tuple([DynamicValueSchema, DynamicValueSchema]) }),
67
+ z.object({ lt: z.tuple([DynamicValueSchema, DynamicValueSchema]) }),
68
+ z.object({ lte: z.tuple([DynamicValueSchema, DynamicValueSchema]) }),
69
+ ])
70
+ );
71
+
72
+ export const VisibilityConditionSchema = z.union([
73
+ z.boolean(),
74
+ z.object({ path: z.string() }),
75
+ z.object({ auth: z.enum(["signedIn", "signedOut"]) }),
76
+ LogicExpressionSchema,
77
+ ]);
78
+
79
+ export type VisibilityCondition = z.infer<typeof VisibilityConditionSchema>;
80
+
81
+ // =============================================================================
82
+ // Action Schemas
83
+ // =============================================================================
84
+
85
+ /**
86
+ * Action confirmation dialog configuration
87
+ */
88
+ export const ActionConfirmSchema = z.object({
89
+ title: z.string(),
90
+ message: z.string(),
91
+ variant: z.enum(["default", "danger"]).optional(),
92
+ confirmLabel: z.string().optional(),
93
+ cancelLabel: z.string().optional(),
94
+ });
95
+
96
+ /**
97
+ * Action definition that AI can declare
98
+ */
99
+ export const ActionSchema = z.object({
100
+ name: z.string(),
101
+ params: z.record(z.string(), DynamicValueSchema).optional(),
102
+ confirm: ActionConfirmSchema.optional(),
103
+ onSuccess: z.object({ set: z.record(z.string(), DynamicValueSchema) }).optional(),
104
+ onError: z.object({ set: z.record(z.string(), DynamicValueSchema) }).optional(),
105
+ });
106
+
107
+ export type Action = z.infer<typeof ActionSchema>;
108
+
109
+ // =============================================================================
110
+ // Component Props Schemas
111
+ // =============================================================================
112
+
113
+ export const AiActionsPropsSchema = z.object({
114
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(),
115
+ className: z.string().optional(),
116
+ id: z.string().optional(),
117
+ lang: z.string().optional(),
118
+ title: z.string().optional(),
119
+ });
120
+
121
+ export const AiAgentCardPropsSchema = z.object({
122
+ name: z.string(),
123
+ agentType: z.string().optional(), // Agent type ID — used for icon mapping.
124
+ status: z.enum(["idle", "running", "completed", "error"]).optional(), // Current status.
125
+ modelId: z.string().optional(), // Model ID being used (e.g. "claude-haiku-3.5").
126
+ currentTask: z.string().optional(), // What the agent is currently doing.
127
+ duration: z.number().optional(), // Total elapsed duration in ms.
128
+ toolCallCount: z.number().optional(), // Number of tool calls made.
129
+ selected: z.boolean().optional(), // Whether this card is currently selected/active.
130
+ icon: z.unknown().optional(), // Custom icon override.
131
+ size: z.enum(["sm", "md"]).optional(), // Card size.
132
+ disabled: z.boolean().optional(),
133
+ type: z.enum(["submit", "reset", "button"]).optional(),
134
+ value: z.unknown().optional(),
135
+ className: z.string().optional(),
136
+ id: z.string().optional(),
137
+ lang: z.string().optional(),
138
+ title: z.string().optional(),
139
+ });
140
+
141
+ export const AiApprovalPropsSchema = z.object({
142
+ kind: z.enum(["tool", "plan"]).optional(), // Approval kind — `"tool"` for individual tool calls, `"plan"` for multi-step plans.
143
+ status: z.enum(["pending", "approved", "rejected"]).optional(), // Current approval status.
144
+ title: z.string(), // Title text shown in the header.
145
+ description: z.string().optional(), // Optional description below the title.
146
+ icon: z.unknown().optional(), // Custom icon. Defaults to shield (tool) or list (plan).
147
+ items: z.array(z.unknown()).optional(), // For plan approvals: list of steps/items in the plan. For tool approvals: can show tool name, parameters, etc.
148
+ approveLabel: z.string().optional(), // Label for the approve button. Default: `"Approve"`.
149
+ rejectLabel: z.string().optional(), // Label for the reject button. Default: `"Reject"`.
150
+ showFeedback: z.boolean().optional(), // Show a text input for rejection feedback. Default: `false`.
151
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(),
152
+ className: z.string().optional(),
153
+ id: z.string().optional(),
154
+ lang: z.string().optional(),
155
+ });
156
+
157
+ export const AiCodeBlockPropsSchema = z.object({
158
+ code: z.string(), // The raw code string to display and make copyable.
159
+ language: z.string().optional(), // Language identifier for syntax highlighting (display only, no highlighting applied).
160
+ showLineNumbers: z.boolean().optional(), // Show line numbers.
161
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(),
162
+ className: z.string().optional(),
163
+ id: z.string().optional(),
164
+ lang: z.string().optional(),
165
+ title: z.string().optional(),
166
+ });
167
+
168
+ export const AiConversationPropsSchema = z.object({
169
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(),
170
+ className: z.string().optional(),
171
+ id: z.string().optional(),
172
+ lang: z.string().optional(),
173
+ title: z.string().optional(),
174
+ });
175
+
176
+ export const AiInfoBannerPropsSchema = z.object({
177
+ level: z.enum(["info", "error", "change"]).optional(), // Banner level controls icon and color treatment.
178
+ icon: z.unknown().optional(), // Custom icon override.
179
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(),
180
+ className: z.string().optional(),
181
+ id: z.string().optional(),
182
+ lang: z.string().optional(),
183
+ title: z.string().optional(),
184
+ });
185
+
186
+ export const AiLoaderPropsSchema = z.object({
187
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(),
188
+ className: z.string().optional(),
189
+ id: z.string().optional(),
190
+ lang: z.string().optional(),
191
+ title: z.string().optional(),
192
+ size: z.enum(["sm", "base", "lg"]).optional(), // Icon size. - `"sm"` — 12px - `"base"` — 16px (default) - `"lg"` — 20px
193
+ });
194
+
195
+ export const AiMessagePropsSchema = z.object({
196
+ from: z.enum(["user", "assistant", "system"]), // Message sender role — controls layout and group class.
197
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(),
198
+ className: z.string().optional(),
199
+ id: z.string().optional(),
200
+ lang: z.string().optional(),
201
+ title: z.string().optional(),
202
+ });
203
+
204
+ export const AiMissionHeaderPropsSchema = z.object({
205
+ title: z.string().optional(), // The mission goal or title.
206
+ taskList: z.unknown().optional(), // Task list for progress calculation.
207
+ usage: z.unknown().optional(), // Token/cost usage summary.
208
+ activeAgentCount: z.number().optional(), // Number of agents currently active.
209
+ totalAgentCount: z.number().optional(), // Total number of agents that have run or are running.
210
+ startedAt: z.number().optional(), // Wall-clock ms when the mission started.
211
+ endedAt: z.number().optional(), // Wall-clock ms when the mission ended. Undefined while still running.
212
+ isRunning: z.boolean().optional(), // Whether the mission is currently running.
213
+ variant: z.enum(["default", "compact"]).optional(), // Display variant.
214
+ className: z.string().optional(),
215
+ id: z.string().optional(),
216
+ lang: z.string().optional(),
217
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(),
218
+ });
219
+
220
+ export const AiQuestionPropsSchema = z.object({
221
+ questionId: z.string(), // Unique identifier for this question (maps to harness `questionId`).
222
+ question: z.string(), // The question text.
223
+ header: z.string().optional(), // Optional header/context label.
224
+ status: z.enum(["pending", "answered"]).optional(), // Current status.
225
+ options: z.array(z.unknown()).optional(), // Available choice options.
226
+ allowCustom: z.boolean().optional(), // Allow freeform text input (custom answer). Default: `true`. When options are provided, this adds a text field below them.
227
+ icon: z.unknown().optional(), // Custom icon for the question header.
228
+ answeredWith: z.string().optional(), // The answer that was submitted (shown when `status="answered"`).
229
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(),
230
+ className: z.string().optional(),
231
+ id: z.string().optional(),
232
+ lang: z.string().optional(),
233
+ });
234
+
235
+ export const AiReasoningPropsSchema = z.object({
236
+ variant: z.enum(["default", "inline", "minimal"]).optional(), // Display variant.
237
+ isStreaming: z.boolean().optional(), // Whether reasoning is currently streaming.
238
+ duration: z.number().optional(), // Duration in seconds (passed in or self-tracked when streaming).
239
+ defaultExpanded: z.boolean().optional(), // Default expanded state.
240
+ open: z.boolean().optional(), // Controlled open state.
241
+ autoCloseDelay: z.number().optional(), // Delay in ms before auto-closing after streaming ends. Set to 0 to disable.
242
+ icon: z.unknown().optional(), // Custom icon override. Defaults to `SparkleIcon` (streaming) or `BrainIcon` (done). Use to distinguish observation/reflection blocks from standard reasoning.
243
+ label: z.string().optional(), // Custom label override. Defaults to `"Thinking..."` (streaming) or `"Reasoning"` (done). Use to label observational memory blocks: `"Observing..."`, `"Reflecting..."`, etc.
244
+ streamingLabel: z.string().optional(), // Custom streaming label. When provided, used instead of `label` while `isStreaming` is true. Falls back to `label`, then to the default `"Thinking..."`.
245
+ className: z.string().optional(),
246
+ id: z.string().optional(),
247
+ lang: z.string().optional(),
248
+ title: z.string().optional(),
249
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(),
250
+ });
251
+
252
+ export const AiResponsePropsSchema = z.object({
253
+ className: z.string().optional(), // Additional CSS classes
254
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Child elements
255
+ });
256
+
257
+ export const AiShimmerPropsSchema = z.object({
258
+ children: z.string(), // Text content to animate.
259
+ as: z.unknown().optional(), // HTML element or component to render as.
260
+ className: z.string().optional(), // Additional CSS classes merged via `cn()`.
261
+ duration: z.number().optional(), // Animation duration in seconds.
262
+ spread: z.number().optional(), // Shimmer width multiplier relative to text length.
263
+ });
264
+
265
+ export const AiStatusBadgePropsSchema = z.object({
266
+ icon: z.unknown().optional(), // Icon component rendered on the left.
267
+ label: z.string(), // Label text displayed in the badge.
268
+ status: z.enum(["idle", "running", "success", "error"]).optional(), // Current status — determines the status icon on the right.
269
+ info: z.string().optional(), // Additional info text (e.g. "2/3") shown after the label.
270
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(),
271
+ className: z.string().optional(),
272
+ id: z.string().optional(),
273
+ lang: z.string().optional(),
274
+ title: z.string().optional(),
275
+ });
276
+
277
+ export const AiStreamingTextPropsSchema = z.object({
278
+ className: z.string().optional(), // Additional CSS classes
279
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Child elements
280
+ });
281
+
282
+ export const AiSubagentPropsSchema = z.object({
283
+ agentType: z.string().optional(), // Subagent type ID (e.g. `"explore"`, `"execute"`).
284
+ name: z.string().optional(), // Human-readable name for this subagent.
285
+ status: z.enum(["running", "completed", "error"]).optional(), // Current status.
286
+ modelId: z.string().optional(), // Current model ID being used (e.g. `"claude-haiku-3.5"`).
287
+ duration: z.number().optional(), // Duration in milliseconds.
288
+ icon: z.unknown().optional(), // Custom icon. Defaults to `RobotIcon`.
289
+ defaultExpanded: z.boolean().optional(), // Whether the subagent content is expanded by default.
290
+ open: z.boolean().optional(), // Controlled open state.
291
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(),
292
+ className: z.string().optional(),
293
+ id: z.string().optional(),
294
+ lang: z.string().optional(),
295
+ title: z.string().optional(),
296
+ });
297
+
298
+ export const AiSuggestionsPropsSchema = z.object({
299
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(),
300
+ className: z.string().optional(),
301
+ id: z.string().optional(),
302
+ lang: z.string().optional(),
303
+ title: z.string().optional(),
304
+ });
305
+
306
+ export const AiTaskListPropsSchema = z.object({
307
+ tasks: z.array(z.unknown()), // List of tasks.
308
+ title: z.string().optional(), // Optional title above the task list.
309
+ icon: z.unknown().optional(), // Custom icon for the title area.
310
+ showProgress: z.boolean().optional(), // Show a progress summary (e.g. "3 / 7 done"). Default: `true`.
311
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(),
312
+ className: z.string().optional(),
313
+ id: z.string().optional(),
314
+ lang: z.string().optional(),
315
+ });
316
+
317
+ export const AiTimelinePropsSchema = z.object({
318
+ timeOrigin: z.number().optional(), // Wall-clock ms for the timeline origin (t=0). Defaults to the startMs of the first block across all lanes.
319
+ pixelsPerSecond: z.number().optional(), // Pixels per second of elapsed time. Controls horizontal zoom level.
320
+ showNowMarker: z.boolean().optional(), // Whether to show a pulsing "now" marker at the live edge.
321
+ nowMs: z.number().optional(), // Current timestamp in ms. Used to render the "now" marker and open-ended block widths. Pass a stable `useState` value to prevent hydration shifts. When omitted, `Date.now()` is called at render time (fine for live views driven by a ticking parent, not suitable for SSR).
322
+ density: z.enum(["comfortable", "compact"]).optional(), // Lane density variant.
323
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Children should be `AiTimelineLane` components.
324
+ className: z.string().optional(),
325
+ id: z.string().optional(),
326
+ lang: z.string().optional(),
327
+ title: z.string().optional(),
328
+ });
329
+
330
+ export const AiToolCallPropsSchema = z.object({
331
+ variant: z.enum(["default", "inline", "minimal"]).optional(), // Display variant.
332
+ duration: z.number().optional(), // Duration in milliseconds.
333
+ summary: z.string().optional(), // Summary text shown alongside the tool name.
334
+ icon: z.unknown().optional(), // Custom icon override.
335
+ approvalState: z.enum(["awaiting", "approved", "declined"]).optional(), // Approval state for tools requiring confirmation.
336
+ defaultExpanded: z.boolean().optional(), // Default expanded state for the collapsible.
337
+ className: z.string().optional(),
338
+ id: z.string().optional(),
339
+ lang: z.string().optional(),
340
+ title: z.string().optional(),
341
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(),
342
+ });
343
+
344
+ export const AiUsageBarPropsSchema = z.object({
345
+ inputTokens: z.number().optional(), // Input/prompt token count.
346
+ outputTokens: z.number().optional(), // Output/completion token count.
347
+ totalTokens: z.number().optional(), // Total token count. Computed from input + output if not provided.
348
+ cost: z.number().optional(), // Estimated cost in USD.
349
+ modelId: z.string().optional(), // Model ID being used (shown as label).
350
+ icon: z.unknown().optional(), // Custom icon. Defaults to `LightningIcon`.
351
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(),
352
+ className: z.string().optional(),
353
+ id: z.string().optional(),
354
+ lang: z.string().optional(),
355
+ title: z.string().optional(),
356
+ });
357
+
358
+ export const BadgePropsSchema = z.object({
359
+ variant: z.enum(["primary", "secondary", "destructive", "outline", "beta", "success", "warning", "info", "ghost"]).optional(), // Visual style of the badge. - `"primary"` — High-emphasis badge for important labels - `"secondary"` — Subtle badge for secondary information - `"destructive"` — Error or danger state indicator - `"outline"` — Bordered badge with transparent background - `"beta"` — Dashed-border badge for beta/experimental features - `"success"` — Positive status indicator - `"warning"` — Caution or attention indicator - `"info"` — Informational badge - `"ghost"` — Text-only badge with no background or border
360
+ className: z.string().optional(), // Additional CSS classes merged via `cn()`.
361
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Content rendered inside the badge.
362
+ icon: z.unknown().optional(), // Icon component rendered alongside the text.
363
+ iconPosition: z.enum(["left", "right"]).optional(), // Position of the icon relative to the text.
364
+ loading: z.boolean().optional(), // Shows a loading spinner, replacing the icon slot.
365
+ dot: z.enum(["green", "red", "yellow", "blue", "gray"]).optional(), // Renders a small colored status dot before the text.
366
+ tooltip: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Wraps the badge in a Tooltip with this content. Requires a TooltipProvider ancestor.
367
+ href: z.string().optional(),
368
+ });
369
+
370
+ export const BannerPropsSchema = z.object({
371
+ icon: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Icon element rendered before the banner text (e.g. from `@phosphor-icons/react`).
372
+ text: z.string().optional(),
373
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Banner message content. Accepts strings or custom React elements.
374
+ variant: z.enum(["default", "alert", "error"]).optional(), // Visual style of the banner. - `"default"` — Informational blue banner for general messages - `"alert"` — Warning yellow banner for cautionary messages - `"error"` — Error red banner for critical issues
375
+ className: z.string().optional(), // Additional CSS classes merged via `cn()`.
376
+ });
377
+
378
+ export const BreadcrumbsPropsSchema = z.object({
379
+ size: z.enum(["sm", "base"]).optional(), // Size of the breadcrumbs. - `"sm"` — Compact breadcrumbs for dense UIs - `"base"` — Default breadcrumbs size
380
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(),
381
+ className: z.string().optional(), // Additional CSS classes merged via `cn()`.
382
+ });
383
+
384
+ export const ButtonPropsSchema = z.object({
385
+ shape: z.enum(["base", "square", "circle"]).optional(),
386
+ size: z.enum(["xs", "sm", "base", "lg"]).optional(),
387
+ variant: z.enum(["primary", "secondary", "ghost", "destructive", "secondary-destructive", "outline"]).optional(),
388
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(),
389
+ className: z.string().optional(),
390
+ icon: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Icon from `@phosphor-icons/react` or a React element. Rendered before children.
391
+ loading: z.boolean().optional(), // Shows a loading spinner and disables interaction.
392
+ id: z.string().optional(),
393
+ lang: z.string().optional(),
394
+ title: z.string().optional(),
395
+ disabled: z.boolean().optional(),
396
+ name: z.string().optional(),
397
+ type: z.enum(["submit", "reset", "button"]).optional(),
398
+ value: z.unknown().optional(),
399
+ });
400
+
401
+ export const CheckboxPropsSchema = z.object({
402
+ variant: z.enum(["default", "error"]).optional(), // Visual variant: "default" or "error" for validation failures (visual only, no error text)
403
+ label: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Label content for the checkbox (enables built-in Field wrapper) - can be a string or any React node
404
+ labelTooltip: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Tooltip content to display next to the label via an info icon
405
+ controlFirst: z.boolean().optional(), // When true (default), checkbox appears before label. When false, label appears before checkbox.
406
+ checked: z.boolean().optional(), // Whether the checkbox is checked (controlled)
407
+ indeterminate: z.boolean().optional(), // Whether the checkbox is in indeterminate state
408
+ disabled: z.boolean().optional(), // Whether the checkbox is disabled
409
+ name: z.string().optional(), // Name for form submission
410
+ required: z.boolean().optional(), // Whether the field is required
411
+ className: z.string().optional(), // Additional class name
412
+ onValueChange: z.unknown().optional(), // Callback when checkbox value changes
413
+ });
414
+
415
+ export const ClipboardTextPropsSchema = z.object({
416
+ size: z.enum(["sm", "base", "lg"]).optional(), // Size of the clipboard text field. - `"sm"` — Small clipboard text for compact UIs - `"base"` — Default clipboard text size - `"lg"` — Large clipboard text for prominent display
417
+ text: z.string(), // The text to display and copy to clipboard.
418
+ className: z.string().optional(), // Additional CSS classes merged via `cn()`.
419
+ tooltip: z.unknown().optional(), // Tooltip config. Shows tooltip on hover, anchored toast on click.
420
+ labels: z.unknown().optional(), // Accessible labels for i18n.
421
+ });
422
+
423
+ export const CodePropsSchema = z.object({
424
+ lang: z.enum(["ts", "tsx", "jsonc", "bash", "css"]).optional(), // Language hint for the code content. - `"ts"` — TypeScript code - `"tsx"` — TypeScript JSX code - `"jsonc"` — JSON with comments - `"bash"` — Shell/Bash commands - `"css"` — CSS styles
425
+ code: z.string(), // The code string to display.
426
+ values: z.unknown().optional(), // Template values for `{{key}}` interpolation. Values with `highlight: true` are visually emphasized.
427
+ className: z.string().optional(), // Additional CSS classes merged via `cn()`.
428
+ });
429
+
430
+ export const CollapsiblePropsSchema = z.object({
431
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(),
432
+ label: z.string(), // Text label displayed in the trigger button
433
+ open: z.boolean().optional(), // Whether the collapsible content is visible
434
+ className: z.string().optional(), // Additional CSS classes for the content panel
435
+ onOpenChange: z.unknown().optional(), // Callback when collapsed state changes
436
+ });
437
+
438
+ export const ComboboxPropsSchema = z.object({
439
+ inputSide: z.enum(["right", "top"]).optional(), // Position of the text input relative to chips in multi-select mode. - `"right"` — Input inline to the right of chips - `"top"` — Input above chips
440
+ items: z.array(z.unknown()), // Array of items to display in the dropdown
441
+ value: z.array(z.unknown()).optional(), // Currently selected value(s)
442
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Combobox content (trigger, content, items)
443
+ className: z.string().optional(), // Additional CSS classes
444
+ label: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Label content for the combobox (enables Field wrapper) - can be a string or any React node
445
+ required: z.boolean().optional(), // Whether the combobox is required
446
+ labelTooltip: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Tooltip content to display next to the label via an info icon
447
+ description: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Helper text displayed below the combobox
448
+ error: z.unknown().optional(), // Error message or validation error object
449
+ onValueChange: z.unknown().optional(), // Callback when selection changes
450
+ multiple: z.boolean().optional(), // Allow multiple selections
451
+ isItemEqualToValue: z.unknown().optional(), // Custom equality function for comparing items
452
+ });
453
+
454
+ export const CommandPalettePropsSchema = z.object({
455
+ open: z.boolean(), // Whether the dialog is open
456
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Child content - typically one or more Panel components
457
+ });
458
+
459
+ export const DataGridPropsSchema = z.object({
460
+ layout: z.enum(["auto", "fixed"]).optional(),
461
+ className: z.string().optional(), // Additional CSS classes
462
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Child elements
463
+ });
464
+
465
+ export const DatePickerPropsSchema = z.object({
466
+ className: z.string().optional(), // Additional CSS classes
467
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Child elements
468
+ });
469
+
470
+ export const DateRangePickerPropsSchema = z.object({
471
+ size: z.enum(["sm", "base", "lg"]).optional(), // Calendar size. - `"sm"` — Compact calendar for tight spaces - `"base"` — Default calendar size - `"lg"` — Large calendar for prominent date selection
472
+ variant: z.enum(["default", "subtle"]).optional(), // Visual variant. - `"default"` — Standard appearance with overlay background - `"subtle"` — Minimal background
473
+ timezone: z.string().optional(), // Display timezone string shown in the footer.
474
+ className: z.string().optional(), // Additional CSS classes merged via `cn()`.
475
+ onStartDateChange: z.unknown().optional(), // Callback when start date changes
476
+ onEndDateChange: z.unknown().optional(), // Callback when end date changes
477
+ });
478
+
479
+ export const DialogPropsSchema = z.object({
480
+ className: z.string().optional(), // Additional CSS classes merged via `cn()`.
481
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Dialog content (typically Title, Description, Close, and action buttons).
482
+ size: z.enum(["base", "sm", "lg", "xl"]).optional(), // Dialog width. - `"sm"` — Small (min 288px) for simple confirmations - `"base"` — Default (min 384px) - `"lg"` — Large (min 512px) for complex content - `"xl"` — Extra large (min 768px) for detailed views
483
+ });
484
+
485
+ export const DropdownMenuPropsSchema = z.object({
486
+ variant: z.enum(["default", "danger"]).optional(), // Visual style of the dropdown item. - `"default"` — Standard item appearance - `"danger"` — Destructive action with red text
487
+ });
488
+
489
+ export const EmptyPropsSchema = z.object({
490
+ size: z.enum(["sm", "base", "lg"]).optional(), // Size of the empty state container. - `"sm"` — Compact empty state for smaller containers - `"base"` — Default empty state size - `"lg"` — Large empty state for prominent placement
491
+ icon: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Decorative icon displayed above the title (e.g. from `@phosphor-icons/react`).
492
+ title: z.string(), // Primary heading text for the empty state.
493
+ description: z.string().optional(), // Secondary description text displayed below the title.
494
+ commandLine: z.string().optional(), // Shell command displayed in a copyable code block.
495
+ contents: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Additional content (buttons, links) rendered below the description.
496
+ className: z.string().optional(), // Additional CSS classes merged via `cn()`.
497
+ });
498
+
499
+ export const FieldPropsSchema = z.object({
500
+ controlFirst: z.boolean().optional(), // When `true`, places the control before the label (for checkbox/switch layouts).
501
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // The form control element(s) to wrap (Input, Select, Checkbox, etc.).
502
+ label: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // The label content — can be a string or any React node.
503
+ required: z.boolean().optional(), // When explicitly `false`, shows gray "(optional)" text after the label. When `true` or `undefined`, no indicator is shown.
504
+ labelTooltip: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Tooltip content displayed next to the label via an info icon.
505
+ error: z.unknown().optional(), // Validation error with a message and a browser `ValidityState` match key.
506
+ description: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Helper text displayed below the control (hidden when `error` is present).
507
+ });
508
+
509
+ export const FiltersPropsSchema = z.object({
510
+ filters: z.array(z.unknown()), // Active filters array
511
+ fields: z.array(z.unknown()), // Available field configurations
512
+ size: z.enum(["sm", "default", "lg"]).optional(), // Size variant for filter pills
513
+ trigger: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Custom trigger element (replaces default "Add Filter" button)
514
+ showSearchInput: z.boolean().optional(), // Whether to show a search input in the add filter menu
515
+ allowMultiple: z.boolean().optional(), // Whether to allow multiple filters on the same field
516
+ enableShortcut: z.boolean().optional(), // Whether to enable keyboard shortcut (Cmd/Ctrl + K) to open add filter
517
+ shortcutKey: z.string().optional(), // Keyboard shortcut key (default: "k")
518
+ shortcutLabel: z.string().optional(), // Label shown in the shortcut tooltip
519
+ i18n: z.unknown().optional(), // i18n configuration for labels
520
+ className: z.string().optional(), // Additional CSS classes
521
+ menuPopupClassName: z.string().optional(), // CSS classes for the filter menu popup
522
+ });
523
+
524
+ export const GridPropsSchema = z.object({
525
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Grid items to render.
526
+ className: z.string().optional(), // Additional CSS classes merged via `cn()`.
527
+ id: z.string().optional(),
528
+ lang: z.string().optional(),
529
+ title: z.string().optional(),
530
+ mobileDivider: z.boolean().optional(), // Show dividers between grid items on mobile (only works with `"4up"` variant).
531
+ gap: z.enum(["none", "sm", "base", "lg"]).optional(), // Gap size between grid items. - `"none"` — No gap - `"sm"` — 12px gap - `"base"` — Responsive gap (8px → 24px → 32px) - `"lg"` — 32px gap
532
+ variant: z.enum(["2up", "side-by-side", "2-1", "1-2", "1-3up", "3up", "4up", "6up", "1-2-4up"]).optional(), // Responsive column layout variant. - `"2up"` — 1 col → 2 cols at md - `"side-by-side"` — Always 2 cols - `"2-1"` — 66%/33% split at md - `"1-2"` — 33%/66% split at md - `"3up"` — 1 → 2 → 3 cols - `"4up"` — 1 → 2 → 3 → 4 cols - `"6up"` — 2 → 3 → 4 → 6 cols - `"1-2-4up"` — 1 → 2 → 4 cols
533
+ });
534
+
535
+ export const InputPropsSchema = z.object({
536
+ label: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Label content for the input (enables Field wrapper) - can be a string or any React node
537
+ labelTooltip: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Tooltip content to display next to the label via an info icon
538
+ description: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Helper text displayed below the input
539
+ error: z.unknown().optional(), // Error message or validation error object
540
+ size: z.enum(["xs", "sm", "base", "lg"]).optional(), // Input size. - `"xs"` — Extra small for compact UIs - `"sm"` — Small for secondary fields - `"base"` — Default size - `"lg"` — Large for prominent fields
541
+ variant: z.enum(["default", "error"]).optional(), // Visual variant. - `"default"` — Standard input - `"error"` — Error state for validation failures
542
+ });
543
+
544
+ export const InputAreaPropsSchema = z.object({});
545
+
546
+ export const LabelPropsSchema = z.object({
547
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // The label content — can be a string or any React node.
548
+ showOptional: z.boolean().optional(), // When `true`, shows gray "(optional)" text after the label.
549
+ tooltip: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Tooltip content displayed next to the label via an info icon.
550
+ className: z.string().optional(), // Additional CSS classes merged via `cn()`.
551
+ htmlFor: z.string().optional(), // The id of the form element this label is associated with
552
+ asContent: z.boolean().optional(), // When true, only renders the inline content (indicators, tooltip) without the outer label element with font styling. Useful when composed inside another label element that already provides the text styling.
553
+ });
554
+
555
+ export const LayerCardPropsSchema = z.object({
556
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(),
557
+ className: z.string().optional(), // Additional CSS classes merged via `cn()`.
558
+ });
559
+
560
+ export const LinkPropsSchema = z.object({
561
+ variant: z.enum(["inline", "current", "plain"]).optional(), // Visual style of the link. - `"inline"` — Inline text link that flows with content - `"current"` — Link that inherits color from parent text - `"plain"` — Link without underline decoration
562
+ to: z.string().optional(),
563
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(),
564
+ className: z.string().optional(),
565
+ id: z.string().optional(),
566
+ lang: z.string().optional(),
567
+ title: z.string().optional(),
568
+ download: z.unknown().optional(),
569
+ href: z.string().optional(),
570
+ hrefLang: z.string().optional(),
571
+ media: z.string().optional(),
572
+ ping: z.string().optional(),
573
+ target: z.unknown().optional(),
574
+ type: z.string().optional(),
575
+ referrerPolicy: z.enum(["", "no-referrer", "no-referrer-when-downgrade", "origin", "origin-when-cross-origin", "same-origin", "strict-origin", "strict-origin-when-cross-origin", "unsafe-url"]).optional(),
576
+ render: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Allows you to replace the component’s HTML element with a different tag, or compose it with another component. Accepts a `ReactElement` or a function that returns the element to render.
577
+ });
578
+
579
+ export const LoaderPropsSchema = z.object({
580
+ className: z.string().optional(), // Additional CSS classes merged via `cn()`.
581
+ size: z.enum(["sm", "base", "lg"]).optional(), // Size of the spinner. Use a preset name or a custom pixel number. - `"sm"` — 16px, for inline use - `"base"` — 24px, default size - `"lg"` — 32px, for prominent loading states
582
+ });
583
+
584
+ export const MenuBarPropsSchema = z.object({
585
+ className: z.string().optional(), // Additional CSS classes merged via `cn()`.
586
+ isActive: z.unknown().optional(), // The currently active option value — matched against option index or `id`.
587
+ options: z.array(z.unknown()), // Array of menu option configurations.
588
+ optionIds: z.boolean().optional(), // When true, each option's `id` field is used for matching instead of its array index.
589
+ });
590
+
591
+ export const MeterPropsSchema = z.object({
592
+ customValue: z.string().optional(), // Custom formatted value text (e.g. "750 / 1,000") displayed instead of percentage.
593
+ label: z.string(), // Label text displayed above the meter track.
594
+ showValue: z.boolean().optional(), // Whether to display the percentage value next to the label.
595
+ trackClassName: z.string().optional(), // Additional CSS classes for the track (background bar).
596
+ indicatorClassName: z.string().optional(), // Additional CSS classes for the indicator (filled bar).
597
+ value: z.number().optional(), // Current value of the meter
598
+ max: z.number().optional(), // Maximum value of the meter (default: 100)
599
+ min: z.number().optional(), // Minimum value of the meter (default: 0)
600
+ });
601
+
602
+ export const PaginationPropsSchema = z.object({
603
+ controls: z.enum(["full", "simple"]).optional(),
604
+ setPage: z.unknown(), // Callback when page changes
605
+ page: z.number().optional(), // Current page number (1-indexed).
606
+ perPage: z.number().optional(), // Number of items displayed per page.
607
+ totalCount: z.number().optional(), // Total number of items across all pages.
608
+ text: z.unknown().optional(), // Method to provide custom pagination text
609
+ });
610
+
611
+ export const PopoverPropsSchema = z.object({
612
+ side: z.enum(["top", "bottom", "left", "right"]).optional(), // Which side of the trigger the popover appears on. - `"top"` — Above the trigger - `"bottom"` — Below the trigger - `"left"` — Left of the trigger - `"right"` — Right of the trigger
613
+ });
614
+
615
+ export const PromptInputPropsSchema = z.object({
616
+ globalDrop: z.boolean().optional(), // When true, accept drops anywhere on document. Default false.
617
+ maxFiles: z.number().optional(), // Maximum number of attached files.
618
+ maxFileSize: z.number().optional(), // Maximum file size in bytes.
619
+ backLayer: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Content rendered in the collapsible back layer (e.g. HITL approvals, task lists). When provided the prompt input is wrapped in a LayerCard shell with a header row containing a chevron toggle. Use `PromptInputBackLayer` to compose structured content for this slot.
620
+ backLayerTitle: z.string().optional(), // Title shown in the back layer header row. Defaults to `"Context"`.
621
+ backLayerOpen: z.boolean().optional(), // Controls whether the back layer is visible. Pair with `onBackLayerOpenChange` for a controlled pattern.
622
+ autoOpenBackLayerWhen: z.boolean().optional(), // Automatically opens the back layer when this condition is true. Useful for showing pending approvals/questions without manual toggle.
623
+ className: z.string().optional(),
624
+ id: z.string().optional(),
625
+ lang: z.string().optional(),
626
+ title: z.string().optional(),
627
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(),
628
+ });
629
+
630
+ export const RadioPropsSchema = z.object({
631
+ legend: z.string(), // Legend text for the group (required for accessibility)
632
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Child Radio.Item components
633
+ orientation: z.enum(["vertical", "horizontal"]).optional(), // Layout direction of the radio items
634
+ error: z.string().optional(), // Error message for the group
635
+ description: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Helper text for the group
636
+ value: z.string().optional(), // Value of the radio that should be selected (controlled)
637
+ disabled: z.boolean().optional(), // Whether all radios in the group are disabled
638
+ controlPosition: z.enum(["start", "end"]).optional(), // Position of radio control relative to label: "start" (default) puts radio before label, "end" puts label before radio
639
+ name: z.string().optional(), // Form submission name for the radio group
640
+ className: z.string().optional(), // Additional CSS classes
641
+ });
642
+
643
+ export const SelectPropsSchema = z.object({
644
+ className: z.string().optional(), // Additional CSS classes merged via `cn()`.
645
+ label: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Label content for the select (enables Field wrapper) — can be a string or any React node.
646
+ hideLabel: z.boolean().optional(), // Visually hide the label while keeping it accessible to screen readers. Set to `false` to show a visible label above the select via the Field wrapper.
647
+ placeholder: z.string().optional(), // Placeholder text shown when no value is selected.
648
+ loading: z.boolean().optional(), // When `true`, shows a skeleton loader in place of the selected value.
649
+ disabled: z.boolean().optional(), // Whether the select is disabled.
650
+ required: z.boolean().optional(), // Whether the select is required. When `false`, shows "(optional)" text.
651
+ labelTooltip: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Tooltip content displayed next to the label via an info icon.
652
+ value: z.string().optional(), // Currently selected value (controlled mode).
653
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // `Select.Option` elements to render in the dropdown.
654
+ description: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Helper text displayed below the select.
655
+ error: z.unknown().optional(), // Error message string or validation error object with `match` key.
656
+ onValueChange: z.unknown().optional(), // Callback when selection changes
657
+ defaultValue: z.string().optional(), // Initial value for uncontrolled mode
658
+ });
659
+
660
+ export const SensitiveInputPropsSchema = z.object({
661
+ alt: z.string().optional(),
662
+ autoComplete: z.unknown().optional(),
663
+ checked: z.boolean().optional(),
664
+ disabled: z.boolean().optional(),
665
+ height: z.unknown().optional(),
666
+ list: z.string().optional(),
667
+ name: z.string().optional(),
668
+ placeholder: z.string().optional(),
669
+ readOnly: z.boolean().optional(),
670
+ required: z.boolean().optional(),
671
+ width: z.unknown().optional(),
672
+ className: z.string().optional(),
673
+ id: z.string().optional(),
674
+ lang: z.string().optional(),
675
+ title: z.string().optional(),
676
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(),
677
+ value: z.string().optional(), // Controlled value
678
+ size: z.enum(["xs", "sm", "base", "lg"]).optional(), // Size of the input. - `"xs"` — Extra small for compact UIs - `"sm"` — Small for secondary fields - `"base"` — Default input size - `"lg"` — Large for prominent fields
679
+ variant: z.enum(["default", "error"]).optional(), // Style variant of the input. - `"default"` — Default input appearance - `"error"` — Error state for validation failures
680
+ label: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Label content for the input (enables Field wrapper and sets masked state label) - can be a string or any React node
681
+ labelTooltip: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Tooltip content to display next to the label via an info icon
682
+ description: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Helper text displayed below the input
683
+ error: z.unknown().optional(), // Error message or validation error object
684
+ });
685
+
686
+ export const SidebarPropsSchema = z.object({
687
+ defaultOpen: z.boolean().optional(), // Initial open state when uncontrolled.
688
+ open: z.boolean().optional(), // Controlled open state.
689
+ variant: z.enum(["sidebar", "floating", "inset"]).optional(), // Sidebar layout variant.
690
+ side: z.enum(["left", "right"]).optional(), // Which side the sidebar is on.
691
+ collapsible: z.enum(["icon", "offcanvas", "none"]).optional(),
692
+ resizable: z.boolean().optional(), // Enable drag-to-resize on the sidebar edge.
693
+ defaultWidth: z.number().optional(), // Initial width in pixels when resizable.
694
+ minWidth: z.number().optional(), // Minimum width in pixels when resizing.
695
+ maxWidth: z.number().optional(), // Maximum width in pixels when resizing.
696
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Content — typically `<Sidebar>` + main content.
697
+ className: z.string().optional(), // Additional CSS classes for the wrapper div.
698
+ });
699
+
700
+ export const SignalFlareAILogoPropsSchema = z.object({
701
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(),
702
+ className: z.string().optional(),
703
+ height: z.unknown().optional(),
704
+ id: z.string().optional(),
705
+ lang: z.string().optional(),
706
+ media: z.string().optional(),
707
+ method: z.string().optional(),
708
+ name: z.string().optional(),
709
+ target: z.string().optional(),
710
+ type: z.string().optional(),
711
+ width: z.unknown().optional(),
712
+ accentHeight: z.unknown().optional(),
713
+ accumulate: z.enum(["none", "sum"]).optional(),
714
+ additive: z.enum(["replace", "sum"]).optional(),
715
+ alignmentBaseline: z.enum(["auto", "baseline", "before-edge", "text-before-edge", "middle", "central", "after-edge", "text-after-edge", "ideographic", "alphabetic", "hanging", "mathematical", "inherit"]).optional(),
716
+ allowReorder: z.enum(["no", "yes"]).optional(),
717
+ alphabetic: z.unknown().optional(),
718
+ amplitude: z.unknown().optional(),
719
+ arabicForm: z.enum(["initial", "medial", "terminal", "isolated"]).optional(),
720
+ ascent: z.unknown().optional(),
721
+ attributeName: z.string().optional(),
722
+ attributeType: z.string().optional(),
723
+ autoReverse: z.unknown().optional(),
724
+ azimuth: z.unknown().optional(),
725
+ baseFrequency: z.unknown().optional(),
726
+ baselineShift: z.unknown().optional(),
727
+ baseProfile: z.unknown().optional(),
728
+ bbox: z.unknown().optional(),
729
+ begin: z.unknown().optional(),
730
+ bias: z.unknown().optional(),
731
+ by: z.unknown().optional(),
732
+ calcMode: z.unknown().optional(),
733
+ capHeight: z.unknown().optional(),
734
+ clip: z.unknown().optional(),
735
+ clipPath: z.string().optional(),
736
+ clipPathUnits: z.unknown().optional(),
737
+ clipRule: z.unknown().optional(),
738
+ colorInterpolation: z.unknown().optional(),
739
+ colorInterpolationFilters: z.enum(["auto", "sRGB", "linearRGB", "inherit"]).optional(),
740
+ colorProfile: z.unknown().optional(),
741
+ colorRendering: z.unknown().optional(),
742
+ contentScriptType: z.unknown().optional(),
743
+ contentStyleType: z.unknown().optional(),
744
+ cursor: z.unknown().optional(),
745
+ cx: z.unknown().optional(),
746
+ cy: z.unknown().optional(),
747
+ d: z.string().optional(),
748
+ decelerate: z.unknown().optional(),
749
+ descent: z.unknown().optional(),
750
+ diffuseConstant: z.unknown().optional(),
751
+ direction: z.unknown().optional(),
752
+ display: z.unknown().optional(),
753
+ divisor: z.unknown().optional(),
754
+ dominantBaseline: z.enum(["auto", "use-script", "no-change", "reset-size", "ideographic", "alphabetic", "hanging", "mathematical", "central", "middle", "text-after-edge", "text-before-edge", "inherit"]).optional(),
755
+ dur: z.unknown().optional(),
756
+ dx: z.unknown().optional(),
757
+ dy: z.unknown().optional(),
758
+ edgeMode: z.unknown().optional(),
759
+ elevation: z.unknown().optional(),
760
+ enableBackground: z.unknown().optional(),
761
+ end: z.unknown().optional(),
762
+ exponent: z.unknown().optional(),
763
+ externalResourcesRequired: z.unknown().optional(),
764
+ fill: z.string().optional(),
765
+ fillOpacity: z.unknown().optional(),
766
+ fillRule: z.enum(["nonzero", "evenodd", "inherit"]).optional(),
767
+ filter: z.string().optional(),
768
+ filterRes: z.unknown().optional(),
769
+ filterUnits: z.unknown().optional(),
770
+ floodColor: z.unknown().optional(),
771
+ floodOpacity: z.unknown().optional(),
772
+ focusable: z.unknown().optional(),
773
+ fontFamily: z.string().optional(),
774
+ fontSize: z.unknown().optional(),
775
+ fontSizeAdjust: z.unknown().optional(),
776
+ fontStretch: z.unknown().optional(),
777
+ fontStyle: z.unknown().optional(),
778
+ fontVariant: z.unknown().optional(),
779
+ fontWeight: z.unknown().optional(),
780
+ format: z.unknown().optional(),
781
+ fr: z.unknown().optional(),
782
+ from: z.unknown().optional(),
783
+ fx: z.unknown().optional(),
784
+ fy: z.unknown().optional(),
785
+ g1: z.unknown().optional(),
786
+ g2: z.unknown().optional(),
787
+ glyphName: z.unknown().optional(),
788
+ glyphOrientationHorizontal: z.unknown().optional(),
789
+ glyphOrientationVertical: z.unknown().optional(),
790
+ glyphRef: z.unknown().optional(),
791
+ gradientTransform: z.string().optional(),
792
+ gradientUnits: z.string().optional(),
793
+ hanging: z.unknown().optional(),
794
+ horizAdvX: z.unknown().optional(),
795
+ horizOriginX: z.unknown().optional(),
796
+ href: z.string().optional(),
797
+ ideographic: z.unknown().optional(),
798
+ imageRendering: z.unknown().optional(),
799
+ in2: z.unknown().optional(),
800
+ in: z.string().optional(),
801
+ intercept: z.unknown().optional(),
802
+ k1: z.unknown().optional(),
803
+ k2: z.unknown().optional(),
804
+ k3: z.unknown().optional(),
805
+ k4: z.unknown().optional(),
806
+ k: z.unknown().optional(),
807
+ kernelMatrix: z.unknown().optional(),
808
+ kernelUnitLength: z.unknown().optional(),
809
+ kerning: z.unknown().optional(),
810
+ keyPoints: z.unknown().optional(),
811
+ keySplines: z.unknown().optional(),
812
+ keyTimes: z.unknown().optional(),
813
+ lengthAdjust: z.unknown().optional(),
814
+ letterSpacing: z.unknown().optional(),
815
+ lightingColor: z.unknown().optional(),
816
+ limitingConeAngle: z.unknown().optional(),
817
+ local: z.unknown().optional(),
818
+ markerEnd: z.string().optional(),
819
+ markerHeight: z.unknown().optional(),
820
+ markerMid: z.string().optional(),
821
+ markerStart: z.string().optional(),
822
+ markerUnits: z.unknown().optional(),
823
+ markerWidth: z.unknown().optional(),
824
+ mask: z.string().optional(),
825
+ maskContentUnits: z.unknown().optional(),
826
+ maskUnits: z.unknown().optional(),
827
+ mathematical: z.unknown().optional(),
828
+ mode: z.unknown().optional(),
829
+ numOctaves: z.unknown().optional(),
830
+ offset: z.unknown().optional(),
831
+ opacity: z.unknown().optional(),
832
+ operator: z.unknown().optional(),
833
+ order: z.unknown().optional(),
834
+ orient: z.unknown().optional(),
835
+ orientation: z.unknown().optional(),
836
+ origin: z.unknown().optional(),
837
+ overflow: z.unknown().optional(),
838
+ overlinePosition: z.unknown().optional(),
839
+ overlineThickness: z.unknown().optional(),
840
+ paintOrder: z.unknown().optional(),
841
+ panose1: z.unknown().optional(),
842
+ path: z.string().optional(),
843
+ pathLength: z.unknown().optional(),
844
+ patternContentUnits: z.string().optional(),
845
+ patternTransform: z.unknown().optional(),
846
+ patternUnits: z.string().optional(),
847
+ pointerEvents: z.unknown().optional(),
848
+ points: z.string().optional(),
849
+ pointsAtX: z.unknown().optional(),
850
+ pointsAtY: z.unknown().optional(),
851
+ pointsAtZ: z.unknown().optional(),
852
+ preserveAlpha: z.unknown().optional(),
853
+ preserveAspectRatio: z.string().optional(),
854
+ primitiveUnits: z.unknown().optional(),
855
+ r: z.unknown().optional(),
856
+ radius: z.unknown().optional(),
857
+ refX: z.unknown().optional(),
858
+ refY: z.unknown().optional(),
859
+ renderingIntent: z.unknown().optional(),
860
+ repeatCount: z.unknown().optional(),
861
+ repeatDur: z.unknown().optional(),
862
+ requiredExtensions: z.unknown().optional(),
863
+ requiredFeatures: z.unknown().optional(),
864
+ restart: z.unknown().optional(),
865
+ result: z.string().optional(),
866
+ rotate: z.unknown().optional(),
867
+ rx: z.unknown().optional(),
868
+ ry: z.unknown().optional(),
869
+ scale: z.unknown().optional(),
870
+ seed: z.unknown().optional(),
871
+ shapeRendering: z.unknown().optional(),
872
+ slope: z.unknown().optional(),
873
+ spacing: z.unknown().optional(),
874
+ specularConstant: z.unknown().optional(),
875
+ specularExponent: z.unknown().optional(),
876
+ speed: z.unknown().optional(),
877
+ spreadMethod: z.string().optional(),
878
+ startOffset: z.unknown().optional(),
879
+ stdDeviation: z.unknown().optional(),
880
+ stemh: z.unknown().optional(),
881
+ stemv: z.unknown().optional(),
882
+ stitchTiles: z.unknown().optional(),
883
+ stopColor: z.string().optional(),
884
+ stopOpacity: z.unknown().optional(),
885
+ strikethroughPosition: z.unknown().optional(),
886
+ strikethroughThickness: z.unknown().optional(),
887
+ string: z.unknown().optional(),
888
+ stroke: z.string().optional(),
889
+ strokeDasharray: z.unknown().optional(),
890
+ strokeDashoffset: z.unknown().optional(),
891
+ strokeLinecap: z.enum(["butt", "round", "square", "inherit"]).optional(),
892
+ strokeLinejoin: z.enum(["miter", "round", "bevel", "inherit"]).optional(),
893
+ strokeMiterlimit: z.unknown().optional(),
894
+ strokeOpacity: z.unknown().optional(),
895
+ strokeWidth: z.unknown().optional(),
896
+ surfaceScale: z.unknown().optional(),
897
+ systemLanguage: z.unknown().optional(),
898
+ tableValues: z.unknown().optional(),
899
+ targetX: z.unknown().optional(),
900
+ targetY: z.unknown().optional(),
901
+ textAnchor: z.enum(["start", "middle", "end", "inherit"]).optional(),
902
+ textDecoration: z.unknown().optional(),
903
+ textLength: z.unknown().optional(),
904
+ textRendering: z.unknown().optional(),
905
+ to: z.unknown().optional(),
906
+ transform: z.string().optional(),
907
+ u1: z.unknown().optional(),
908
+ u2: z.unknown().optional(),
909
+ underlinePosition: z.unknown().optional(),
910
+ underlineThickness: z.unknown().optional(),
911
+ unicode: z.unknown().optional(),
912
+ unicodeBidi: z.unknown().optional(),
913
+ unicodeRange: z.unknown().optional(),
914
+ unitsPerEm: z.unknown().optional(),
915
+ vAlphabetic: z.unknown().optional(),
916
+ values: z.string().optional(),
917
+ vectorEffect: z.unknown().optional(),
918
+ version: z.string().optional(),
919
+ vertAdvY: z.unknown().optional(),
920
+ vertOriginX: z.unknown().optional(),
921
+ vertOriginY: z.unknown().optional(),
922
+ vHanging: z.unknown().optional(),
923
+ vIdeographic: z.unknown().optional(),
924
+ viewBox: z.string().optional(),
925
+ viewTarget: z.unknown().optional(),
926
+ visibility: z.unknown().optional(),
927
+ vMathematical: z.unknown().optional(),
928
+ widths: z.unknown().optional(),
929
+ wordSpacing: z.unknown().optional(),
930
+ writingMode: z.unknown().optional(),
931
+ x1: z.unknown().optional(),
932
+ x2: z.unknown().optional(),
933
+ x: z.unknown().optional(),
934
+ xChannelSelector: z.string().optional(),
935
+ xHeight: z.unknown().optional(),
936
+ xlinkActuate: z.string().optional(),
937
+ xlinkArcrole: z.string().optional(),
938
+ xlinkHref: z.string().optional(),
939
+ xlinkRole: z.string().optional(),
940
+ xlinkShow: z.string().optional(),
941
+ xlinkTitle: z.string().optional(),
942
+ xlinkType: z.string().optional(),
943
+ xmlBase: z.string().optional(),
944
+ xmlLang: z.string().optional(),
945
+ xmlns: z.string().optional(),
946
+ xmlnsXlink: z.string().optional(),
947
+ xmlSpace: z.string().optional(),
948
+ y1: z.unknown().optional(),
949
+ y2: z.unknown().optional(),
950
+ y: z.unknown().optional(),
951
+ yChannelSelector: z.string().optional(),
952
+ z: z.unknown().optional(),
953
+ zoomAndPan: z.string().optional(),
954
+ variant: z.enum(["glyph", "full"]).optional(), // Logo variant - `glyph`: Map pin icon only - `full`: Full logo with wordmark and decorative element
955
+ });
956
+
957
+ export const SurfacePropsSchema = z.object({
958
+ as: z.unknown().optional(), // The HTML element type to render as (e.g. `"div"`, `"section"`, `"article"`).
959
+ className: z.string().optional(), // Additional CSS classes merged via `cn()`.
960
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Content rendered inside the surface.
961
+ });
962
+
963
+ export const SwitchPropsSchema = z.object({
964
+ variant: z.enum(["default", "error"]).optional(), // Visual variant: "default" or "error" for validation failures (visual only, no error text)
965
+ label: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Label content for the switch (Field wrapper is built-in) - can be a string or any React node. Optional when used standalone for visual-only purposes.
966
+ labelTooltip: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Tooltip content to display next to the label via an info icon
967
+ required: z.boolean().optional(), // Whether the switch is required. When explicitly false, shows "(optional)" text after the label.
968
+ controlFirst: z.boolean().optional(), // When true (default), switch appears before label. When false, label appears before switch.
969
+ size: z.enum(["sm", "base", "lg"]).optional(),
970
+ checked: z.boolean().optional(),
971
+ disabled: z.boolean().optional(),
972
+ transitioning: z.boolean().optional(),
973
+ name: z.string().optional(),
974
+ type: z.enum(["submit", "reset", "button"]).optional(),
975
+ value: z.unknown().optional(),
976
+ className: z.string().optional(),
977
+ id: z.string().optional(),
978
+ lang: z.string().optional(),
979
+ title: z.string().optional(),
980
+ onClick: z.unknown(), // Callback when switch is clicked
981
+ });
982
+
983
+ export const TablePropsSchema = z.object({
984
+ layout: z.enum(["auto", "fixed"]).optional(),
985
+ variant: z.enum(["default", "selected"]).optional(),
986
+ className: z.string().optional(), // Additional CSS classes
987
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Child elements
988
+ });
989
+
990
+ export const TabsPropsSchema = z.object({
991
+ tabs: z.array(z.unknown()).optional(), // Array of tab items to render.
992
+ value: z.string().optional(), // Controlled value. When set, component becomes controlled.
993
+ selectedValue: z.string().optional(), // Default selected value for uncontrolled mode. Ignored when `value` is set.
994
+ activateOnFocus: z.boolean().optional(), // When `true`, tabs are activated immediately upon receiving focus via arrow keys. When `false` (default), tabs receive focus but require Enter/Space to activate.
995
+ className: z.string().optional(), // Additional CSS classes for the root element.
996
+ listClassName: z.string().optional(), // Additional CSS classes for the tab list element.
997
+ indicatorClassName: z.string().optional(), // Additional CSS classes for the indicator element.
998
+ variant: z.enum(["segmented", "underline", "pill"]).optional(), // Tab style. - `"segmented"` — Pill-shaped indicator on a filled track - `"underline"` — Underline indicator below tab text - `"pill"` — Fully rounded tabs, only selected has background
999
+ onValueChange: z.unknown().optional(), // Callback when active tab changes
1000
+ });
1001
+
1002
+ export const TextPropsSchema = z.object({
1003
+ variant: z.enum(["heading1", "heading2", "heading3", "body", "secondary", "success", "error", "mono", "mono-secondary"]).optional(), // Text style variant. Determines color, font, and weight. - `"heading1"` — Large page title (30px, semibold) - `"heading2"` — Section title (24px, semibold) - `"heading3"` — Subsection title (18px, semibold) - `"body"` — Default body text - `"secondary"` — Muted text for secondary information - `"success"` — Success state text - `"error"` — Error state text - `"mono"` — Monospace text for code - `"mono-secondary"` — Muted monospace text
1004
+ size: z.enum(["xs", "sm", "base", "lg"]).optional(), // Text size (only applies to body/secondary/success/error variants). - `"xs"` — 12px - `"sm"` — 14px - `"base"` — 16px - `"lg"` — 18px
1005
+ bold: z.boolean().optional(), // Whether to use bold font weight (only applies to body variants).
1006
+ as: z.unknown().optional(), // The HTML element type to render as (e.g. `"span"`, `"p"`, `"h1"`). Auto-selected based on variant if omitted.
1007
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Text content.
1008
+ });
1009
+
1010
+ export const ThemeTogglePropsSchema = z.object({
1011
+ className: z.string().optional(), // Additional CSS classes merged via `cn()`.
1012
+ mode: z.enum(["light", "dark", "system"]).optional(), // Controlled mode. When provided the component acts as a controlled input — pair with `onModeChange`.
1013
+ cycle: z.array(z.unknown()).optional(), // Cycle order for clicking. Defaults to `["light", "dark", "system"]`. Remove `"system"` to limit to a simple light/dark toggle.
1014
+ tooltip: z.boolean().optional(), // Show a tooltip labelling the current action. Defaults to true.
1015
+ });
1016
+
1017
+ export const ToastyPropsSchema = z.object({
1018
+ variant: z.enum(["default", "error", "warning"]).optional(),
1019
+ className: z.string().optional(), // Additional CSS classes
1020
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Child elements
1021
+ });
1022
+
1023
+ export const TooltipPropsSchema = z.object({
1024
+ side: z.enum(["top", "bottom", "left", "right"]).optional(),
1025
+ className: z.string().optional(), // Additional CSS classes
1026
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Child elements
1027
+ content: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]), // Content to display in the tooltip
1028
+ });
1029
+
1030
+ // =============================================================================
1031
+ // Component Type Union
1032
+ // =============================================================================
1033
+
1034
+ /**
1035
+ * All valid component type names
1036
+ */
1037
+ export type KumoComponentType = "AiActions" | "AiAgentCard" | "AiApproval" | "AiCodeBlock" | "AiConversation" | "AiInfoBanner" | "AiLoader" | "AiMessage" | "AiMissionHeader" | "AiQuestion" | "AiReasoning" | "AiResponse" | "AiShimmer" | "AiStatusBadge" | "AiStreamingText" | "AiSubagent" | "AiSuggestions" | "AiTaskList" | "AiTimeline" | "AiToolCall" | "AiUsageBar" | "Badge" | "Banner" | "Breadcrumbs" | "Button" | "Checkbox" | "ClipboardText" | "Code" | "Collapsible" | "Combobox" | "CommandPalette" | "DataGrid" | "DatePicker" | "DateRangePicker" | "Dialog" | "DropdownMenu" | "Empty" | "Field" | "Filters" | "Grid" | "Input" | "InputArea" | "Label" | "LayerCard" | "Link" | "Loader" | "MenuBar" | "Meter" | "Pagination" | "Popover" | "PromptInput" | "Radio" | "Select" | "SensitiveInput" | "Sidebar" | "SignalFlareAILogo" | "Surface" | "Switch" | "Table" | "Tabs" | "Text" | "ThemeToggle" | "Toasty" | "Tooltip";
1038
+
1039
+ export const KumoComponentTypeSchema = z.enum([
1040
+ "AiActions",
1041
+ "AiAgentCard",
1042
+ "AiApproval",
1043
+ "AiCodeBlock",
1044
+ "AiConversation",
1045
+ "AiInfoBanner",
1046
+ "AiLoader",
1047
+ "AiMessage",
1048
+ "AiMissionHeader",
1049
+ "AiQuestion",
1050
+ "AiReasoning",
1051
+ "AiResponse",
1052
+ "AiShimmer",
1053
+ "AiStatusBadge",
1054
+ "AiStreamingText",
1055
+ "AiSubagent",
1056
+ "AiSuggestions",
1057
+ "AiTaskList",
1058
+ "AiTimeline",
1059
+ "AiToolCall",
1060
+ "AiUsageBar",
1061
+ "Badge",
1062
+ "Banner",
1063
+ "Breadcrumbs",
1064
+ "Button",
1065
+ "Checkbox",
1066
+ "ClipboardText",
1067
+ "Code",
1068
+ "Collapsible",
1069
+ "Combobox",
1070
+ "CommandPalette",
1071
+ "DataGrid",
1072
+ "DatePicker",
1073
+ "DateRangePicker",
1074
+ "Dialog",
1075
+ "DropdownMenu",
1076
+ "Empty",
1077
+ "Field",
1078
+ "Filters",
1079
+ "Grid",
1080
+ "Input",
1081
+ "InputArea",
1082
+ "Label",
1083
+ "LayerCard",
1084
+ "Link",
1085
+ "Loader",
1086
+ "MenuBar",
1087
+ "Meter",
1088
+ "Pagination",
1089
+ "Popover",
1090
+ "PromptInput",
1091
+ "Radio",
1092
+ "Select",
1093
+ "SensitiveInput",
1094
+ "Sidebar",
1095
+ "SignalFlareAILogo",
1096
+ "Surface",
1097
+ "Switch",
1098
+ "Table",
1099
+ "Tabs",
1100
+ "Text",
1101
+ "ThemeToggle",
1102
+ "Toasty",
1103
+ "Tooltip",
1104
+ ]);
1105
+
1106
+ /**
1107
+ * Map of component type to its props schema
1108
+ */
1109
+ export const ComponentPropsSchemas = {
1110
+ AiActions: AiActionsPropsSchema,
1111
+ AiAgentCard: AiAgentCardPropsSchema,
1112
+ AiApproval: AiApprovalPropsSchema,
1113
+ AiCodeBlock: AiCodeBlockPropsSchema,
1114
+ AiConversation: AiConversationPropsSchema,
1115
+ AiInfoBanner: AiInfoBannerPropsSchema,
1116
+ AiLoader: AiLoaderPropsSchema,
1117
+ AiMessage: AiMessagePropsSchema,
1118
+ AiMissionHeader: AiMissionHeaderPropsSchema,
1119
+ AiQuestion: AiQuestionPropsSchema,
1120
+ AiReasoning: AiReasoningPropsSchema,
1121
+ AiResponse: AiResponsePropsSchema,
1122
+ AiShimmer: AiShimmerPropsSchema,
1123
+ AiStatusBadge: AiStatusBadgePropsSchema,
1124
+ AiStreamingText: AiStreamingTextPropsSchema,
1125
+ AiSubagent: AiSubagentPropsSchema,
1126
+ AiSuggestions: AiSuggestionsPropsSchema,
1127
+ AiTaskList: AiTaskListPropsSchema,
1128
+ AiTimeline: AiTimelinePropsSchema,
1129
+ AiToolCall: AiToolCallPropsSchema,
1130
+ AiUsageBar: AiUsageBarPropsSchema,
1131
+ Badge: BadgePropsSchema,
1132
+ Banner: BannerPropsSchema,
1133
+ Breadcrumbs: BreadcrumbsPropsSchema,
1134
+ Button: ButtonPropsSchema,
1135
+ Checkbox: CheckboxPropsSchema,
1136
+ ClipboardText: ClipboardTextPropsSchema,
1137
+ Code: CodePropsSchema,
1138
+ Collapsible: CollapsiblePropsSchema,
1139
+ Combobox: ComboboxPropsSchema,
1140
+ CommandPalette: CommandPalettePropsSchema,
1141
+ DataGrid: DataGridPropsSchema,
1142
+ DatePicker: DatePickerPropsSchema,
1143
+ DateRangePicker: DateRangePickerPropsSchema,
1144
+ Dialog: DialogPropsSchema,
1145
+ DropdownMenu: DropdownMenuPropsSchema,
1146
+ Empty: EmptyPropsSchema,
1147
+ Field: FieldPropsSchema,
1148
+ Filters: FiltersPropsSchema,
1149
+ Grid: GridPropsSchema,
1150
+ Input: InputPropsSchema,
1151
+ InputArea: InputAreaPropsSchema,
1152
+ Label: LabelPropsSchema,
1153
+ LayerCard: LayerCardPropsSchema,
1154
+ Link: LinkPropsSchema,
1155
+ Loader: LoaderPropsSchema,
1156
+ MenuBar: MenuBarPropsSchema,
1157
+ Meter: MeterPropsSchema,
1158
+ Pagination: PaginationPropsSchema,
1159
+ Popover: PopoverPropsSchema,
1160
+ PromptInput: PromptInputPropsSchema,
1161
+ Radio: RadioPropsSchema,
1162
+ Select: SelectPropsSchema,
1163
+ SensitiveInput: SensitiveInputPropsSchema,
1164
+ Sidebar: SidebarPropsSchema,
1165
+ SignalFlareAILogo: SignalFlareAILogoPropsSchema,
1166
+ Surface: SurfacePropsSchema,
1167
+ Switch: SwitchPropsSchema,
1168
+ Table: TablePropsSchema,
1169
+ Tabs: TabsPropsSchema,
1170
+ Text: TextPropsSchema,
1171
+ ThemeToggle: ThemeTogglePropsSchema,
1172
+ Toasty: ToastyPropsSchema,
1173
+ Tooltip: TooltipPropsSchema,
1174
+ } as const;
1175
+
1176
+ // =============================================================================
1177
+ // UI Element & Tree Schemas
1178
+ // =============================================================================
1179
+
1180
+ /**
1181
+ * Base UI element structure
1182
+ */
1183
+ export const UIElementBaseSchema = z.object({
1184
+ key: z.string(),
1185
+ type: KumoComponentTypeSchema,
1186
+ props: z.record(z.string(), z.unknown()),
1187
+ children: z.array(z.string()).optional(),
1188
+ parentKey: z.string().nullable().optional(),
1189
+ visible: VisibilityConditionSchema.optional(),
1190
+ action: ActionSchema.optional(),
1191
+ });
1192
+
1193
+ export type UIElement = z.infer<typeof UIElementBaseSchema>;
1194
+
1195
+ /**
1196
+ * Flat UI tree structure (optimized for LLM generation)
1197
+ */
1198
+ export const UITreeSchema = z.object({
1199
+ root: z.string(),
1200
+ elements: z.record(z.string(), UIElementBaseSchema),
1201
+ });
1202
+
1203
+ export type UITree = z.infer<typeof UITreeSchema>;
1204
+
1205
+ // =============================================================================
1206
+ // Validation Helpers
1207
+ // =============================================================================
1208
+
1209
+ /**
1210
+ * Validate an element's props against its component schema
1211
+ */
1212
+ export function validateElementProps(element: UIElement): SafeParseResult<unknown> {
1213
+ const schema = ComponentPropsSchemas[element.type as keyof typeof ComponentPropsSchemas];
1214
+ if (!schema) {
1215
+ return { success: false, error: new z.ZodError([{ code: 'custom', message: `Unknown component type: ${element.type}`, path: ['type'] }]) };
1216
+ }
1217
+ return schema.safeParse(element.props);
1218
+ }
1219
+
1220
+ /**
1221
+ * Validate a complete UI tree
1222
+ */
1223
+ export function validateUITree(tree: unknown): SafeParseResult<UITree> {
1224
+ return UITreeSchema.safeParse(tree);
1225
+ }
1226
+
1227
+ /**
1228
+ * List of all component names (for catalog generation)
1229
+ */
1230
+ export const SF_COMPONENT_NAMES = ["AiActions", "AiAgentCard", "AiApproval", "AiCodeBlock", "AiConversation", "AiInfoBanner", "AiLoader", "AiMessage", "AiMissionHeader", "AiQuestion", "AiReasoning", "AiResponse", "AiShimmer", "AiStatusBadge", "AiStreamingText", "AiSubagent", "AiSuggestions", "AiTaskList", "AiTimeline", "AiToolCall", "AiUsageBar", "Badge", "Banner", "Breadcrumbs", "Button", "Checkbox", "ClipboardText", "Code", "Collapsible", "Combobox", "CommandPalette", "DataGrid", "DatePicker", "DateRangePicker", "Dialog", "DropdownMenu", "Empty", "Field", "Filters", "Grid", "Input", "InputArea", "Label", "LayerCard", "Link", "Loader", "MenuBar", "Meter", "Pagination", "Popover", "PromptInput", "Radio", "Select", "SensitiveInput", "Sidebar", "SignalFlareAILogo", "Surface", "Switch", "Table", "Tabs", "Text", "ThemeToggle", "Toasty", "Tooltip"] as const;