@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,347 @@
1
+ "use client";
2
+ import { t as cn } from "./cn-YROP2_ox.js";
3
+ import { useCallback, useState } from "react";
4
+ import { jsx, jsxs } from "react/jsx-runtime";
5
+ import { CaretLeftIcon, CaretRightIcon, GlobeHemisphereWestIcon } from "@phosphor-icons/react";
6
+ //#region src/components/date-range-picker/date-range-picker.tsx
7
+ /** DateRangePicker size and variant definitions mapping names to their Tailwind classes. */
8
+ var SF_DATE_RANGE_PICKER_VARIANTS = {
9
+ size: {
10
+ sm: {
11
+ classes: "p-3 gap-2",
12
+ cellHeight: "h-[22px]",
13
+ cellWidth: "w-6",
14
+ calendarWidth: "w-[168px]",
15
+ textSize: "text-xs",
16
+ iconSize: 14,
17
+ description: "Compact calendar for tight spaces"
18
+ },
19
+ base: {
20
+ classes: "p-4 gap-2.5",
21
+ cellHeight: "h-[26px]",
22
+ cellWidth: "w-7",
23
+ calendarWidth: "w-[196px]",
24
+ textSize: "text-sm",
25
+ iconSize: 16,
26
+ description: "Default calendar size"
27
+ },
28
+ lg: {
29
+ classes: "p-5 gap-3",
30
+ cellHeight: "h-[32px]",
31
+ cellWidth: "w-9",
32
+ calendarWidth: "w-[252px]",
33
+ textSize: "text-base",
34
+ iconSize: 18,
35
+ description: "Large calendar for prominent date selection"
36
+ }
37
+ },
38
+ variant: {
39
+ default: {
40
+ classes: "bg-sf-overlay",
41
+ description: "Default calendar appearance"
42
+ },
43
+ subtle: {
44
+ classes: "bg-sf-base",
45
+ description: "Subtle calendar with minimal background"
46
+ }
47
+ }
48
+ };
49
+ var SF_DATE_RANGE_PICKER_DEFAULT_VARIANTS = {
50
+ size: "base",
51
+ variant: "default"
52
+ };
53
+ function dateRangePickerVariants({ size = SF_DATE_RANGE_PICKER_DEFAULT_VARIANTS.size, variant = SF_DATE_RANGE_PICKER_DEFAULT_VARIANTS.variant } = {}) {
54
+ return cn("flex w-fit flex-col rounded-xl select-none", SF_DATE_RANGE_PICKER_VARIANTS.variant[variant].classes, SF_DATE_RANGE_PICKER_VARIANTS.size[size].classes);
55
+ }
56
+ function getSizeConfig(size) {
57
+ return SF_DATE_RANGE_PICKER_VARIANTS.size[size];
58
+ }
59
+ var DateRangeCellMode = /* @__PURE__ */ function(DateRangeCellMode) {
60
+ DateRangeCellMode[DateRangeCellMode["OUT_OF_RANGE"] = 0] = "OUT_OF_RANGE";
61
+ DateRangeCellMode[DateRangeCellMode["ENABLED"] = 1] = "ENABLED";
62
+ DateRangeCellMode[DateRangeCellMode["SELECTED_START_NODE"] = 2] = "SELECTED_START_NODE";
63
+ DateRangeCellMode[DateRangeCellMode["SELECTED_END_NODE"] = 3] = "SELECTED_END_NODE";
64
+ DateRangeCellMode[DateRangeCellMode["SELECTED"] = 4] = "SELECTED";
65
+ DateRangeCellMode[DateRangeCellMode["SELECTED_OUT_OF_RANGE"] = 5] = "SELECTED_OUT_OF_RANGE";
66
+ return DateRangeCellMode;
67
+ }(DateRangeCellMode || {});
68
+ var DAYS_OF_WEEK = [
69
+ "Su",
70
+ "Mo",
71
+ "Tu",
72
+ "We",
73
+ "Th",
74
+ "Fr",
75
+ "Sa"
76
+ ];
77
+ /**
78
+ * DateRangePicker — dual-calendar date range selector.
79
+ *
80
+ * Renders two side-by-side month calendars with click-to-select start/end dates,
81
+ * hover preview of the range, a timezone footer, and a reset button.
82
+ *
83
+ * @example
84
+ * ```tsx
85
+ * <DateRangePicker
86
+ * onStartDateChange={setStart}
87
+ * onEndDateChange={setEnd}
88
+ * />
89
+ * ```
90
+ *
91
+ * @deprecated Use {@link DatePicker} with `mode="range"` instead.
92
+ */
93
+ function DateRangePicker({ onStartDateChange, onEndDateChange, size = SF_DATE_RANGE_PICKER_DEFAULT_VARIANTS.size, variant = SF_DATE_RANGE_PICKER_DEFAULT_VARIANTS.variant, timezone = "New York, NY, USA (GMT-4)", className }) {
94
+ const [startDate, setStartDate] = useState(null);
95
+ const [endDate, setEndDate] = useState(null);
96
+ const [viewingMonth, setViewingMonth] = useState(/* @__PURE__ */ new Date());
97
+ const [hoveringDate, setHoveringDate] = useState(null);
98
+ const sizeConfig = getSizeConfig(size);
99
+ const handleStartDateChange = (date) => {
100
+ setStartDate(date);
101
+ onStartDateChange(date);
102
+ };
103
+ const handleEndDateChange = (date) => {
104
+ setEndDate(date);
105
+ onEndDateChange(date);
106
+ };
107
+ const getMonthName = useCallback((date, monthOffset) => {
108
+ const copyDate = new Date(date);
109
+ copyDate.setMonth(copyDate.getMonth() + (monthOffset || 0));
110
+ return copyDate.toLocaleString("default", { month: "long" });
111
+ }, []);
112
+ const getDateYear = useCallback((date, monthOffset) => {
113
+ const copyDate = new Date(date);
114
+ copyDate.setMonth(copyDate.getMonth() + (monthOffset || 0));
115
+ return copyDate.getFullYear();
116
+ }, []);
117
+ const getMonthsStartingDay = useCallback((date, monthOffset) => {
118
+ const copyDate = new Date(date);
119
+ copyDate.setDate(1);
120
+ copyDate.setMonth(copyDate.getMonth() + (monthOffset || 0));
121
+ return copyDate.getDay();
122
+ }, []);
123
+ const getNumberOfDaysInMonth = useCallback((date, monthOffset) => {
124
+ const copyDate = new Date(date);
125
+ copyDate.setDate(1);
126
+ copyDate.setMonth(copyDate.getMonth() + (monthOffset || 0));
127
+ copyDate.setMonth(copyDate.getMonth() + 1);
128
+ copyDate.setDate(0);
129
+ return copyDate.getDate();
130
+ }, []);
131
+ const adjustMonth = useCallback((monthOffset) => {
132
+ setViewingMonth((prev) => {
133
+ const newDate = new Date(prev);
134
+ newDate.setMonth(newDate.getMonth() + monthOffset);
135
+ return newDate;
136
+ });
137
+ }, []);
138
+ const getDateFromIndex = useCallback((date, monthOffset, index) => {
139
+ const startingDay = getMonthsStartingDay(date, monthOffset);
140
+ if (index < startingDay) {
141
+ const previousMonth = new Date(date);
142
+ previousMonth.setMonth(previousMonth.getMonth() + monthOffset);
143
+ previousMonth.setDate(1);
144
+ previousMonth.setDate(previousMonth.getDate() - (startingDay - index));
145
+ return previousMonth;
146
+ } else if (index > getNumberOfDaysInMonth(date, monthOffset) + startingDay - 1) {
147
+ const nextMonth = new Date(date);
148
+ nextMonth.setMonth(nextMonth.getMonth() + monthOffset);
149
+ nextMonth.setMonth(nextMonth.getMonth() + 1);
150
+ nextMonth.setDate(index - getNumberOfDaysInMonth(date, monthOffset) - startingDay + 1);
151
+ return nextMonth;
152
+ } else {
153
+ const newDate = new Date(date);
154
+ newDate.setMonth(newDate.getMonth() + monthOffset);
155
+ newDate.setDate(index - startingDay + 1);
156
+ return newDate;
157
+ }
158
+ }, [getMonthsStartingDay, getNumberOfDaysInMonth]);
159
+ const isDateEqual = useCallback((date1, date2) => {
160
+ if (!date1 || !date2) return false;
161
+ return date1.toDateString() === date2.toDateString();
162
+ }, []);
163
+ return /* @__PURE__ */ jsxs("div", {
164
+ className: cn(dateRangePickerVariants({
165
+ size,
166
+ variant
167
+ }), className),
168
+ children: [/* @__PURE__ */ jsxs("div", {
169
+ className: "flex gap-4",
170
+ children: [/* @__PURE__ */ jsxs("div", {
171
+ className: cn("relative", sizeConfig.calendarWidth),
172
+ children: [
173
+ /* @__PURE__ */ jsx("button", {
174
+ type: "button",
175
+ "aria-label": "Previous month",
176
+ className: "absolute top-0 left-0 cursor-pointer rounded bg-sf-interact/85 p-1.5 hover:bg-sf-interact",
177
+ onClick: () => adjustMonth(-1),
178
+ children: /* @__PURE__ */ jsx(CaretLeftIcon, { size: sizeConfig.iconSize })
179
+ }),
180
+ /* @__PURE__ */ jsx(DateRangeMonthHeader, {
181
+ month: getMonthName(viewingMonth),
182
+ year: getDateYear(viewingMonth),
183
+ size,
184
+ updateCurrentMonth: (dateString) => {
185
+ setViewingMonth(new Date(dateString));
186
+ }
187
+ }),
188
+ /* @__PURE__ */ jsx("div", {
189
+ className: "grid grid-cols-7 gap-0 gap-y-0.5",
190
+ children: Array.from({ length: 42 }).map((_, index) => /* @__PURE__ */ jsx(DateRangeDayCell, {
191
+ date: getDateFromIndex(viewingMonth, 0, index),
192
+ size,
193
+ mode: startDate && endDate && getDateFromIndex(viewingMonth, 0, index) >= startDate && getDateFromIndex(viewingMonth, 0, index) <= endDate && index > getNumberOfDaysInMonth(viewingMonth, 0) + getMonthsStartingDay(viewingMonth, 0) - 1 || startDate && endDate && getDateFromIndex(viewingMonth, 0, index) >= startDate && getDateFromIndex(viewingMonth, 0, index) <= endDate && index < getMonthsStartingDay(viewingMonth, 0) ? DateRangeCellMode.SELECTED_OUT_OF_RANGE : index < getMonthsStartingDay(viewingMonth, 0) ? DateRangeCellMode.OUT_OF_RANGE : index > getNumberOfDaysInMonth(viewingMonth, 0) + getMonthsStartingDay(viewingMonth, 0) - 1 ? DateRangeCellMode.OUT_OF_RANGE : isDateEqual(getDateFromIndex(viewingMonth, 0, index), startDate) ? DateRangeCellMode.SELECTED_START_NODE : isDateEqual(getDateFromIndex(viewingMonth, 0, index), endDate) ? DateRangeCellMode.SELECTED_END_NODE : startDate && getDateFromIndex(viewingMonth, 0, index) >= startDate && endDate && getDateFromIndex(viewingMonth, 0, index) <= endDate ? DateRangeCellMode.SELECTED : startDate && !endDate && hoveringDate && hoveringDate > startDate && getDateFromIndex(viewingMonth, 0, index) <= hoveringDate && getDateFromIndex(viewingMonth, 0, index) > startDate ? DateRangeCellMode.SELECTED : DateRangeCellMode.ENABLED,
194
+ onClick: (date) => {
195
+ if (!startDate || date < startDate) {
196
+ handleStartDateChange(date);
197
+ setHoveringDate(date);
198
+ } else handleEndDateChange(date);
199
+ },
200
+ isHoveringDate: (date) => {
201
+ if (startDate && !endDate && date > startDate) setHoveringDate(date);
202
+ }
203
+ }, index))
204
+ })
205
+ ]
206
+ }), /* @__PURE__ */ jsxs("div", {
207
+ className: cn("relative", sizeConfig.calendarWidth),
208
+ children: [
209
+ /* @__PURE__ */ jsx("button", {
210
+ type: "button",
211
+ "aria-label": "Next month",
212
+ className: "absolute top-0 right-0 cursor-pointer rounded bg-sf-interact/85 p-1.5 hover:bg-sf-interact",
213
+ onClick: () => adjustMonth(1),
214
+ children: /* @__PURE__ */ jsx(CaretRightIcon, { size: sizeConfig.iconSize })
215
+ }),
216
+ /* @__PURE__ */ jsx(DateRangeMonthHeader, {
217
+ month: getMonthName(viewingMonth, 1),
218
+ year: getDateYear(viewingMonth, 1),
219
+ size,
220
+ updateCurrentMonth: (dateString) => {
221
+ const date = new Date(dateString);
222
+ date.setMonth(date.getMonth() - 1);
223
+ setViewingMonth(date);
224
+ }
225
+ }),
226
+ /* @__PURE__ */ jsx("div", {
227
+ className: "grid grid-cols-7 gap-0 gap-y-0.5",
228
+ children: Array.from({ length: 42 }).map((_, index) => /* @__PURE__ */ jsx(DateRangeDayCell, {
229
+ date: getDateFromIndex(viewingMonth, 1, index),
230
+ size,
231
+ mode: startDate && endDate && getDateFromIndex(viewingMonth, 1, index) >= startDate && getDateFromIndex(viewingMonth, 1, index) <= endDate && index > getNumberOfDaysInMonth(viewingMonth, 1) + getMonthsStartingDay(viewingMonth, 1) - 1 || startDate && endDate && getDateFromIndex(viewingMonth, 1, index) >= startDate && getDateFromIndex(viewingMonth, 1, index) <= endDate && index < getMonthsStartingDay(viewingMonth, 1) ? DateRangeCellMode.SELECTED_OUT_OF_RANGE : index < getMonthsStartingDay(viewingMonth, 1) ? DateRangeCellMode.OUT_OF_RANGE : index > getNumberOfDaysInMonth(viewingMonth, 1) + getMonthsStartingDay(viewingMonth, 1) - 1 ? DateRangeCellMode.OUT_OF_RANGE : isDateEqual(getDateFromIndex(viewingMonth, 1, index), startDate) ? DateRangeCellMode.SELECTED_START_NODE : isDateEqual(getDateFromIndex(viewingMonth, 1, index), endDate) ? DateRangeCellMode.SELECTED_END_NODE : startDate && getDateFromIndex(viewingMonth, 1, index) >= startDate && endDate && getDateFromIndex(viewingMonth, 1, index) <= endDate ? DateRangeCellMode.SELECTED : startDate && !endDate && hoveringDate && hoveringDate > startDate && getDateFromIndex(viewingMonth, 1, index) <= hoveringDate && getDateFromIndex(viewingMonth, 1, index) > startDate ? DateRangeCellMode.SELECTED : DateRangeCellMode.ENABLED,
232
+ onClick: (date) => {
233
+ if (!startDate || date < startDate) {
234
+ handleStartDateChange(date);
235
+ setHoveringDate(date);
236
+ } else handleEndDateChange(date);
237
+ },
238
+ isHoveringDate: (date) => {
239
+ if (startDate && !endDate && date > startDate) setHoveringDate(date);
240
+ }
241
+ }, index))
242
+ })
243
+ ]
244
+ })]
245
+ }), /* @__PURE__ */ jsx(DateRangeFooter, {
246
+ timezone,
247
+ size,
248
+ reset: () => {
249
+ handleStartDateChange(null);
250
+ handleEndDateChange(null);
251
+ }
252
+ })]
253
+ });
254
+ }
255
+ function DateRangeDayCell({ date, mode, size = SF_DATE_RANGE_PICKER_DEFAULT_VARIANTS.size, onClick, isHoveringDate }) {
256
+ const sizeConfig = getSizeConfig(size);
257
+ const getDateNumberFromDate = useCallback((date) => {
258
+ return date.getDate();
259
+ }, []);
260
+ const getBackgroundColor = useCallback(() => {
261
+ switch (mode) {
262
+ case DateRangeCellMode.OUT_OF_RANGE: return "bg-transparent";
263
+ case DateRangeCellMode.ENABLED: return "bg-transparent";
264
+ case DateRangeCellMode.SELECTED_START_NODE: return "!bg-sf-contrast rounded-tl-[5px] rounded-bl-[5px]";
265
+ case DateRangeCellMode.SELECTED_END_NODE: return "!bg-sf-contrast rounded-tr-[5px] rounded-br-[5px]";
266
+ case DateRangeCellMode.SELECTED: return "bg-sf-interact";
267
+ case DateRangeCellMode.SELECTED_OUT_OF_RANGE: return "bg-sf-fill";
268
+ }
269
+ }, [mode]);
270
+ const getTextColor = useCallback(() => {
271
+ switch (mode) {
272
+ case DateRangeCellMode.OUT_OF_RANGE:
273
+ case DateRangeCellMode.SELECTED_OUT_OF_RANGE: return "!text-sf-strong";
274
+ case DateRangeCellMode.SELECTED_START_NODE:
275
+ case DateRangeCellMode.SELECTED_END_NODE: return "!text-sf-inverse";
276
+ default: return "text-sf-default";
277
+ }
278
+ }, [mode]);
279
+ const getAriaLabel = useCallback(() => {
280
+ const dateStr = date.toLocaleDateString("en-US", {
281
+ weekday: "long",
282
+ month: "long",
283
+ day: "numeric",
284
+ year: "numeric"
285
+ });
286
+ switch (mode) {
287
+ case DateRangeCellMode.SELECTED_START_NODE: return `${dateStr}, selected as start date`;
288
+ case DateRangeCellMode.SELECTED_END_NODE: return `${dateStr}, selected as end date`;
289
+ case DateRangeCellMode.SELECTED: return `${dateStr}, within selected range`;
290
+ default: return dateStr;
291
+ }
292
+ }, [date, mode]);
293
+ return /* @__PURE__ */ jsx("button", {
294
+ type: "button",
295
+ "aria-label": getAriaLabel(),
296
+ id: date.toDateString(),
297
+ className: cn(sizeConfig.cellHeight, sizeConfig.cellWidth, sizeConfig.textSize, "cursor-pointer text-center text-sf-default transition-all duration-[50]", `leading-[${sizeConfig.cellHeight.replace("h-[", "").replace("]", "")}]`, mode !== DateRangeCellMode.OUT_OF_RANGE && mode !== DateRangeCellMode.SELECTED_OUT_OF_RANGE ? "hover:bg-sf-interact" : "", getBackgroundColor(), getTextColor()),
298
+ onClick: () => onClick?.(date),
299
+ onMouseOver: () => isHoveringDate?.(date),
300
+ onFocus: () => isHoveringDate?.(date),
301
+ children: getDateNumberFromDate(date)
302
+ });
303
+ }
304
+ function DateRangeMonthHeader({ month, year, size = SF_DATE_RANGE_PICKER_DEFAULT_VARIANTS.size, updateCurrentMonth }) {
305
+ const sizeConfig = getSizeConfig(size);
306
+ return /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("div", {
307
+ className: "mb-3 text-center",
308
+ children: /* @__PURE__ */ jsx("input", {
309
+ "aria-label": "Edit month and year",
310
+ defaultValue: `${month} ${year}`,
311
+ className: cn("w-full rounded-md border-none bg-transparent py-1.5 text-center font-semibold text-sf-default transition-all duration-200 focus:outline-none", sizeConfig.textSize),
312
+ onBlur: (e) => {
313
+ if (e.currentTarget.value.length === 0) return;
314
+ updateCurrentMonth?.(e.currentTarget.value);
315
+ }
316
+ }, `${month}-${year}`)
317
+ }), /* @__PURE__ */ jsx("div", {
318
+ className: "mt-2 grid grid-cols-7 gap-1",
319
+ children: DAYS_OF_WEEK.map((day) => /* @__PURE__ */ jsx("div", {
320
+ className: cn("h-[22px] text-center text-sf-subtle", sizeConfig.cellWidth, sizeConfig.textSize),
321
+ children: day
322
+ }, day))
323
+ })] });
324
+ }
325
+ function DateRangeFooter({ timezone, size = SF_DATE_RANGE_PICKER_DEFAULT_VARIANTS.size, reset }) {
326
+ const sizeConfig = getSizeConfig(size);
327
+ return /* @__PURE__ */ jsxs("div", {
328
+ className: cn("flex items-center gap-2 text-sf-strong", sizeConfig.textSize),
329
+ children: [
330
+ /* @__PURE__ */ jsx(GlobeHemisphereWestIcon, { size: sizeConfig.iconSize }),
331
+ /* @__PURE__ */ jsxs("span", {
332
+ className: "flex-1",
333
+ children: ["Timezone: ", timezone]
334
+ }),
335
+ /* @__PURE__ */ jsx("button", {
336
+ type: "button",
337
+ onClick: reset,
338
+ className: "cursor-pointer font-semibold text-sf-default underline underline-offset-2",
339
+ children: "Reset Dates"
340
+ })
341
+ ]
342
+ });
343
+ }
344
+ //#endregion
345
+ export { DateRangePicker as t };
346
+
347
+ //# sourceMappingURL=date-range-picker-D75LLINc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date-range-picker-D75LLINc.js","names":[],"sources":["../src/components/date-range-picker/date-range-picker.tsx"],"sourcesContent":["import {\n CaretLeftIcon,\n CaretRightIcon,\n GlobeHemisphereWestIcon,\n} from \"@phosphor-icons/react\";\nimport { useCallback, useState } from \"react\";\n\nimport { cn } from \"../../utils/cn\";\n\n/** DateRangePicker size and variant definitions mapping names to their Tailwind classes. */\nexport const SF_DATE_RANGE_PICKER_VARIANTS = {\n size: {\n sm: {\n classes: \"p-3 gap-2\",\n cellHeight: \"h-[22px]\",\n cellWidth: \"w-6\",\n calendarWidth: \"w-[168px]\",\n textSize: \"text-xs\",\n iconSize: 14,\n description: \"Compact calendar for tight spaces\",\n },\n base: {\n classes: \"p-4 gap-2.5\",\n cellHeight: \"h-[26px]\",\n cellWidth: \"w-7\",\n calendarWidth: \"w-[196px]\",\n textSize: \"text-sm\",\n iconSize: 16,\n description: \"Default calendar size\",\n },\n lg: {\n classes: \"p-5 gap-3\",\n cellHeight: \"h-[32px]\",\n cellWidth: \"w-9\",\n calendarWidth: \"w-[252px]\",\n textSize: \"text-base\",\n iconSize: 18,\n description: \"Large calendar for prominent date selection\",\n },\n },\n variant: {\n default: {\n classes: \"bg-sf-overlay\",\n description: \"Default calendar appearance\",\n },\n subtle: {\n classes: \"bg-sf-base\",\n description: \"Subtle calendar with minimal background\",\n },\n },\n} as const;\n\nexport const SF_DATE_RANGE_PICKER_DEFAULT_VARIANTS = {\n size: \"base\",\n variant: \"default\",\n} as const;\n\n// Derived types from SF_DATE_RANGE_PICKER_VARIANTS\nexport type SFDateRangePickerSize =\n keyof typeof SF_DATE_RANGE_PICKER_VARIANTS.size;\nexport type SFDateRangePickerVariant =\n keyof typeof SF_DATE_RANGE_PICKER_VARIANTS.variant;\n\nexport interface SFDateRangePickerVariantsProps {\n /**\n * Calendar size.\n * - `\"sm\"` — Compact calendar for tight spaces\n * - `\"base\"` — Default calendar size\n * - `\"lg\"` — Large calendar for prominent date selection\n * @default \"base\"\n */\n size?: SFDateRangePickerSize;\n /**\n * Visual variant.\n * - `\"default\"` — Standard appearance with overlay background\n * - `\"subtle\"` — Minimal background\n * @default \"default\"\n */\n variant?: SFDateRangePickerVariant;\n}\n\nexport function dateRangePickerVariants({\n size = SF_DATE_RANGE_PICKER_DEFAULT_VARIANTS.size,\n variant = SF_DATE_RANGE_PICKER_DEFAULT_VARIANTS.variant,\n}: SFDateRangePickerVariantsProps = {}) {\n return cn(\n // Base styles\n \"flex w-fit flex-col rounded-xl select-none\",\n // Apply variant and size styles\n SF_DATE_RANGE_PICKER_VARIANTS.variant[variant].classes,\n SF_DATE_RANGE_PICKER_VARIANTS.size[size].classes\n );\n}\n\n// Helper to get size config\nfunction getSizeConfig(size: SFDateRangePickerSize) {\n return SF_DATE_RANGE_PICKER_VARIANTS.size[size];\n}\n\nenum DateRangeCellMode {\n OUT_OF_RANGE,\n ENABLED,\n SELECTED_START_NODE,\n SELECTED_END_NODE,\n SELECTED,\n SELECTED_OUT_OF_RANGE,\n}\n\nconst DAYS_OF_WEEK = [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"] as const;\n\n/**\n * DateRangePicker component props.\n *\n * Dual-calendar date range selector with hover preview, timezone display, and reset support.\n *\n * @example\n * ```tsx\n * <DateRangePicker\n * onStartDateChange={(d) => setStart(d)}\n * onEndDateChange={(d) => setEnd(d)}\n * timezone=\"New York, NY, USA (GMT-4)\"\n * />\n *\n * // Compact variant\n * <DateRangePicker\n * size=\"sm\"\n * variant=\"subtle\"\n * onStartDateChange={setStart}\n * onEndDateChange={setEnd}\n * />\n * ```\n *\n * @deprecated Use {@link DatePicker} with `mode=\"range\"` instead.\n */\nexport interface DateRangePickerProps extends SFDateRangePickerVariantsProps {\n /** Callback fired when start date changes. Receives `null` on reset. */\n onStartDateChange: (date: Date | null) => void;\n /** Callback fired when end date changes. Receives `null` on reset. */\n onEndDateChange: (date: Date | null) => void;\n /**\n * Display timezone string shown in the footer.\n * @default \"New York, NY, USA (GMT-4)\"\n */\n timezone?: string;\n /** Additional CSS classes merged via `cn()`. */\n className?: string;\n}\n\n/**\n * DateRangePicker — dual-calendar date range selector.\n *\n * Renders two side-by-side month calendars with click-to-select start/end dates,\n * hover preview of the range, a timezone footer, and a reset button.\n *\n * @example\n * ```tsx\n * <DateRangePicker\n * onStartDateChange={setStart}\n * onEndDateChange={setEnd}\n * />\n * ```\n *\n * @deprecated Use {@link DatePicker} with `mode=\"range\"` instead.\n */\nexport function DateRangePicker({\n onStartDateChange,\n onEndDateChange,\n size = SF_DATE_RANGE_PICKER_DEFAULT_VARIANTS.size,\n variant = SF_DATE_RANGE_PICKER_DEFAULT_VARIANTS.variant,\n timezone = \"New York, NY, USA (GMT-4)\",\n className,\n}: DateRangePickerProps) {\n const [startDate, setStartDate] = useState<Date | null>(null);\n const [endDate, setEndDate] = useState<Date | null>(null);\n const [viewingMonth, setViewingMonth] = useState<Date>(new Date());\n const [hoveringDate, setHoveringDate] = useState<Date | null>(null);\n\n const sizeConfig = getSizeConfig(size);\n\n const handleStartDateChange = (date: Date | null) => {\n setStartDate(date);\n onStartDateChange(date); // Pass the updated startDate to the parent component\n };\n\n const handleEndDateChange = (date: Date | null) => {\n setEndDate(date);\n onEndDateChange(date); // Pass the updated endDate to the parent component\n };\n\n const getMonthName = useCallback((date: Date, monthOffset?: number) => {\n const copyDate = new Date(date);\n copyDate.setMonth(copyDate.getMonth() + (monthOffset || 0));\n return copyDate.toLocaleString(\"default\", { month: \"long\" });\n }, []);\n\n const getDateYear = useCallback((date: Date, monthOffset?: number) => {\n const copyDate = new Date(date);\n copyDate.setMonth(copyDate.getMonth() + (monthOffset || 0));\n return copyDate.getFullYear();\n }, []);\n\n const getMonthsStartingDay = useCallback(\n (date: Date, monthOffset?: number) => {\n const copyDate = new Date(date);\n copyDate.setDate(1);\n copyDate.setMonth(copyDate.getMonth() + (monthOffset || 0));\n return copyDate.getDay();\n },\n []\n );\n\n const getNumberOfDaysInMonth = useCallback(\n (date: Date, monthOffset?: number) => {\n const copyDate = new Date(date);\n copyDate.setDate(1);\n copyDate.setMonth(copyDate.getMonth() + (monthOffset || 0));\n copyDate.setMonth(copyDate.getMonth() + 1);\n copyDate.setDate(0);\n return copyDate.getDate();\n },\n []\n );\n\n const adjustMonth = useCallback((monthOffset: number) => {\n setViewingMonth((prev) => {\n const newDate = new Date(prev);\n newDate.setMonth(newDate.getMonth() + monthOffset);\n return newDate;\n });\n }, []);\n\n const getDateFromIndex = useCallback(\n (date: Date, monthOffset: number, index: number) => {\n const startingDay = getMonthsStartingDay(date, monthOffset);\n\n if (index < startingDay) {\n // Get the last day of the previous month\n const previousMonth = new Date(date);\n previousMonth.setMonth(previousMonth.getMonth() + monthOffset);\n previousMonth.setDate(1);\n previousMonth.setDate(previousMonth.getDate() - (startingDay - index));\n return previousMonth;\n } else if (\n index >\n getNumberOfDaysInMonth(date, monthOffset) + startingDay - 1\n ) {\n // Get the first day of the next month\n const nextMonth = new Date(date);\n nextMonth.setMonth(nextMonth.getMonth() + monthOffset);\n nextMonth.setMonth(nextMonth.getMonth() + 1);\n nextMonth.setDate(\n index - getNumberOfDaysInMonth(date, monthOffset) - startingDay + 1\n );\n return nextMonth;\n } else {\n // Get the current month's date\n const newDate = new Date(date);\n newDate.setMonth(newDate.getMonth() + monthOffset);\n newDate.setDate(index - startingDay + 1);\n return newDate;\n }\n },\n [getMonthsStartingDay, getNumberOfDaysInMonth]\n );\n\n const isDateEqual = useCallback((date1: Date | null, date2: Date | null) => {\n if (!date1 || !date2) return false;\n return date1.toDateString() === date2.toDateString();\n }, []);\n\n return (\n <div className={cn(dateRangePickerVariants({ size, variant }), className)}>\n <div className=\"flex gap-4\">\n <div className={cn(\"relative\", sizeConfig.calendarWidth)}>\n <button\n type=\"button\"\n aria-label=\"Previous month\"\n className=\"absolute top-0 left-0 cursor-pointer rounded bg-sf-interact/85 p-1.5 hover:bg-sf-interact\"\n onClick={() => adjustMonth(-1)}\n >\n <CaretLeftIcon size={sizeConfig.iconSize} />\n </button>\n\n <DateRangeMonthHeader\n month={getMonthName(viewingMonth)}\n year={getDateYear(viewingMonth)}\n size={size}\n updateCurrentMonth={(dateString) => {\n setViewingMonth(new Date(dateString));\n }}\n />\n\n <div className=\"grid grid-cols-7 gap-0 gap-y-0.5\">\n {Array.from({ length: 42 }).map((_, index) => (\n <DateRangeDayCell\n key={index}\n date={getDateFromIndex(viewingMonth, 0, index)}\n size={size}\n mode={\n // After current month range\n (startDate &&\n endDate &&\n getDateFromIndex(viewingMonth, 0, index) >= startDate &&\n getDateFromIndex(viewingMonth, 0, index) <= endDate &&\n index >\n getNumberOfDaysInMonth(viewingMonth, 0) +\n getMonthsStartingDay(viewingMonth, 0) -\n 1) ||\n // Before current month range\n (startDate &&\n endDate &&\n getDateFromIndex(viewingMonth, 0, index) >= startDate &&\n getDateFromIndex(viewingMonth, 0, index) <= endDate &&\n index < getMonthsStartingDay(viewingMonth, 0))\n ? DateRangeCellMode.SELECTED_OUT_OF_RANGE\n : // Before current month range\n index < getMonthsStartingDay(viewingMonth, 0)\n ? DateRangeCellMode.OUT_OF_RANGE\n : // After current month range\n index >\n getNumberOfDaysInMonth(viewingMonth, 0) +\n getMonthsStartingDay(viewingMonth, 0) -\n 1\n ? DateRangeCellMode.OUT_OF_RANGE\n : // Selected start date\n isDateEqual(\n getDateFromIndex(viewingMonth, 0, index),\n startDate\n )\n ? DateRangeCellMode.SELECTED_START_NODE\n : // Selected end date\n isDateEqual(\n getDateFromIndex(viewingMonth, 0, index),\n endDate\n )\n ? DateRangeCellMode.SELECTED_END_NODE\n : // Selected date range\n startDate &&\n getDateFromIndex(viewingMonth, 0, index) >=\n startDate &&\n endDate &&\n getDateFromIndex(viewingMonth, 0, index) <=\n endDate\n ? DateRangeCellMode.SELECTED\n : // Hovering past a starting date and no end date selected\n startDate &&\n !endDate &&\n hoveringDate &&\n hoveringDate > startDate &&\n getDateFromIndex(viewingMonth, 0, index) <=\n hoveringDate &&\n getDateFromIndex(viewingMonth, 0, index) >\n startDate\n ? DateRangeCellMode.SELECTED\n : // Default to enabled date\n DateRangeCellMode.ENABLED\n }\n onClick={(date) => {\n if (!startDate || date < startDate) {\n handleStartDateChange(date);\n setHoveringDate(date);\n } else {\n handleEndDateChange(date);\n }\n }}\n isHoveringDate={(date) => {\n if (startDate && !endDate && date > startDate) {\n setHoveringDate(date);\n }\n }}\n />\n ))}\n </div>\n </div>\n <div className={cn(\"relative\", sizeConfig.calendarWidth)}>\n <button\n type=\"button\"\n aria-label=\"Next month\"\n className=\"absolute top-0 right-0 cursor-pointer rounded bg-sf-interact/85 p-1.5 hover:bg-sf-interact\"\n onClick={() => adjustMonth(1)}\n >\n <CaretRightIcon size={sizeConfig.iconSize} />\n </button>\n\n <DateRangeMonthHeader\n month={getMonthName(viewingMonth, 1)}\n year={getDateYear(viewingMonth, 1)}\n size={size}\n updateCurrentMonth={(dateString) => {\n const date = new Date(dateString);\n date.setMonth(date.getMonth() - 1);\n setViewingMonth(date);\n }}\n />\n\n <div className=\"grid grid-cols-7 gap-0 gap-y-0.5\">\n {Array.from({ length: 42 }).map((_, index) => (\n <DateRangeDayCell\n key={index}\n date={getDateFromIndex(viewingMonth, 1, index)}\n size={size}\n mode={\n // After current month range\n (startDate &&\n endDate &&\n getDateFromIndex(viewingMonth, 1, index) >= startDate &&\n getDateFromIndex(viewingMonth, 1, index) <= endDate &&\n index >\n getNumberOfDaysInMonth(viewingMonth, 1) +\n getMonthsStartingDay(viewingMonth, 1) -\n 1) ||\n // Before current month range\n (startDate &&\n endDate &&\n getDateFromIndex(viewingMonth, 1, index) >= startDate &&\n getDateFromIndex(viewingMonth, 1, index) <= endDate &&\n index < getMonthsStartingDay(viewingMonth, 1))\n ? DateRangeCellMode.SELECTED_OUT_OF_RANGE\n : // Before current month range\n index < getMonthsStartingDay(viewingMonth, 1)\n ? DateRangeCellMode.OUT_OF_RANGE\n : // After current month range\n index >\n getNumberOfDaysInMonth(viewingMonth, 1) +\n getMonthsStartingDay(viewingMonth, 1) -\n 1\n ? DateRangeCellMode.OUT_OF_RANGE\n : // Selected start date\n isDateEqual(\n getDateFromIndex(viewingMonth, 1, index),\n startDate\n )\n ? DateRangeCellMode.SELECTED_START_NODE\n : // Selected end date\n isDateEqual(\n getDateFromIndex(viewingMonth, 1, index),\n endDate\n )\n ? DateRangeCellMode.SELECTED_END_NODE\n : // Selected date range\n startDate &&\n getDateFromIndex(viewingMonth, 1, index) >=\n startDate &&\n endDate &&\n getDateFromIndex(viewingMonth, 1, index) <=\n endDate\n ? DateRangeCellMode.SELECTED\n : // Hovering past a starting date and no end date selected\n startDate &&\n !endDate &&\n hoveringDate &&\n hoveringDate > startDate &&\n getDateFromIndex(viewingMonth, 1, index) <=\n hoveringDate &&\n getDateFromIndex(viewingMonth, 1, index) >\n startDate\n ? DateRangeCellMode.SELECTED\n : // Default to enabled date\n DateRangeCellMode.ENABLED\n }\n onClick={(date) => {\n if (!startDate || date < startDate) {\n handleStartDateChange(date);\n setHoveringDate(date);\n } else {\n handleEndDateChange(date);\n }\n }}\n isHoveringDate={(date) => {\n if (startDate && !endDate && date > startDate) {\n setHoveringDate(date);\n }\n }}\n />\n ))}\n </div>\n </div>\n </div>\n\n <DateRangeFooter\n timezone={timezone}\n size={size}\n reset={() => {\n handleStartDateChange(null);\n handleEndDateChange(null);\n }}\n />\n </div>\n );\n}\n\nfunction DateRangeDayCell({\n date,\n mode,\n size = SF_DATE_RANGE_PICKER_DEFAULT_VARIANTS.size,\n onClick,\n isHoveringDate,\n}: {\n date: Date;\n mode?: DateRangeCellMode;\n size?: SFDateRangePickerSize;\n onClick?: (date: Date) => void;\n isHoveringDate?: (date: Date) => void;\n}) {\n const sizeConfig = getSizeConfig(size);\n\n const getDateNumberFromDate = useCallback((date: Date) => {\n return date.getDate();\n }, []);\n\n const getBackgroundColor = useCallback(() => {\n switch (mode) {\n case DateRangeCellMode.OUT_OF_RANGE:\n return \"bg-transparent\";\n case DateRangeCellMode.ENABLED:\n return \"bg-transparent\";\n case DateRangeCellMode.SELECTED_START_NODE:\n return \"!bg-sf-contrast rounded-tl-[5px] rounded-bl-[5px]\";\n case DateRangeCellMode.SELECTED_END_NODE:\n return \"!bg-sf-contrast rounded-tr-[5px] rounded-br-[5px]\";\n case DateRangeCellMode.SELECTED:\n return \"bg-sf-interact\";\n case DateRangeCellMode.SELECTED_OUT_OF_RANGE:\n return \"bg-sf-fill\";\n }\n }, [mode]);\n\n const getTextColor = useCallback(() => {\n switch (mode) {\n case DateRangeCellMode.OUT_OF_RANGE:\n case DateRangeCellMode.SELECTED_OUT_OF_RANGE:\n return \"!text-sf-strong\";\n case DateRangeCellMode.SELECTED_START_NODE:\n case DateRangeCellMode.SELECTED_END_NODE:\n return \"!text-sf-inverse\";\n default:\n return \"text-sf-default\";\n }\n }, [mode]);\n\n const getAriaLabel = useCallback(() => {\n const dateStr = date.toLocaleDateString(\"en-US\", {\n weekday: \"long\",\n month: \"long\",\n day: \"numeric\",\n year: \"numeric\",\n });\n switch (mode) {\n case DateRangeCellMode.SELECTED_START_NODE:\n return `${dateStr}, selected as start date`;\n case DateRangeCellMode.SELECTED_END_NODE:\n return `${dateStr}, selected as end date`;\n case DateRangeCellMode.SELECTED:\n return `${dateStr}, within selected range`;\n default:\n return dateStr;\n }\n }, [date, mode]);\n\n return (\n <button\n type=\"button\"\n aria-label={getAriaLabel()}\n id={date.toDateString()}\n className={cn(\n sizeConfig.cellHeight,\n sizeConfig.cellWidth,\n sizeConfig.textSize,\n \"cursor-pointer text-center text-sf-default transition-all duration-[50]\",\n `leading-[${sizeConfig.cellHeight.replace(\"h-[\", \"\").replace(\"]\", \"\")}]`,\n mode !== DateRangeCellMode.OUT_OF_RANGE &&\n mode !== DateRangeCellMode.SELECTED_OUT_OF_RANGE\n ? \"hover:bg-sf-interact\"\n : \"\",\n getBackgroundColor(),\n getTextColor()\n )}\n onClick={() => onClick?.(date)}\n onMouseOver={() => isHoveringDate?.(date)}\n onFocus={() => isHoveringDate?.(date)}\n >\n {getDateNumberFromDate(date)}\n </button>\n );\n}\n\nfunction DateRangeMonthHeader({\n month,\n year,\n size = SF_DATE_RANGE_PICKER_DEFAULT_VARIANTS.size,\n updateCurrentMonth,\n}: {\n month?: string;\n year?: number;\n size?: SFDateRangePickerSize;\n updateCurrentMonth?: (dateString: string) => void;\n}) {\n const sizeConfig = getSizeConfig(size);\n\n return (\n <div>\n <div className=\"mb-3 text-center\">\n <input\n key={`${month}-${year}`}\n aria-label=\"Edit month and year\"\n defaultValue={`${month} ${year}`}\n className={cn(\n \"w-full rounded-md border-none bg-transparent py-1.5 text-center font-semibold text-sf-default transition-all duration-200 focus:outline-none\",\n sizeConfig.textSize\n )}\n onBlur={(e) => {\n if (e.currentTarget.value.length === 0) return;\n updateCurrentMonth?.(e.currentTarget.value);\n }}\n />\n </div>\n\n <div className=\"mt-2 grid grid-cols-7 gap-1\">\n {DAYS_OF_WEEK.map((day) => (\n <div\n key={day}\n className={cn(\n \"h-[22px] text-center text-sf-subtle\",\n sizeConfig.cellWidth,\n sizeConfig.textSize\n )}\n >\n {day}\n </div>\n ))}\n </div>\n </div>\n );\n}\n\nfunction DateRangeFooter({\n timezone,\n size = SF_DATE_RANGE_PICKER_DEFAULT_VARIANTS.size,\n reset,\n}: {\n timezone?: string;\n size?: SFDateRangePickerSize;\n reset?: () => void;\n}) {\n const sizeConfig = getSizeConfig(size);\n\n return (\n <div\n className={cn(\n \"flex items-center gap-2 text-sf-strong\",\n sizeConfig.textSize\n )}\n >\n <GlobeHemisphereWestIcon size={sizeConfig.iconSize} />\n <span className=\"flex-1\">Timezone: {timezone}</span>\n <button\n type=\"button\"\n onClick={reset}\n className=\"cursor-pointer font-semibold text-sf-default underline underline-offset-2\"\n >\n Reset Dates\n </button>\n </div>\n );\n}\n\n// Default export for backwards compatibility\n/**\n * @deprecated Use {@link DatePicker} with `mode=\"range\"` instead.\n */\nexport default DateRangePicker;\n"],"mappings":"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"}
@@ -0,0 +1,104 @@
1
+ "use client";
2
+ import { t as cn } from "./cn-YROP2_ox.js";
3
+ import { t as Surface } from "./surface-BduI7Ehl.js";
4
+ import { jsx, jsxs } from "react/jsx-runtime";
5
+ import { Dialog } from "@base-ui/react/dialog";
6
+ //#region src/components/dialog/dialog.tsx
7
+ /** Dialog size variant definitions mapping sizes to their minimum widths. */
8
+ var SF_DIALOG_VARIANTS = { size: {
9
+ base: {
10
+ classes: "sm:min-w-96",
11
+ description: "Default dialog width"
12
+ },
13
+ sm: {
14
+ classes: "min-w-72",
15
+ description: "Small dialog for simple confirmations"
16
+ },
17
+ lg: {
18
+ classes: "min-w-[32rem]",
19
+ description: "Large dialog for complex content"
20
+ },
21
+ xl: {
22
+ classes: "min-w-[48rem]",
23
+ description: "Extra large dialog for detailed views"
24
+ }
25
+ } };
26
+ var SF_DIALOG_DEFAULT_VARIANTS = { size: "base" };
27
+ function dialogVariants({ size = SF_DIALOG_DEFAULT_VARIANTS.size } = {}) {
28
+ return cn("shadow-m fixed top-1/2 left-1/2 w-full sm:w-auto max-w-[calc(100vw-2rem)] sm:max-w-[calc(100vw-3rem)] -translate-x-1/2 -translate-y-1/2 overflow-hidden rounded-xl bg-sf-elevated text-sf-default p-6 duration-150 data-ending-style:scale-90 data-ending-style:opacity-0 data-starting-style:scale-90 data-starting-style:opacity-0", SF_DIALOG_VARIANTS.size[size].classes);
29
+ }
30
+ /**
31
+ * Modal dialog overlay with backdrop. Compound component with `Dialog.Root`,
32
+ * `Dialog.Trigger`, `Dialog.Title`, `Dialog.Description`, and `Dialog.Close`.
33
+ *
34
+ * @example
35
+ * ```tsx
36
+ * <Dialog.Root>
37
+ * <Dialog.Trigger render={(p) => <Button {...p}>Delete</Button>} />
38
+ * <Dialog>
39
+ * <Dialog.Title>Delete Item</Dialog.Title>
40
+ * <Dialog.Description>This action cannot be undone.</Dialog.Description>
41
+ * <Dialog.Close render={(p) => <Button variant="destructive" {...p}>Delete</Button>} />
42
+ * </Dialog>
43
+ * </Dialog.Root>
44
+ * ```
45
+ */
46
+ function DialogContent({ className, children, style, size = SF_DIALOG_DEFAULT_VARIANTS.size }) {
47
+ return /* @__PURE__ */ jsxs(Dialog.Portal, { children: [/* @__PURE__ */ jsx(Dialog.Backdrop, { className: "fixed inset-0 bg-sf-overlay opacity-80 transition-all duration-150 data-ending-style:opacity-0 data-starting-style:opacity-0" }), /* @__PURE__ */ jsx(Surface, {
48
+ as: Dialog.Popup,
49
+ className: cn(dialogVariants({ size }), className),
50
+ style: {
51
+ transitionProperty: "scale, opacity",
52
+ transitionTimingFunction: "var(--default-transition-timing-function)",
53
+ "--tw-shadow": "0 20px 25px -5px rgb(0 0 0 / 0.03), 0 8px 10px -6px rgb(0 0 0 / 0.03)",
54
+ ...style
55
+ },
56
+ children
57
+ })] });
58
+ }
59
+ function DialogRoot({ children, ...props }) {
60
+ return /* @__PURE__ */ jsx(Dialog.Root, {
61
+ ...props,
62
+ children
63
+ });
64
+ }
65
+ DialogRoot.displayName = "Dialog.Root";
66
+ function DialogTrigger({ children, ...props }) {
67
+ return /* @__PURE__ */ jsx(Dialog.Trigger, {
68
+ ...props,
69
+ children
70
+ });
71
+ }
72
+ DialogTrigger.displayName = "Dialog.Trigger";
73
+ function DialogTitle({ className, ...props }) {
74
+ return /* @__PURE__ */ jsx(Dialog.Title, {
75
+ className: cn("text-xl font-semibold text-sf-default", className),
76
+ ...props
77
+ });
78
+ }
79
+ DialogTitle.displayName = "Dialog.Title";
80
+ function DialogDescription({ className, ...props }) {
81
+ return /* @__PURE__ */ jsx(Dialog.Description, {
82
+ className: cn("text-sm text-sf-subtle", className),
83
+ ...props
84
+ });
85
+ }
86
+ DialogDescription.displayName = "Dialog.Description";
87
+ function DialogClose({ children, ...props }) {
88
+ return /* @__PURE__ */ jsx(Dialog.Close, {
89
+ ...props,
90
+ children
91
+ });
92
+ }
93
+ DialogClose.displayName = "Dialog.Close";
94
+ var Dialog$1 = Object.assign(DialogContent, {
95
+ Root: DialogRoot,
96
+ Trigger: DialogTrigger,
97
+ Title: DialogTitle,
98
+ Description: DialogDescription,
99
+ Close: DialogClose
100
+ });
101
+ //#endregion
102
+ export { DialogTitle as a, DialogRoot as i, DialogClose as n, DialogTrigger as o, DialogDescription as r, Dialog$1 as t };
103
+
104
+ //# sourceMappingURL=dialog-CyHEQXEY.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dialog-CyHEQXEY.js","names":[],"sources":["../src/components/dialog/dialog.tsx"],"sourcesContent":["import { Dialog as DialogBase } from \"@base-ui/react/dialog\";\nimport type { ComponentPropsWithoutRef, CSSProperties, ReactNode } from \"react\";\n\nimport { cn } from \"../../utils/cn\";\nimport { Surface } from \"../surface\";\n\n/** Dialog size variant definitions mapping sizes to their minimum widths. */\nexport const SF_DIALOG_VARIANTS = {\n size: {\n base: {\n classes: \"sm:min-w-96\",\n description: \"Default dialog width\",\n },\n sm: {\n classes: \"min-w-72\",\n description: \"Small dialog for simple confirmations\",\n },\n lg: {\n classes: \"min-w-[32rem]\",\n description: \"Large dialog for complex content\",\n },\n xl: {\n classes: \"min-w-[48rem]\",\n description: \"Extra large dialog for detailed views\",\n },\n },\n} as const;\n\nexport const SF_DIALOG_DEFAULT_VARIANTS = {\n size: \"base\",\n} as const;\n\nexport const SF_DIALOG_STYLING = {\n dimensions: {\n sm: {\n width: 350,\n titleSize: 20,\n descSize: 16,\n padding: 16,\n gap: 8,\n buttonSize: \"sm\",\n },\n base: {\n width: 384,\n titleSize: 20,\n descSize: 16,\n padding: 24,\n gap: 16,\n buttonSize: \"base\",\n },\n lg: {\n width: 512,\n titleSize: 20,\n descSize: 16,\n padding: 24,\n gap: 16,\n buttonSize: \"base\",\n },\n xl: {\n width: 768,\n titleSize: 20,\n descSize: 16,\n padding: 24,\n gap: 16,\n buttonSize: \"base\",\n },\n },\n baseTokens: {\n background: \"color-surface\",\n text: \"text-color-surface\",\n borderRadius: 12,\n shadow: \"shadow-m\",\n },\n backdrop: {\n background: \"color-surface-secondary\",\n opacity: 0.8,\n },\n header: {\n title: { fontWeight: 600, color: \"text-color-surface\" },\n closeIcon: { name: \"ph-x\", size: 20, color: \"text-color-muted\" },\n },\n description: {\n fontWeight: 400,\n color: \"text-color-muted\",\n },\n buttons: {\n primary: { background: \"color-primary\", text: \"white\" },\n secondary: { ring: \"color-border\", text: \"text-color-surface\" },\n },\n} as const;\n\n// Derived types from SF_DIALOG_VARIANTS\nexport type SFDialogSize = keyof typeof SF_DIALOG_VARIANTS.size;\n\nexport interface SFDialogVariantsProps {\n /**\n * Dialog width.\n * - `\"sm\"` — Small (min 288px) for simple confirmations\n * - `\"base\"` — Default (min 384px)\n * - `\"lg\"` — Large (min 512px) for complex content\n * - `\"xl\"` — Extra large (min 768px) for detailed views\n * @default \"base\"\n */\n size?: SFDialogSize;\n}\n\nexport function dialogVariants({\n size = SF_DIALOG_DEFAULT_VARIANTS.size,\n}: SFDialogVariantsProps = {}) {\n return cn(\n // Base styles (includes default padding)\n \"shadow-m fixed top-1/2 left-1/2 w-full sm:w-auto max-w-[calc(100vw-2rem)] sm:max-w-[calc(100vw-3rem)] -translate-x-1/2 -translate-y-1/2 overflow-hidden rounded-xl bg-sf-elevated text-sf-default p-6 duration-150 data-ending-style:scale-90 data-ending-style:opacity-0 data-starting-style:scale-90 data-starting-style:opacity-0\",\n // Apply size from SF_DIALOG_VARIANTS\n SF_DIALOG_VARIANTS.size[size].classes\n );\n}\n\n/**\n * Dialog component props — the modal content panel.\n *\n * @example\n * ```tsx\n * <Dialog.Root>\n * <Dialog.Trigger render={(p) => <Button {...p}>Open</Button>} />\n * <Dialog>\n * <Dialog.Title>Confirm Action</Dialog.Title>\n * <Dialog.Description>Are you sure?</Dialog.Description>\n * <Dialog.Close render={(p) => <Button {...p}>Cancel</Button>} />\n * </Dialog>\n * </Dialog.Root>\n * ```\n */\nexport type DialogProps = SFDialogVariantsProps & {\n /** Additional CSS classes merged via `cn()`. */\n className?: string;\n /** Dialog content (typically Title, Description, Close, and action buttons). */\n children: ReactNode;\n /** Inline styles. */\n style?: CSSProperties;\n};\n\n/**\n * Modal dialog overlay with backdrop. Compound component with `Dialog.Root`,\n * `Dialog.Trigger`, `Dialog.Title`, `Dialog.Description`, and `Dialog.Close`.\n *\n * @example\n * ```tsx\n * <Dialog.Root>\n * <Dialog.Trigger render={(p) => <Button {...p}>Delete</Button>} />\n * <Dialog>\n * <Dialog.Title>Delete Item</Dialog.Title>\n * <Dialog.Description>This action cannot be undone.</Dialog.Description>\n * <Dialog.Close render={(p) => <Button variant=\"destructive\" {...p}>Delete</Button>} />\n * </Dialog>\n * </Dialog.Root>\n * ```\n */\nfunction DialogContent({\n className,\n children,\n style,\n size = SF_DIALOG_DEFAULT_VARIANTS.size,\n}: DialogProps) {\n return (\n <DialogBase.Portal>\n <DialogBase.Backdrop className=\"fixed inset-0 bg-sf-overlay opacity-80 transition-all duration-150 data-ending-style:opacity-0 data-starting-style:opacity-0\" />\n <Surface\n as={DialogBase.Popup}\n className={cn(dialogVariants({ size }), className)}\n style={\n {\n transitionProperty: \"scale, opacity\",\n transitionTimingFunction:\n \"var(--default-transition-timing-function)\",\n \"--tw-shadow\":\n \"0 20px 25px -5px rgb(0 0 0 / 0.03), 0 8px 10px -6px rgb(0 0 0 / 0.03)\",\n ...style,\n } as CSSProperties\n }\n >\n {children}\n </Surface>\n </DialogBase.Portal>\n );\n}\n\n// ============================================================================\n// Dialog Root\n// ============================================================================\n\ntype BaseDialogRootProps = ComponentPropsWithoutRef<typeof DialogBase.Root>;\n\nexport type DialogRootProps = BaseDialogRootProps;\n\nfunction DialogRoot({ children, ...props }: DialogRootProps) {\n return <DialogBase.Root {...props}>{children}</DialogBase.Root>;\n}\n\nDialogRoot.displayName = \"Dialog.Root\";\n\n// ============================================================================\n// Dialog Trigger\n// ============================================================================\n\ntype BaseDialogTriggerProps = ComponentPropsWithoutRef<\n typeof DialogBase.Trigger\n>;\n\nexport type DialogTriggerProps = BaseDialogTriggerProps;\n\nfunction DialogTrigger({ children, ...props }: DialogTriggerProps) {\n return <DialogBase.Trigger {...props}>{children}</DialogBase.Trigger>;\n}\n\nDialogTrigger.displayName = \"Dialog.Trigger\";\n\n// ============================================================================\n// Dialog Title\n// ============================================================================\n\ntype BaseDialogTitleProps = ComponentPropsWithoutRef<typeof DialogBase.Title>;\n\nexport type DialogTitleProps = BaseDialogTitleProps;\n\nfunction DialogTitle({ className, ...props }: DialogTitleProps) {\n return (\n <DialogBase.Title\n className={cn(\"text-xl font-semibold text-sf-default\", className)}\n {...props}\n />\n );\n}\n\nDialogTitle.displayName = \"Dialog.Title\";\n\n// ============================================================================\n// Dialog Description\n// ============================================================================\n\ntype BaseDialogDescriptionProps = ComponentPropsWithoutRef<\n typeof DialogBase.Description\n>;\n\nexport type DialogDescriptionProps = BaseDialogDescriptionProps;\n\nfunction DialogDescription({ className, ...props }: DialogDescriptionProps) {\n return (\n <DialogBase.Description\n className={cn(\"text-sm text-sf-subtle\", className)}\n {...props}\n />\n );\n}\n\nDialogDescription.displayName = \"Dialog.Description\";\n\n// ============================================================================\n// Dialog Close\n// ============================================================================\n\ntype BaseDialogCloseProps = ComponentPropsWithoutRef<typeof DialogBase.Close>;\n\nexport type DialogCloseProps = BaseDialogCloseProps;\n\nfunction DialogClose({ children, ...props }: DialogCloseProps) {\n return <DialogBase.Close {...props}>{children}</DialogBase.Close>;\n}\n\nDialogClose.displayName = \"Dialog.Close\";\n\n// ============================================================================\n// Compound Component Export\n// ============================================================================\n\nconst Dialog = Object.assign(DialogContent, {\n Root: DialogRoot,\n Trigger: DialogTrigger,\n Title: DialogTitle,\n Description: DialogDescription,\n Close: DialogClose,\n});\n\nexport {\n Dialog,\n DialogRoot,\n DialogTrigger,\n DialogTitle,\n DialogDescription,\n DialogClose,\n};\n"],"mappings":";;;;;;;AAOA,IAAa,qBAAqB,EAChC,MAAM;CACJ,MAAM;EACJ,SAAS;EACT,aAAa;EACd;CACD,IAAI;EACF,SAAS;EACT,aAAa;EACd;CACD,IAAI;EACF,SAAS;EACT,aAAa;EACd;CACD,IAAI;EACF,SAAS;EACT,aAAa;EACd;CACF,EACF;AAED,IAAa,6BAA6B,EACxC,MAAM,QACP;AA4ED,SAAgB,eAAe,EAC7B,OAAO,2BAA2B,SACT,EAAE,EAAE;AAC7B,QAAO,GAEL,wUAEA,mBAAmB,KAAK,MAAM,QAC/B;;;;;;;;;;;;;;;;;;AA2CH,SAAS,cAAc,EACrB,WACA,UACA,OACA,OAAO,2BAA2B,QACpB;AACd,QACE,qBAAC,OAAW,QAAZ,EAAA,UAAA,CACE,oBAAC,OAAW,UAAZ,EAAqB,WAAU,gIAAiI,CAAA,EAChK,oBAAC,SAAD;EACE,IAAI,OAAW;EACf,WAAW,GAAG,eAAe,EAAE,MAAM,CAAC,EAAE,UAAU;EAClD,OACE;GACE,oBAAoB;GACpB,0BACE;GACF,eACE;GACF,GAAG;GACJ;EAGF;EACO,CAAA,CACQ,EAAA,CAAA;;AAYxB,SAAS,WAAW,EAAE,UAAU,GAAG,SAA0B;AAC3D,QAAO,oBAAC,OAAW,MAAZ;EAAiB,GAAI;EAAQ;EAA2B,CAAA;;AAGjE,WAAW,cAAc;AAYzB,SAAS,cAAc,EAAE,UAAU,GAAG,SAA6B;AACjE,QAAO,oBAAC,OAAW,SAAZ;EAAoB,GAAI;EAAQ;EAA8B,CAAA;;AAGvE,cAAc,cAAc;AAU5B,SAAS,YAAY,EAAE,WAAW,GAAG,SAA2B;AAC9D,QACE,oBAAC,OAAW,OAAZ;EACE,WAAW,GAAG,yCAAyC,UAAU;EACjE,GAAI;EACJ,CAAA;;AAIN,YAAY,cAAc;AAY1B,SAAS,kBAAkB,EAAE,WAAW,GAAG,SAAiC;AAC1E,QACE,oBAAC,OAAW,aAAZ;EACE,WAAW,GAAG,0BAA0B,UAAU;EAClD,GAAI;EACJ,CAAA;;AAIN,kBAAkB,cAAc;AAUhC,SAAS,YAAY,EAAE,UAAU,GAAG,SAA2B;AAC7D,QAAO,oBAAC,OAAW,OAAZ;EAAkB,GAAI;EAAQ;EAA4B,CAAA;;AAGnE,YAAY,cAAc;AAM1B,IAAM,WAAS,OAAO,OAAO,eAAe;CAC1C,MAAM;CACN,SAAS;CACT,OAAO;CACP,aAAa;CACb,OAAO;CACR,CAAC"}