@signalflare-ai/ui 0.5.0 → 1.0.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 (316) hide show
  1. package/CHANGELOG.md +117 -1
  2. package/ai/USAGE.md +64 -0
  3. package/ai/component-registry.json +492 -618
  4. package/ai/component-registry.md +167 -85
  5. package/ai/schemas.ts +545 -102
  6. package/bin/sf.js +2 -3
  7. package/dist/.build-complete +1 -1
  8. package/dist/ai/schemas.d.ts +1659 -5532
  9. package/dist/ai/schemas.d.ts.map +1 -1
  10. package/dist/{ai-actions-DG1dhDMP.js → ai-actions-DSVeQn4e.js} +1 -1
  11. package/dist/{ai-actions-DG1dhDMP.js.map → ai-actions-DSVeQn4e.js.map} +1 -1
  12. package/dist/{ai-agent-card-BbtL4NII.js → ai-agent-card-BXHwhWAU.js} +1 -1
  13. package/dist/{ai-agent-card-BbtL4NII.js.map → ai-agent-card-BXHwhWAU.js.map} +1 -1
  14. package/dist/{ai-approval-Mb7-BY6i.js → ai-approval-aa0qvjFN.js} +1 -1
  15. package/dist/{ai-approval-Mb7-BY6i.js.map → ai-approval-aa0qvjFN.js.map} +1 -1
  16. package/dist/{ai-code-block-BI_z0UVR.js → ai-code-block-BgtIxtZZ.js} +1 -1
  17. package/dist/{ai-code-block-BI_z0UVR.js.map → ai-code-block-BgtIxtZZ.js.map} +1 -1
  18. package/dist/{ai-conversation-DYtExcrw.js → ai-conversation-CArP7C8K.js} +1 -1
  19. package/dist/{ai-conversation-DYtExcrw.js.map → ai-conversation-CArP7C8K.js.map} +1 -1
  20. package/dist/{ai-info-banner-BpzauUAY.js → ai-info-banner-uFxHHwBA.js} +1 -1
  21. package/dist/{ai-info-banner-BpzauUAY.js.map → ai-info-banner-uFxHHwBA.js.map} +1 -1
  22. package/dist/{ai-message-CV8SBoHM.js → ai-message-BjnFznXy.js} +1 -1
  23. package/dist/{ai-message-CV8SBoHM.js.map → ai-message-BjnFznXy.js.map} +1 -1
  24. package/dist/{ai-mission-header-ByYkJ6YP.js → ai-mission-header-08__gULL.js} +1 -1
  25. package/dist/{ai-mission-header-ByYkJ6YP.js.map → ai-mission-header-08__gULL.js.map} +1 -1
  26. package/dist/ai-part-group-DBtgTgAn.js +277 -0
  27. package/dist/ai-part-group-DBtgTgAn.js.map +1 -0
  28. package/dist/ai-prompt-input-Dy1LfxPk.js +1541 -0
  29. package/dist/ai-prompt-input-Dy1LfxPk.js.map +1 -0
  30. package/dist/{ai-question-Dp1g9k2o.js → ai-question-CHHoDJMg.js} +1 -1
  31. package/dist/{ai-question-Dp1g9k2o.js.map → ai-question-CHHoDJMg.js.map} +1 -1
  32. package/dist/{ai-reasoning-UAmNx_LD.js → ai-reasoning-CnL6ZSr5.js} +84 -5
  33. package/dist/ai-reasoning-CnL6ZSr5.js.map +1 -0
  34. package/dist/{ai-response-BWoVsNQG.js → ai-response-BEUg3xvd.js} +13 -16
  35. package/dist/ai-response-BEUg3xvd.js.map +1 -0
  36. package/dist/{ai-shimmer-BpOmfonu.js → ai-shimmer-By5_L05p.js} +1 -1
  37. package/dist/{ai-shimmer-BpOmfonu.js.map → ai-shimmer-By5_L05p.js.map} +1 -1
  38. package/dist/{ai-status-badge-WhbKVeqn.js → ai-status-badge-BGYGWYF6.js} +1 -1
  39. package/dist/{ai-status-badge-WhbKVeqn.js.map → ai-status-badge-BGYGWYF6.js.map} +1 -1
  40. package/dist/{ai-streaming-text-ClL7FwvD.js → ai-streaming-text-CMfoThV0.js} +1 -1
  41. package/dist/{ai-streaming-text-ClL7FwvD.js.map → ai-streaming-text-CMfoThV0.js.map} +1 -1
  42. package/dist/{ai-subagent-BruGN1UE.js → ai-subagent-DcPRqkAA.js} +1 -1
  43. package/dist/{ai-subagent-BruGN1UE.js.map → ai-subagent-DcPRqkAA.js.map} +1 -1
  44. package/dist/{ai-suggestion-CNsCZj5P.js → ai-suggestion-MgeCg5Ar.js} +1 -1
  45. package/dist/{ai-suggestion-CNsCZj5P.js.map → ai-suggestion-MgeCg5Ar.js.map} +1 -1
  46. package/dist/{ai-task-list-B9CpMDYN.js → ai-task-list-Da9zIm00.js} +9 -12
  47. package/dist/ai-task-list-Da9zIm00.js.map +1 -0
  48. package/dist/{ai-timeline-Bb5ntsr3.js → ai-timeline-Cwu045IR.js} +1 -1
  49. package/dist/ai-timeline-Cwu045IR.js.map +1 -0
  50. package/dist/{ai-tool-BGH8nQ_D.js → ai-tool-Cn1O4xjP.js} +168 -11
  51. package/dist/ai-tool-Cn1O4xjP.js.map +1 -0
  52. package/dist/{ai-usage-bar-BI-p-JBk.js → ai-usage-bar-DjS12DMp.js} +1 -1
  53. package/dist/{ai-usage-bar-BI-p-JBk.js.map → ai-usage-bar-DjS12DMp.js.map} +1 -1
  54. package/dist/catalog.js +3 -3
  55. package/dist/catalog.js.map +1 -1
  56. package/dist/{chart-Bes4MN3C.js → chart-BK3sVPnD.js} +442 -248
  57. package/dist/chart-BK3sVPnD.js.map +1 -0
  58. package/dist/{checkbox-CPX7lBaU.js → checkbox-DYhUmZNw.js} +4 -4
  59. package/dist/checkbox-DYhUmZNw.js.map +1 -0
  60. package/dist/{clipboard-text-92YeCybc.js → clipboard-text-ssybngLw.js} +2 -2
  61. package/dist/{clipboard-text-92YeCybc.js.map → clipboard-text-ssybngLw.js.map} +1 -1
  62. package/dist/{code-DE1Yy1Cu.js → code-Cx-QSoOT.js} +2 -2
  63. package/dist/{code-DE1Yy1Cu.js.map → code-Cx-QSoOT.js.map} +1 -1
  64. package/dist/{combobox-B0bLdsX8.js → combobox-C0iW6a0r.js} +2 -2
  65. package/dist/{combobox-B0bLdsX8.js.map → combobox-C0iW6a0r.js.map} +1 -1
  66. package/dist/command-line/cli.js +22 -27
  67. package/dist/{command-palette-CBTY8EiF.js → command-palette-DGzioeki.js} +2 -2
  68. package/dist/command-palette-DGzioeki.js.map +1 -0
  69. package/dist/components/ai-actions.js +1 -1
  70. package/dist/components/ai-agent-card.js +1 -1
  71. package/dist/components/ai-approval.js +1 -1
  72. package/dist/components/ai-code-block.js +1 -1
  73. package/dist/components/ai-conversation.js +1 -1
  74. package/dist/components/ai-info-banner.js +1 -1
  75. package/dist/components/ai-message.js +1 -1
  76. package/dist/components/ai-mission-header.js +1 -1
  77. package/dist/components/ai-part-group.js +3 -0
  78. package/dist/components/ai-prompt-input.js +2 -2
  79. package/dist/components/ai-question.js +1 -1
  80. package/dist/components/ai-reasoning.js +1 -1
  81. package/dist/components/ai-response.js +1 -1
  82. package/dist/components/ai-shimmer.js +1 -1
  83. package/dist/components/ai-status-badge.js +1 -1
  84. package/dist/components/ai-streaming-text.js +1 -1
  85. package/dist/components/ai-subagent.js +1 -1
  86. package/dist/components/ai-suggestion.js +1 -1
  87. package/dist/components/ai-task-list.js +1 -1
  88. package/dist/components/ai-timeline.js +1 -1
  89. package/dist/components/ai-tool.js +1 -1
  90. package/dist/components/ai-usage-bar.js +1 -1
  91. package/dist/components/chart.js +3 -2
  92. package/dist/components/checkbox.js +1 -1
  93. package/dist/components/clipboard-text.js +1 -1
  94. package/dist/components/code.js +1 -1
  95. package/dist/components/combobox.js +1 -1
  96. package/dist/components/command-palette.js +1 -1
  97. package/dist/components/data-grid.js +1 -1
  98. package/dist/components/date-picker.js +1 -1
  99. package/dist/components/dropdown.js +1 -1
  100. package/dist/components/filters.js +1 -1
  101. package/dist/components/input.js +2 -2
  102. package/dist/components/link.js +2 -2
  103. package/dist/components/link.js.map +1 -1
  104. package/dist/components/pagination.js +1 -1
  105. package/dist/components/radio.js +1 -1
  106. package/dist/components/select.js +1 -1
  107. package/dist/components/sensitive-input.js +1 -1
  108. package/dist/components/sidebar.js +1 -1
  109. package/dist/components/sparkline.js +3 -0
  110. package/dist/components/stat-card.js +3 -0
  111. package/dist/components/table.js +1 -1
  112. package/dist/components/text-roll.js +3 -0
  113. package/dist/components/theme-toggle.js +1 -1
  114. package/dist/components/use-agent-harness.js +1 -1
  115. package/dist/{data-grid-UJ9ja5cu.js → data-grid-CG76N_hK.js} +6 -6
  116. package/dist/data-grid-CG76N_hK.js.map +1 -0
  117. package/dist/{date-picker-ebekkC3R.js → date-picker-Dqg9L4xu.js} +2 -2
  118. package/dist/{date-picker-ebekkC3R.js.map → date-picker-Dqg9L4xu.js.map} +1 -1
  119. package/dist/{dist-BNlyONdD.js → dist-1-gcEL2L.js} +224 -135
  120. package/dist/dist-1-gcEL2L.js.map +1 -0
  121. package/dist/{dropdown-J5T4pHaR.js → dropdown-qnEYRFXZ.js} +2 -2
  122. package/dist/{dropdown-J5T4pHaR.js.map → dropdown-qnEYRFXZ.js.map} +1 -1
  123. package/dist/echart-DURZEyai.js +314 -0
  124. package/dist/echart-DURZEyai.js.map +1 -0
  125. package/dist/{filters-BdBogf7D.js → filters-Bw_U6ZTx.js} +5 -5
  126. package/dist/filters-Bw_U6ZTx.js.map +1 -0
  127. package/dist/flow-BRsYUCJa.js.map +1 -1
  128. package/dist/genui.js +2 -2
  129. package/dist/genui.js.map +1 -1
  130. package/dist/index.js +45 -42
  131. package/dist/index.js.map +1 -1
  132. package/dist/{input-BxQAnXki.js → input-DXYUjGgD.js} +2 -2
  133. package/dist/{input-BxQAnXki.js.map → input-DXYUjGgD.js.map} +1 -1
  134. package/dist/{input-Cn25I4o5.js → input-DddtBN-g.js} +2 -2
  135. package/dist/{input-Cn25I4o5.js.map → input-DddtBN-g.js.map} +1 -1
  136. package/dist/layer-card-BME0eljh.js.map +1 -1
  137. package/dist/{pagination-C_YqCy8l.js → pagination-BVqdlONY.js} +2 -2
  138. package/dist/{pagination-C_YqCy8l.js.map → pagination-BVqdlONY.js.map} +1 -1
  139. package/dist/primitives/otp-field.js +2 -0
  140. package/dist/primitives.js +1 -0
  141. package/dist/{radio-B7zg1wUI.js → radio-BNSwOt3B.js} +3 -3
  142. package/dist/radio-BNSwOt3B.js.map +1 -0
  143. package/dist/{select-9p721G00.js → select-1w2aebGQ.js} +2 -2
  144. package/dist/select-1w2aebGQ.js.map +1 -0
  145. package/dist/{sensitive-input-D5je2NLl.js → sensitive-input-82Cez3vj.js} +2 -2
  146. package/dist/{sensitive-input-D5je2NLl.js.map → sensitive-input-82Cez3vj.js.map} +1 -1
  147. package/dist/{sidebar-DOwBrq57.js → sidebar-CAsCmSpM.js} +3 -3
  148. package/dist/sidebar-CAsCmSpM.js.map +1 -0
  149. package/dist/sparkline-DdbeM4Ai.js +108 -0
  150. package/dist/sparkline-DdbeM4Ai.js.map +1 -0
  151. package/dist/src/blocks/agent-harness/agent-harness.d.ts +30 -9
  152. package/dist/src/blocks/agent-harness/agent-harness.d.ts.map +1 -1
  153. package/dist/src/blocks/agent-harness/agent-harness.stories.tsx +114 -0
  154. package/dist/src/blocks/agent-harness/agent-harness.tsx +144 -63
  155. package/dist/src/blocks/commander/commander.stories.tsx +31 -0
  156. package/dist/src/blocks/dashboard-grid/dashboard-grid.d.ts +48 -0
  157. package/dist/src/blocks/dashboard-grid/dashboard-grid.d.ts.map +1 -0
  158. package/dist/src/blocks/dashboard-grid/dashboard-grid.stories.tsx +19 -0
  159. package/dist/src/blocks/dashboard-grid/dashboard-grid.tsx +110 -0
  160. package/dist/src/blocks/dashboard-grid/index.d.ts +2 -0
  161. package/dist/src/blocks/dashboard-grid/index.d.ts.map +1 -0
  162. package/dist/src/blocks/delete-resource/delete-resource.stories.tsx +31 -0
  163. package/dist/src/blocks/map-block/map-block.stories.tsx +41 -0
  164. package/dist/src/blocks/metrics-overview/index.d.ts +2 -0
  165. package/dist/src/blocks/metrics-overview/index.d.ts.map +1 -0
  166. package/dist/src/blocks/metrics-overview/metrics-overview.d.ts +67 -0
  167. package/dist/src/blocks/metrics-overview/metrics-overview.d.ts.map +1 -0
  168. package/dist/src/blocks/metrics-overview/metrics-overview.stories.tsx +26 -0
  169. package/dist/src/blocks/metrics-overview/metrics-overview.tsx +139 -0
  170. package/dist/src/blocks/page-header/page-header.stories.tsx +56 -0
  171. package/dist/src/blocks/resource-list/resource-list.stories.tsx +31 -0
  172. package/dist/src/catalog/catalog.d.ts +1 -1
  173. package/dist/src/catalog/index.d.ts +1 -1
  174. package/dist/src/catalog/types.d.ts +1 -1
  175. package/dist/src/command-line/build-cli.d.ts +1 -1
  176. package/dist/src/command-line/cli.d.ts +1 -1
  177. package/dist/src/command-line/commands/add.d.ts +1 -1
  178. package/dist/src/command-line/commands/add.d.ts.map +1 -1
  179. package/dist/src/command-line/commands/ai.d.ts.map +1 -1
  180. package/dist/src/command-line/commands/blocks.d.ts +1 -1
  181. package/dist/src/command-line/commands/blocks.d.ts.map +1 -1
  182. package/dist/src/command-line/commands/doc.d.ts +1 -1
  183. package/dist/src/command-line/commands/doc.d.ts.map +1 -1
  184. package/dist/src/command-line/commands/ls.d.ts +1 -1
  185. package/dist/src/command-line/commands/ls.d.ts.map +1 -1
  186. package/dist/src/command-line/commands/migrate.d.ts +3 -3
  187. package/dist/src/command-line/commands/migrate.d.ts.map +1 -1
  188. package/dist/src/command-line/utils/config.d.ts +1 -1
  189. package/dist/src/command-line/utils/transformer.d.ts +1 -1
  190. package/dist/src/components/ai-part-group/ai-part-group.d.ts +134 -0
  191. package/dist/src/components/ai-part-group/ai-part-group.d.ts.map +1 -0
  192. package/dist/src/components/ai-part-group/index.d.ts +2 -0
  193. package/dist/src/components/ai-part-group/index.d.ts.map +1 -0
  194. package/dist/src/components/ai-prompt-input/ai-prompt-input.d.ts +196 -7
  195. package/dist/src/components/ai-prompt-input/ai-prompt-input.d.ts.map +1 -1
  196. package/dist/src/components/ai-prompt-input/controller.d.ts +41 -0
  197. package/dist/src/components/ai-prompt-input/controller.d.ts.map +1 -0
  198. package/dist/src/components/ai-prompt-input/index.d.ts +3 -1
  199. package/dist/src/components/ai-prompt-input/index.d.ts.map +1 -1
  200. package/dist/src/components/ai-prompt-input/types.d.ts +86 -0
  201. package/dist/src/components/ai-prompt-input/types.d.ts.map +1 -0
  202. package/dist/src/components/ai-reasoning/ai-reasoning.d.ts +17 -1
  203. package/dist/src/components/ai-reasoning/ai-reasoning.d.ts.map +1 -1
  204. package/dist/src/components/ai-response/ai-response.d.ts +1 -2
  205. package/dist/src/components/ai-response/ai-response.d.ts.map +1 -1
  206. package/dist/src/components/ai-task-list/ai-task-list.d.ts.map +1 -1
  207. package/dist/src/components/ai-tool/ai-tool.d.ts +17 -1
  208. package/dist/src/components/ai-tool/ai-tool.d.ts.map +1 -1
  209. package/dist/src/components/chart/area-chart.d.ts +69 -0
  210. package/dist/src/components/chart/area-chart.d.ts.map +1 -0
  211. package/dist/src/components/chart/bar-chart.d.ts +60 -0
  212. package/dist/src/components/chart/bar-chart.d.ts.map +1 -0
  213. package/dist/src/components/chart/color.d.ts +56 -0
  214. package/dist/src/components/chart/color.d.ts.map +1 -1
  215. package/dist/src/components/chart/echart.d.ts.map +1 -1
  216. package/dist/src/components/chart/index.d.ts +5 -0
  217. package/dist/src/components/chart/index.d.ts.map +1 -1
  218. package/dist/src/components/chart/pie-chart.d.ts +64 -0
  219. package/dist/src/components/chart/pie-chart.d.ts.map +1 -0
  220. package/dist/src/components/chart/scatter-chart.d.ts +57 -0
  221. package/dist/src/components/chart/scatter-chart.d.ts.map +1 -0
  222. package/dist/src/components/chart/stacked-bar-chart.d.ts +59 -0
  223. package/dist/src/components/chart/stacked-bar-chart.d.ts.map +1 -0
  224. package/dist/src/components/chart/timeseries-chart.d.ts.map +1 -1
  225. package/dist/src/components/code/code.d.ts +1 -1
  226. package/dist/src/components/command-palette/command-palette.d.ts +1 -1
  227. package/dist/src/components/data-grid/data-grid.d.ts.map +1 -1
  228. package/dist/src/components/data-grid/index.d.ts +1 -1
  229. package/dist/src/components/data-grid/index.d.ts.map +1 -1
  230. package/dist/src/components/data-grid/types.d.ts.map +1 -1
  231. package/dist/src/components/date-picker/date-picker.d.ts +2 -2
  232. package/dist/src/components/filters/filters.d.ts.map +1 -1
  233. package/dist/src/components/filters/helpers.d.ts.map +1 -1
  234. package/dist/src/components/filters/types.d.ts.map +1 -1
  235. package/dist/src/components/layer-card/layer-card.d.ts +1 -1
  236. package/dist/src/components/link/link.d.ts +2 -2
  237. package/dist/src/components/radio/radio.d.ts +1 -1
  238. package/dist/src/components/select/select.d.ts +1 -1
  239. package/dist/src/components/sidebar/sidebar.d.ts +2 -2
  240. package/dist/src/components/sparkline/index.d.ts +2 -0
  241. package/dist/src/components/sparkline/index.d.ts.map +1 -0
  242. package/dist/src/components/sparkline/sparkline.d.ts +52 -0
  243. package/dist/src/components/sparkline/sparkline.d.ts.map +1 -0
  244. package/dist/src/components/stat-card/index.d.ts +2 -0
  245. package/dist/src/components/{ai-loader → stat-card}/index.d.ts.map +1 -1
  246. package/dist/src/components/stat-card/stat-card.d.ts +80 -0
  247. package/dist/src/components/stat-card/stat-card.d.ts.map +1 -0
  248. package/dist/src/components/text-roll/index.d.ts +2 -0
  249. package/dist/src/components/text-roll/index.d.ts.map +1 -0
  250. package/dist/src/components/text-roll/text-roll.d.ts +49 -0
  251. package/dist/src/components/text-roll/text-roll.d.ts.map +1 -0
  252. package/dist/src/components/toast/toast.d.ts.map +1 -1
  253. package/dist/src/components/use-agent-harness/use-agent-harness.d.ts +2 -2
  254. package/dist/src/genui/genui.d.ts.map +1 -1
  255. package/dist/src/index.d.ts +5 -2
  256. package/dist/src/index.d.ts.map +1 -1
  257. package/dist/src/primitives/index.d.ts +1 -0
  258. package/dist/src/primitives/index.d.ts.map +1 -1
  259. package/dist/src/primitives/otp-field.d.ts +13 -0
  260. package/dist/src/primitives/otp-field.d.ts.map +1 -0
  261. package/dist/src/registry/index.d.ts +1 -1
  262. package/dist/src/registry/types.d.ts +1 -1
  263. package/dist/stat-card-CEZscNh8.js +103 -0
  264. package/dist/stat-card-CEZscNh8.js.map +1 -0
  265. package/dist/styles/sf-binding.css +20 -62
  266. package/dist/styles/sf-standalone.css +2 -2
  267. package/dist/styles/shadcn.css +120 -0
  268. package/dist/styles/theme-blue-tint.css +98 -0
  269. package/dist/styles/theme-fedramp.css +3 -12
  270. package/dist/styles/theme-minimal.css +26 -104
  271. package/dist/styles/theme-sf.css +96 -114
  272. package/dist/{table-CIMx0Oq0.js → table-Rv4JMy0B.js} +2 -2
  273. package/dist/{table-CIMx0Oq0.js.map → table-Rv4JMy0B.js.map} +1 -1
  274. package/dist/text-roll-BZ3I1umc.js +79 -0
  275. package/dist/text-roll-BZ3I1umc.js.map +1 -0
  276. package/dist/{theme-toggle-Dpgnoj_Q.js → theme-toggle-Bhu681D7.js} +1 -1
  277. package/dist/{theme-toggle-Dpgnoj_Q.js.map → theme-toggle-Bhu681D7.js.map} +1 -1
  278. package/dist/{use-agent-harness-DZzcn96L.js → use-agent-harness-BMyF8pTq.js} +5 -5
  279. package/dist/use-agent-harness-BMyF8pTq.js.map +1 -0
  280. package/package.json +48 -19
  281. package/scripts/component-registry/discovery.ts +2 -2
  282. package/scripts/component-registry/index.ts +1 -1
  283. package/scripts/component-registry/props-filter.ts +1 -1
  284. package/scripts/component-registry/utils.ts +5 -5
  285. package/scripts/component-registry/variant-parser.ts +124 -19
  286. package/scripts/convert-demos-to-stories.ts +253 -0
  287. package/scripts/css-build.ts +4 -3
  288. package/scripts/generate-primitives.ts +11 -3
  289. package/scripts/theme-generator/config.ts +339 -71
  290. package/scripts/theme-generator/generate-css.ts +17 -3
  291. package/scripts/theme-generator/index.ts +3 -3
  292. package/scripts/theme-generator/migrate.ts +1 -1
  293. package/dist/ai-loader-Cr3eQkNS.js +0 -134
  294. package/dist/ai-loader-Cr3eQkNS.js.map +0 -1
  295. package/dist/ai-prompt-input-Bo1YuJly.js +0 -769
  296. package/dist/ai-prompt-input-Bo1YuJly.js.map +0 -1
  297. package/dist/ai-reasoning-UAmNx_LD.js.map +0 -1
  298. package/dist/ai-response-BWoVsNQG.js.map +0 -1
  299. package/dist/ai-task-list-B9CpMDYN.js.map +0 -1
  300. package/dist/ai-timeline-Bb5ntsr3.js.map +0 -1
  301. package/dist/ai-tool-BGH8nQ_D.js.map +0 -1
  302. package/dist/chart-Bes4MN3C.js.map +0 -1
  303. package/dist/checkbox-CPX7lBaU.js.map +0 -1
  304. package/dist/command-palette-CBTY8EiF.js.map +0 -1
  305. package/dist/components/ai-loader.js +0 -3
  306. package/dist/data-grid-UJ9ja5cu.js.map +0 -1
  307. package/dist/dist-BNlyONdD.js.map +0 -1
  308. package/dist/filters-BdBogf7D.js.map +0 -1
  309. package/dist/radio-B7zg1wUI.js.map +0 -1
  310. package/dist/select-9p721G00.js.map +0 -1
  311. package/dist/sidebar-DOwBrq57.js.map +0 -1
  312. package/dist/src/components/ai-loader/ai-loader.d.ts +0 -44
  313. package/dist/src/components/ai-loader/ai-loader.d.ts.map +0 -1
  314. package/dist/src/components/ai-loader/index.d.ts +0 -2
  315. package/dist/styles/theme-navigator.css +0 -137
  316. package/dist/use-agent-harness-DZzcn96L.js.map +0 -1
