@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,682 @@
1
+ "use client";
2
+ import { t as cn } from "./cn-YROP2_ox.js";
3
+ import { t as Button } from "./button-De0267YU.js";
4
+ import { t as Checkbox } from "./checkbox-CPX7lBaU.js";
5
+ import { t as Input } from "./input-BxQAnXki.js";
6
+ import { t as InputGroup } from "./input-Cn25I4o5.js";
7
+ import { t as DropdownMenu } from "./dropdown-J5T4pHaR.js";
8
+ import { t as Popover } from "./popover-BRQZ2b6z.js";
9
+ import { useCallback, useEffect, useMemo, useState } from "react";
10
+ import { jsx, jsxs } from "react/jsx-runtime";
11
+ import { CaretDown, Check, MagnifyingGlass, Plus, X } from "@phosphor-icons/react";
12
+ //#region src/components/filters/helpers.ts
13
+ /** Default operators for text fields */
14
+ var DEFAULT_TEXT_OPERATORS = [
15
+ {
16
+ value: "is",
17
+ label: "is"
18
+ },
19
+ {
20
+ value: "is_not",
21
+ label: "is not"
22
+ },
23
+ {
24
+ value: "contains",
25
+ label: "contains"
26
+ },
27
+ {
28
+ value: "does_not_contain",
29
+ label: "does not contain"
30
+ },
31
+ {
32
+ value: "starts_with",
33
+ label: "starts with"
34
+ },
35
+ {
36
+ value: "ends_with",
37
+ label: "ends with"
38
+ },
39
+ {
40
+ value: "is_empty",
41
+ label: "is empty"
42
+ },
43
+ {
44
+ value: "is_not_empty",
45
+ label: "is not empty"
46
+ }
47
+ ];
48
+ /** Default operators for select fields */
49
+ var DEFAULT_SELECT_OPERATORS = [
50
+ {
51
+ value: "is",
52
+ label: "is"
53
+ },
54
+ {
55
+ value: "is_not",
56
+ label: "is not"
57
+ },
58
+ {
59
+ value: "is_empty",
60
+ label: "is empty"
61
+ },
62
+ {
63
+ value: "is_not_empty",
64
+ label: "is not empty"
65
+ }
66
+ ];
67
+ /** Default operators for multiselect fields */
68
+ var DEFAULT_MULTISELECT_OPERATORS = [
69
+ {
70
+ value: "is_any_of",
71
+ label: "is any of"
72
+ },
73
+ {
74
+ value: "is_none_of",
75
+ label: "is none of"
76
+ },
77
+ {
78
+ value: "is_all_of",
79
+ label: "is all of"
80
+ },
81
+ {
82
+ value: "is_empty",
83
+ label: "is empty"
84
+ },
85
+ {
86
+ value: "is_not_empty",
87
+ label: "is not empty"
88
+ }
89
+ ];
90
+ /** Map of field types to their default operators */
91
+ var DEFAULT_OPERATORS = {
92
+ text: DEFAULT_TEXT_OPERATORS,
93
+ select: DEFAULT_SELECT_OPERATORS,
94
+ multiselect: DEFAULT_MULTISELECT_OPERATORS
95
+ };
96
+ /** Get default operator for a field type */
97
+ function getDefaultOperatorForFieldType(type, operators) {
98
+ if (operators && operators.length > 0) return operators[0].value;
99
+ return DEFAULT_OPERATORS[type]?.[0]?.value ?? "is";
100
+ }
101
+ /**
102
+ * Create a new filter with a unique ID.
103
+ *
104
+ * @example
105
+ * ```tsx
106
+ * const filter = createFilter("status", "is", ["active"]);
107
+ * setFilters(prev => [...prev, filter]);
108
+ * ```
109
+ */
110
+ function createFilter(field, operator, values) {
111
+ return {
112
+ id: crypto.randomUUID(),
113
+ field,
114
+ operator,
115
+ values
116
+ };
117
+ }
118
+ /**
119
+ * Create multiple filters at once, each with a unique ID.
120
+ *
121
+ * @example
122
+ * ```tsx
123
+ * const filters = createFilterGroup([
124
+ * { field: "status", operator: "is", values: ["active"] },
125
+ * { field: "priority", operator: "is_any_of", values: ["high", "critical"] },
126
+ * ]);
127
+ * ```
128
+ */
129
+ function createFilterGroup(filters) {
130
+ return filters.map((f) => ({
131
+ ...f,
132
+ id: crypto.randomUUID()
133
+ }));
134
+ }
135
+ /** Default i18n configuration */
136
+ var DEFAULT_I18N = {
137
+ addFilter: "Add Filter",
138
+ clearAll: "Clear All",
139
+ searchPlaceholder: "Search fields...",
140
+ noResults: "No fields found",
141
+ operators: {
142
+ is: "is",
143
+ is_not: "is not",
144
+ contains: "contains",
145
+ does_not_contain: "does not contain",
146
+ starts_with: "starts with",
147
+ ends_with: "ends with",
148
+ is_empty: "is empty",
149
+ is_not_empty: "is not empty",
150
+ is_any_of: "is any of",
151
+ is_none_of: "is none of",
152
+ is_all_of: "is all of"
153
+ },
154
+ valueLabel: "Value",
155
+ noValueLabel: "None",
156
+ removeFilter: "Remove filter",
157
+ changeOperator: "Change operator",
158
+ changeValue: "Change value",
159
+ maxSelectionsReached: "Maximum selections reached",
160
+ validationError: "Invalid value"
161
+ };
162
+ /** Merge partial i18n config with defaults */
163
+ function mergeI18n(partial) {
164
+ return {
165
+ ...DEFAULT_I18N,
166
+ ...partial,
167
+ operators: {
168
+ ...DEFAULT_I18N.operators,
169
+ ...partial?.operators
170
+ }
171
+ };
172
+ }
173
+ /** Get operators for a field, falling back to defaults */
174
+ function getFieldOperators(field) {
175
+ if (field.operators && field.operators.length > 0) return field.operators;
176
+ return DEFAULT_OPERATORS[field.type] ?? DEFAULT_TEXT_OPERATORS;
177
+ }
178
+ /** Get field configuration by key */
179
+ function getFieldByKey(fields, key) {
180
+ return fields.find((f) => f.key === key);
181
+ }
182
+ /** Group fields by their group property */
183
+ function groupFields(fields) {
184
+ const groups = /* @__PURE__ */ new Map();
185
+ for (const field of fields) {
186
+ const group = field.group ?? "Fields";
187
+ if (!groups.has(group)) groups.set(group, []);
188
+ groups.get(group).push(field);
189
+ }
190
+ return groups;
191
+ }
192
+ /** Check if a filter value is valid for a field */
193
+ function validateFilterValue(field, values) {
194
+ if (field.maxSelections && values.length > field.maxSelections) return {
195
+ valid: false,
196
+ message: `Maximum ${field.maxSelections} selections allowed`
197
+ };
198
+ if (field.validation) {
199
+ const result = field.validation(values);
200
+ if (typeof result === "boolean") return {
201
+ valid: result,
202
+ message: result ? void 0 : "Invalid value"
203
+ };
204
+ return result;
205
+ }
206
+ return { valid: true };
207
+ }
208
+ /** Format a filter value for display in the filter pill */
209
+ function formatFilterValue(values, field) {
210
+ if (field.customValueRenderer) return "...";
211
+ if (values.length === 0) return "None";
212
+ if (values.length === 1) {
213
+ const value = values[0];
214
+ if (field.options) {
215
+ const option = field.options.find((o) => o.value === value);
216
+ if (option) return option.label;
217
+ }
218
+ return String(value);
219
+ }
220
+ if (field.options) {
221
+ const labels = values.map((v) => {
222
+ return field.options.find((o) => o.value === v)?.label ?? String(v);
223
+ });
224
+ return `${labels.slice(0, 2).join(", ")}${labels.length > 2 ? ` +${labels.length - 2}` : ""}`;
225
+ }
226
+ return `${values.length} selected`;
227
+ }
228
+ /** Get the label for a filter value from options */
229
+ function getValueLabel(value, options) {
230
+ if (!options) return String(value);
231
+ return options.find((o) => o.value === value)?.label ?? String(value);
232
+ }
233
+ //#endregion
234
+ //#region src/components/filters/filters.tsx
235
+ /** Filters size variant definitions */
236
+ var SF_FILTERS_VARIANTS = { size: {
237
+ sm: {
238
+ classes: "text-xs",
239
+ description: "Small filter items"
240
+ },
241
+ default: {
242
+ classes: "text-sm",
243
+ description: "Default filter items"
244
+ },
245
+ lg: {
246
+ classes: "text-base",
247
+ description: "Large filter items"
248
+ }
249
+ } };
250
+ /** Default variants for Filters */
251
+ var SF_FILTERS_DEFAULT_VARIANTS = { size: "default" };
252
+ function FilterValueEditor({ field, values, onChange, onClose, i18n }) {
253
+ const [searchQuery, setSearchQuery] = useState("");
254
+ const [localValues, setLocalValues] = useState(values);
255
+ const [validationError, setValidationError] = useState(null);
256
+ const options = useMemo(() => {
257
+ if (!field.options) return [];
258
+ if (!searchQuery) return field.options;
259
+ return field.options.filter((o) => o.label.toLowerCase().includes(searchQuery.toLowerCase()));
260
+ }, [field.options, searchQuery]);
261
+ const handleValueChange = useCallback((newValues) => {
262
+ setLocalValues(newValues);
263
+ const validation = validateFilterValue(field, newValues);
264
+ if (!validation.valid) setValidationError(validation.message ?? i18n.validationError);
265
+ else setValidationError(null);
266
+ }, [field, i18n.validationError]);
267
+ const handleApply = useCallback(() => {
268
+ const validation = validateFilterValue(field, localValues);
269
+ if (!validation.valid) {
270
+ setValidationError(validation.message ?? i18n.validationError);
271
+ return;
272
+ }
273
+ onChange(localValues);
274
+ onClose();
275
+ }, [
276
+ field,
277
+ localValues,
278
+ onChange,
279
+ onClose,
280
+ i18n.validationError
281
+ ]);
282
+ if (field.type === "text") return /* @__PURE__ */ jsxs("div", {
283
+ className: "flex flex-col gap-2 p-2",
284
+ children: [/* @__PURE__ */ jsx(Input, {
285
+ value: String(localValues[0] ?? ""),
286
+ onChange: (e) => handleValueChange([e.target.value]),
287
+ placeholder: field.placeholder,
288
+ className: "w-full"
289
+ }), /* @__PURE__ */ jsxs("div", {
290
+ className: "flex justify-end gap-2",
291
+ children: [/* @__PURE__ */ jsx(Button, {
292
+ variant: "secondary",
293
+ size: "sm",
294
+ onClick: onClose,
295
+ children: "Cancel"
296
+ }), /* @__PURE__ */ jsx(Button, {
297
+ size: "sm",
298
+ onClick: handleApply,
299
+ children: "Apply"
300
+ })]
301
+ })]
302
+ });
303
+ if (field.type === "select") return /* @__PURE__ */ jsxs("div", {
304
+ className: "flex max-h-72 flex-col gap-2",
305
+ children: [field.searchable && /* @__PURE__ */ jsx("div", {
306
+ className: "border-b border-sf-line pb-2",
307
+ children: /* @__PURE__ */ jsxs(InputGroup, {
308
+ className: "w-full",
309
+ children: [/* @__PURE__ */ jsx(InputGroup.Input, {
310
+ value: searchQuery,
311
+ onChange: (e) => setSearchQuery(e.target.value),
312
+ placeholder: i18n.searchPlaceholder,
313
+ className: "w-full"
314
+ }), /* @__PURE__ */ jsx(InputGroup.Button, { children: /* @__PURE__ */ jsx(MagnifyingGlass, { className: "size-4" }) })]
315
+ })
316
+ }), /* @__PURE__ */ jsxs("div", {
317
+ className: "flex flex-col gap-0.5 overflow-auto",
318
+ children: [options.map((option) => /* @__PURE__ */ jsxs("button", {
319
+ type: "button",
320
+ onClick: () => {
321
+ handleValueChange([option.value]);
322
+ handleApply();
323
+ },
324
+ className: cn("flex items-center justify-between rounded-md px-2 py-1.5 text-sm", "hover:bg-sf-tint", localValues[0] === option.value && "bg-sf-tint"),
325
+ children: [/* @__PURE__ */ jsxs("span", {
326
+ className: "flex items-center gap-2",
327
+ children: [option.icon, option.label]
328
+ }), localValues[0] === option.value && /* @__PURE__ */ jsx(Check, { className: "size-4 text-sf-brand" })]
329
+ }, String(option.value))), options.length === 0 && /* @__PURE__ */ jsx("div", {
330
+ className: "py-4 text-center text-sm text-sf-subtle",
331
+ children: i18n.noResults
332
+ })]
333
+ })]
334
+ });
335
+ if (field.type === "multiselect") {
336
+ const isMaxReached = field.maxSelections !== void 0 && localValues.length >= field.maxSelections;
337
+ return /* @__PURE__ */ jsxs("div", {
338
+ className: "flex max-h-72 w-56 flex-col gap-2",
339
+ children: [
340
+ field.searchable && /* @__PURE__ */ jsx("div", {
341
+ className: "border-b border-sf-line pb-2",
342
+ children: /* @__PURE__ */ jsxs(InputGroup, {
343
+ className: "w-full",
344
+ children: [/* @__PURE__ */ jsx(InputGroup.Input, {
345
+ value: searchQuery,
346
+ onChange: (e) => setSearchQuery(e.target.value),
347
+ placeholder: i18n.searchPlaceholder,
348
+ className: "w-full"
349
+ }), /* @__PURE__ */ jsx(InputGroup.Button, { children: /* @__PURE__ */ jsx(MagnifyingGlass, { className: "size-4" }) })]
350
+ })
351
+ }),
352
+ /* @__PURE__ */ jsxs("div", {
353
+ className: "flex flex-col gap-0.5 overflow-auto",
354
+ children: [options.map((option) => {
355
+ const isSelected = localValues.includes(option.value);
356
+ const isDisabled = isMaxReached && !isSelected;
357
+ return /* @__PURE__ */ jsxs("label", {
358
+ className: cn("flex cursor-pointer items-center gap-2 rounded-md px-2 py-1.5 text-sm", !isDisabled && "hover:bg-sf-tint", isDisabled && "cursor-not-allowed opacity-50"),
359
+ children: [/* @__PURE__ */ jsx(Checkbox, {
360
+ checked: isSelected,
361
+ disabled: isDisabled,
362
+ onCheckedChange: (checked) => {
363
+ if (checked) handleValueChange([...localValues, option.value]);
364
+ else handleValueChange(localValues.filter((v) => v !== option.value));
365
+ }
366
+ }), /* @__PURE__ */ jsxs("span", {
367
+ className: "flex items-center gap-2",
368
+ children: [option.icon, option.label]
369
+ })]
370
+ }, String(option.value));
371
+ }), options.length === 0 && /* @__PURE__ */ jsx("div", {
372
+ className: "py-4 text-center text-sm text-sf-subtle",
373
+ children: i18n.noResults
374
+ })]
375
+ }),
376
+ isMaxReached && /* @__PURE__ */ jsx("div", {
377
+ className: "text-xs text-sf-subtle",
378
+ children: i18n.maxSelectionsReached
379
+ }),
380
+ validationError && /* @__PURE__ */ jsx("div", {
381
+ className: "text-xs text-sf-danger",
382
+ children: validationError
383
+ }),
384
+ /* @__PURE__ */ jsxs("div", {
385
+ className: "flex justify-end gap-2 border-t border-sf-line pt-2",
386
+ children: [/* @__PURE__ */ jsx(Button, {
387
+ variant: "secondary",
388
+ size: "sm",
389
+ onClick: onClose,
390
+ children: "Cancel"
391
+ }), /* @__PURE__ */ jsx(Button, {
392
+ size: "sm",
393
+ onClick: handleApply,
394
+ children: "Apply"
395
+ })]
396
+ })
397
+ ]
398
+ });
399
+ }
400
+ if (field.type === "custom" && field.customRenderer) {
401
+ const props = {
402
+ values: localValues,
403
+ onChange: handleValueChange,
404
+ options: field.options,
405
+ placeholder: field.placeholder,
406
+ field,
407
+ operator: "is"
408
+ };
409
+ return /* @__PURE__ */ jsxs("div", {
410
+ className: "flex flex-col gap-2 p-2",
411
+ children: [field.customRenderer(props), /* @__PURE__ */ jsxs("div", {
412
+ className: "flex justify-end gap-2",
413
+ children: [/* @__PURE__ */ jsx(Button, {
414
+ variant: "secondary",
415
+ size: "sm",
416
+ onClick: onClose,
417
+ children: "Cancel"
418
+ }), /* @__PURE__ */ jsx(Button, {
419
+ size: "sm",
420
+ onClick: handleApply,
421
+ children: "Apply"
422
+ })]
423
+ })]
424
+ });
425
+ }
426
+ return null;
427
+ }
428
+ function FilterItem({ filter, field, size, i18n, onRemove, onOperatorChange, onValuesChange }) {
429
+ const [valuePopoverOpen, setValuePopoverOpen] = useState(false);
430
+ const operators = useMemo(() => getFieldOperators(field), [field]);
431
+ const sizeClasses = {
432
+ sm: "text-xs py-0.5 px-1.5",
433
+ default: "text-sm py-1 px-2",
434
+ lg: "text-base py-1.5 px-2.5"
435
+ };
436
+ const displayValue = useMemo(() => {
437
+ if (field.customValueRenderer) return field.customValueRenderer(filter.values, field.options);
438
+ return formatFilterValue(filter.values, field);
439
+ }, [field, filter.values]);
440
+ return /* @__PURE__ */ jsxs("div", {
441
+ className: cn("inline-flex items-center gap-0 rounded-md border border-sf-line bg-sf-tint", sizeClasses[size]),
442
+ children: [
443
+ /* @__PURE__ */ jsxs("span", {
444
+ className: "flex items-center gap-1 whitespace-nowrap font-medium text-sf-default",
445
+ children: [field.icon, field.label]
446
+ }),
447
+ /* @__PURE__ */ jsx("span", { className: "mx-1.5 h-3 w-px bg-sf-fill" }),
448
+ /* @__PURE__ */ jsxs(DropdownMenu, { children: [/* @__PURE__ */ jsxs(DropdownMenu.Trigger, {
449
+ className: "inline-flex cursor-pointer items-center gap-1 whitespace-nowrap text-sf-strong hover:text-sf-default",
450
+ children: [operators.find((o) => o.value === filter.operator)?.label ?? filter.operator, /* @__PURE__ */ jsx(CaretDown, { className: "size-3" })]
451
+ }), /* @__PURE__ */ jsx(DropdownMenu.Content, { children: operators.map((op) => /* @__PURE__ */ jsx(DropdownMenu.Item, {
452
+ selected: filter.operator === op.value,
453
+ onClick: () => onOperatorChange(op.value),
454
+ children: op.label
455
+ }, op.value)) })] }),
456
+ /* @__PURE__ */ jsx("span", { className: "mx-1.5 h-3 w-px bg-sf-fill" }),
457
+ /* @__PURE__ */ jsxs(Popover, {
458
+ open: valuePopoverOpen,
459
+ onOpenChange: setValuePopoverOpen,
460
+ children: [/* @__PURE__ */ jsx(Popover.Trigger, {
461
+ asChild: true,
462
+ className: "inline-flex cursor-pointer items-center gap-1 whitespace-nowrap text-sf-strong hover:text-sf-default",
463
+ children: /* @__PURE__ */ jsxs("button", {
464
+ type: "button",
465
+ "aria-label": i18n.changeValue,
466
+ children: [/* @__PURE__ */ jsx("span", {
467
+ className: "max-w-32 truncate",
468
+ children: filter.values.length === 0 ? i18n.noValueLabel : displayValue
469
+ }), /* @__PURE__ */ jsx(CaretDown, { className: "size-3" })]
470
+ })
471
+ }), /* @__PURE__ */ jsx(Popover.Content, {
472
+ className: "w-auto min-w-48",
473
+ children: /* @__PURE__ */ jsx(FilterValueEditor, {
474
+ field,
475
+ values: filter.values,
476
+ onChange: onValuesChange,
477
+ onClose: () => setValuePopoverOpen(false),
478
+ i18n
479
+ })
480
+ })]
481
+ }),
482
+ /* @__PURE__ */ jsx("button", {
483
+ type: "button",
484
+ onClick: onRemove,
485
+ "aria-label": i18n.removeFilter,
486
+ className: "ml-1.5 inline-flex items-center justify-center rounded p-0.5 text-sf-subtle hover:bg-sf-overlay hover:text-sf-default",
487
+ children: /* @__PURE__ */ jsx(X, { className: "size-3.5" })
488
+ })
489
+ ]
490
+ });
491
+ }
492
+ function FilterAddMenu({ fields, filters, size, trigger, showSearchInput = true, allowMultiple = true, i18n, onAddFilter }) {
493
+ const [open, setOpen] = useState(false);
494
+ const [searchQuery, setSearchQuery] = useState("");
495
+ const groupedFields = useMemo(() => groupFields(fields), [fields]);
496
+ const availableFields = useMemo(() => {
497
+ if (allowMultiple) return fields;
498
+ const usedKeys = new Set(filters.map((f) => f.field));
499
+ return fields.filter((f) => !usedKeys.has(f.key));
500
+ }, [
501
+ fields,
502
+ filters,
503
+ allowMultiple
504
+ ]);
505
+ const filteredGroups = useMemo(() => {
506
+ if (!searchQuery) return groupedFields;
507
+ const filtered = /* @__PURE__ */ new Map();
508
+ for (const [group, groupFields] of groupedFields) {
509
+ const matching = groupFields.filter((f) => f.label.toLowerCase().includes(searchQuery.toLowerCase()) || f.key.toLowerCase().includes(searchQuery.toLowerCase()));
510
+ if (matching.length > 0) filtered.set(group, matching);
511
+ }
512
+ return filtered;
513
+ }, [groupedFields, searchQuery]);
514
+ const handleFieldClick = useCallback((field) => {
515
+ const operator = field.defaultOperator ?? getDefaultOperatorForFieldType(field.type, field.operators);
516
+ onAddFilter(createFilter(field.key, operator, []));
517
+ setOpen(false);
518
+ setSearchQuery("");
519
+ }, [onAddFilter]);
520
+ return /* @__PURE__ */ jsxs(Popover, {
521
+ open,
522
+ onOpenChange: setOpen,
523
+ children: [/* @__PURE__ */ jsx(Popover.Trigger, {
524
+ asChild: true,
525
+ children: trigger ?? /* @__PURE__ */ jsxs(Button, {
526
+ variant: "secondary",
527
+ size: "sm",
528
+ className: cn("inline-flex items-center gap-1 whitespace-nowrap", {
529
+ sm: "text-xs h-7 px-2",
530
+ default: "text-sm h-8 px-2.5",
531
+ lg: "text-base h-9 px-3"
532
+ }[size]),
533
+ children: [/* @__PURE__ */ jsx(Plus, { className: "size-3.5" }), i18n.addFilter]
534
+ })
535
+ }), /* @__PURE__ */ jsxs(Popover.Content, {
536
+ className: "w-64 p-2",
537
+ children: [showSearchInput && /* @__PURE__ */ jsx("div", {
538
+ className: "mb-2",
539
+ children: /* @__PURE__ */ jsxs(InputGroup, {
540
+ className: "w-full",
541
+ children: [/* @__PURE__ */ jsx(InputGroup.Input, {
542
+ value: searchQuery,
543
+ onChange: (e) => setSearchQuery(e.target.value),
544
+ placeholder: i18n.searchPlaceholder,
545
+ className: "w-full"
546
+ }), /* @__PURE__ */ jsx(InputGroup.Button, { children: /* @__PURE__ */ jsx(MagnifyingGlass, { className: "size-4" }) })]
547
+ })
548
+ }), /* @__PURE__ */ jsx("div", {
549
+ className: "max-h-72 overflow-auto",
550
+ children: filteredGroups.size === 0 ? /* @__PURE__ */ jsx("div", {
551
+ className: "py-4 text-center text-sm text-sf-subtle",
552
+ children: i18n.noResults
553
+ }) : Array.from(filteredGroups.entries()).map(([group, groupFields], groupIndex) => /* @__PURE__ */ jsxs("div", { children: [
554
+ groupIndex > 0 && /* @__PURE__ */ jsx("div", { className: "my-2 h-px bg-sf-line" }),
555
+ /* @__PURE__ */ jsx("div", {
556
+ className: "mb-1 px-2 text-xs font-medium text-sf-subtle",
557
+ children: group
558
+ }),
559
+ /* @__PURE__ */ jsx("div", {
560
+ className: "flex flex-col gap-0.5",
561
+ children: groupFields.map((field) => /* @__PURE__ */ jsxs("button", {
562
+ type: "button",
563
+ onClick: () => handleFieldClick(field),
564
+ disabled: !availableFields.some((f) => f.key === field.key),
565
+ className: cn("flex items-center gap-2 rounded-md px-2 py-1.5 text-left text-sm", "hover:bg-sf-tint", "disabled:cursor-not-allowed disabled:opacity-50"),
566
+ children: [field.icon, field.label]
567
+ }, field.key))
568
+ })
569
+ ] }, group))
570
+ })]
571
+ })]
572
+ });
573
+ }
574
+ /**
575
+ * Filters component for building and managing active filter conditions.
576
+ *
577
+ * Supports multiple filter types (text, select, multiselect, custom), operators,
578
+ * and an "Add Filter" popover interface. Designed to work standalone or with
579
+ * DataGrid for advanced data filtering.
580
+ *
581
+ * @example
582
+ * ```tsx
583
+ * const [filters, setFilters] = useState<Filter[]>([]);
584
+ * const fields: FilterFieldConfig[] = [
585
+ * { key: "status", label: "Status", type: "select", options: [
586
+ * { value: "active", label: "Active" },
587
+ * { value: "inactive", label: "Inactive" },
588
+ * ]},
589
+ * { key: "name", label: "Name", type: "text" },
590
+ * ];
591
+ *
592
+ * <Filters
593
+ * filters={filters}
594
+ * fields={fields}
595
+ * onChange={setFilters}
596
+ * />
597
+ * ```
598
+ */
599
+ function Filters({ filters, fields, onChange, size = SF_FILTERS_DEFAULT_VARIANTS.size, trigger, showSearchInput = true, allowMultiple = true, enableShortcut = true, shortcutKey = "k", shortcutLabel, i18n: i18nProp, className, menuPopupClassName }) {
600
+ const i18n = useMemo(() => mergeI18n(i18nProp), [i18nProp]);
601
+ useEffect(() => {
602
+ if (!enableShortcut) return;
603
+ const handleKeyDown = (e) => {
604
+ if ((e.metaKey || e.ctrlKey) && e.key === shortcutKey) e.preventDefault();
605
+ };
606
+ document.addEventListener("keydown", handleKeyDown);
607
+ return () => document.removeEventListener("keydown", handleKeyDown);
608
+ }, [enableShortcut, shortcutKey]);
609
+ const handleAddFilter = useCallback((filter) => {
610
+ onChange([...filters, filter]);
611
+ }, [filters, onChange]);
612
+ const handleRemoveFilter = useCallback((id) => {
613
+ onChange(filters.filter((f) => f.id !== id));
614
+ }, [filters, onChange]);
615
+ const handleOperatorChange = useCallback((id, operator) => {
616
+ onChange(filters.map((f) => f.id === id ? {
617
+ ...f,
618
+ operator
619
+ } : f));
620
+ }, [filters, onChange]);
621
+ const handleValuesChange = useCallback((id, values) => {
622
+ onChange(filters.map((f) => f.id === id ? {
623
+ ...f,
624
+ values
625
+ } : f));
626
+ }, [filters, onChange]);
627
+ const handleClearAll = useCallback(() => {
628
+ onChange([]);
629
+ }, [onChange]);
630
+ const fieldMap = useMemo(() => {
631
+ const map = /* @__PURE__ */ new Map();
632
+ for (const field of fields) map.set(field.key, field);
633
+ return map;
634
+ }, [fields]);
635
+ return /* @__PURE__ */ jsxs("div", {
636
+ className: cn("flex flex-wrap items-center gap-2", className),
637
+ children: [
638
+ filters.map((filter) => {
639
+ const field = fieldMap.get(filter.field);
640
+ if (!field) return null;
641
+ return /* @__PURE__ */ jsx(FilterItem, {
642
+ filter,
643
+ field,
644
+ size,
645
+ i18n,
646
+ onRemove: () => handleRemoveFilter(filter.id),
647
+ onOperatorChange: (op) => handleOperatorChange(filter.id, op),
648
+ onValuesChange: (vals) => handleValuesChange(filter.id, vals)
649
+ }, filter.id);
650
+ }),
651
+ /* @__PURE__ */ jsx("div", {
652
+ className: menuPopupClassName,
653
+ children: /* @__PURE__ */ jsx(FilterAddMenu, {
654
+ fields,
655
+ filters,
656
+ size,
657
+ trigger,
658
+ showSearchInput,
659
+ allowMultiple,
660
+ i18n,
661
+ onAddFilter: handleAddFilter
662
+ })
663
+ }),
664
+ filters.length > 0 && /* @__PURE__ */ jsx(Button, {
665
+ variant: "ghost",
666
+ size: "sm",
667
+ onClick: handleClearAll,
668
+ className: "text-sf-subtle hover:text-sf-default",
669
+ children: i18n.clearAll
670
+ }),
671
+ enableShortcut && shortcutLabel && /* @__PURE__ */ jsx("span", {
672
+ className: "ml-auto text-xs text-sf-subtle",
673
+ children: shortcutLabel
674
+ })
675
+ ]
676
+ });
677
+ }
678
+ Filters.displayName = "Filters";
679
+ //#endregion
680
+ export { validateFilterValue as _, DEFAULT_MULTISELECT_OPERATORS as a, DEFAULT_TEXT_OPERATORS as c, formatFilterValue as d, getFieldByKey as f, mergeI18n as g, groupFields as h, DEFAULT_I18N as i, createFilter as l, getValueLabel as m, SF_FILTERS_DEFAULT_VARIANTS as n, DEFAULT_OPERATORS as o, getFieldOperators as p, SF_FILTERS_VARIANTS as r, DEFAULT_SELECT_OPERATORS as s, Filters as t, createFilterGroup as u };
681
+
682
+ //# sourceMappingURL=filters-BdBogf7D.js.map