@signalflare-ai/ui 1.1.0 → 1.2.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 (295) hide show
  1. package/CHANGELOG.md +25 -4
  2. package/README.md +1 -1
  3. package/ai/component-registry.json +976 -182
  4. package/ai/component-registry.md +4183 -49
  5. package/ai/schemas.ts +99 -502
  6. package/dist/.build-complete +1 -1
  7. package/dist/ai/schemas.d.ts +76 -58
  8. package/dist/ai/schemas.d.ts.map +1 -1
  9. package/dist/{ai-actions-DSVeQn4e.js → ai-actions-BdUZI3Gk.js} +3 -3
  10. package/dist/{ai-actions-DSVeQn4e.js.map → ai-actions-BdUZI3Gk.js.map} +1 -1
  11. package/dist/{ai-agent-card-BXHwhWAU.js → ai-agent-card-BR2NIYhi.js} +1 -1
  12. package/dist/{ai-agent-card-BXHwhWAU.js.map → ai-agent-card-BR2NIYhi.js.map} +1 -1
  13. package/dist/{ai-approval-aa0qvjFN.js → ai-approval-Ba7mrKba.js} +2 -2
  14. package/dist/{ai-approval-aa0qvjFN.js.map → ai-approval-Ba7mrKba.js.map} +1 -1
  15. package/dist/{ai-code-block-BgtIxtZZ.js → ai-code-block-CZtoL73R.js} +3 -3
  16. package/dist/{ai-code-block-BgtIxtZZ.js.map → ai-code-block-CZtoL73R.js.map} +1 -1
  17. package/dist/ai-conversation-Cc7WlaBg.js +242 -0
  18. package/dist/ai-conversation-Cc7WlaBg.js.map +1 -0
  19. package/dist/{ai-info-banner-uFxHHwBA.js → ai-info-banner-C7EWPBj7.js} +7 -3
  20. package/dist/ai-info-banner-C7EWPBj7.js.map +1 -0
  21. package/dist/{ai-message-BjnFznXy.js → ai-message-Bp7L68U_.js} +27 -8
  22. package/dist/ai-message-Bp7L68U_.js.map +1 -0
  23. package/dist/{ai-mission-header-08__gULL.js → ai-mission-header-TiCJfTNt.js} +1 -1
  24. package/dist/{ai-mission-header-08__gULL.js.map → ai-mission-header-TiCJfTNt.js.map} +1 -1
  25. package/dist/{ai-part-group-DBtgTgAn.js → ai-part-group-DNb9I446.js} +3 -3
  26. package/dist/{ai-part-group-DBtgTgAn.js.map → ai-part-group-DNb9I446.js.map} +1 -1
  27. package/dist/{ai-prompt-input-CuluUzpf.js → ai-prompt-input-BVvov_KF.js} +29 -42
  28. package/dist/ai-prompt-input-BVvov_KF.js.map +1 -0
  29. package/dist/{ai-question-CHHoDJMg.js → ai-question-GPPMk7YM.js} +2 -2
  30. package/dist/{ai-question-CHHoDJMg.js.map → ai-question-GPPMk7YM.js.map} +1 -1
  31. package/dist/{ai-reasoning-CnL6ZSr5.js → ai-reasoning-_feFjk56.js} +2 -2
  32. package/dist/{ai-reasoning-CnL6ZSr5.js.map → ai-reasoning-_feFjk56.js.map} +1 -1
  33. package/dist/{ai-response-BEUg3xvd.js → ai-response-CvjV3WhV.js} +8 -3
  34. package/dist/ai-response-CvjV3WhV.js.map +1 -0
  35. package/dist/{ai-shimmer-By5_L05p.js → ai-shimmer-j6lKIrjj.js} +1 -1
  36. package/dist/{ai-shimmer-By5_L05p.js.map → ai-shimmer-j6lKIrjj.js.map} +1 -1
  37. package/dist/{ai-status-badge-BGYGWYF6.js → ai-status-badge-CSU_QOdz.js} +1 -1
  38. package/dist/{ai-status-badge-BGYGWYF6.js.map → ai-status-badge-CSU_QOdz.js.map} +1 -1
  39. package/dist/{ai-streaming-text-CMfoThV0.js → ai-streaming-text-IWW1BhvZ.js} +44 -16
  40. package/dist/ai-streaming-text-IWW1BhvZ.js.map +1 -0
  41. package/dist/{ai-subagent-DcPRqkAA.js → ai-subagent-JA4iIMW3.js} +13 -5
  42. package/dist/ai-subagent-JA4iIMW3.js.map +1 -0
  43. package/dist/{ai-suggestion-MgeCg5Ar.js → ai-suggestion-BdO6MBuH.js} +2 -2
  44. package/dist/{ai-suggestion-MgeCg5Ar.js.map → ai-suggestion-BdO6MBuH.js.map} +1 -1
  45. package/dist/{ai-task-list-Da9zIm00.js → ai-task-list-DYw4R1FA.js} +12 -5
  46. package/dist/ai-task-list-DYw4R1FA.js.map +1 -0
  47. package/dist/{ai-timeline-Cwu045IR.js → ai-timeline-C42tOUT8.js} +1 -1
  48. package/dist/{ai-timeline-Cwu045IR.js.map → ai-timeline-C42tOUT8.js.map} +1 -1
  49. package/dist/{ai-tool-Cn1O4xjP.js → ai-tool-03jOTwUI.js} +23 -10
  50. package/dist/ai-tool-03jOTwUI.js.map +1 -0
  51. package/dist/{ai-usage-bar-DjS12DMp.js → ai-usage-bar-BRf5LC_b.js} +1 -1
  52. package/dist/{ai-usage-bar-DjS12DMp.js.map → ai-usage-bar-BRf5LC_b.js.map} +1 -1
  53. package/dist/{badge-D_eaA6wv.js → badge-BheXjMc8.js} +2 -2
  54. package/dist/{badge-D_eaA6wv.js.map → badge-BheXjMc8.js.map} +1 -1
  55. package/dist/{banner-B_6oBrsu.js → banner-CcsjunJg.js} +7 -2
  56. package/dist/banner-CcsjunJg.js.map +1 -0
  57. package/dist/{breadcrumbs-BlmeYfgq.js → breadcrumbs-CouSyy3H.js} +3 -3
  58. package/dist/{breadcrumbs-BlmeYfgq.js.map → breadcrumbs-CouSyy3H.js.map} +1 -1
  59. package/dist/{button-De0267YU.js → button-CO6-qPax.js} +1 -1
  60. package/dist/{button-De0267YU.js.map → button-CO6-qPax.js.map} +1 -1
  61. package/dist/catalog.js +1 -1
  62. package/dist/{chart-BK3sVPnD.js → chart-Dg0qUeSc.js} +2 -2
  63. package/dist/{chart-BK3sVPnD.js.map → chart-Dg0qUeSc.js.map} +1 -1
  64. package/dist/{checkbox-DYhUmZNw.js → checkbox-D7p4QKsC.js} +2 -2
  65. package/dist/{checkbox-DYhUmZNw.js.map → checkbox-D7p4QKsC.js.map} +1 -1
  66. package/dist/{clipboard-text-ssybngLw.js → clipboard-text-kLaMogs3.js} +3 -3
  67. package/dist/{clipboard-text-ssybngLw.js.map → clipboard-text-kLaMogs3.js.map} +1 -1
  68. package/dist/{code-Cx-QSoOT.js → code-BN8InC0G.js} +2 -2
  69. package/dist/{code-Cx-QSoOT.js.map → code-BN8InC0G.js.map} +1 -1
  70. package/dist/{collapsible-DWsXeXmS.js → collapsible-D_ueZ0jz.js} +1 -1
  71. package/dist/{collapsible-DWsXeXmS.js.map → collapsible-D_ueZ0jz.js.map} +1 -1
  72. package/dist/{combobox-C0iW6a0r.js → combobox-B7TOK0U2.js} +3 -3
  73. package/dist/{combobox-C0iW6a0r.js.map → combobox-B7TOK0U2.js.map} +1 -1
  74. package/dist/{command-palette-DGzioeki.js → command-palette-CuNUyJca.js} +2 -2
  75. package/dist/{command-palette-DGzioeki.js.map → command-palette-CuNUyJca.js.map} +1 -1
  76. package/dist/components/ai-actions.js +1 -1
  77. package/dist/components/ai-agent-card.js +1 -1
  78. package/dist/components/ai-approval.js +1 -1
  79. package/dist/components/ai-code-block.js +1 -1
  80. package/dist/components/ai-conversation.js +2 -2
  81. package/dist/components/ai-info-banner.js +1 -1
  82. package/dist/components/ai-message.js +1 -1
  83. package/dist/components/ai-mission-header.js +1 -1
  84. package/dist/components/ai-part-group.js +1 -1
  85. package/dist/components/ai-prompt-input.js +1 -1
  86. package/dist/components/ai-question.js +1 -1
  87. package/dist/components/ai-reasoning.js +1 -1
  88. package/dist/components/ai-response.js +1 -1
  89. package/dist/components/ai-shimmer.js +1 -1
  90. package/dist/components/ai-status-badge.js +1 -1
  91. package/dist/components/ai-streaming-text.js +2 -2
  92. package/dist/components/ai-subagent.js +1 -1
  93. package/dist/components/ai-suggestion.js +1 -1
  94. package/dist/components/ai-task-list.js +1 -1
  95. package/dist/components/ai-timeline.js +1 -1
  96. package/dist/components/ai-tool.js +1 -1
  97. package/dist/components/ai-usage-bar.js +1 -1
  98. package/dist/components/badge.js +1 -1
  99. package/dist/components/banner.js +1 -1
  100. package/dist/components/breadcrumbs.js +1 -1
  101. package/dist/components/button.js +1 -1
  102. package/dist/components/chart.js +2 -2
  103. package/dist/components/checkbox.js +1 -1
  104. package/dist/components/clipboard-text.js +1 -1
  105. package/dist/components/code.js +1 -1
  106. package/dist/components/collapsible.js +1 -1
  107. package/dist/components/combobox.js +1 -1
  108. package/dist/components/command-palette.js +1 -1
  109. package/dist/components/data-grid.js +1 -1
  110. package/dist/components/date-picker.js +1 -1
  111. package/dist/components/date-range-picker.js +1 -1
  112. package/dist/components/dialog.js +1 -1
  113. package/dist/components/dropdown.js +1 -1
  114. package/dist/components/empty.js +1 -1
  115. package/dist/components/field.js +1 -1
  116. package/dist/components/filters.js +1 -1
  117. package/dist/components/flow.js +1 -1
  118. package/dist/components/grid.js +1 -1
  119. package/dist/components/input.js +2 -2
  120. package/dist/components/label.js +1 -1
  121. package/dist/components/layer-card.js +1 -1
  122. package/dist/components/loader.js +1 -1
  123. package/dist/components/menubar.js +1 -1
  124. package/dist/components/meter.js +1 -1
  125. package/dist/components/pagination.js +1 -1
  126. package/dist/components/popover.js +1 -1
  127. package/dist/components/radio.js +1 -1
  128. package/dist/components/select.js +1 -1
  129. package/dist/components/sensitive-input.js +1 -1
  130. package/dist/components/sidebar.js +1 -1
  131. package/dist/components/signalflare-ai-logo.js +1 -1
  132. package/dist/components/sparkline.js +1 -1
  133. package/dist/components/stat-card.js +1 -1
  134. package/dist/components/surface.js +1 -1
  135. package/dist/components/switch.js +1 -1
  136. package/dist/components/table.js +1 -1
  137. package/dist/components/tabs.js +1 -1
  138. package/dist/components/text-roll.js +1 -1
  139. package/dist/components/text.js +1 -1
  140. package/dist/components/theme-toggle.js +1 -1
  141. package/dist/components/toast.js +1 -1
  142. package/dist/components/tooltip.js +1 -1
  143. package/dist/components/use-agent-harness.js +1 -1
  144. package/dist/{data-grid-CG76N_hK.js → data-grid-DGHmU0w3.js} +8 -8
  145. package/dist/{data-grid-CG76N_hK.js.map → data-grid-DGHmU0w3.js.map} +1 -1
  146. package/dist/{date-picker-Dqg9L4xu.js → date-picker--ox89RBy.js} +1 -1
  147. package/dist/{date-picker-Dqg9L4xu.js.map → date-picker--ox89RBy.js.map} +1 -1
  148. package/dist/{date-range-picker-D75LLINc.js → date-range-picker-DVa7QBqE.js} +1 -1
  149. package/dist/{date-range-picker-D75LLINc.js.map → date-range-picker-DVa7QBqE.js.map} +1 -1
  150. package/dist/{dialog-CyHEQXEY.js → dialog-Bv1oSFOd.js} +2 -2
  151. package/dist/{dialog-CyHEQXEY.js.map → dialog-Bv1oSFOd.js.map} +1 -1
  152. package/dist/{dist-1-gcEL2L.js → dist-B6iWiWwp.js} +25 -25
  153. package/dist/{dist-1-gcEL2L.js.map → dist-B6iWiWwp.js.map} +1 -1
  154. package/dist/{dropdown-qnEYRFXZ.js → dropdown-B_nrGXjV.js} +2 -2
  155. package/dist/{dropdown-qnEYRFXZ.js.map → dropdown-B_nrGXjV.js.map} +1 -1
  156. package/dist/{echart-DURZEyai.js → echart-CdOUaT-r.js} +1 -1
  157. package/dist/{echart-DURZEyai.js.map → echart-CdOUaT-r.js.map} +1 -1
  158. package/dist/{empty-D2TypIId.js → empty-DZnN0zKX.js} +11 -6
  159. package/dist/empty-DZnN0zKX.js.map +1 -0
  160. package/dist/{field-Y_UK1_Cg.js → field-B_yVof52.js} +2 -2
  161. package/dist/{field-Y_UK1_Cg.js.map → field-B_yVof52.js.map} +1 -1
  162. package/dist/{filters-Bw_U6ZTx.js → filters-cpJCY21R.js} +7 -7
  163. package/dist/{filters-Bw_U6ZTx.js.map → filters-cpJCY21R.js.map} +1 -1
  164. package/dist/{flow-BRsYUCJa.js → flow-B4v198ot.js} +1 -1
  165. package/dist/{flow-BRsYUCJa.js.map → flow-B4v198ot.js.map} +1 -1
  166. package/dist/genui.js +1 -1
  167. package/dist/{grid-qUAN9hFx.js → grid-CEd64Lnh.js} +1 -1
  168. package/dist/{grid-qUAN9hFx.js.map → grid-CEd64Lnh.js.map} +1 -1
  169. package/dist/{highlight-to-react-ClEfL81q.js → highlight-to-react-D0Yav4jk.js} +1 -1
  170. package/dist/{highlight-to-react-ClEfL81q.js.map → highlight-to-react-D0Yav4jk.js.map} +1 -1
  171. package/dist/index.js +69 -69
  172. package/dist/{input-DXYUjGgD.js → input-B2bbijRh.js} +2 -2
  173. package/dist/{input-DXYUjGgD.js.map → input-B2bbijRh.js.map} +1 -1
  174. package/dist/{input-DddtBN-g.js → input-ClB_E4Lb.js} +4 -4
  175. package/dist/{input-DddtBN-g.js.map → input-ClB_E4Lb.js.map} +1 -1
  176. package/dist/{label-QtJxtJ4u.js → label-DUv_urO1.js} +2 -2
  177. package/dist/{label-QtJxtJ4u.js.map → label-DUv_urO1.js.map} +1 -1
  178. package/dist/{layer-card-BME0eljh.js → layer-card-BK7eYfwn.js} +1 -1
  179. package/dist/{layer-card-BME0eljh.js.map → layer-card-BK7eYfwn.js.map} +1 -1
  180. package/dist/layout-DJHMMap2.js +6103 -0
  181. package/dist/layout-DJHMMap2.js.map +1 -0
  182. package/dist/measured-text-BI3dTJmH.js +290 -0
  183. package/dist/measured-text-BI3dTJmH.js.map +1 -0
  184. package/dist/{menubar-C8NzAjfd.js → menubar-Cxf3xeAt.js} +2 -2
  185. package/dist/{menubar-C8NzAjfd.js.map → menubar-Cxf3xeAt.js.map} +1 -1
  186. package/dist/{meter-CpmTenEr.js → meter-BFFe9l5b.js} +1 -1
  187. package/dist/{meter-CpmTenEr.js.map → meter-BFFe9l5b.js.map} +1 -1
  188. package/dist/{pagination-BVqdlONY.js → pagination-yS372Tr4.js} +2 -2
  189. package/dist/{pagination-BVqdlONY.js.map → pagination-yS372Tr4.js.map} +1 -1
  190. package/dist/{popover-BRQZ2b6z.js → popover-SRoJaCZr.js} +1 -1
  191. package/dist/{popover-BRQZ2b6z.js.map → popover-SRoJaCZr.js.map} +1 -1
  192. package/dist/{radio-BNSwOt3B.js → radio-BcwhwYNB.js} +1 -1
  193. package/dist/{radio-BNSwOt3B.js.map → radio-BcwhwYNB.js.map} +1 -1
  194. package/dist/{select-1w2aebGQ.js → select-DMhdoHMa.js} +4 -4
  195. package/dist/{select-1w2aebGQ.js.map → select-DMhdoHMa.js.map} +1 -1
  196. package/dist/{sensitive-input-82Cez3vj.js → sensitive-input-CJUpIRal.js} +3 -3
  197. package/dist/{sensitive-input-82Cez3vj.js.map → sensitive-input-CJUpIRal.js.map} +1 -1
  198. package/dist/{sidebar-CAsCmSpM.js → sidebar-D4zrlYpn.js} +2 -2
  199. package/dist/{sidebar-CAsCmSpM.js.map → sidebar-D4zrlYpn.js.map} +1 -1
  200. package/dist/{signalflare-ai-logo-DDhxMJD6.js → signalflare-ai-logo-Bipogceq.js} +1 -1
  201. package/dist/{signalflare-ai-logo-DDhxMJD6.js.map → signalflare-ai-logo-Bipogceq.js.map} +1 -1
  202. package/dist/{skeleton-line-Do3UmGk9.js → skeleton-line-CH1-h6e2.js} +1 -1
  203. package/dist/{skeleton-line-Do3UmGk9.js.map → skeleton-line-CH1-h6e2.js.map} +1 -1
  204. package/dist/{sparkline-DdbeM4Ai.js → sparkline-DHmgj1d0.js} +2 -2
  205. package/dist/{sparkline-DdbeM4Ai.js.map → sparkline-DHmgj1d0.js.map} +1 -1
  206. package/dist/src/blocks/agent-harness/agent-harness.d.ts.map +1 -1
  207. package/dist/src/blocks/agent-harness/agent-harness.tsx +29 -5
  208. package/dist/src/components/ai-conversation/ai-conversation.d.ts +69 -37
  209. package/dist/src/components/ai-conversation/ai-conversation.d.ts.map +1 -1
  210. package/dist/src/components/ai-conversation/index.d.ts +2 -1
  211. package/dist/src/components/ai-conversation/index.d.ts.map +1 -1
  212. package/dist/src/components/ai-conversation/measurement-constants.d.ts +30 -0
  213. package/dist/src/components/ai-conversation/measurement-constants.d.ts.map +1 -0
  214. package/dist/src/components/ai-info-banner/ai-info-banner.d.ts.map +1 -1
  215. package/dist/src/components/ai-message/ai-message.d.ts +3 -0
  216. package/dist/src/components/ai-message/ai-message.d.ts.map +1 -1
  217. package/dist/src/components/ai-prompt-input/ai-prompt-input.d.ts +13 -3
  218. package/dist/src/components/ai-prompt-input/ai-prompt-input.d.ts.map +1 -1
  219. package/dist/src/components/ai-prompt-input/index.d.ts +1 -1
  220. package/dist/src/components/ai-prompt-input/index.d.ts.map +1 -1
  221. package/dist/src/components/ai-response/ai-response.d.ts +12 -1
  222. package/dist/src/components/ai-response/ai-response.d.ts.map +1 -1
  223. package/dist/src/components/ai-streaming-text/ai-streaming-text.d.ts +27 -0
  224. package/dist/src/components/ai-streaming-text/ai-streaming-text.d.ts.map +1 -1
  225. package/dist/src/components/ai-streaming-text/index.d.ts +1 -1
  226. package/dist/src/components/ai-streaming-text/index.d.ts.map +1 -1
  227. package/dist/src/components/ai-subagent/ai-subagent.d.ts.map +1 -1
  228. package/dist/src/components/ai-task-list/ai-task-list.d.ts.map +1 -1
  229. package/dist/src/components/ai-tool/ai-tool.d.ts.map +1 -1
  230. package/dist/src/components/banner/banner.d.ts.map +1 -1
  231. package/dist/src/components/empty/empty.d.ts.map +1 -1
  232. package/dist/src/components/stat-card/stat-card.d.ts +5 -0
  233. package/dist/src/components/stat-card/stat-card.d.ts.map +1 -1
  234. package/dist/src/components/text/text.d.ts +35 -1
  235. package/dist/src/components/text/text.d.ts.map +1 -1
  236. package/dist/src/components/tooltip/tooltip.d.ts.map +1 -1
  237. package/dist/src/index.d.ts +2 -2
  238. package/dist/src/index.d.ts.map +1 -1
  239. package/dist/src/utils/index.d.ts +2 -0
  240. package/dist/src/utils/index.d.ts.map +1 -1
  241. package/dist/src/utils/measured-text.d.ts +40 -0
  242. package/dist/src/utils/measured-text.d.ts.map +1 -0
  243. package/dist/src/utils/use-measured-text.d.ts +59 -0
  244. package/dist/src/utils/use-measured-text.d.ts.map +1 -0
  245. package/dist/{stat-card-CEZscNh8.js → stat-card-Ew-ofzEm.js} +28 -10
  246. package/dist/stat-card-Ew-ofzEm.js.map +1 -0
  247. package/dist/styles/sf-binding.css +1 -1
  248. package/dist/styles/sf-standalone.css +2 -2
  249. package/dist/styles/shadcn.css +1 -1
  250. package/dist/styles/theme-fedramp.css +12 -3
  251. package/dist/styles/theme-minimal.css +104 -26
  252. package/dist/styles/theme-sf.css +138 -39
  253. package/dist/styles/theme-vesper.css +91 -0
  254. package/dist/{surface-BduI7Ehl.js → surface-DGwRlC0o.js} +1 -1
  255. package/dist/{surface-BduI7Ehl.js.map → surface-DGwRlC0o.js.map} +1 -1
  256. package/dist/{switch-CzZBRBL7.js → switch-BxAMfHdt.js} +2 -2
  257. package/dist/{switch-CzZBRBL7.js.map → switch-BxAMfHdt.js.map} +1 -1
  258. package/dist/{table-Rv4JMy0B.js → table-BBeAtYVZ.js} +2 -2
  259. package/dist/{table-Rv4JMy0B.js.map → table-BBeAtYVZ.js.map} +1 -1
  260. package/dist/{tabs-1cHrYoel.js → tabs-CeHu7Scn.js} +1 -1
  261. package/dist/{tabs-1cHrYoel.js.map → tabs-CeHu7Scn.js.map} +1 -1
  262. package/dist/{text-KJmGkwnf.js → text-Cqryz7rk.js} +27 -5
  263. package/dist/text-Cqryz7rk.js.map +1 -0
  264. package/dist/{text-roll-BZ3I1umc.js → text-roll-Ch52hcQj.js} +1 -1
  265. package/dist/{text-roll-BZ3I1umc.js.map → text-roll-Ch52hcQj.js.map} +1 -1
  266. package/dist/{theme-toggle-Bhu681D7.js → theme-toggle-LDfIKEqx.js} +3 -3
  267. package/dist/{theme-toggle-Bhu681D7.js.map → theme-toggle-LDfIKEqx.js.map} +1 -1
  268. package/dist/{toast-Nw28a5Cx.js → toast-CaFQNYng.js} +2 -2
  269. package/dist/{toast-Nw28a5Cx.js.map → toast-CaFQNYng.js.map} +1 -1
  270. package/dist/{tooltip-Cb7QW-7H.js → tooltip-g9lFsvcT.js} +8 -2
  271. package/dist/tooltip-g9lFsvcT.js.map +1 -0
  272. package/dist/{use-agent-harness-BMyF8pTq.js → use-agent-harness-BTcNJdw4.js} +1 -1
  273. package/dist/{use-agent-harness-BMyF8pTq.js.map → use-agent-harness-BTcNJdw4.js.map} +1 -1
  274. package/dist/utils.js +2 -1
  275. package/package.json +2 -1
  276. package/scripts/css-build.ts +1 -1
  277. package/scripts/theme-generator/config.ts +27 -141
  278. package/scripts/theme-generator/generate-css.ts +0 -1
  279. package/scripts/theme-generator/index.ts +0 -1
  280. package/dist/ai-conversation-CArP7C8K.js +0 -184
  281. package/dist/ai-conversation-CArP7C8K.js.map +0 -1
  282. package/dist/ai-info-banner-uFxHHwBA.js.map +0 -1
  283. package/dist/ai-message-BjnFznXy.js.map +0 -1
  284. package/dist/ai-prompt-input-CuluUzpf.js.map +0 -1
  285. package/dist/ai-response-BEUg3xvd.js.map +0 -1
  286. package/dist/ai-streaming-text-CMfoThV0.js.map +0 -1
  287. package/dist/ai-subagent-DcPRqkAA.js.map +0 -1
  288. package/dist/ai-task-list-Da9zIm00.js.map +0 -1
  289. package/dist/ai-tool-Cn1O4xjP.js.map +0 -1
  290. package/dist/banner-B_6oBrsu.js.map +0 -1
  291. package/dist/empty-D2TypIId.js.map +0 -1
  292. package/dist/stat-card-CEZscNh8.js.map +0 -1
  293. package/dist/styles/theme-blue-tint.css +0 -98
  294. package/dist/text-KJmGkwnf.js.map +0 -1
  295. package/dist/tooltip-Cb7QW-7H.js.map +0 -1