@@ -0,0 +1,48 @@
1
+ import { HTMLAttributes, ReactNode } from 'react';
2
+ /** Column span within a 12-column `DashboardGrid`. */
3
+ export type DashboardCellSpan = 2 | 3 | 4 | 6 | 8 | 12;
4
+ /** Props for `DashboardGrid`. */
5
+ export interface DashboardGridProps extends HTMLAttributes<HTMLDivElement> {
6
+ /** Children cells / rows. */
7
+ children?: ReactNode;
8
+ /** Additional CSS classes merged via `cn()`. */
9
+ className?: string;
10
+ }
11
+ /**
12
+ * DashboardGrid — opinionated 12-column responsive grid for composing BI
13
+ * dashboards from KPI cards, charts, and tables.
14
+ *
15
+ * Cells stack to a single column below `md` and fall into 12-column slots
16
+ * at `md` and above.
17
+ *
18
+ * @example
19
+ * ```tsx
20
+ * <DashboardGrid>
21
+ * <DashboardGrid.Cell span={3}><StatCard ... /></DashboardGrid.Cell>
22
+ * <DashboardGrid.Cell span={3}><StatCard ... /></DashboardGrid.Cell>
23
+ * <DashboardGrid.Cell span={6}><TimeseriesChart ... /></DashboardGrid.Cell>
24
+ * </DashboardGrid>
25
+ * ```
26
+ */
27
+ export declare function DashboardGrid({ children, className, ...props }: DashboardGridProps): import("react/jsx-runtime").JSX.Element;
28
+ export declare namespace DashboardGrid {
29
+ var Row: ({ children, className, ...props }: DashboardGridRowProps) => import("react/jsx-runtime").JSX.Element;
30
+ var Cell: ({ span, children, className, ...props }: DashboardGridCellProps) => import("react/jsx-runtime").JSX.Element;
31
+ }
32
+ /** Props for `DashboardGrid.Row`. */
33
+ export interface DashboardGridRowProps extends HTMLAttributes<HTMLDivElement> {
34
+ /** Row children (cells). */
35
+ children?: ReactNode;
36
+ /** Additional CSS classes merged via `cn()`. */
37
+ className?: string;
38
+ }
39
+ /** Props for `DashboardGrid.Cell`. */
40
+ export interface DashboardGridCellProps extends HTMLAttributes<HTMLDivElement> {
41
+ /** Number of 12-column columns this cell spans at `md` and up. */
42
+ span?: DashboardCellSpan;
43
+ /** Cell content. */
44
+ children?: ReactNode;
45
+ /** Additional CSS classes merged via `cn()`. */
46
+ className?: string;
47
+ }
48
+ //# sourceMappingURL=dashboard-grid.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dashboard-grid.d.ts","sourceRoot":"","sources":["../../../../src/blocks/dashboard-grid/dashboard-grid.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIvD,sDAAsD;AACtD,MAAM,MAAM,iBAAiB,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;AAWvD,iCAAiC;AACjC,MAAM,WAAW,kBAAmB,SAAQ,cAAc,CAAC,cAAc,CAAC;IACxE,6BAA6B;IAC7B,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,gDAAgD;IAChD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,aAAa,CAAC,EAC5B,QAAQ,EACR,SAAS,EACT,GAAG,KAAK,EACT,EAAE,kBAAkB,2CAYpB;yBAhBe,aAAa;iDA+BmB,qBAAqB;wDA6BlE,sBAAsB;;AA1CzB,qCAAqC;AACrC,MAAM,WAAW,qBAAsB,SAAQ,cAAc,CAAC,cAAc,CAAC;IAC3E,4BAA4B;IAC5B,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,gDAAgD;IAChD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAqBD,sCAAsC;AACtC,MAAM,WAAW,sBAAuB,SAAQ,cAAc,CAAC,cAAc,CAAC;IAC5E,kEAAkE;IAClE,IAAI,CAAC,EAAE,iBAAiB,CAAC;IACzB,oBAAoB;IACpB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,gDAAgD;IAChD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB"}
@@ -0,0 +1,19 @@
1
+ import type { Meta, StoryObj } from "@storybook/react";
2
+
3
+ import { DashboardGridDemo as Demo_DashboardGridDemo } from "../../../../docs/src/components/demos/DashboardGridDemo";
4
+
5
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
6
+ const meta: Meta<any> = {
7
+ title: "Blocks/DashboardGrid",
8
+ parameters: {
9
+ layout: "padded",
10
+ },
11
+ };
12
+
13
+ export default meta;
14
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
15
+ type Story = StoryObj<any>;
16
+
17
+ export const Default: Story = {
18
+ render: () => <Demo_DashboardGridDemo />,
19
+ };
@@ -0,0 +1,110 @@
1
+ import type { HTMLAttributes, ReactNode } from "react";
2
+
3
+ import { cn } from "../../utils/cn";
4
+
5
+ /** Column span within a 12-column `DashboardGrid`. */
6
+ export type DashboardCellSpan = 2 | 3 | 4 | 6 | 8 | 12;
7
+
8
+ const SPAN_CLASSES: Record<DashboardCellSpan, string> = {
9
+ 2: "md:col-span-2",
10
+ 3: "md:col-span-3",
11
+ 4: "md:col-span-4",
12
+ 6: "md:col-span-6",
13
+ 8: "md:col-span-8",
14
+ 12: "md:col-span-12",
15
+ };
16
+
17
+ /** Props for `DashboardGrid`. */
18
+ export interface DashboardGridProps extends HTMLAttributes<HTMLDivElement> {
19
+ /** Children cells / rows. */
20
+ children?: ReactNode;
21
+ /** Additional CSS classes merged via `cn()`. */
22
+ className?: string;
23
+ }
24
+
25
+ /**
26
+ * DashboardGrid — opinionated 12-column responsive grid for composing BI
27
+ * dashboards from KPI cards, charts, and tables.
28
+ *
29
+ * Cells stack to a single column below `md` and fall into 12-column slots
30
+ * at `md` and above.
31
+ *
32
+ * @example
33
+ * ```tsx
34
+ * <DashboardGrid>
35
+ * <DashboardGrid.Cell span={3}><StatCard ... /></DashboardGrid.Cell>
36
+ * <DashboardGrid.Cell span={3}><StatCard ... /></DashboardGrid.Cell>
37
+ * <DashboardGrid.Cell span={6}><TimeseriesChart ... /></DashboardGrid.Cell>
38
+ * </DashboardGrid>
39
+ * ```
40
+ */
41
+ export function DashboardGrid({
42
+ children,
43
+ className,
44
+ ...props
45
+ }: DashboardGridProps) {
46
+ return (
47
+ <div
48
+ {...props}
49
+ className={cn(
50
+ "grid grid-cols-1 gap-4 md:grid-cols-12 md:gap-6",
51
+ className
52
+ )}
53
+ >
54
+ {children}
55
+ </div>
56
+ );
57
+ }
58
+
59
+ /** Props for `DashboardGrid.Row`. */
60
+ export interface DashboardGridRowProps extends HTMLAttributes<HTMLDivElement> {
61
+ /** Row children (cells). */
62
+ children?: ReactNode;
63
+ /** Additional CSS classes merged via `cn()`. */
64
+ className?: string;
65
+ }
66
+
67
+ /**
68
+ * Row — optional wrapper that breaks its children onto a new grid row by
69
+ * spanning all 12 columns and re-creating an inner 12-col grid. Useful when
70
+ * you want to force a visual row boundary.
71
+ */
72
+ function Row({ children, className, ...props }: DashboardGridRowProps) {
73
+ return (
74
+ <div
75
+ {...props}
76
+ className={cn(
77
+ "col-span-1 grid grid-cols-1 gap-4 md:col-span-12 md:grid-cols-12 md:gap-6",
78
+ className
79
+ )}
80
+ >
81
+ {children}
82
+ </div>
83
+ );
84
+ }
85
+
86
+ /** Props for `DashboardGrid.Cell`. */
87
+ export interface DashboardGridCellProps extends HTMLAttributes<HTMLDivElement> {
88
+ /** Number of 12-column columns this cell spans at `md` and up. */
89
+ span?: DashboardCellSpan;
90
+ /** Cell content. */
91
+ children?: ReactNode;
92
+ /** Additional CSS classes merged via `cn()`. */
93
+ className?: string;
94
+ }
95
+
96
+ function Cell({
97
+ span = 4,
98
+ children,
99
+ className,
100
+ ...props
101
+ }: DashboardGridCellProps) {
102
+ return (
103
+ <div {...props} className={cn("col-span-1", SPAN_CLASSES[span], className)}>
104
+ {children}
105
+ </div>
106
+ );
107
+ }
108
+
109
+ DashboardGrid.Row = Row;
110
+ DashboardGrid.Cell = Cell;
@@ -0,0 +1,2 @@
1
+ export { DashboardGrid, type DashboardGridProps, type DashboardGridRowProps, type DashboardGridCellProps, type DashboardCellSpan, } from './dashboard-grid';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/blocks/dashboard-grid/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,GACvB,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,31 @@
1
+ import type { Meta, StoryObj } from "@storybook/react";
2
+
3
+ import {
4
+ DeleteResourceBasicDemo as Demo_DeleteResourceBasicDemo,
5
+ DeleteResourceWorkerDemo as Demo_DeleteResourceWorkerDemo,
6
+ DeleteResourceErrorDemo as Demo_DeleteResourceErrorDemo,
7
+ } from "../../../../docs/src/components/demos/DeleteResourceDemo";
8
+
9
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
10
+ const meta: Meta<any> = {
11
+ title: "Blocks/DeleteResource",
12
+ parameters: {
13
+ layout: "padded",
14
+ },
15
+ };
16
+
17
+ export default meta;
18
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
19
+ type Story = StoryObj<any>;
20
+
21
+ export const Basic: Story = {
22
+ render: () => <Demo_DeleteResourceBasicDemo />,
23
+ };
24
+
25
+ export const Worker: Story = {
26
+ render: () => <Demo_DeleteResourceWorkerDemo />,
27
+ };
28
+
29
+ export const Error: Story = {
30
+ render: () => <Demo_DeleteResourceErrorDemo />,
31
+ };
@@ -0,0 +1,41 @@
1
+ import type { Meta, StoryObj } from "@storybook/react";
2
+
3
+ import {
4
+ MapBasicDemo as Demo_MapBasicDemo,
5
+ MapLegendDemo as Demo_MapLegendDemo,
6
+ MapH3Demo as Demo_MapH3Demo,
7
+ MapFiltersDemo as Demo_MapFiltersDemo,
8
+ MapClickDemo as Demo_MapClickDemo,
9
+ } from "../../../../docs/src/components/demos/MapBlockDemo";
10
+
11
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
12
+ const meta: Meta<any> = {
13
+ title: "Blocks/MapBlock",
14
+ parameters: {
15
+ layout: "padded",
16
+ },
17
+ };
18
+
19
+ export default meta;
20
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
21
+ type Story = StoryObj<any>;
22
+
23
+ export const MapBasic: Story = {
24
+ render: () => <Demo_MapBasicDemo />,
25
+ };
26
+
27
+ export const MapLegend: Story = {
28
+ render: () => <Demo_MapLegendDemo />,
29
+ };
30
+
31
+ export const MapH3: Story = {
32
+ render: () => <Demo_MapH3Demo />,
33
+ };
34
+
35
+ export const MapFilters: Story = {
36
+ render: () => <Demo_MapFiltersDemo />,
37
+ };
38
+
39
+ export const MapClick: Story = {
40
+ render: () => <Demo_MapClickDemo />,
41
+ };
@@ -0,0 +1,2 @@
1
+ export { MetricsOverview, type MetricsOverviewProps, type MetricsOverviewKpi, } from './metrics-overview';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/blocks/metrics-overview/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,GACxB,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,67 @@
1
+ import { ReactNode } from 'react';
2
+ import { StatCardDelta } from '../../components/stat-card';
3
+ import { DashboardCellSpan } from '../dashboard-grid/dashboard-grid';
4
+ /** A single KPI tile displayed in the overview strip. */
5
+ export interface MetricsOverviewKpi {
6
+ /** Stable key for React list rendering. */
7
+ id: string;
8
+ /** KPI label (e.g. `"Active users"`). */
9
+ label: ReactNode;
10
+ /** Primary value (pre-formatted). */
11
+ value: ReactNode;
12
+ /** Optional delta indicator. */
13
+ delta?: StatCardDelta;
14
+ /** Optional secondary hint shown beneath the value. */
15
+ hint?: ReactNode;
16
+ /** Optional trend slot — typically a `<Sparkline />`. */
17
+ trend?: ReactNode;
18
+ /**
19
+ * Column span at `md` breakpoint and above within the internal 12-col grid.
20
+ * Defaults to an even split based on the number of KPIs.
21
+ */
22
+ span?: DashboardCellSpan;
23
+ }
24
+ /** Props for `MetricsOverview`. */
25
+ export interface MetricsOverviewProps {
26
+ /** Heading rendered in the top-left of the header row. */
27
+ title?: ReactNode;
28
+ /** Optional description or subtitle shown under the title. */
29
+ description?: ReactNode;
30
+ /** Right-aligned slot for timeframe toggles, filters, or actions. */
31
+ actions?: ReactNode;
32
+ /** KPI tiles displayed in the strip under the header. */
33
+ kpis: MetricsOverviewKpi[];
34
+ /**
35
+ * Primary chart slot. Typically a `<TimeseriesChart />` or `<BarChart />`
36
+ * configured by the consumer.
37
+ */
38
+ chart?: ReactNode;
39
+ /** When `true`, renders skeleton placeholders on KPI tiles. */
40
+ loading?: boolean;
41
+ /**
42
+ * When `kpis` is empty and no chart is provided, this node is rendered in
43
+ * place of the overview.
44
+ */
45
+ emptyState?: ReactNode;
46
+ /** Additional CSS classes merged via `cn()`. */
47
+ className?: string;
48
+ }
49
+ /**
50
+ * MetricsOverview — composed block that assembles a dashboard header, a strip
51
+ * of KPI tiles, and a primary chart area into one reusable layout.
52
+ *
53
+ * @example
54
+ * ```tsx
55
+ * <MetricsOverview
56
+ * title="Revenue overview"
57
+ * actions={<TimeframeToggle ... />}
58
+ * kpis={[
59
+ * { id: "mrr", label: "MRR", value: "$128,420", delta: { value: 0.12, label: "vs last month" } },
60
+ * { id: "arpu", label: "ARPU", value: "$42.10" },
61
+ * ]}
62
+ * chart={<TimeseriesChart echarts={echarts} data={series} />}
63
+ * />
64
+ * ```
65
+ */
66
+ export declare function MetricsOverview({ title, description, actions, kpis, chart, loading, emptyState, className, }: MetricsOverviewProps): import("react/jsx-runtime").JSX.Element;
67
+ //# sourceMappingURL=metrics-overview.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metrics-overview.d.ts","sourceRoot":"","sources":["../../../../src/blocks/metrics-overview/metrics-overview.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,EAAY,KAAK,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAE1E,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,kCAAkC,CAAC;AAE1C,yDAAyD;AACzD,MAAM,WAAW,kBAAkB;IACjC,2CAA2C;IAC3C,EAAE,EAAE,MAAM,CAAC;IACX,yCAAyC;IACzC,KAAK,EAAE,SAAS,CAAC;IACjB,qCAAqC;IACrC,KAAK,EAAE,SAAS,CAAC;IACjB,gCAAgC;IAChC,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,uDAAuD;IACvD,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,yDAAyD;IACzD,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB;;;OAGG;IACH,IAAI,CAAC,EAAE,iBAAiB,CAAC;CAC1B;AAED,mCAAmC;AACnC,MAAM,WAAW,oBAAoB;IACnC,0DAA0D;IAC1D,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,8DAA8D;IAC9D,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,qEAAqE;IACrE,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,yDAAyD;IACzD,IAAI,EAAE,kBAAkB,EAAE,CAAC;IAC3B;;;OAGG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,+DAA+D;IAC/D,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,gDAAgD;IAChD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AASD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,eAAe,CAAC,EAC9B,KAAK,EACL,WAAW,EACX,OAAO,EACP,IAAI,EACJ,KAAK,EACL,OAAO,EACP,UAAU,EACV,SAAS,GACV,EAAE,oBAAoB,2CAiDtB"}
@@ -0,0 +1,26 @@
1
+ import type { Meta, StoryObj } from "@storybook/react";
2
+
3
+ import {
4
+ MetricsOverviewDemo as Demo_MetricsOverviewDemo,
5
+ MetricsOverviewLoadingDemo as Demo_MetricsOverviewLoadingDemo,
6
+ } from "../../../../docs/src/components/demos/MetricsOverviewDemo";
7
+
8
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
9
+ const meta: Meta<any> = {
10
+ title: "Blocks/MetricsOverview",
11
+ parameters: {
12
+ layout: "padded",
13
+ },
14
+ };
15
+
16
+ export default meta;
17
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
18
+ type Story = StoryObj<any>;
19
+
20
+ export const Default: Story = {
21
+ render: () => <Demo_MetricsOverviewDemo />,
22
+ };
23
+
24
+ export const Loading: Story = {
25
+ render: () => <Demo_MetricsOverviewLoadingDemo />,
26
+ };
@@ -0,0 +1,139 @@
1
+ import type { ReactNode } from "react";
2
+
3
+ import { StatCard, type StatCardDelta } from "../../components/stat-card";
4
+ import { cn } from "../../utils/cn";
5
+ import {
6
+ DashboardGrid,
7
+ type DashboardCellSpan,
8
+ } from "../dashboard-grid/dashboard-grid";
9
+
10
+ /** A single KPI tile displayed in the overview strip. */
11
+ export interface MetricsOverviewKpi {
12
+ /** Stable key for React list rendering. */
13
+ id: string;
14
+ /** KPI label (e.g. `"Active users"`). */
15
+ label: ReactNode;
16
+ /** Primary value (pre-formatted). */
17
+ value: ReactNode;
18
+ /** Optional delta indicator. */
19
+ delta?: StatCardDelta;
20
+ /** Optional secondary hint shown beneath the value. */
21
+ hint?: ReactNode;
22
+ /** Optional trend slot — typically a `<Sparkline />`. */
23
+ trend?: ReactNode;
24
+ /**
25
+ * Column span at `md` breakpoint and above within the internal 12-col grid.
26
+ * Defaults to an even split based on the number of KPIs.
27
+ */
28
+ span?: DashboardCellSpan;
29
+ }
30
+
31
+ /** Props for `MetricsOverview`. */
32
+ export interface MetricsOverviewProps {
33
+ /** Heading rendered in the top-left of the header row. */
34
+ title?: ReactNode;
35
+ /** Optional description or subtitle shown under the title. */
36
+ description?: ReactNode;
37
+ /** Right-aligned slot for timeframe toggles, filters, or actions. */
38
+ actions?: ReactNode;
39
+ /** KPI tiles displayed in the strip under the header. */
40
+ kpis: MetricsOverviewKpi[];
41
+ /**
42
+ * Primary chart slot. Typically a `<TimeseriesChart />` or `<BarChart />`
43
+ * configured by the consumer.
44
+ */
45
+ chart?: ReactNode;
46
+ /** When `true`, renders skeleton placeholders on KPI tiles. */
47
+ loading?: boolean;
48
+ /**
49
+ * When `kpis` is empty and no chart is provided, this node is rendered in
50
+ * place of the overview.
51
+ */
52
+ emptyState?: ReactNode;
53
+ /** Additional CSS classes merged via `cn()`. */
54
+ className?: string;
55
+ }
56
+
57
+ function inferSpan(kpiCount: number): DashboardCellSpan {
58
+ if (kpiCount <= 1) return 12;
59
+ if (kpiCount === 2) return 6;
60
+ if (kpiCount === 3) return 4;
61
+ return 3;
62
+ }
63
+
64
+ /**
65
+ * MetricsOverview — composed block that assembles a dashboard header, a strip
66
+ * of KPI tiles, and a primary chart area into one reusable layout.
67
+ *
68
+ * @example
69
+ * ```tsx
70
+ * <MetricsOverview
71
+ * title="Revenue overview"
72
+ * actions={<TimeframeToggle ... />}
73
+ * kpis={[
74
+ * { id: "mrr", label: "MRR", value: "$128,420", delta: { value: 0.12, label: "vs last month" } },
75
+ * { id: "arpu", label: "ARPU", value: "$42.10" },
76
+ * ]}
77
+ * chart={<TimeseriesChart echarts={echarts} data={series} />}
78
+ * />
79
+ * ```
80
+ */
81
+ export function MetricsOverview({
82
+ title,
83
+ description,
84
+ actions,
85
+ kpis,
86
+ chart,
87
+ loading,
88
+ emptyState,
89
+ className,
90
+ }: MetricsOverviewProps) {
91
+ const hasContent = kpis.length > 0 || chart !== undefined;
92
+
93
+ if (!hasContent && emptyState !== undefined) {
94
+ return <div className={className}>{emptyState}</div>;
95
+ }
96
+
97
+ const defaultSpan = inferSpan(kpis.length);
98
+
99
+ return (
100
+ <section className={cn("flex flex-col gap-4", className)}>
101
+ {(title || description || actions) && (
102
+ <header className="flex flex-wrap items-start justify-between gap-3">
103
+ <div className="flex flex-col gap-1">
104
+ {title ? (
105
+ <h2 className="text-lg font-semibold text-sf-strong">{title}</h2>
106
+ ) : null}
107
+ {description ? (
108
+ <p className="text-sm text-sf-subtle">{description}</p>
109
+ ) : null}
110
+ </div>
111
+ {actions ? (
112
+ <div className="flex shrink-0 items-center gap-2">{actions}</div>
113
+ ) : null}
114
+ </header>
115
+ )}
116
+
117
+ {kpis.length > 0 ? (
118
+ <DashboardGrid>
119
+ {kpis.map((kpi) => (
120
+ <DashboardGrid.Cell key={kpi.id} span={kpi.span ?? defaultSpan}>
121
+ <StatCard
122
+ label={kpi.label}
123
+ value={kpi.value}
124
+ delta={kpi.delta}
125
+ hint={kpi.hint}
126
+ trend={kpi.trend}
127
+ loading={loading}
128
+ />
129
+ </DashboardGrid.Cell>
130
+ ))}
131
+ </DashboardGrid>
132
+ ) : null}
133
+
134
+ {chart ? (
135
+ <div className="rounded-lg bg-sf-elevated p-4">{chart}</div>
136
+ ) : null}
137
+ </section>
138
+ );
139
+ }
@@ -0,0 +1,56 @@
1
+ import type { Meta, StoryObj } from "@storybook/react";
2
+
3
+ import {
4
+ PageHeaderHeroDemo as Demo_PageHeaderHeroDemo,
5
+ PageHeaderBasicDemo as Demo_PageHeaderBasicDemo,
6
+ PageHeaderWithIconsDemo as Demo_PageHeaderWithIconsDemo,
7
+ PageHeaderWithTabsDemo as Demo_PageHeaderWithTabsDemo,
8
+ PageHeaderWithActionsDemo as Demo_PageHeaderWithActionsDemo,
9
+ PageHeaderWithTitleDemo as Demo_PageHeaderWithTitleDemo,
10
+ PageHeaderWithTitleDescriptionDemo as Demo_PageHeaderWithTitleDescriptionDemo,
11
+ PageHeaderCompleteDemo as Demo_PageHeaderCompleteDemo,
12
+ } from "../../../../docs/src/components/demos/PageHeaderDemo";
13
+
14
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
15
+ const meta: Meta<any> = {
16
+ title: "Blocks/PageHeader",
17
+ parameters: {
18
+ layout: "padded",
19
+ },
20
+ };
21
+
22
+ export default meta;
23
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
24
+ type Story = StoryObj<any>;
25
+
26
+ export const Hero: Story = {
27
+ render: () => <Demo_PageHeaderHeroDemo />,
28
+ };
29
+
30
+ export const Basic: Story = {
31
+ render: () => <Demo_PageHeaderBasicDemo />,
32
+ };
33
+
34
+ export const WithIcons: Story = {
35
+ render: () => <Demo_PageHeaderWithIconsDemo />,
36
+ };
37
+
38
+ export const WithTabs: Story = {
39
+ render: () => <Demo_PageHeaderWithTabsDemo />,
40
+ };
41
+
42
+ export const WithActions: Story = {
43
+ render: () => <Demo_PageHeaderWithActionsDemo />,
44
+ };
45
+
46
+ export const WithTitle: Story = {
47
+ render: () => <Demo_PageHeaderWithTitleDemo />,
48
+ };
49
+
50
+ export const WithTitleDescription: Story = {
51
+ render: () => <Demo_PageHeaderWithTitleDescriptionDemo />,
52
+ };
53
+
54
+ export const Complete: Story = {
55
+ render: () => <Demo_PageHeaderCompleteDemo />,
56
+ };
@@ -0,0 +1,31 @@
1
+ import type { Meta, StoryObj } from "@storybook/react";
2
+
3
+ import {
4
+ ResourceListBasicDemo as Demo_ResourceListBasicDemo,
5
+ ResourceListWithUsageDemo as Demo_ResourceListWithUsageDemo,
6
+ ResourceListCompleteDemo as Demo_ResourceListCompleteDemo,
7
+ } from "../../../../docs/src/components/demos/ResourceListDemo";
8
+
9
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
10
+ const meta: Meta<any> = {
11
+ title: "Blocks/ResourceList",
12
+ parameters: {
13
+ layout: "padded",
14
+ },
15
+ };
16
+
17
+ export default meta;
18
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
19
+ type Story = StoryObj<any>;
20
+
21
+ export const Basic: Story = {
22
+ render: () => <Demo_ResourceListBasicDemo />,
23
+ };
24
+
25
+ export const WithUsage: Story = {
26
+ render: () => <Demo_ResourceListWithUsageDemo />,
27
+ };
28
+
29
+ export const Complete: Story = {
30
+ render: () => <Demo_ResourceListCompleteDemo />,
31
+ };
@@ -39,7 +39,7 @@ interface SchemasModule {
39
39
  */
40
40
  export declare function loadSchemas(): Promise<SchemasModule>;
41
41
  /**
42
- * Create a SF catalog for runtime validation.
42
+ * Create a SignalFlare catalog for runtime validation.
43
43
  *
44
44
  * The catalog:
45
45
  * - Uses auto-generated Zod schemas from component-registry.json
@@ -1,5 +1,5 @@
1
1
  /**
2
- * SF Catalog Module — json-render integration
2
+ * SignalFlare Catalog Module — json-render integration
3
3
  *
4
4
  * Provides SignalFlare AI component definitions and renderers for use with
5
5
  * the json-render generative UI framework.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Runtime types for SF catalog module.
2
+ * Runtime types for SignalFlare catalog module.
3
3
  *
4
4
  * These types extend the registry types with runtime capabilities
5
5
  * like visibility conditions, actions, and data binding.
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env bun
2
2
  /**
3
- * Build script for the SF CLI.
3
+ * Build script for the SignalFlare CLI.
4
4
  * Bundles the single public CLI entrypoint to dist/command-line/cli.js.
5
5
  */
6
6
  export {};
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  /**
3
- * SF CLI - Component registry and blocks distribution
3
+ * SignalFlare CLI - Component registry and blocks distribution
4
4
  *
5
5
  * Usage:
6
6
  * sf init Initialize sf.json configuration
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  /**
3
- * Add a SF block to the project
3
+ * Add a SignalFlare block to the project
4
4
  * Usage: sf add <block-name>
5
5
  */
6
6
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../../../src/command-line/commands/add.ts"],"names":[],"mappings":";AACA;;;GAGG;AAkGH;;GAEG;AACH,wBAAsB,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAkJtE"}
1
+ {"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../../../src/command-line/commands/add.ts"],"names":[],"mappings":";AACA;;;GAGG;AAiGH;;GAEG;AACH,wBAAsB,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAoJtE"}
@@ -1 +1 @@
1
- {"version":3,"file":"ai.d.ts","sourceRoot":"","sources":["../../../../src/command-line/commands/ai.ts"],"names":[],"mappings":";AACA;;;GAGG;AAMH;;GAEG;AACH,wBAAgB,EAAE,IAAI,IAAI,CAczB"}
1
+ {"version":3,"file":"ai.d.ts","sourceRoot":"","sources":["../../../../src/command-line/commands/ai.ts"],"names":[],"mappings":";AACA;;;GAGG;AAKH;;GAEG;AACH,wBAAgB,EAAE,IAAI,IAAI,CAczB"}
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  /**
3
- * List all SF blocks available for CLI installation
3
+ * List all SignalFlare blocks available for CLI installation
4
4
  * Usage: sf blocks
5
5
  */
6
6
  /**