@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
@@ -0,0 +1,124 @@
1
+ /**
2
+ * Hash-based caching for component registry generation.
3
+ *
4
+ * The cache stores pre-computed component metadata indexed by content hashes.
5
+ * This allows incremental builds - only components that changed are regenerated.
6
+ */
7
+
8
+ import { createHash } from "node:crypto";
9
+ import { writeFileSync, mkdirSync, readFileSync, existsSync } from "node:fs";
10
+
11
+ import type {
12
+ CacheFile,
13
+ CacheEntry,
14
+ ComponentSchema,
15
+ CLIFlags,
16
+ } from "./types.js";
17
+
18
+ // =============================================================================
19
+ // Cache version - INCREMENT THIS when you change:
20
+ // - ADDITIONAL_COMPONENT_PROPS (manual prop overrides)
21
+ // - COMPONENT_STYLING_METADATA (Figma styling data)
22
+ // - Parser logic, filtering rules, or output format
23
+ //
24
+ // The cache only hashes individual component files (button.tsx, button.stories.tsx).
25
+ // Changes to shared code in THIS file won't invalidate cache without a version bump.
26
+ // Or use: bun run codegen:registry --no-cache
27
+ // =============================================================================
28
+ export const CACHE_VERSION = 4;
29
+
30
+ /**
31
+ * Compute SHA-256 hash of file content.
32
+ */
33
+ export function hashFileContent(filePath: string): string {
34
+ try {
35
+ const content = readFileSync(filePath, "utf-8");
36
+ return createHash("sha256").update(content).digest("hex");
37
+ } catch {
38
+ return "";
39
+ }
40
+ }
41
+
42
+ /**
43
+ * Load the cache file from disk.
44
+ * Returns an empty cache if the file doesn't exist or version mismatches.
45
+ */
46
+ export function loadCache(cachePath: string): CacheFile {
47
+ try {
48
+ if (!existsSync(cachePath)) {
49
+ return { version: CACHE_VERSION, entries: {} };
50
+ }
51
+ const cacheData = JSON.parse(readFileSync(cachePath, "utf-8"));
52
+ // Invalidate cache if version mismatch
53
+ if (cacheData.version !== CACHE_VERSION) {
54
+ console.log("Cache version mismatch, invalidating...");
55
+ return { version: CACHE_VERSION, entries: {} };
56
+ }
57
+ return cacheData;
58
+ } catch {
59
+ return { version: CACHE_VERSION, entries: {} };
60
+ }
61
+ }
62
+
63
+ /**
64
+ * Save the cache file to disk.
65
+ */
66
+ export function saveCache(
67
+ cache: CacheFile,
68
+ cachePath: string,
69
+ cacheDir: string
70
+ ): void {
71
+ mkdirSync(cacheDir, { recursive: true });
72
+ writeFileSync(cachePath, JSON.stringify(cache, null, 2));
73
+ }
74
+
75
+ /**
76
+ * Check if a component can be loaded from cache.
77
+ * Returns the cached metadata if valid, null otherwise.
78
+ */
79
+ export function getCachedComponent(
80
+ componentName: string,
81
+ sourceHash: string,
82
+ storyHash: string,
83
+ cache: CacheFile,
84
+ cliFlags: CLIFlags
85
+ ): ComponentSchema | null {
86
+ if (cliFlags.noCache) {
87
+ return null;
88
+ }
89
+
90
+ const entry = cache.entries[componentName];
91
+ if (!entry) {
92
+ return null;
93
+ }
94
+
95
+ // Check if hashes match
96
+ if (
97
+ entry.sourceHash === sourceHash &&
98
+ entry.storyHash === storyHash &&
99
+ entry.cacheVersion === CACHE_VERSION
100
+ ) {
101
+ return entry.metadata;
102
+ }
103
+
104
+ return null;
105
+ }
106
+
107
+ /**
108
+ * Create a cache entry for a component.
109
+ */
110
+ export function createCacheEntry(
111
+ componentName: string,
112
+ sourceHash: string,
113
+ storyHash: string,
114
+ metadata: ComponentSchema
115
+ ): CacheEntry {
116
+ return {
117
+ componentName,
118
+ sourceHash,
119
+ storyHash,
120
+ cacheVersion: CACHE_VERSION,
121
+ generatedAt: Date.now(),
122
+ metadata,
123
+ };
124
+ }
@@ -0,0 +1,464 @@
1
+ /**
2
+ * Component discovery for registry generation.
3
+ *
4
+ * Auto-discovers components from the filesystem and builds configurations
5
+ * by parsing index.ts exports and component files.
6
+ */
7
+
8
+ import { readFileSync, readdirSync, statSync, existsSync } from "node:fs";
9
+ import { join } from "node:path";
10
+
11
+ import type {
12
+ ComponentConfig,
13
+ ComponentType,
14
+ ComponentOverride,
15
+ DetectedExports,
16
+ } from "./types.js";
17
+ import { toPascalCase } from "./utils.js";
18
+ import {
19
+ extractVariantsFromFile,
20
+ extractStylingFromFile,
21
+ } from "./variant-parser.js";
22
+
23
+ // =============================================================================
24
+ // Category Configuration
25
+ // =============================================================================
26
+
27
+ /**
28
+ * Category mappings based on component type.
29
+ * Key is the directory name (kebab-case).
30
+ */
31
+ export const CATEGORY_MAP: Record<string, string> = {
32
+ // Action
33
+ button: "Action",
34
+ "clipboard-text": "Action",
35
+ // Display
36
+ badge: "Display",
37
+ breadcrumbs: "Display",
38
+ code: "Display",
39
+ collapsible: "Display",
40
+ empty: "Display",
41
+ "layer-card": "Display",
42
+ meter: "Display",
43
+ text: "Display",
44
+ // Feedback
45
+ banner: "Feedback",
46
+ loader: "Feedback",
47
+ toast: "Feedback",
48
+ // Input
49
+ checkbox: "Input",
50
+ combobox: "Input",
51
+ "date-range-picker": "Input",
52
+ field: "Input",
53
+ input: "Input",
54
+ radio: "Input",
55
+ select: "Input",
56
+ switch: "Input",
57
+ // Layout
58
+ grid: "Layout",
59
+ surface: "Layout",
60
+ // Navigation
61
+ "command-palette": "Navigation",
62
+ menubar: "Navigation",
63
+ pagination: "Navigation",
64
+ tabs: "Navigation",
65
+ // Overlay
66
+ dialog: "Overlay",
67
+ dropdown: "Overlay",
68
+ popover: "Overlay",
69
+ tooltip: "Overlay",
70
+ // Blocks
71
+ "page-header": "Layout",
72
+ "resource-list": "Layout",
73
+ };
74
+
75
+ /**
76
+ * Overrides for component metadata that can't be auto-detected.
77
+ * Key is the directory name (kebab-case).
78
+ * Note: Component names and props types are now auto-detected from index.ts exports.
79
+ */
80
+ export const COMPONENT_OVERRIDES: Record<string, ComponentOverride> = {};
81
+
82
+ // =============================================================================
83
+ // Export Detection
84
+ // =============================================================================
85
+
86
+ /**
87
+ * Parse index.ts to detect the main component name and props type.
88
+ * This eliminates the need for manual overrides for naming conventions.
89
+ *
90
+ * Detection rules:
91
+ * 1. Component name: First PascalCase named export (not a type)
92
+ * 2. Props type: First export matching *Props pattern
93
+ */
94
+ export function detectExportsFromIndex(dirPath: string): DetectedExports {
95
+ const indexPath = join(dirPath, "index.ts");
96
+ const result: DetectedExports = { componentName: null, propsType: null };
97
+
98
+ if (!existsSync(indexPath)) {
99
+ return result;
100
+ }
101
+
102
+ try {
103
+ const content = readFileSync(indexPath, "utf-8");
104
+
105
+ // Match named exports: export { Foo, Bar, type BazProps } from "./file"
106
+ // Also handles: export { Foo } from "./file"
107
+ const exportPattern = /export\s*\{([^}]+)\}/g;
108
+ let match: RegExpExecArray | null;
109
+
110
+ const namedExports: string[] = [];
111
+ const typeExports: string[] = [];
112
+
113
+ while ((match = exportPattern.exec(content)) !== null) {
114
+ const exportList = match[1];
115
+ // Split by comma and process each export
116
+ const items = exportList
117
+ .split(",")
118
+ .map((s) => s.trim())
119
+ .filter(Boolean);
120
+
121
+ for (const item of items) {
122
+ // Check if it's a type export: "type FooProps" or "type Foo as Bar"
123
+ const typeMatch = item.match(/^type\s+(\w+)(?:\s+as\s+(\w+))?/);
124
+ if (typeMatch) {
125
+ // Use aliased name if present, otherwise original name
126
+ typeExports.push(typeMatch[2] || typeMatch[1]);
127
+ } else {
128
+ // Regular named export, could have "as" alias: "Foo as Bar"
129
+ const nameMatch = item.match(/^(\w+)(?:\s+as\s+(\w+))?/);
130
+ if (nameMatch) {
131
+ // Use aliased name if present, otherwise original name
132
+ namedExports.push(nameMatch[2] || nameMatch[1]);
133
+ }
134
+ }
135
+ }
136
+ }
137
+
138
+ // Also match direct exports: export const Foo = ...
139
+ const directExportPattern = /export\s+(?:const|function)\s+(\w+)/g;
140
+ while ((match = directExportPattern.exec(content)) !== null) {
141
+ namedExports.push(match[1]);
142
+ }
143
+
144
+ // Find main component: first PascalCase export that's not a type/hook/constant
145
+ for (const name of namedExports) {
146
+ // Skip hooks (useXxx), constants (SCREAMING_CASE), and lowercase names
147
+ if (
148
+ name.startsWith("use") ||
149
+ name === name.toUpperCase() ||
150
+ name[0] !== name[0].toUpperCase()
151
+ ) {
152
+ continue;
153
+ }
154
+ // Skip variant functions (xxxVariants)
155
+ if (name.endsWith("Variants")) {
156
+ continue;
157
+ }
158
+ result.componentName = name;
159
+ break;
160
+ }
161
+
162
+ // Find props type: look for ComponentNameProps or any *Props export
163
+ if (result.componentName) {
164
+ // First try exact match: ComponentNameProps
165
+ const exactPropsType = `${result.componentName}Props`;
166
+ if (typeExports.includes(exactPropsType)) {
167
+ result.propsType = exactPropsType;
168
+ }
169
+ }
170
+
171
+ // If no exact match, look for any *Props type
172
+ if (!result.propsType) {
173
+ const propsType = typeExports.find((t) => t.endsWith("Props"));
174
+ if (propsType) {
175
+ result.propsType = propsType;
176
+ }
177
+ }
178
+
179
+ return result;
180
+ } catch {
181
+ return result;
182
+ }
183
+ }
184
+
185
+ /**
186
+ * Detect props type from the main component file by looking for interfaces/types.
187
+ * Checks both exported and non-exported types since many components use internal type aliases.
188
+ * Falls back to standard naming convention if not found in index.ts.
189
+ */
190
+ export function detectPropsTypeFromFile(
191
+ filePath: string,
192
+ componentName: string
193
+ ): string | null {
194
+ try {
195
+ const content = readFileSync(filePath, "utf-8");
196
+
197
+ // Look for interface/type that ends with Props (both exported and non-exported)
198
+ // Pattern: [export] interface FooProps or [export] type FooProps
199
+ const exportedPropsPattern = /export\s+(?:interface|type)\s+(\w+Props)/g;
200
+ const nonExportedPropsPattern =
201
+ /(?:^|\n)\s*(?:interface|type)\s+(\w+Props)\s*[=<{]/g;
202
+
203
+ const exportedTypes: string[] = [];
204
+ const nonExportedTypes: string[] = [];
205
+ let match: RegExpExecArray | null;
206
+
207
+ while ((match = exportedPropsPattern.exec(content)) !== null) {
208
+ exportedTypes.push(match[1]);
209
+ }
210
+
211
+ while ((match = nonExportedPropsPattern.exec(content)) !== null) {
212
+ // Skip if it's actually exported (already captured above)
213
+ if (!exportedTypes.includes(match[1])) {
214
+ nonExportedTypes.push(match[1]);
215
+ }
216
+ }
217
+
218
+ // Prefer exact match: ComponentNameProps (check exported first, then non-exported)
219
+ const exactMatch = `${componentName}Props`;
220
+ if (exportedTypes.includes(exactMatch)) {
221
+ return exactMatch;
222
+ }
223
+ if (nonExportedTypes.includes(exactMatch)) {
224
+ return exactMatch;
225
+ }
226
+
227
+ // Otherwise return first Props type found (prefer exported)
228
+ return exportedTypes[0] || nonExportedTypes[0] || null;
229
+ } catch {
230
+ return null;
231
+ }
232
+ }
233
+
234
+ // =============================================================================
235
+ // Description Extraction
236
+ // =============================================================================
237
+
238
+ /**
239
+ * Extract description text from JSDoc content.
240
+ * Stops at first @tag (like @example, @see, @param, etc.)
241
+ */
242
+ function extractDescriptionFromJSDoc(jsdocContent: string): string | null {
243
+ const lines: string[] = [];
244
+
245
+ for (const rawLine of jsdocContent.split("\n")) {
246
+ const line = rawLine.replace(/^\s*\*\s?/, "").trim();
247
+
248
+ // Stop at any @tag
249
+ if (line.startsWith("@")) {
250
+ break;
251
+ }
252
+
253
+ // Skip empty lines at the start, but allow them in the middle
254
+ if (line.length > 0 || lines.length > 0) {
255
+ lines.push(line);
256
+ }
257
+ }
258
+
259
+ // Trim trailing empty lines and join
260
+ while (lines.length > 0 && lines[lines.length - 1] === "") {
261
+ lines.pop();
262
+ }
263
+
264
+ if (lines.length > 0) {
265
+ return lines.join(" ").trim();
266
+ }
267
+
268
+ return null;
269
+ }
270
+
271
+ /**
272
+ * Extract component description from JSDoc comment or generate a default one.
273
+ * Looks for JSDoc directly before the component function/const declaration.
274
+ *
275
+ * Handles multiple patterns:
276
+ * - export function ComponentName
277
+ * - export const ComponentName = forwardRef
278
+ * - export const ComponentName = Object.assign (compound components)
279
+ *
280
+ * Excludes:
281
+ * - @example blocks and code
282
+ * - @see and other JSDoc tags
283
+ */
284
+ export function extractDescription(
285
+ filePath: string,
286
+ componentName: string
287
+ ): string {
288
+ try {
289
+ const content = readFileSync(filePath, "utf-8");
290
+
291
+ // First, find the position of the component declaration
292
+ // Handles: export function X, export const X =, function X(
293
+ const componentDeclPattern = new RegExp(
294
+ `(?:export\\s+)?(?:function|const)\\s+${componentName}\\s*(?:=|\\()`
295
+ );
296
+ const componentMatch = content.match(componentDeclPattern);
297
+
298
+ if (!componentMatch?.index) {
299
+ return `${componentName} component`;
300
+ }
301
+
302
+ const componentPos = componentMatch.index;
303
+
304
+ // Find all JSDoc comments in the file
305
+ const jsdocPattern = /\/\*\*\s*\n([\s\S]*?)\*\//g;
306
+ let lastJSDoc: { content: string; endPos: number } | null = null;
307
+ let match: RegExpExecArray | null;
308
+
309
+ while ((match = jsdocPattern.exec(content)) !== null) {
310
+ const jsdocEndPos = match.index + match[0].length;
311
+
312
+ // Only consider JSDoc comments that appear before the component
313
+ if (jsdocEndPos > componentPos) {
314
+ break;
315
+ }
316
+
317
+ // Check if this JSDoc is immediately before the component
318
+ // (only whitespace/newlines between JSDoc end and component declaration)
319
+ const textBetween = content.slice(jsdocEndPos, componentPos);
320
+ if (/^\s*$/.test(textBetween)) {
321
+ lastJSDoc = { content: match[1], endPos: jsdocEndPos };
322
+ }
323
+ }
324
+
325
+ // Extract description from the closest JSDoc
326
+ if (lastJSDoc) {
327
+ const description = extractDescriptionFromJSDoc(lastJSDoc.content);
328
+ if (description) {
329
+ return description;
330
+ }
331
+ }
332
+
333
+ // Generate default description from component name
334
+ return `${componentName} component`;
335
+ } catch {
336
+ return `${componentName} component`;
337
+ }
338
+ }
339
+
340
+ // =============================================================================
341
+ // Directory Discovery
342
+ // =============================================================================
343
+
344
+ /**
345
+ * Discover all component directories in a given source directory.
346
+ * Returns array of directory names (kebab-case)
347
+ */
348
+ export function discoverDirs(sourceDir: string): string[] {
349
+ const entries = readdirSync(sourceDir);
350
+ return entries.filter((entry) => {
351
+ const fullPath = join(sourceDir, entry);
352
+ if (!statSync(fullPath).isDirectory()) return false;
353
+ // Check if main component file exists
354
+ const mainFile = join(fullPath, `${entry}.tsx`);
355
+ return existsSync(mainFile);
356
+ });
357
+ }
358
+
359
+ // =============================================================================
360
+ // Component Configuration Building
361
+ // =============================================================================
362
+
363
+ /**
364
+ * Auto-discover and build configurations from a source directory.
365
+ * Component/block names and props types are detected from index.ts exports.
366
+ */
367
+ export async function discoverFromDir(
368
+ sourceDir: string,
369
+ type: ComponentType
370
+ ): Promise<ComponentConfig[]> {
371
+ const dirs = discoverDirs(sourceDir);
372
+ const configs: ComponentConfig[] = [];
373
+
374
+ console.log(`Discovering ${type}s from ${sourceDir}...`);
375
+
376
+ for (const dirName of dirs) {
377
+ const dirPath = join(sourceDir, dirName);
378
+ const mainFile = join(dirPath, `${dirName}.tsx`);
379
+ const override = COMPONENT_OVERRIDES[dirName] || {};
380
+
381
+ // Auto-detect component name and props type from index.ts
382
+ const detected = detectExportsFromIndex(dirPath);
383
+
384
+ // Determine component name: detected from index.ts, or fallback to PascalCase of dir name
385
+ const baseName = toPascalCase(dirName);
386
+ const componentName = detected.componentName || baseName;
387
+
388
+ // Determine props type: detected from index.ts, then from main file, then convention
389
+ let propsType = detected.propsType;
390
+ if (!propsType) {
391
+ propsType = detectPropsTypeFromFile(mainFile, componentName);
392
+ }
393
+ // Final fallback: standard convention
394
+ if (!propsType) {
395
+ propsType = `${componentName}Props`;
396
+ }
397
+
398
+ // Extract variants from file (may be empty for components without variant props)
399
+ // Some components (like DatePicker) don't have SF_*_VARIANTS exports
400
+ const variantsData = extractVariantsFromFile(mainFile);
401
+
402
+ // Determine category
403
+ const category = override.category || CATEGORY_MAP[dirName] || "Other";
404
+
405
+ // Extract or generate description
406
+ const description =
407
+ override.description || extractDescription(mainFile, componentName);
408
+
409
+ // Extract styling metadata from SF_*_STYLING if present
410
+ const styling = extractStylingFromFile(mainFile);
411
+
412
+ console.log(
413
+ ` ${dirName} → ${componentName} (props: ${propsType}, type: ${type})`
414
+ );
415
+
416
+ configs.push({
417
+ name: componentName,
418
+ propsType,
419
+ sourceFile: `${dirName}/${dirName}.tsx`,
420
+ dirName,
421
+ sourceDir,
422
+ type,
423
+ description,
424
+ category,
425
+ variants: variantsData?.variants ?? {},
426
+ defaults: variantsData?.defaults ?? {},
427
+ ...(variantsData?.baseStyles && { baseStyles: variantsData.baseStyles }),
428
+ ...(styling && { styling }),
429
+ // Note: subComponents are added later by processComponent in index.ts
430
+ });
431
+ }
432
+
433
+ return configs;
434
+ }
435
+
436
+ /**
437
+ * Auto-discover and build component configurations from filesystem.
438
+ * Discovers both components and blocks.
439
+ */
440
+ export async function discoverComponents(
441
+ componentsDir: string
442
+ ): Promise<ComponentConfig[]> {
443
+ const componentConfigs = await discoverFromDir(componentsDir, "component");
444
+
445
+ console.log(`Discovered ${componentConfigs.length} components`);
446
+
447
+ // Sort by name for consistent output
448
+ return componentConfigs.sort((a, b) => a.name.localeCompare(b.name));
449
+ }
450
+
451
+ /**
452
+ * Auto-discover and build block configurations from filesystem.
453
+ * Blocks are composite components installed via CLI.
454
+ */
455
+ export async function discoverBlocks(
456
+ blocksDir: string
457
+ ): Promise<ComponentConfig[]> {
458
+ const blockConfigs = await discoverFromDir(blocksDir, "block");
459
+
460
+ console.log(`Discovered ${blockConfigs.length} blocks`);
461
+
462
+ // Sort by name for consistent output
463
+ return blockConfigs.sort((a, b) => a.name.localeCompare(b.name));
464
+ }