package/ai/schemas.ts CHANGED
@@ -100,12 +100,8 @@ export const ActionSchema = z.object({
100
100
  name: z.string(),
101
101
  params: z.record(z.string(), DynamicValueSchema).optional(),
102
102
  confirm: ActionConfirmSchema.optional(),
103
- onSuccess: z
104
- .object({ set: z.record(z.string(), DynamicValueSchema) })
105
- .optional(),
106
- onError: z
107
- .object({ set: z.record(z.string(), DynamicValueSchema) })
108
- .optional(),
103
+ onSuccess: z.object({ set: z.record(z.string(), DynamicValueSchema) }).optional(),
104
+ onError: z.object({ set: z.record(z.string(), DynamicValueSchema) }).optional(),
109
105
  });
110
106
 
111
107
  export type Action = z.infer<typeof ActionSchema>;
@@ -115,9 +111,7 @@ export type Action = z.infer<typeof ActionSchema>;
115
111
  // =============================================================================
116
112
 
117
113
  export const AiActionsPropsSchema = z.object({
118
- children: z
119
- .union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
120
- .optional(),
114
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(),
121
115
  className: z.string().optional(),
122
116
  id: z.string().optional(),
123
117
  lang: z.string().optional(),
@@ -154,9 +148,7 @@ export const AiApprovalPropsSchema = z.object({
154
148
  approveLabel: z.string().optional(), // Label for the approve button. Default: `"Approve"`.
155
149
  rejectLabel: z.string().optional(), // Label for the reject button. Default: `"Reject"`.
156
150
  showFeedback: z.boolean().optional(), // Show a text input for rejection feedback. Default: `false`.
157
- children: z
158
- .union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
159
- .optional(),
151
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(),
160
152
  className: z.string().optional(),
161
153
  id: z.string().optional(),
162
154
  lang: z.string().optional(),
@@ -166,9 +158,7 @@ export const AiCodeBlockPropsSchema = z.object({
166
158
  code: z.string(), // The raw code string to display and make copyable.
167
159
  language: z.string().optional(), // Language identifier for syntax highlighting (display only, no highlighting applied).
168
160
  showLineNumbers: z.boolean().optional(), // Show line numbers.
169
- children: z
170
- .union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
171
- .optional(),
161
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(),
172
162
  className: z.string().optional(),
173
163
  id: z.string().optional(),
174
164
  lang: z.string().optional(),
@@ -176,9 +166,7 @@ export const AiCodeBlockPropsSchema = z.object({
176
166
  });
177
167
 
178
168
  export const AiConversationPropsSchema = z.object({
179
- children: z
180
- .union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
181
- .optional(),
169
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(),
182
170
  className: z.string().optional(),
183
171
  id: z.string().optional(),
184
172
  lang: z.string().optional(),
@@ -188,9 +176,7 @@ export const AiConversationPropsSchema = z.object({
188
176
  export const AiInfoBannerPropsSchema = z.object({
189
177
  level: z.enum(["info", "error", "change"]).optional(), // Banner level controls icon and color treatment.
190
178
  icon: z.unknown().optional(), // Custom icon override.
191
- children: z
192
- .union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
193
- .optional(),
179
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(),
194
180
  className: z.string().optional(),
195
181
  id: z.string().optional(),
196
182
  lang: z.string().optional(),
@@ -199,9 +185,7 @@ export const AiInfoBannerPropsSchema = z.object({
199
185
 
200
186
  export const AiMessagePropsSchema = z.object({
201
187
  from: z.enum(["user", "assistant", "system"]), // Message sender role — controls layout and group class.
202
- children: z
203
- .union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
204
- .optional(),
188
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(),
205
189
  className: z.string().optional(),
206
190
  id: z.string().optional(),
207
191
  lang: z.string().optional(),
@@ -221,18 +205,14 @@ export const AiMissionHeaderPropsSchema = z.object({
221
205
  className: z.string().optional(),
222
206
  id: z.string().optional(),
223
207
  lang: z.string().optional(),
224
- children: z
225
- .union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
226
- .optional(),
208
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(),
227
209
  });
228
210
 
229
211
  export const AiPartGroupPropsSchema = z.object({
230
212
  groupKey: z.string(), // Stable identifier — usually the parent message id. Required so the group can persist its frozen snapshot across re-mounts (scroll-back into a virtualized list re-renders without restarting animations).
231
213
  complete: z.boolean().optional(), // Set to `true` once the parent stream has finished. Triggers the group to snapshot its current children and from then on render only the static collapsed summary — ephemeral children never re-mount.
232
214
  title: z.string().optional(), // Title shown in the collapsed summary line. Falls back to the first reasoning text snippet, then to a step count.
233
- children: z
234
- .union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
235
- .optional(),
215
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(),
236
216
  className: z.string().optional(),
237
217
  id: z.string().optional(),
238
218
  lang: z.string().optional(),
@@ -247,9 +227,7 @@ export const AiQuestionPropsSchema = z.object({
247
227
  allowCustom: z.boolean().optional(), // Allow freeform text input (custom answer). Default: `true`. When options are provided, this adds a text field below them.
248
228
  icon: z.unknown().optional(), // Custom icon for the question header.
249
229
  answeredWith: z.string().optional(), // The answer that was submitted (shown when `status="answered"`).
250
- children: z
251
- .union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
252
- .optional(),
230
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(),
253
231
  className: z.string().optional(),
254
232
  id: z.string().optional(),
255
233
  lang: z.string().optional(),
@@ -271,16 +249,12 @@ export const AiReasoningPropsSchema = z.object({
271
249
  id: z.string().optional(),
272
250
  lang: z.string().optional(),
273
251
  title: z.string().optional(),
274
- children: z
275
- .union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
276
- .optional(),
252
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(),
277
253
  });
278
254
 
279
255
  export const AiResponsePropsSchema = z.object({
280
256
  className: z.string().optional(), // Additional CSS classes
281
- children: z
282
- .union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
283
- .optional(), // Child elements
257
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Child elements
284
258
  });
285
259
 
286
260
  export const AiShimmerPropsSchema = z.object({
@@ -296,9 +270,7 @@ export const AiStatusBadgePropsSchema = z.object({
296
270
  label: z.string(), // Label text displayed in the badge.
297
271
  status: z.enum(["idle", "running", "success", "error"]).optional(), // Current status — determines the status icon on the right.
298
272
  info: z.string().optional(), // Additional info text (e.g. "2/3") shown after the label.
299
- children: z
300
- .union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
301
- .optional(),
273
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(),
302
274
  className: z.string().optional(),
303
275
  id: z.string().optional(),
304
276
  lang: z.string().optional(),
@@ -307,9 +279,7 @@ export const AiStatusBadgePropsSchema = z.object({
307
279
 
308
280
  export const AiStreamingTextPropsSchema = z.object({
309
281
  className: z.string().optional(), // Additional CSS classes
310
- children: z
311
- .union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
312
- .optional(), // Child elements
282
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Child elements
313
283
  });
314
284
 
315
285
  export const AiSubagentPropsSchema = z.object({
@@ -321,9 +291,7 @@ export const AiSubagentPropsSchema = z.object({
321
291
  icon: z.unknown().optional(), // Custom icon. Defaults to `RobotIcon`.
322
292
  defaultExpanded: z.boolean().optional(), // Whether the subagent content is expanded by default.
323
293
  open: z.boolean().optional(), // Controlled open state.
324
- children: z
325
- .union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
326
- .optional(),
294
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(),
327
295
  className: z.string().optional(),
328
296
  id: z.string().optional(),
329
297
  lang: z.string().optional(),
@@ -331,9 +299,7 @@ export const AiSubagentPropsSchema = z.object({
331
299
  });
332
300
 
333
301
  export const AiSuggestionsPropsSchema = z.object({
334
- children: z
335
- .union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
336
- .optional(),
302
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(),
337
303
  className: z.string().optional(),
338
304
  id: z.string().optional(),
339
305
  lang: z.string().optional(),
@@ -345,9 +311,7 @@ export const AiTaskListPropsSchema = z.object({
345
311
  title: z.string().optional(), // Optional title above the task list.
346
312
  icon: z.unknown().optional(), // Custom icon for the title area.
347
313
  showProgress: z.boolean().optional(), // Show a progress summary (e.g. "3 / 7 done"). Default: `true`.
348
- children: z
349
- .union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
350
- .optional(),
314
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(),
351
315
  className: z.string().optional(),
352
316
  id: z.string().optional(),
353
317
  lang: z.string().optional(),
@@ -359,9 +323,7 @@ export const AiTimelinePropsSchema = z.object({
359
323
  showNowMarker: z.boolean().optional(), // Whether to show a pulsing "now" marker at the live edge.
360
324
  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).
361
325
  density: z.enum(["comfortable", "compact"]).optional(), // Lane density variant.
362
- children: z
363
- .union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
364
- .optional(), // Children should be `AiTimelineLane` components.
326
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Children should be `AiTimelineLane` components.
365
327
  className: z.string().optional(),
366
328
  id: z.string().optional(),
367
329
  lang: z.string().optional(),
@@ -381,9 +343,7 @@ export const AiToolCallPropsSchema = z.object({
381
343
  id: z.string().optional(),
382
344
  lang: z.string().optional(),
383
345
  title: z.string().optional(),
384
- children: z
385
- .union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
386
- .optional(),
346
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(),
387
347
  });
388
348
 
389
349
  export const AiUsageBarPropsSchema = z.object({
@@ -393,9 +353,7 @@ export const AiUsageBarPropsSchema = z.object({
393
353
  cost: z.number().optional(), // Estimated cost in USD.
394
354
  modelId: z.string().optional(), // Model ID being used (shown as label).
395
355
  icon: z.unknown().optional(), // Custom icon. Defaults to `LightningIcon`.
396
- children: z
397
- .union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
398
- .optional(),
356
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(),
399
357
  className: z.string().optional(),
400
358
  id: z.string().optional(),
401
359
  lang: z.string().optional(),
@@ -403,73 +361,38 @@ export const AiUsageBarPropsSchema = z.object({
403
361
  });
404
362
 
405
363
  export const BadgePropsSchema = z.object({
406
- variant: z
407
- .enum([
408
- "primary",
409
- "secondary",
410
- "destructive",
411
- "outline",
412
- "beta",
413
- "success",
414
- "warning",
415
- "info",
416
- "ghost",
417
- ])
418
- .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
364
+ 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
419
365
  className: z.string().optional(), // Additional CSS classes merged via `cn()`.
420
- children: z
421
- .union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
422
- .optional(), // Content rendered inside the badge.
366
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Content rendered inside the badge.
423
367
  icon: z.unknown().optional(), // Icon component rendered alongside the text.
424
368
  iconPosition: z.enum(["left", "right"]).optional(), // Position of the icon relative to the text.
425
369
  loading: z.boolean().optional(), // Shows a loading spinner, replacing the icon slot.
426
370
  dot: z.enum(["green", "red", "yellow", "blue", "gray"]).optional(), // Renders a small colored status dot before the text.
427
- tooltip: z
428
- .union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
429
- .optional(), // Wraps the badge in a Tooltip with this content. Requires a TooltipProvider ancestor.
371
+ 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.
430
372
  href: z.string().optional(),
431
373
  });
432
374
 
433
375
  export const BannerPropsSchema = z.object({
434
- icon: z
435
- .union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
436
- .optional(), // Icon element rendered before the banner text (e.g. from `@phosphor-icons/react`).
376
+ 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`).
437
377
  text: z.string().optional(),
438
- children: z
439
- .union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
440
- .optional(), // Banner message content. Accepts strings or custom React elements.
378
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Banner message content. Accepts strings or custom React elements.
441
379
  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
442
380
  className: z.string().optional(), // Additional CSS classes merged via `cn()`.
443
381
  });
444
382
 
445
383
  export const BreadcrumbsPropsSchema = z.object({
446
384
  size: z.enum(["sm", "base"]).optional(), // Size of the breadcrumbs. - `"sm"` — Compact breadcrumbs for dense UIs - `"base"` — Default breadcrumbs size
447
- children: z
448
- .union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
449
- .optional(),
385
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(),
450
386
  className: z.string().optional(), // Additional CSS classes merged via `cn()`.
451
387
  });
452
388
 
453
389
  export const ButtonPropsSchema = z.object({
454
390
  shape: z.enum(["base", "square", "circle"]).optional(),
455
391
  size: z.enum(["xs", "sm", "base", "lg"]).optional(),
456
- variant: z
457
- .enum([
458
- "primary",
459
- "secondary",
460
- "ghost",
461
- "destructive",
462
- "secondary-destructive",
463
- "outline",
464
- ])
465
- .optional(),
466
- children: z
467
- .union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
468
- .optional(),
392
+ variant: z.enum(["primary", "secondary", "ghost", "destructive", "secondary-destructive", "outline"]).optional(),
393
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(),
469
394
  className: z.string().optional(),
470
- icon: z
471
- .union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
472
- .optional(), // Icon from `@phosphor-icons/react` or a React element. Rendered before children.
395
+ 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.
473
396
  loading: z.boolean().optional(), // Shows a loading spinner and disables interaction.
474
397
  id: z.string().optional(),
475
398
  lang: z.string().optional(),
@@ -482,12 +405,8 @@ export const ButtonPropsSchema = z.object({
482
405
 
483
406
  export const CheckboxPropsSchema = z.object({
484
407
  variant: z.enum(["default", "error"]).optional(), // Visual variant: "default" or "error" for validation failures (visual only, no error text)
485
- label: z
486
- .union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
487
- .optional(), // Label content for the checkbox (enables built-in Field wrapper) - can be a string or any React node
488
- labelTooltip: z
489
- .union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
490
- .optional(), // Tooltip content to display next to the label via an info icon
408
+ 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
409
+ 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
491
410
  controlFirst: z.boolean().optional(), // When true (default), checkbox appears before label. When false, label appears before checkbox.
492
411
  checked: z.boolean().optional(), // Whether the checkbox is checked (controlled)
493
412
  indeterminate: z.boolean().optional(), // Whether the checkbox is in indeterminate state
@@ -514,9 +433,7 @@ export const CodePropsSchema = z.object({
514
433
  });
515
434
 
516
435
  export const CollapsiblePropsSchema = z.object({
517
- children: z
518
- .union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
519
- .optional(),
436
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(),
520
437
  label: z.string(), // Text label displayed in the trigger button
521
438
  open: z.boolean().optional(), // Whether the collapsible content is visible
522
439
  className: z.string().optional(), // Additional CSS classes for the content panel
@@ -527,20 +444,12 @@ export const ComboboxPropsSchema = z.object({
527
444
  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
528
445
  items: z.array(z.unknown()), // Array of items to display in the dropdown
529
446
  value: z.array(z.unknown()).optional(), // Currently selected value(s)
530
- children: z
531
- .union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
532
- .optional(), // Combobox content (trigger, content, items)
447
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Combobox content (trigger, content, items)
533
448
  className: z.string().optional(), // Additional CSS classes
534
- label: z
535
- .union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
536
- .optional(), // Label content for the combobox (enables Field wrapper) - can be a string or any React node
449
+ 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
537
450
  required: z.boolean().optional(), // Whether the combobox is required
538
- labelTooltip: z
539
- .union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
540
- .optional(), // Tooltip content to display next to the label via an info icon
541
- description: z
542
- .union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
543
- .optional(), // Helper text displayed below the combobox
451
+ 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
452
+ description: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Helper text displayed below the combobox
544
453
  error: z.unknown().optional(), // Error message or validation error object
545
454
  onValueChange: z.unknown().optional(), // Callback when selection changes
546
455
  multiple: z.boolean().optional(), // Allow multiple selections
@@ -549,24 +458,18 @@ export const ComboboxPropsSchema = z.object({
549
458
 
550
459
  export const CommandPalettePropsSchema = z.object({
551
460
  open: z.boolean(), // Whether the dialog is open
552
- children: z
553
- .union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
554
- .optional(), // Child content - typically one or more Panel components
461
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Child content - typically one or more Panel components
555
462
  });
556
463
 
557
464
  export const DataGridPropsSchema = z.object({
558
465
  layout: z.enum(["auto", "fixed"]).optional(),
559
466
  className: z.string().optional(), // Additional CSS classes
560
- children: z
561
- .union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
562
- .optional(), // Child elements
467
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Child elements
563
468
  });
564
469
 
565
470
  export const DatePickerPropsSchema = z.object({
566
471
  className: z.string().optional(), // Additional CSS classes
567
- children: z
568
- .union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
569
- .optional(), // Child elements
472
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Child elements
570
473
  });
571
474
 
572
475
  export const DateRangePickerPropsSchema = z.object({
@@ -580,9 +483,7 @@ export const DateRangePickerPropsSchema = z.object({
580
483
 
581
484
  export const DialogPropsSchema = z.object({
582
485
  className: z.string().optional(), // Additional CSS classes merged via `cn()`.
583
- children: z
584
- .union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
585
- .optional(), // Dialog content (typically Title, Description, Close, and action buttons).
486
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Dialog content (typically Title, Description, Close, and action buttons).
586
487
  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
587
488
  });
588
489
 
@@ -592,43 +493,29 @@ export const DropdownMenuPropsSchema = z.object({
592
493
 
593
494
  export const EmptyPropsSchema = z.object({
594
495
  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
595
- icon: z
596
- .union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
597
- .optional(), // Decorative icon displayed above the title (e.g. from `@phosphor-icons/react`).
496
+ 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`).
598
497
  title: z.string(), // Primary heading text for the empty state.
599
498
  description: z.string().optional(), // Secondary description text displayed below the title.
600
499
  commandLine: z.string().optional(), // Shell command displayed in a copyable code block.
601
- contents: z
602
- .union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
603
- .optional(), // Additional content (buttons, links) rendered below the description.
500
+ contents: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Additional content (buttons, links) rendered below the description.
604
501
  className: z.string().optional(), // Additional CSS classes merged via `cn()`.
605
502
  });
606
503
 
607
504
  export const FieldPropsSchema = z.object({
608
505
  controlFirst: z.boolean().optional(), // When `true`, places the control before the label (for checkbox/switch layouts).
609
- children: z
610
- .union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
611
- .optional(), // The form control element(s) to wrap (Input, Select, Checkbox, etc.).
612
- label: z
613
- .union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
614
- .optional(), // The label content — can be a string or any React node.
506
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // The form control element(s) to wrap (Input, Select, Checkbox, etc.).
507
+ label: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // The label content — can be a string or any React node.
615
508
  required: z.boolean().optional(), // When explicitly `false`, shows gray "(optional)" text after the label. When `true` or `undefined`, no indicator is shown.
616
- labelTooltip: z
617
- .union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
618
- .optional(), // Tooltip content displayed next to the label via an info icon.
509
+ labelTooltip: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Tooltip content displayed next to the label via an info icon.
619
510
  error: z.unknown().optional(), // Validation error with a message and a browser `ValidityState` match key.
620
- description: z
621
- .union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
622
- .optional(), // Helper text displayed below the control (hidden when `error` is present).
511
+ description: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Helper text displayed below the control (hidden when `error` is present).
623
512
  });
624
513
 
625
514
  export const FiltersPropsSchema = z.object({
626
515
  filters: z.array(z.unknown()), // Active filters array
627
516
  fields: z.array(z.unknown()), // Available field configurations
628
517
  size: z.enum(["sm", "default", "lg"]).optional(), // Size variant for filter pills
629
- trigger: z
630
- .union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
631
- .optional(), // Custom trigger element (replaces default "Add Filter" button)
518
+ trigger: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Custom trigger element (replaces default "Add Filter" button)
632
519
  showSearchInput: z.boolean().optional(), // Whether to show a search input in the add filter menu
633
520
  allowMultiple: z.boolean().optional(), // Whether to allow multiple filters on the same field
634
521
  enableShortcut: z.boolean().optional(), // Whether to enable keyboard shortcut (Cmd/Ctrl + K) to open add filter
@@ -640,40 +527,20 @@ export const FiltersPropsSchema = z.object({
640
527
  });
641
528
 
642
529
  export const GridPropsSchema = z.object({
643
- children: z
644
- .union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
645
- .optional(), // Grid items to render.
530
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Grid items to render.
646
531
  className: z.string().optional(), // Additional CSS classes merged via `cn()`.
647
532
  id: z.string().optional(),
648
533
  lang: z.string().optional(),
649
534
  title: z.string().optional(),
650
535
  mobileDivider: z.boolean().optional(), // Show dividers between grid items on mobile (only works with `"4up"` variant).
651
536
  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
652
- variant: z
653
- .enum([
654
- "2up",
655
- "side-by-side",
656
- "2-1",
657
- "1-2",
658
- "1-3up",
659
- "3up",
660
- "4up",
661
- "6up",
662
- "1-2-4up",
663
- ])
664
- .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
537
+ 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
665
538
  });
666
539
 
667
540
  export const InputPropsSchema = z.object({
668
- label: z
669
- .union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
670
- .optional(), // Label content for the input (enables Field wrapper) - can be a string or any React node
671
- labelTooltip: z
672
- .union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
673
- .optional(), // Tooltip content to display next to the label via an info icon
674
- description: z
675
- .union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
676
- .optional(), // Helper text displayed below the input
541
+ 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
542
+ 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
543
+ description: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Helper text displayed below the input
677
544
  error: z.unknown().optional(), // Error message or validation error object
678
545
  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
679
546
  variant: z.enum(["default", "error"]).optional(), // Visual variant. - `"default"` — Standard input - `"error"` — Error state for validation failures
@@ -682,31 +549,23 @@ export const InputPropsSchema = z.object({
682
549
  export const InputAreaPropsSchema = z.object({});
683
550
 
684
551
  export const LabelPropsSchema = z.object({
685
- children: z
686
- .union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
687
- .optional(), // The label content — can be a string or any React node.
552
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // The label content — can be a string or any React node.
688
553
  showOptional: z.boolean().optional(), // When `true`, shows gray "(optional)" text after the label.
689
- tooltip: z
690
- .union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
691
- .optional(), // Tooltip content displayed next to the label via an info icon.
554
+ tooltip: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Tooltip content displayed next to the label via an info icon.
692
555
  className: z.string().optional(), // Additional CSS classes merged via `cn()`.
693
556
  htmlFor: z.string().optional(), // The id of the form element this label is associated with
694
557
  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.
695
558
  });
696
559
 
697
560
  export const LayerCardPropsSchema = z.object({
698
- children: z
699
- .union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
700
- .optional(),
561
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(),
701
562
  className: z.string().optional(), // Additional CSS classes merged via `cn()`.
702
563
  });
703
564
 
704
565
  export const LinkPropsSchema = z.object({
705
566
  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
706
567
  to: z.string().optional(),
707
- children: z
708
- .union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
709
- .optional(),
568
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(),
710
569
  className: z.string().optional(),
711
570
  id: z.string().optional(),
712
571
  lang: z.string().optional(),
@@ -718,22 +577,8 @@ export const LinkPropsSchema = z.object({
718
577
  ping: z.string().optional(),
719
578
  target: z.unknown().optional(),
720
579
  type: z.string().optional(),
721
- referrerPolicy: z
722
- .enum([
723
- "",
724
- "no-referrer",
725
- "no-referrer-when-downgrade",
726
- "origin",
727
- "origin-when-cross-origin",
728
- "same-origin",
729
- "strict-origin",
730
- "strict-origin-when-cross-origin",
731
- "unsafe-url",
732
- ])
733
- .optional(),
734
- render: z
735
- .union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
736
- .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.
580
+ 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(),
581
+ 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.
737
582
  });
738
583
 
739
584
  export const LoaderPropsSchema = z.object({
@@ -776,31 +621,24 @@ export const PromptInputPropsSchema = z.object({
776
621
  globalDrop: z.boolean().optional(), // When true, accept drops anywhere on document. Default false.
777
622
  maxFiles: z.number().optional(), // Maximum number of attached files.
778
623
  maxFileSize: z.number().optional(), // Maximum file size in bytes.
779
- backLayer: z
780
- .union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
781
- .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.
782
- backLayerTitle: z.string().optional(), // Title shown in the back layer header row. Defaults to `"Context"`.
624
+ 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.
625
+ backLayerTitle: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Header content shown in the back layer header row. Strings render as plain text; pass JSX to compose with icons/spinners/badges. Defaults to `"Context"`.
626
+ backLayerStatus: z.enum(["idle", "running", "error"]).optional(), // Optional status indicator rendered next to the title. `"running"` shows a small spinner; `"error"` shows an inline error icon. Use this instead of composing JSX into `backLayerTitle` for the common case of an agent doing work.
783
627
  backLayerOpen: z.boolean().optional(), // Controls whether the back layer is visible. Pair with `onBackLayerOpenChange` for a controlled pattern.
784
628
  autoOpenBackLayerWhen: z.boolean().optional(), // Automatically opens the back layer when this condition is true. Useful for showing pending approvals/questions without manual toggle.
785
629
  className: z.string().optional(),
786
630
  id: z.string().optional(),
787
631
  lang: z.string().optional(),
788
632
  title: z.string().optional(),
789
- children: z
790
- .union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
791
- .optional(),
633
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(),
792
634
  });
793
635
 
794
636
  export const RadioPropsSchema = z.object({
795
637
  legend: z.string(), // Legend text for the group (required for accessibility)
796
- children: z
797
- .union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
798
- .optional(), // Child Radio.Item components
638
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Child Radio.Item components
799
639
  orientation: z.enum(["vertical", "horizontal"]).optional(), // Layout direction of the radio items
800
640
  error: z.string().optional(), // Error message for the group
801
- description: z
802
- .union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
803
- .optional(), // Helper text for the group
641
+ description: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Helper text for the group
804
642
  value: z.string().optional(), // Value of the radio that should be selected (controlled)
805
643
  disabled: z.boolean().optional(), // Whether all radios in the group are disabled
806
644
  controlPosition: z.enum(["start", "end"]).optional(), // Position of radio control relative to label: "start" (default) puts radio before label, "end" puts label before radio
@@ -810,24 +648,16 @@ export const RadioPropsSchema = z.object({
810
648
 
811
649
  export const SelectPropsSchema = z.object({
812
650
  className: z.string().optional(), // Additional CSS classes merged via `cn()`.
813
- label: z
814
- .union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
815
- .optional(), // Label content for the select (enables Field wrapper) — can be a string or any React node.
651
+ 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.
816
652
  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.
817
653
  placeholder: z.string().optional(), // Placeholder text shown when no value is selected.
818
654
  loading: z.boolean().optional(), // When `true`, shows a skeleton loader in place of the selected value.
819
655
  disabled: z.boolean().optional(), // Whether the select is disabled.
820
656
  required: z.boolean().optional(), // Whether the select is required. When `false`, shows "(optional)" text.
821
- labelTooltip: z
822
- .union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
823
- .optional(), // Tooltip content displayed next to the label via an info icon.
657
+ labelTooltip: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Tooltip content displayed next to the label via an info icon.
824
658
  value: z.string().optional(), // Currently selected value (controlled mode).
825
- children: z
826
- .union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
827
- .optional(), // `Select.Option` elements to render in the dropdown.
828
- description: z
829
- .union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
830
- .optional(), // Helper text displayed below the select.
659
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // `Select.Option` elements to render in the dropdown.
660
+ description: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Helper text displayed below the select.
831
661
  error: z.unknown().optional(), // Error message string or validation error object with `match` key.
832
662
  onValueChange: z.unknown().optional(), // Callback when selection changes
833
663
  defaultValue: z.string().optional(), // Initial value for uncontrolled mode
@@ -849,21 +679,13 @@ export const SensitiveInputPropsSchema = z.object({
849
679
  id: z.string().optional(),
850
680
  lang: z.string().optional(),
851
681
  title: z.string().optional(),
852
- children: z
853
- .union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
854
- .optional(),
682
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(),
855
683
  value: z.string().optional(), // Controlled value
856
684
  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
857
685
  variant: z.enum(["default", "error"]).optional(), // Style variant of the input. - `"default"` — Default input appearance - `"error"` — Error state for validation failures
858
- label: z
859
- .union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
860
- .optional(), // Label content for the input (enables Field wrapper and sets masked state label) - can be a string or any React node
861
- labelTooltip: z
862
- .union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
863
- .optional(), // Tooltip content to display next to the label via an info icon
864
- description: z
865
- .union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
866
- .optional(), // Helper text displayed below the input
686
+ 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
687
+ 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
688
+ description: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Helper text displayed below the input
867
689
  error: z.unknown().optional(), // Error message or validation error object
868
690
  });
869
691
 
@@ -877,16 +699,12 @@ export const SidebarPropsSchema = z.object({
877
699
  defaultWidth: z.number().optional(), // Initial width in pixels when resizable.
878
700
  minWidth: z.number().optional(), // Minimum width in pixels when resizing.
879
701
  maxWidth: z.number().optional(), // Maximum width in pixels when resizing.
880
- children: z
881
- .union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
882
- .optional(), // Content — typically `<Sidebar>` + main content.
702
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Content — typically `<Sidebar>` + main content.
883
703
  className: z.string().optional(), // Additional CSS classes for the wrapper div.
884
704
  });
885
705
 
886
706
  export const SignalFlareAILogoPropsSchema = z.object({
887
- children: z
888
- .union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
889
- .optional(),
707
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(),
890
708
  className: z.string().optional(),
891
709
  height: z.unknown().optional(),
892
710
  id: z.string().optional(),
@@ -900,23 +718,7 @@ export const SignalFlareAILogoPropsSchema = z.object({
900
718
  accentHeight: z.unknown().optional(),
901
719
  accumulate: z.enum(["none", "sum"]).optional(),
902
720
  additive: z.enum(["replace", "sum"]).optional(),
903
- alignmentBaseline: z
904
- .enum([
905
- "auto",
906
- "baseline",
907
- "before-edge",
908
- "text-before-edge",
909
- "middle",
910
- "central",
911
- "after-edge",
912
- "text-after-edge",
913
- "ideographic",
914
- "alphabetic",
915
- "hanging",
916
- "mathematical",
917
- "inherit",
918
- ])
919
- .optional(),
721
+ alignmentBaseline: z.enum(["auto", "baseline", "before-edge", "text-before-edge", "middle", "central", "after-edge", "text-after-edge", "ideographic", "alphabetic", "hanging", "mathematical", "inherit"]).optional(),
920
722
  allowReorder: z.enum(["no", "yes"]).optional(),
921
723
  alphabetic: z.unknown().optional(),
922
724
  amplitude: z.unknown().optional(),
@@ -940,9 +742,7 @@ export const SignalFlareAILogoPropsSchema = z.object({
940
742
  clipPathUnits: z.unknown().optional(),
941
743
  clipRule: z.unknown().optional(),
942
744
  colorInterpolation: z.unknown().optional(),
943
- colorInterpolationFilters: z
944
- .enum(["auto", "sRGB", "linearRGB", "inherit"])
945
- .optional(),
745
+ colorInterpolationFilters: z.enum(["auto", "sRGB", "linearRGB", "inherit"]).optional(),
946
746
  colorProfile: z.unknown().optional(),
947
747
  colorRendering: z.unknown().optional(),
948
748
  contentScriptType: z.unknown().optional(),
@@ -957,23 +757,7 @@ export const SignalFlareAILogoPropsSchema = z.object({
957
757
  direction: z.unknown().optional(),
958
758
  display: z.unknown().optional(),
959
759
  divisor: z.unknown().optional(),
960
- dominantBaseline: z
961
- .enum([
962
- "auto",
963
- "use-script",
964
- "no-change",
965
- "reset-size",
966
- "ideographic",
967
- "alphabetic",
968
- "hanging",
969
- "mathematical",
970
- "central",
971
- "middle",
972
- "text-after-edge",
973
- "text-before-edge",
974
- "inherit",
975
- ])
976
- .optional(),
760
+ dominantBaseline: z.enum(["auto", "use-script", "no-change", "reset-size", "ideographic", "alphabetic", "hanging", "mathematical", "central", "middle", "text-after-edge", "text-before-edge", "inherit"]).optional(),
977
761
  dur: z.unknown().optional(),
978
762
  dx: z.unknown().optional(),
979
763
  dy: z.unknown().optional(),
@@ -1178,26 +962,16 @@ export const SignalFlareAILogoPropsSchema = z.object({
1178
962
 
1179
963
  export const SparklinePropsSchema = z.object({
1180
964
  className: z.string().optional(), // Additional CSS classes
1181
- children: z
1182
- .union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
1183
- .optional(), // Child elements
965
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Child elements
1184
966
  });
1185
967
 
1186
968
  export const StatCardPropsSchema = z.object({
1187
969
  size: z.enum(["sm", "base"]).optional(), // Size of the card. Defaults to `"base"`.
1188
- label: z
1189
- .union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
1190
- .optional(), // Short descriptive label (e.g. `"Active users"`).
1191
- value: z
1192
- .union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
1193
- .optional(), // Primary value to emphasise (pre-formatted).
1194
- hint: z
1195
- .union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
1196
- .optional(), // Optional secondary text displayed under the value.
970
+ label: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Short descriptive label (e.g. `"Active users"`).
971
+ value: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Primary value to emphasise (pre-formatted).
972
+ hint: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Optional secondary text displayed under the value.
1197
973
  delta: z.unknown().optional(), // Optional change indicator (arrow + number + label).
1198
- trend: z
1199
- .union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
1200
- .optional(), // Optional content slot rendered on the right-hand side — typically a `Sparkline` showing the metric's trend.
974
+ trend: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Optional content slot rendered on the right-hand side — typically a `Sparkline` showing the metric's trend.
1201
975
  loading: z.boolean().optional(), // When `true`, renders a skeleton placeholder in place of value + delta.
1202
976
  className: z.string().optional(), // Additional CSS classes merged via `cn()`.
1203
977
  });
@@ -1205,19 +979,13 @@ export const StatCardPropsSchema = z.object({
1205
979
  export const SurfacePropsSchema = z.object({
1206
980
  as: z.unknown().optional(), // The HTML element type to render as (e.g. `"div"`, `"section"`, `"article"`).
1207
981
  className: z.string().optional(), // Additional CSS classes merged via `cn()`.
1208
- children: z
1209
- .union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
1210
- .optional(), // Content rendered inside the surface.
982
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Content rendered inside the surface.
1211
983
  });
1212
984
 
1213
985
  export const SwitchPropsSchema = z.object({
1214
986
  variant: z.enum(["default", "error"]).optional(), // Visual variant: "default" or "error" for validation failures (visual only, no error text)
1215
- label: z
1216
- .union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
1217
- .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.
1218
- labelTooltip: z
1219
- .union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
1220
- .optional(), // Tooltip content to display next to the label via an info icon
987
+ 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.
988
+ 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
1221
989
  required: z.boolean().optional(), // Whether the switch is required. When explicitly false, shows "(optional)" text after the label.
1222
990
  controlFirst: z.boolean().optional(), // When true (default), switch appears before label. When false, label appears before switch.
1223
991
  size: z.enum(["sm", "base", "lg"]).optional(),
@@ -1238,9 +1006,7 @@ export const TablePropsSchema = z.object({
1238
1006
  layout: z.enum(["auto", "fixed"]).optional(),
1239
1007
  variant: z.enum(["default", "selected"]).optional(),
1240
1008
  className: z.string().optional(), // Additional CSS classes
1241
- children: z
1242
- .union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
1243
- .optional(), // Child elements
1009
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Child elements
1244
1010
  });
1245
1011
 
1246
1012
  export const TabsPropsSchema = z.object({
@@ -1256,25 +1022,13 @@ export const TabsPropsSchema = z.object({
1256
1022
  });
1257
1023
 
1258
1024
  export const TextPropsSchema = z.object({
1259
- variant: z
1260
- .enum([
1261
- "heading1",
1262
- "heading2",
1263
- "heading3",
1264
- "body",
1265
- "secondary",
1266
- "success",
1267
- "error",
1268
- "mono",
1269
- "mono-secondary",
1270
- ])
1271
- .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
1025
+ 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
1272
1026
  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
1273
1027
  bold: z.boolean().optional(), // Whether to use bold font weight (only applies to body variants).
1274
1028
  as: z.unknown().optional(), // The HTML element type to render as (e.g. `"span"`, `"p"`, `"h1"`). Auto-selected based on variant if omitted.
1275
- children: z
1276
- .union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
1277
- .optional(), // Text content.
1029
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Text content.
1030
+ wrap: z.unknown().optional(), // Text layout strategy using pretext-driven measurement. - `"natural"` — No measurement, normal browser wrapping (default for body). - `"balance"` — Even wrapping, smallest maxWidth without adding lines (default for headings). - `"shrink"` — Hug widest natural line (maxWidth = line width). Good for chat bubbles. - `"reserve"` — Reserve height based on line count. Good for streaming text.
1031
+ reserveLines: z.number().optional(), // For `wrap="reserve"`: reserve this many lines of height. If omitted, measures current content to determine line count.
1278
1032
  });
1279
1033
 
1280
1034
  export const TextRollPropsSchema = z.object({
@@ -1297,24 +1051,14 @@ export const ThemeTogglePropsSchema = z.object({
1297
1051
  export const ToastyPropsSchema = z.object({
1298
1052
  variant: z.enum(["default", "error", "warning"]).optional(),
1299
1053
  className: z.string().optional(), // Additional CSS classes
1300
- children: z
1301
- .union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
1302
- .optional(), // Child elements
1054
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Child elements
1303
1055
  });
1304
1056
 
1305
1057
  export const TooltipPropsSchema = z.object({
1306
1058
  side: z.enum(["top", "bottom", "left", "right"]).optional(),
1307
1059
  className: z.string().optional(), // Additional CSS classes
1308
- children: z
1309
- .union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
1310
- .optional(), // Child elements
1311
- content: z.union([
1312
- z.string(),
1313
- z.number(),
1314
- z.boolean(),
1315
- z.null(),
1316
- DynamicValueSchema,
1317
- ]), // Content to display in the tooltip
1060
+ children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Child elements
1061
+ content: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]), // Content to display in the tooltip
1318
1062
  });
1319
1063
 
1320
1064
  // =============================================================================
@@ -1324,74 +1068,7 @@ export const TooltipPropsSchema = z.object({
1324
1068
  /**
1325
1069
  * All valid component type names
1326
1070
  */
1327
- export type KumoComponentType =
1328
- | "AiActions"
1329
- | "AiAgentCard"
1330
- | "AiApproval"
1331
- | "AiCodeBlock"
1332
- | "AiConversation"
1333
- | "AiInfoBanner"
1334
- | "AiMessage"
1335
- | "AiMissionHeader"
1336
- | "AiPartGroup"
1337
- | "AiQuestion"
1338
- | "AiReasoning"
1339
- | "AiResponse"
1340
- | "AiShimmer"
1341
- | "AiStatusBadge"
1342
- | "AiStreamingText"
1343
- | "AiSubagent"
1344
- | "AiSuggestions"
1345
- | "AiTaskList"
1346
- | "AiTimeline"
1347
- | "AiToolCall"
1348
- | "AiUsageBar"
1349
- | "Badge"
1350
- | "Banner"
1351
- | "Breadcrumbs"
1352
- | "Button"
1353
- | "Checkbox"
1354
- | "ClipboardText"
1355
- | "Code"
1356
- | "Collapsible"
1357
- | "Combobox"
1358
- | "CommandPalette"
1359
- | "DataGrid"
1360
- | "DatePicker"
1361
- | "DateRangePicker"
1362
- | "Dialog"
1363
- | "DropdownMenu"
1364
- | "Empty"
1365
- | "Field"
1366
- | "Filters"
1367
- | "Grid"
1368
- | "Input"
1369
- | "InputArea"
1370
- | "Label"
1371
- | "LayerCard"
1372
- | "Link"
1373
- | "Loader"
1374
- | "MenuBar"
1375
- | "Meter"
1376
- | "Pagination"
1377
- | "Popover"
1378
- | "PromptInput"
1379
- | "Radio"
1380
- | "Select"
1381
- | "SensitiveInput"
1382
- | "Sidebar"
1383
- | "SignalFlareAILogo"
1384
- | "Sparkline"
1385
- | "StatCard"
1386
- | "Surface"
1387
- | "Switch"
1388
- | "Table"
1389
- | "Tabs"
1390
- | "Text"
1391
- | "TextRoll"
1392
- | "ThemeToggle"
1393
- | "Toasty"
1394
- | "Tooltip";
1071
+ export type KumoComponentType = "AiActions" | "AiAgentCard" | "AiApproval" | "AiCodeBlock" | "AiConversation" | "AiInfoBanner" | "AiMessage" | "AiMissionHeader" | "AiPartGroup" | "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" | "Sparkline" | "StatCard" | "Surface" | "Switch" | "Table" | "Tabs" | "Text" | "TextRoll" | "ThemeToggle" | "Toasty" | "Tooltip";
1395
1072
 
1396
1073
  export const KumoComponentTypeSchema = z.enum([
1397
1074
  "AiActions",
@@ -1572,22 +1249,10 @@ export type UITree = z.infer<typeof UITreeSchema>;
1572
1249
  /**
1573
1250
  * Validate an element's props against its component schema
1574
1251
  */
1575
- export function validateElementProps(
1576
- element: UIElement
1577
- ): SafeParseResult<unknown> {
1578
- const schema =
1579
- ComponentPropsSchemas[element.type as keyof typeof ComponentPropsSchemas];
1252
+ export function validateElementProps(element: UIElement): SafeParseResult<unknown> {
1253
+ const schema = ComponentPropsSchemas[element.type as keyof typeof ComponentPropsSchemas];
1580
1254
  if (!schema) {
1581
- return {
1582
- success: false,
1583
- error: new z.ZodError([
1584
- {
1585
- code: "custom",
1586
- message: `Unknown component type: ${element.type}`,
1587
- path: ["type"],
1588
- },
1589
- ]),
1590
- };
1255
+ return { success: false, error: new z.ZodError([{ code: 'custom', message: `Unknown component type: ${element.type}`, path: ['type'] }]) };
1591
1256
  }
1592
1257
  return schema.safeParse(element.props);
1593
1258
  }
@@ -1602,72 +1267,4 @@ export function validateUITree(tree: unknown): SafeParseResult<UITree> {
1602
1267
  /**
1603
1268
  * List of all component names (for catalog generation)
1604
1269
  */
1605
- export const SF_COMPONENT_NAMES = [
1606
- "AiActions",
1607
- "AiAgentCard",
1608
- "AiApproval",
1609
- "AiCodeBlock",
1610
- "AiConversation",
1611
- "AiInfoBanner",
1612
- "AiMessage",
1613
- "AiMissionHeader",
1614
- "AiPartGroup",
1615
- "AiQuestion",
1616
- "AiReasoning",
1617
- "AiResponse",
1618
- "AiShimmer",
1619
- "AiStatusBadge",
1620
- "AiStreamingText",
1621
- "AiSubagent",
1622
- "AiSuggestions",
1623
- "AiTaskList",
1624
- "AiTimeline",
1625
- "AiToolCall",
1626
- "AiUsageBar",
1627
- "Badge",
1628
- "Banner",
1629
- "Breadcrumbs",
1630
- "Button",
1631
- "Checkbox",
1632
- "ClipboardText",
1633
- "Code",
1634
- "Collapsible",
1635
- "Combobox",
1636
- "CommandPalette",
1637
- "DataGrid",
1638
- "DatePicker",
1639
- "DateRangePicker",
1640
- "Dialog",
1641
- "DropdownMenu",
1642
- "Empty",
1643
- "Field",
1644
- "Filters",
1645
- "Grid",
1646
- "Input",
1647
- "InputArea",
1648
- "Label",
1649
- "LayerCard",
1650
- "Link",
1651
- "Loader",
1652
- "MenuBar",
1653
- "Meter",
1654
- "Pagination",
1655
- "Popover",
1656
- "PromptInput",
1657
- "Radio",
1658
- "Select",
1659
- "SensitiveInput",
1660
- "Sidebar",
1661
- "SignalFlareAILogo",
1662
- "Sparkline",
1663
- "StatCard",
1664
- "Surface",
1665
- "Switch",
1666
- "Table",
1667
- "Tabs",
1668
- "Text",
1669
- "TextRoll",
1670
- "ThemeToggle",
1671
- "Toasty",
1672
- "Tooltip",
1673
- ] as const;
1270
+ export const SF_COMPONENT_NAMES = ["AiActions", "AiAgentCard", "AiApproval", "AiCodeBlock", "AiConversation", "AiInfoBanner", "AiMessage", "AiMissionHeader", "AiPartGroup", "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", "Sparkline", "StatCard", "Surface", "Switch", "Table", "Tabs", "Text", "TextRoll", "ThemeToggle", "Toasty", "Tooltip"] as const;