@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 @@
1
+ {"version":3,"file":"dist-BNlyONdD.js","names":["z2","z3","z4","createContext2","useMemo2","useContext2","createContext3","useRef2","useCallback2","useMemo3","useContext3","createContext4","useState2","useCallback3","useMemo4","useContext4","createContext5","useContext5","React5","useMemo5","evaluateVisibility2","useCallback4","useRef3","getByPath2","Fragment","getByPath3","useState3","useRef4","useCallback5"],"sources":["../src/catalog/sf-registry.ts","../../../node_modules/.bun/@json-render+core@0.15.0/node_modules/@json-render/core/dist/chunk-AFLK3Q4T.mjs","../../../node_modules/.bun/@json-render+core@0.15.0/node_modules/@json-render/core/dist/index.mjs","../../../node_modules/.bun/@json-render+react@0.15.0+b1ab299f0a400331/node_modules/@json-render/react/dist/chunk-WYDS23XB.mjs","../../../node_modules/.bun/@json-render+react@0.15.0+b1ab299f0a400331/node_modules/@json-render/react/dist/index.mjs"],"sourcesContent":["\"use client\";\n\nimport type { BaseComponentProps } from \"@json-render/react\";\nimport {\n BarChart as EBarChart,\n LineChart as ELineChart,\n PieChart as EPieChart,\n} from \"echarts/charts\";\nimport {\n GridComponent,\n TooltipComponent,\n LegendComponent,\n TitleComponent,\n} from \"echarts/components\";\n// ECharts tree-shakeable imports — only chart types + components we need\nimport * as echarts from \"echarts/core\";\nimport { CanvasRenderer } from \"echarts/renderers\";\nimport React from \"react\";\n\nimport { Badge } from \"../components/badge/index.js\";\nimport { Banner } from \"../components/banner/index.js\";\nimport { Button } from \"../components/button/index.js\";\nimport { Chart as SFChart, ChartPalette } from \"../components/chart/index.js\";\nimport { Checkbox } from \"../components/checkbox/index.js\";\nimport { Code } from \"../components/code/index.js\";\nimport { Collapsible } from \"../components/collapsible/index.js\";\nimport { Dialog } from \"../components/dialog/index.js\";\nimport { Empty } from \"../components/empty/index.js\";\nimport { Field } from \"../components/field/index.js\";\nimport { Grid } from \"../components/grid/index.js\";\nimport { Input, InputArea } from \"../components/input/index.js\";\nimport { LayerCard } from \"../components/layer-card/index.js\";\nimport { Link } from \"../components/link/index.js\";\nimport { Loader } from \"../components/loader/index.js\";\nimport { Meter } from \"../components/meter/index.js\";\nimport { Popover } from \"../components/popover/index.js\";\nimport { Radio } from \"../components/radio/index.js\";\nimport { Select } from \"../components/select/index.js\";\nimport { Surface } from \"../components/surface/index.js\";\nimport { Switch } from \"../components/switch/index.js\";\nimport { Table } from \"../components/table/index.js\";\nimport { Tabs } from \"../components/tabs/index.js\";\nimport { Text } from \"../components/text/index.js\";\nimport { Tooltip } from \"../components/tooltip/index.js\";\n\necharts.use([\n EBarChart,\n ELineChart,\n EPieChart,\n GridComponent,\n TooltipComponent,\n LegendComponent,\n TitleComponent,\n CanvasRenderer,\n]);\n\n/**\n * Hardcoded SF theme color tokens for ECharts canvas rendering.\n * ECharts draws on <canvas> so it cannot resolve CSS custom properties\n * or `light-dark()`. We detect `data-mode` and return matching hex values\n * derived from theme-sf.css oklch fallbacks.\n */\nconst SF_CHART_THEME = {\n light: {\n text: \"#6b6b6b\", // --text-color-sf-strong titles / emphasis\n mutedText: \"#a3a3a3\", // --text-color-sf-inactive axis labels, legend, ticks\n line: \"#e5e5e5\", // --color-sf-line grid lines, axis lines\n bg: \"#ffffff\", // --color-sf-base tooltip background\n },\n dark: {\n text: \"#a1a1a1\", // --text-color-sf-strong titles / emphasis\n mutedText: \"#636363\", // --text-color-sf-inactive axis labels, legend, ticks\n line: \"#333840\", // --color-sf-line grid lines, axis lines\n bg: \"#2a2d35\", // --color-sf-base tooltip background\n },\n} as const;\n\nfunction isDarkMode(): boolean {\n if (typeof document === \"undefined\") return false;\n return document.documentElement.dataset.mode === \"dark\";\n}\n\nfunction getChartThemeColors() {\n return isDarkMode() ? SF_CHART_THEME.dark : SF_CHART_THEME.light;\n}\n\n/** Shared ECharts option overrides for axis / text / grid styling */\nfunction chartBaseOptions(): Record<string, any> {\n const c = getChartThemeColors();\n return {\n textStyle: {\n color: c.mutedText,\n fontFamily: \"inherit\",\n fontSize: 12,\n },\n title: {\n textStyle: {\n color: c.text,\n fontWeight: 500,\n fontSize: 14,\n },\n },\n legend: {\n textStyle: { color: c.mutedText },\n },\n xAxis: {\n axisLine: { lineStyle: { color: c.line } },\n axisTick: { lineStyle: { color: c.line } },\n axisLabel: { color: c.mutedText },\n splitLine: { lineStyle: { color: c.line, type: \"dashed\" as const } },\n },\n yAxis: {\n axisLine: { show: false },\n axisTick: { show: false },\n axisLabel: { color: c.mutedText },\n splitLine: { lineStyle: { color: c.line, type: \"dashed\" as const } },\n },\n tooltip: {\n backgroundColor: c.bg,\n borderColor: c.line,\n textStyle: { color: c.text },\n },\n };\n}\n\n/** Deep-merge base chart styling under user options (user wins on conflict) */\nfunction mergeChartOptions(\n base: Record<string, any>,\n user: Record<string, any>\n): Record<string, any> {\n const result: Record<string, any> = {};\n const keys = new Set([...Object.keys(base), ...Object.keys(user)]);\n for (const key of keys) {\n const bv = base[key];\n const uv = user[key];\n if (uv === undefined) {\n result[key] = bv;\n } else if (\n bv === undefined ||\n typeof bv !== \"object\" ||\n typeof uv !== \"object\" ||\n Array.isArray(uv)\n ) {\n result[key] = uv;\n } else {\n result[key] = mergeChartOptions(bv, uv);\n }\n }\n return result;\n}\n\n/** Aggregate data by xKey: sum, count, or avg */\nfunction processChartData(\n rawItems: Array<Record<string, unknown>>,\n xKey: string,\n yKey: string,\n aggregate?: string | null\n): { labels: string[]; values: number[] } {\n if (!aggregate) {\n return {\n labels: rawItems.map((item) => {\n const v = item[xKey];\n return typeof v === \"string\" || typeof v === \"number\" ? String(v) : \"\";\n }),\n values: rawItems.map((item) => Number(item[yKey]) || 0),\n };\n }\n\n const groups = new Map<string, number[]>();\n for (const item of rawItems) {\n const raw = item[xKey];\n const key =\n typeof raw === \"string\" || typeof raw === \"number\" ? String(raw) : \"\";\n if (!groups.has(key)) groups.set(key, []);\n groups.get(key)!.push(Number(item[yKey]) || 0);\n }\n\n const labels: string[] = [];\n const values: number[] = [];\n for (const [key, vals] of groups) {\n labels.push(key);\n if (aggregate === \"count\") values.push(vals.length);\n else if (aggregate === \"avg\")\n values.push(vals.reduce((a, b) => a + b, 0) / vals.length);\n else values.push(vals.reduce((a, b) => a + b, 0)); // sum\n }\n return { labels, values };\n}\n\nfunction passthrough(Component: React.ComponentType<any>) {\n return ({ props, children }: BaseComponentProps) =>\n children != null\n ? React.createElement(Component, props, children)\n : React.createElement(Component, props);\n}\n\nexport const sfComponents: Record<\n string,\n (bp: BaseComponentProps) => React.ReactNode\n> = {\n Stack: ({ props, children }: BaseComponentProps) => {\n const { direction, gap, align, wrap } = props as any;\n const cn: string[] = [\"flex\"];\n cn.push(direction === \"horizontal\" ? \"flex-row\" : \"flex-col\");\n if (gap === \"sm\") cn.push(\"gap-2\");\n else if (gap === \"lg\") cn.push(\"gap-6\");\n else cn.push(\"gap-4\");\n if (align === \"center\") cn.push(\"items-center\");\n else if (align === \"end\") cn.push(\"items-end\");\n else if (align === \"start\") cn.push(\"items-start\");\n if (wrap) cn.push(\"flex-wrap\");\n return React.createElement(\"div\", { className: cn.join(\" \") }, children);\n },\n\n Surface: ({ props, children }: BaseComponentProps) => {\n const { padding, border, ...rest } = props as any;\n const cn: string[] = [];\n if (padding === \"sm\") cn.push(\"p-3\");\n else if (padding === \"lg\") cn.push(\"p-8\");\n else if (padding === \"base\") cn.push(\"p-5\");\n if (border) cn.push(\"border border-sf-line rounded-lg\");\n return React.createElement(\n Surface,\n { ...rest, className: cn.length ? cn.join(\" \") : undefined },\n children\n );\n },\n\n Grid: passthrough(Grid),\n LayerCard: passthrough(LayerCard),\n\n Text: ({ props }: BaseComponentProps) => {\n const { text, ...rest } = props as any;\n return React.createElement(Text, rest, text);\n },\n\n Code: passthrough(Code),\n\n Button: ({ props }: BaseComponentProps) => {\n const { label, ...rest } = props as any;\n return React.createElement(Button, rest, label);\n },\n\n Link: ({ props }: BaseComponentProps) => {\n const { text, ...rest } = props as any;\n return React.createElement(Link, rest, text);\n },\n\n Badge: ({ props }: BaseComponentProps) => {\n const { text, ...rest } = props as any;\n return React.createElement(Badge, rest, text);\n },\n\n Banner: ({ props }: BaseComponentProps) => {\n const { title, description, variant } = props as any;\n return React.createElement(\n Banner,\n { variant },\n React.createElement(\"strong\", null, title),\n description ? React.createElement(\"p\", null, description) : null\n );\n },\n\n Meter: passthrough(Meter),\n Empty: passthrough(Empty),\n Loader: passthrough(Loader),\n\n Table: ({ props }: BaseComponentProps) => {\n const { data, columns } = props as any;\n if (!columns?.length) return null;\n const rows = Array.isArray(data) ? data : [];\n return React.createElement(\n Table,\n null,\n React.createElement(\n Table.Header,\n null,\n React.createElement(\n Table.Row,\n null,\n columns.map((col: any) =>\n React.createElement(Table.Head, { key: col.key }, col.label)\n )\n )\n ),\n React.createElement(\n Table.Body,\n null,\n rows.length > 0\n ? rows.map((row: any, i: number) =>\n React.createElement(\n Table.Row,\n { key: i },\n columns.map((col: any) =>\n React.createElement(\n Table.Cell,\n { key: col.key },\n String(row[col.key] ?? \"\")\n )\n )\n )\n )\n : React.createElement(\n Table.Row,\n null,\n React.createElement(\n Table.Cell,\n { colSpan: columns.length },\n \"No data\"\n )\n )\n )\n );\n },\n\n Input: passthrough(Input),\n InputArea: passthrough(InputArea),\n\n Select: ({ props }: BaseComponentProps) => {\n const { options, ...rest } = props as any;\n const items = Array.isArray(options) ? options : [];\n return React.createElement(\n Select,\n rest,\n items.map((opt: any) =>\n React.createElement(\n Select.Option as React.ComponentType<any>,\n { key: opt.value, value: opt.value },\n opt.label\n )\n )\n );\n },\n\n Checkbox: passthrough(Checkbox),\n Switch: passthrough(Switch),\n\n Radio: ({ props }: BaseComponentProps) => {\n const { options, ...rest } = props as any;\n const items = Array.isArray(options) ? options : [];\n return React.createElement(\n Radio.Group,\n rest,\n items.map((opt: any) =>\n React.createElement(Radio.Item, {\n key: opt.value,\n value: opt.value,\n label: opt.label,\n })\n )\n );\n },\n\n Field: passthrough(Field),\n\n Tabs: ({ props, children }: BaseComponentProps) => {\n const { defaultValue, ...rest } = props as any;\n return children != null\n ? React.createElement(\n Tabs,\n { ...rest, selectedValue: defaultValue ?? rest.tabs?.[0]?.value },\n children\n )\n : React.createElement(Tabs, {\n ...rest,\n selectedValue: defaultValue ?? rest.tabs?.[0]?.value,\n });\n },\n\n Dialog: ({ props, children }: BaseComponentProps) => {\n const { trigger, title, description } = props as any;\n return React.createElement(\n Dialog.Root,\n null,\n React.createElement(\n Dialog.Trigger,\n null,\n React.createElement(Button, null, trigger)\n ),\n React.createElement(\n Dialog,\n null,\n title && React.createElement(Dialog.Title, null, title),\n description &&\n React.createElement(Dialog.Description, null, description),\n children\n )\n );\n },\n\n Collapsible: passthrough(Collapsible),\n\n Tooltip: ({ props, children }: BaseComponentProps) => {\n const { content } = props as any;\n return children != null\n ? React.createElement(Tooltip, { content }, children)\n : React.createElement(Tooltip, { content });\n },\n\n Popover: ({ props, children }: BaseComponentProps) => {\n const { trigger } = props as any;\n return React.createElement(\n Popover,\n null,\n React.createElement(\n Popover.Trigger,\n null,\n React.createElement(Button, { variant: \"outline\" }, trigger)\n ),\n React.createElement(Popover.Content, null, children)\n );\n },\n\n // ── Charts ──────────────────────────────────────────────────────────\n\n BarChart: ({ props }: BaseComponentProps) => {\n const { title, data, xKey, yKey, aggregate, color, height } = props as any;\n const rawItems: Array<Record<string, unknown>> = Array.isArray(data)\n ? data\n : [];\n const { labels, values } = processChartData(\n rawItems,\n xKey,\n yKey,\n aggregate\n );\n const chartColor = color ?? ChartPalette.color(0);\n const userOpts: any = {\n ...(title ? { title: { text: title, left: \"center\" } } : {}),\n tooltip: { trigger: \"axis\" },\n xAxis: { type: \"category\", data: labels },\n yAxis: { type: \"value\" },\n series: [{ type: \"bar\", data: values, itemStyle: { color: chartColor } }],\n };\n return React.createElement(SFChart, {\n echarts,\n options: mergeChartOptions(chartBaseOptions(), userOpts),\n height: height ?? 350,\n });\n },\n\n LineChart: ({ props }: BaseComponentProps) => {\n const { title, data, xKey, yKey, aggregate, color, height } = props as any;\n const rawItems: Array<Record<string, unknown>> = Array.isArray(data)\n ? data\n : [];\n const { labels, values } = processChartData(\n rawItems,\n xKey,\n yKey,\n aggregate\n );\n const chartColor = color ?? ChartPalette.color(0);\n const userOpts: any = {\n ...(title ? { title: { text: title, left: \"center\" } } : {}),\n tooltip: { trigger: \"axis\" },\n xAxis: { type: \"category\", data: labels },\n yAxis: { type: \"value\" },\n series: [\n {\n type: \"line\",\n data: values,\n smooth: true,\n lineStyle: { color: chartColor },\n itemStyle: { color: chartColor },\n },\n ],\n };\n return React.createElement(SFChart, {\n echarts,\n options: mergeChartOptions(chartBaseOptions(), userOpts),\n height: height ?? 350,\n });\n },\n\n PieChart: ({ props }: BaseComponentProps) => {\n const { title, data, nameKey, valueKey, height } = props as any;\n const rawItems: Array<Record<string, unknown>> = Array.isArray(data)\n ? data\n : [];\n const pieData = rawItems.map((item, i) => ({\n name:\n typeof item[nameKey] === \"string\" || typeof item[nameKey] === \"number\"\n ? String(item[nameKey])\n : \"\",\n value: Number(item[valueKey]) || 0,\n itemStyle: { color: ChartPalette.color(i) },\n }));\n const userOpts: any = {\n ...(title ? { title: { text: title, left: \"center\" } } : {}),\n tooltip: { trigger: \"item\" },\n legend: { orient: \"horizontal\", bottom: 0 },\n series: [\n {\n type: \"pie\",\n radius: [\"40%\", \"70%\"],\n data: pieData,\n label: { color: getChartThemeColors().mutedText },\n },\n ],\n };\n return React.createElement(SFChart, {\n echarts,\n options: mergeChartOptions(chartBaseOptions(), userOpts),\n height: height ?? 350,\n });\n },\n\n Chart: ({ props }: BaseComponentProps) => {\n const { options, height } = props as any;\n return React.createElement(SFChart, {\n echarts,\n options: mergeChartOptions(chartBaseOptions(), options ?? {}),\n height: height ?? 350,\n });\n },\n};\n","// src/types.ts\nimport { z } from \"zod\";\nvar DynamicValueSchema = z.union([\n z.string(),\n z.number(),\n z.boolean(),\n z.null(),\n z.object({ $state: z.string() })\n]);\nvar DynamicStringSchema = z.union([\n z.string(),\n z.object({ $state: z.string() })\n]);\nvar DynamicNumberSchema = z.union([\n z.number(),\n z.object({ $state: z.string() })\n]);\nvar DynamicBooleanSchema = z.union([\n z.boolean(),\n z.object({ $state: z.string() })\n]);\nfunction resolveDynamicValue(value, stateModel) {\n if (value === null || value === void 0) {\n return void 0;\n }\n if (typeof value === \"object\" && \"$state\" in value) {\n return getByPath(stateModel, value.$state);\n }\n return value;\n}\nfunction unescapeJsonPointer(token) {\n return token.replace(/~1/g, \"/\").replace(/~0/g, \"~\");\n}\nfunction parseJsonPointer(path) {\n const raw = path.startsWith(\"/\") ? path.slice(1).split(\"/\") : path.split(\"/\");\n return raw.map(unescapeJsonPointer);\n}\nfunction getByPath(obj, path) {\n if (!path || path === \"/\") {\n return obj;\n }\n const segments = parseJsonPointer(path);\n let current = obj;\n for (const segment of segments) {\n if (current === null || current === void 0) {\n return void 0;\n }\n if (Array.isArray(current)) {\n const index = parseInt(segment, 10);\n current = current[index];\n } else if (typeof current === \"object\") {\n current = current[segment];\n } else {\n return void 0;\n }\n }\n return current;\n}\nfunction isNumericIndex(str) {\n return /^\\d+$/.test(str);\n}\nfunction setByPath(obj, path, value) {\n const segments = parseJsonPointer(path);\n if (segments.length === 0) return;\n let current = obj;\n for (let i = 0; i < segments.length - 1; i++) {\n const segment = segments[i];\n const nextSegment = segments[i + 1];\n const nextIsNumeric = nextSegment !== void 0 && (isNumericIndex(nextSegment) || nextSegment === \"-\");\n if (Array.isArray(current)) {\n const index = parseInt(segment, 10);\n if (current[index] === void 0 || typeof current[index] !== \"object\") {\n current[index] = nextIsNumeric ? [] : {};\n }\n current = current[index];\n } else {\n if (!(segment in current) || typeof current[segment] !== \"object\") {\n current[segment] = nextIsNumeric ? [] : {};\n }\n current = current[segment];\n }\n }\n const lastSegment = segments[segments.length - 1];\n if (Array.isArray(current)) {\n if (lastSegment === \"-\") {\n current.push(value);\n } else {\n const index = parseInt(lastSegment, 10);\n current[index] = value;\n }\n } else {\n current[lastSegment] = value;\n }\n}\nfunction addByPath(obj, path, value) {\n const segments = parseJsonPointer(path);\n if (segments.length === 0) return;\n let current = obj;\n for (let i = 0; i < segments.length - 1; i++) {\n const segment = segments[i];\n const nextSegment = segments[i + 1];\n const nextIsNumeric = nextSegment !== void 0 && (isNumericIndex(nextSegment) || nextSegment === \"-\");\n if (Array.isArray(current)) {\n const index = parseInt(segment, 10);\n if (current[index] === void 0 || typeof current[index] !== \"object\") {\n current[index] = nextIsNumeric ? [] : {};\n }\n current = current[index];\n } else {\n if (!(segment in current) || typeof current[segment] !== \"object\") {\n current[segment] = nextIsNumeric ? [] : {};\n }\n current = current[segment];\n }\n }\n const lastSegment = segments[segments.length - 1];\n if (Array.isArray(current)) {\n if (lastSegment === \"-\") {\n current.push(value);\n } else {\n const index = parseInt(lastSegment, 10);\n current.splice(index, 0, value);\n }\n } else {\n current[lastSegment] = value;\n }\n}\nfunction removeByPath(obj, path) {\n const segments = parseJsonPointer(path);\n if (segments.length === 0) return;\n let current = obj;\n for (let i = 0; i < segments.length - 1; i++) {\n const segment = segments[i];\n if (Array.isArray(current)) {\n const index = parseInt(segment, 10);\n if (current[index] === void 0 || typeof current[index] !== \"object\") {\n return;\n }\n current = current[index];\n } else {\n if (!(segment in current) || typeof current[segment] !== \"object\") {\n return;\n }\n current = current[segment];\n }\n }\n const lastSegment = segments[segments.length - 1];\n if (Array.isArray(current)) {\n const index = parseInt(lastSegment, 10);\n if (index >= 0 && index < current.length) {\n current.splice(index, 1);\n }\n } else {\n delete current[lastSegment];\n }\n}\nfunction deepEqual(a, b) {\n if (a === b) return true;\n if (a === null || b === null) return false;\n if (typeof a !== typeof b) return false;\n if (typeof a !== \"object\") return false;\n if (Array.isArray(a)) {\n if (!Array.isArray(b)) return false;\n if (a.length !== b.length) return false;\n return a.every((item, i) => deepEqual(item, b[i]));\n }\n const aObj = a;\n const bObj = b;\n const aKeys = Object.keys(aObj);\n const bKeys = Object.keys(bObj);\n if (aKeys.length !== bKeys.length) return false;\n return aKeys.every((key) => deepEqual(aObj[key], bObj[key]));\n}\nfunction findFormValue(fieldName, params, state) {\n if (params?.[fieldName] !== void 0) {\n const val = params[fieldName];\n if (typeof val !== \"string\" || !val.includes(\".\")) {\n return val;\n }\n }\n if (params) {\n for (const key of Object.keys(params)) {\n if (key.endsWith(`.${fieldName}`)) {\n const val = params[key];\n if (typeof val !== \"string\" || !val.includes(\".\")) {\n return val;\n }\n }\n }\n }\n if (state) {\n for (const key of Object.keys(state)) {\n if (key === fieldName || key.endsWith(`.${fieldName}`)) {\n return state[key];\n }\n }\n const val = getByPath(state, fieldName);\n if (val !== void 0) {\n return val;\n }\n }\n return void 0;\n}\nfunction parseSpecStreamLine(line) {\n const trimmed = line.trim();\n if (!trimmed || !trimmed.startsWith(\"{\")) return null;\n try {\n const patch = JSON.parse(trimmed);\n if (patch.op && patch.path !== void 0) {\n return patch;\n }\n return null;\n } catch {\n return null;\n }\n}\nfunction applySpecStreamPatch(obj, patch) {\n switch (patch.op) {\n case \"add\":\n addByPath(obj, patch.path, patch.value);\n break;\n case \"replace\":\n setByPath(obj, patch.path, patch.value);\n break;\n case \"remove\":\n removeByPath(obj, patch.path);\n break;\n case \"move\": {\n if (!patch.from) break;\n const moveValue = getByPath(obj, patch.from);\n removeByPath(obj, patch.from);\n addByPath(obj, patch.path, moveValue);\n break;\n }\n case \"copy\": {\n if (!patch.from) break;\n const copyValue = getByPath(obj, patch.from);\n addByPath(obj, patch.path, copyValue);\n break;\n }\n case \"test\": {\n const actual = getByPath(obj, patch.path);\n if (!deepEqual(actual, patch.value)) {\n throw new Error(\n `Test operation failed: value at \"${patch.path}\" does not match`\n );\n }\n break;\n }\n }\n return obj;\n}\nfunction applySpecPatch(spec, patch) {\n applySpecStreamPatch(spec, patch);\n return spec;\n}\nfunction nestedToFlat(nested) {\n const elements = {};\n let counter = 0;\n function walk(node) {\n const key = `el-${counter++}`;\n const { type, props, children: rawChildren, ...rest } = node;\n const childKeys = [];\n if (Array.isArray(rawChildren)) {\n for (const child of rawChildren) {\n if (child && typeof child === \"object\" && \"type\" in child) {\n childKeys.push(walk(child));\n }\n }\n }\n const element = {\n type: type ?? \"unknown\",\n props: props ?? {},\n children: childKeys\n };\n for (const [k, v] of Object.entries(rest)) {\n if (k !== \"state\" && v !== void 0) {\n element[k] = v;\n }\n }\n elements[key] = element;\n return key;\n }\n const root = walk(nested);\n const spec = { root, elements };\n if (nested.state && typeof nested.state === \"object\" && !Array.isArray(nested.state)) {\n spec.state = nested.state;\n }\n return spec;\n}\nfunction compileSpecStream(stream, initial = {}) {\n const lines = stream.split(\"\\n\");\n const result = { ...initial };\n for (const line of lines) {\n const patch = parseSpecStreamLine(line);\n if (patch) {\n applySpecStreamPatch(result, patch);\n }\n }\n return result;\n}\nfunction createSpecStreamCompiler(initial = {}) {\n let result = { ...initial };\n let buffer = \"\";\n const appliedPatches = [];\n const processedLines = /* @__PURE__ */ new Set();\n return {\n push(chunk) {\n buffer += chunk;\n const newPatches = [];\n const lines = buffer.split(\"\\n\");\n buffer = lines.pop() || \"\";\n for (const line of lines) {\n const trimmed = line.trim();\n if (!trimmed || processedLines.has(trimmed)) continue;\n processedLines.add(trimmed);\n const patch = parseSpecStreamLine(trimmed);\n if (patch) {\n applySpecStreamPatch(result, patch);\n appliedPatches.push(patch);\n newPatches.push(patch);\n }\n }\n if (newPatches.length > 0) {\n result = { ...result };\n }\n return { result, newPatches };\n },\n getResult() {\n if (buffer.trim()) {\n const patch = parseSpecStreamLine(buffer);\n if (patch && !processedLines.has(buffer.trim())) {\n processedLines.add(buffer.trim());\n applySpecStreamPatch(result, patch);\n appliedPatches.push(patch);\n result = { ...result };\n }\n buffer = \"\";\n }\n return result;\n },\n getPatches() {\n return [...appliedPatches];\n },\n reset(newInitial = {}) {\n result = { ...newInitial };\n buffer = \"\";\n appliedPatches.length = 0;\n processedLines.clear();\n }\n };\n}\nfunction createMixedStreamParser(callbacks) {\n let buffer = \"\";\n let inSpecFence = false;\n function processLine(line) {\n const trimmed = line.trim();\n if (!inSpecFence && trimmed.startsWith(\"```spec\")) {\n inSpecFence = true;\n return;\n }\n if (inSpecFence && trimmed === \"```\") {\n inSpecFence = false;\n return;\n }\n if (!trimmed) return;\n if (inSpecFence) {\n const patch2 = parseSpecStreamLine(trimmed);\n if (patch2) {\n callbacks.onPatch(patch2);\n }\n return;\n }\n const patch = parseSpecStreamLine(trimmed);\n if (patch) {\n callbacks.onPatch(patch);\n } else {\n callbacks.onText(line);\n }\n }\n return {\n push(chunk) {\n buffer += chunk;\n const lines = buffer.split(\"\\n\");\n buffer = lines.pop() || \"\";\n for (const line of lines) {\n processLine(line);\n }\n },\n flush() {\n if (buffer.trim()) {\n processLine(buffer);\n }\n buffer = \"\";\n }\n };\n}\nvar SPEC_FENCE_OPEN = \"```spec\";\nvar SPEC_FENCE_CLOSE = \"```\";\nfunction createJsonRenderTransform() {\n let lineBuffer = \"\";\n let currentTextId = \"\";\n let buffering = false;\n let inSpecFence = false;\n let inTextBlock = false;\n let textIdCounter = 0;\n function closeTextBlock(controller) {\n if (inTextBlock) {\n controller.enqueue({ type: \"text-end\", id: currentTextId });\n inTextBlock = false;\n }\n }\n function ensureTextBlock(controller) {\n if (!inTextBlock) {\n textIdCounter++;\n currentTextId = String(textIdCounter);\n controller.enqueue({ type: \"text-start\", id: currentTextId });\n inTextBlock = true;\n }\n }\n function emitTextDelta(delta, controller) {\n ensureTextBlock(controller);\n controller.enqueue({ type: \"text-delta\", id: currentTextId, delta });\n }\n function emitPatch(patch, controller) {\n closeTextBlock(controller);\n controller.enqueue({\n type: SPEC_DATA_PART_TYPE,\n data: { type: \"patch\", patch }\n });\n }\n function flushBuffer(controller) {\n if (!lineBuffer) return;\n const trimmed = lineBuffer.trim();\n if (inSpecFence) {\n if (trimmed) {\n const patch = parseSpecStreamLine(trimmed);\n if (patch) emitPatch(patch, controller);\n }\n lineBuffer = \"\";\n buffering = false;\n return;\n }\n if (trimmed) {\n const patch = parseSpecStreamLine(trimmed);\n if (patch) {\n emitPatch(patch, controller);\n } else {\n emitTextDelta(lineBuffer, controller);\n }\n } else {\n emitTextDelta(lineBuffer, controller);\n }\n lineBuffer = \"\";\n buffering = false;\n }\n function processCompleteLine(line, controller) {\n const trimmed = line.trim();\n if (!inSpecFence && trimmed.startsWith(SPEC_FENCE_OPEN)) {\n inSpecFence = true;\n return;\n }\n if (inSpecFence && trimmed === SPEC_FENCE_CLOSE) {\n inSpecFence = false;\n return;\n }\n if (inSpecFence) {\n if (trimmed) {\n const patch2 = parseSpecStreamLine(trimmed);\n if (patch2) emitPatch(patch2, controller);\n }\n return;\n }\n if (!trimmed) {\n emitTextDelta(\"\\n\", controller);\n return;\n }\n const patch = parseSpecStreamLine(trimmed);\n if (patch) {\n emitPatch(patch, controller);\n } else {\n emitTextDelta(line + \"\\n\", controller);\n }\n }\n return new TransformStream({\n transform(chunk, controller) {\n switch (chunk.type) {\n case \"text-start\": {\n const id = chunk.id;\n const idNum = parseInt(id, 10);\n if (!isNaN(idNum) && idNum >= textIdCounter) {\n textIdCounter = idNum;\n }\n currentTextId = id;\n inTextBlock = true;\n controller.enqueue(chunk);\n break;\n }\n case \"text-delta\": {\n const delta = chunk;\n const text = delta.delta;\n for (let i = 0; i < text.length; i++) {\n const ch = text.charAt(i);\n if (ch === \"\\n\") {\n if (buffering) {\n processCompleteLine(lineBuffer, controller);\n lineBuffer = \"\";\n buffering = false;\n } else {\n if (!inSpecFence) {\n emitTextDelta(\"\\n\", controller);\n }\n }\n } else if (lineBuffer.length === 0 && !buffering) {\n if (inSpecFence || ch === \"{\" || ch === \"`\") {\n buffering = true;\n lineBuffer += ch;\n } else {\n emitTextDelta(ch, controller);\n }\n } else if (buffering) {\n lineBuffer += ch;\n } else {\n emitTextDelta(ch, controller);\n }\n }\n break;\n }\n case \"text-end\": {\n flushBuffer(controller);\n if (inTextBlock) {\n controller.enqueue({ type: \"text-end\", id: currentTextId });\n inTextBlock = false;\n }\n break;\n }\n default: {\n controller.enqueue(chunk);\n break;\n }\n }\n },\n flush(controller) {\n flushBuffer(controller);\n closeTextBlock(controller);\n }\n });\n}\nvar SPEC_DATA_PART = \"spec\";\nvar SPEC_DATA_PART_TYPE = `data-${SPEC_DATA_PART}`;\nfunction pipeJsonRender(stream) {\n return stream.pipeThrough(\n createJsonRenderTransform()\n );\n}\n\n// src/state-store.ts\nfunction immutableSetByPath(root, path, value) {\n const segments = parseJsonPointer(path);\n if (segments.length === 0) return root;\n const result = { ...root };\n let current = result;\n for (let i = 0; i < segments.length - 1; i++) {\n const seg = segments[i];\n const child = current[seg];\n if (Array.isArray(child)) {\n current[seg] = [...child];\n } else if (child !== null && typeof child === \"object\") {\n current[seg] = { ...child };\n } else {\n const nextSeg = segments[i + 1];\n current[seg] = nextSeg !== void 0 && /^\\d+$/.test(nextSeg) ? [] : {};\n }\n current = current[seg];\n }\n const lastSeg = segments[segments.length - 1];\n if (Array.isArray(current)) {\n if (lastSeg === \"-\") {\n current.push(value);\n } else {\n current[parseInt(lastSeg, 10)] = value;\n }\n } else {\n current[lastSeg] = value;\n }\n return result;\n}\nfunction createStateStore(initialState = {}) {\n let state = { ...initialState };\n const listeners = /* @__PURE__ */ new Set();\n function notify() {\n for (const listener of listeners) {\n listener();\n }\n }\n return {\n get(path) {\n return getByPath(state, path);\n },\n set(path, value) {\n if (getByPath(state, path) === value) return;\n state = immutableSetByPath(state, path, value);\n notify();\n },\n update(updates) {\n let changed = false;\n let next = state;\n for (const [path, value] of Object.entries(updates)) {\n if (getByPath(next, path) !== value) {\n next = immutableSetByPath(next, path, value);\n changed = true;\n }\n }\n if (!changed) return;\n state = next;\n notify();\n },\n getSnapshot() {\n return state;\n },\n getServerSnapshot() {\n return state;\n },\n subscribe(listener) {\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n };\n }\n };\n}\nfunction createStoreAdapter(config) {\n return {\n get(path) {\n return getByPath(config.getSnapshot(), path);\n },\n set(path, value) {\n const current = config.getSnapshot();\n if (getByPath(current, path) === value) return;\n config.setSnapshot(immutableSetByPath(current, path, value));\n },\n update(updates) {\n let next = config.getSnapshot();\n let changed = false;\n for (const [path, value] of Object.entries(updates)) {\n if (getByPath(next, path) !== value) {\n next = immutableSetByPath(next, path, value);\n changed = true;\n }\n }\n if (!changed) return;\n config.setSnapshot(next);\n },\n getSnapshot: config.getSnapshot,\n getServerSnapshot: config.getSnapshot,\n subscribe: config.subscribe\n };\n}\nvar MAX_FLATTEN_DEPTH = 20;\nfunction flattenToPointers(obj, prefix = \"\", _depth = 0, _seen, _warned) {\n const seen = _seen ?? /* @__PURE__ */ new Set();\n const warned = _warned ?? { current: false };\n const result = {};\n for (const [key, value] of Object.entries(obj)) {\n const pointer = `${prefix}/${key}`;\n if (_depth < MAX_FLATTEN_DEPTH && value !== null && typeof value === \"object\" && !Array.isArray(value) && Object.getPrototypeOf(value) === Object.prototype && !seen.has(value)) {\n seen.add(value);\n Object.assign(\n result,\n flattenToPointers(\n value,\n pointer,\n _depth + 1,\n seen,\n warned\n )\n );\n } else {\n if (process.env.NODE_ENV !== \"production\" && !warned.current && _depth >= MAX_FLATTEN_DEPTH && value !== null && typeof value === \"object\" && !Array.isArray(value) && Object.getPrototypeOf(value) === Object.prototype && !seen.has(value)) {\n warned.current = true;\n console.warn(\n `flattenToPointers: depth limit (${MAX_FLATTEN_DEPTH}) reached. Nested state beyond this depth will be treated as a leaf value.`\n );\n }\n result[pointer] = value;\n }\n }\n return result;\n}\n\nexport {\n DynamicValueSchema,\n DynamicStringSchema,\n DynamicNumberSchema,\n DynamicBooleanSchema,\n resolveDynamicValue,\n getByPath,\n setByPath,\n addByPath,\n removeByPath,\n findFormValue,\n parseSpecStreamLine,\n applySpecStreamPatch,\n applySpecPatch,\n nestedToFlat,\n compileSpecStream,\n createSpecStreamCompiler,\n createMixedStreamParser,\n createJsonRenderTransform,\n SPEC_DATA_PART,\n SPEC_DATA_PART_TYPE,\n pipeJsonRender,\n immutableSetByPath,\n createStateStore,\n createStoreAdapter,\n flattenToPointers\n};\n//# sourceMappingURL=chunk-AFLK3Q4T.mjs.map","import {\n DynamicBooleanSchema,\n DynamicNumberSchema,\n DynamicStringSchema,\n DynamicValueSchema,\n SPEC_DATA_PART,\n SPEC_DATA_PART_TYPE,\n addByPath,\n applySpecPatch,\n applySpecStreamPatch,\n compileSpecStream,\n createJsonRenderTransform,\n createMixedStreamParser,\n createSpecStreamCompiler,\n createStateStore,\n findFormValue,\n getByPath,\n nestedToFlat,\n parseSpecStreamLine,\n pipeJsonRender,\n removeByPath,\n resolveDynamicValue,\n setByPath\n} from \"./chunk-AFLK3Q4T.mjs\";\n\n// src/visibility.ts\nimport { z } from \"zod\";\nvar numericOrStateRef = z.union([\n z.number(),\n z.object({ $state: z.string() })\n]);\nvar comparisonOps = {\n eq: z.unknown().optional(),\n neq: z.unknown().optional(),\n gt: numericOrStateRef.optional(),\n gte: numericOrStateRef.optional(),\n lt: numericOrStateRef.optional(),\n lte: numericOrStateRef.optional(),\n not: z.literal(true).optional()\n};\nvar StateConditionSchema = z.object({\n $state: z.string(),\n ...comparisonOps\n});\nvar ItemConditionSchema = z.object({\n $item: z.string(),\n ...comparisonOps\n});\nvar IndexConditionSchema = z.object({\n $index: z.literal(true),\n ...comparisonOps\n});\nvar SingleConditionSchema = z.union([\n StateConditionSchema,\n ItemConditionSchema,\n IndexConditionSchema\n]);\nvar VisibilityConditionSchema = z.lazy(\n () => z.union([\n z.boolean(),\n SingleConditionSchema,\n z.array(SingleConditionSchema),\n z.object({ $and: z.array(VisibilityConditionSchema) }),\n z.object({ $or: z.array(VisibilityConditionSchema) })\n ])\n);\nfunction resolveComparisonValue(value, ctx) {\n if (typeof value === \"object\" && value !== null) {\n if (\"$state\" in value && typeof value.$state === \"string\") {\n return getByPath(ctx.stateModel, value.$state);\n }\n }\n return value;\n}\nfunction isItemCondition(cond) {\n return \"$item\" in cond;\n}\nfunction isIndexCondition(cond) {\n return \"$index\" in cond;\n}\nfunction resolveConditionValue(cond, ctx) {\n if (isIndexCondition(cond)) {\n return ctx.repeatIndex;\n }\n if (isItemCondition(cond)) {\n if (ctx.repeatItem === void 0) return void 0;\n return cond.$item === \"\" ? ctx.repeatItem : getByPath(ctx.repeatItem, cond.$item);\n }\n return getByPath(ctx.stateModel, cond.$state);\n}\nfunction evaluateCondition(cond, ctx) {\n const value = resolveConditionValue(cond, ctx);\n let result;\n if (cond.eq !== void 0) {\n const rhs = resolveComparisonValue(cond.eq, ctx);\n result = value === rhs;\n } else if (cond.neq !== void 0) {\n const rhs = resolveComparisonValue(cond.neq, ctx);\n result = value !== rhs;\n } else if (cond.gt !== void 0) {\n const rhs = resolveComparisonValue(cond.gt, ctx);\n result = typeof value === \"number\" && typeof rhs === \"number\" ? value > rhs : false;\n } else if (cond.gte !== void 0) {\n const rhs = resolveComparisonValue(cond.gte, ctx);\n result = typeof value === \"number\" && typeof rhs === \"number\" ? value >= rhs : false;\n } else if (cond.lt !== void 0) {\n const rhs = resolveComparisonValue(cond.lt, ctx);\n result = typeof value === \"number\" && typeof rhs === \"number\" ? value < rhs : false;\n } else if (cond.lte !== void 0) {\n const rhs = resolveComparisonValue(cond.lte, ctx);\n result = typeof value === \"number\" && typeof rhs === \"number\" ? value <= rhs : false;\n } else {\n result = Boolean(value);\n }\n return cond.not === true ? !result : result;\n}\nfunction isAndCondition(condition) {\n return typeof condition === \"object\" && condition !== null && !Array.isArray(condition) && \"$and\" in condition;\n}\nfunction isOrCondition(condition) {\n return typeof condition === \"object\" && condition !== null && !Array.isArray(condition) && \"$or\" in condition;\n}\nfunction evaluateVisibility(condition, ctx) {\n if (condition === void 0) {\n return true;\n }\n if (typeof condition === \"boolean\") {\n return condition;\n }\n if (Array.isArray(condition)) {\n return condition.every((c) => evaluateCondition(c, ctx));\n }\n if (isAndCondition(condition)) {\n return condition.$and.every((child) => evaluateVisibility(child, ctx));\n }\n if (isOrCondition(condition)) {\n return condition.$or.some((child) => evaluateVisibility(child, ctx));\n }\n return evaluateCondition(condition, ctx);\n}\nvar visibility = {\n /** Always visible */\n always: true,\n /** Never visible */\n never: false,\n /** Visible when state path is truthy */\n when: (path) => ({ $state: path }),\n /** Visible when state path is falsy */\n unless: (path) => ({ $state: path, not: true }),\n /** Equality check */\n eq: (path, value) => ({\n $state: path,\n eq: value\n }),\n /** Not equal check */\n neq: (path, value) => ({\n $state: path,\n neq: value\n }),\n /** Greater than */\n gt: (path, value) => ({\n $state: path,\n gt: value\n }),\n /** Greater than or equal */\n gte: (path, value) => ({\n $state: path,\n gte: value\n }),\n /** Less than */\n lt: (path, value) => ({\n $state: path,\n lt: value\n }),\n /** Less than or equal */\n lte: (path, value) => ({\n $state: path,\n lte: value\n }),\n /** AND multiple conditions */\n and: (...conditions) => ({\n $and: conditions\n }),\n /** OR multiple conditions */\n or: (...conditions) => ({\n $or: conditions\n })\n};\n\n// src/props.ts\nfunction isStateExpression(value) {\n return typeof value === \"object\" && value !== null && \"$state\" in value && typeof value.$state === \"string\";\n}\nfunction isItemExpression(value) {\n return typeof value === \"object\" && value !== null && \"$item\" in value && typeof value.$item === \"string\";\n}\nfunction isIndexExpression(value) {\n return typeof value === \"object\" && value !== null && \"$index\" in value && value.$index === true;\n}\nfunction isBindStateExpression(value) {\n return typeof value === \"object\" && value !== null && \"$bindState\" in value && typeof value.$bindState === \"string\";\n}\nfunction isBindItemExpression(value) {\n return typeof value === \"object\" && value !== null && \"$bindItem\" in value && typeof value.$bindItem === \"string\";\n}\nfunction isCondExpression(value) {\n return typeof value === \"object\" && value !== null && \"$cond\" in value && \"$then\" in value && \"$else\" in value;\n}\nfunction isComputedExpression(value) {\n return typeof value === \"object\" && value !== null && \"$computed\" in value && typeof value.$computed === \"string\";\n}\nfunction isTemplateExpression(value) {\n return typeof value === \"object\" && value !== null && \"$template\" in value && typeof value.$template === \"string\";\n}\nvar WARNED_COMPUTED_MAX = 100;\nvar warnedComputedFns = /* @__PURE__ */ new Set();\nvar WARNED_TEMPLATE_MAX = 100;\nvar warnedTemplatePaths = /* @__PURE__ */ new Set();\nfunction resolveBindItemPath(itemPath, ctx) {\n if (ctx.repeatBasePath == null) {\n console.warn(`$bindItem used outside repeat scope: \"${itemPath}\"`);\n return void 0;\n }\n if (itemPath === \"\") return ctx.repeatBasePath;\n return ctx.repeatBasePath + \"/\" + itemPath;\n}\nfunction resolvePropValue(value, ctx) {\n if (value === null || value === void 0) {\n return value;\n }\n if (isStateExpression(value)) {\n return getByPath(ctx.stateModel, value.$state);\n }\n if (isItemExpression(value)) {\n if (ctx.repeatItem === void 0) return void 0;\n return value.$item === \"\" ? ctx.repeatItem : getByPath(ctx.repeatItem, value.$item);\n }\n if (isIndexExpression(value)) {\n return ctx.repeatIndex;\n }\n if (isBindStateExpression(value)) {\n return getByPath(ctx.stateModel, value.$bindState);\n }\n if (isBindItemExpression(value)) {\n const resolvedPath = resolveBindItemPath(value.$bindItem, ctx);\n if (resolvedPath === void 0) return void 0;\n return getByPath(ctx.stateModel, resolvedPath);\n }\n if (isCondExpression(value)) {\n const result = evaluateVisibility(value.$cond, ctx);\n return resolvePropValue(result ? value.$then : value.$else, ctx);\n }\n if (isComputedExpression(value)) {\n const fn = ctx.functions?.[value.$computed];\n if (!fn) {\n if (!warnedComputedFns.has(value.$computed)) {\n if (warnedComputedFns.size < WARNED_COMPUTED_MAX) {\n warnedComputedFns.add(value.$computed);\n }\n console.warn(`Unknown $computed function: \"${value.$computed}\"`);\n }\n return void 0;\n }\n const resolvedArgs = {};\n if (value.args) {\n for (const [key, arg] of Object.entries(value.args)) {\n resolvedArgs[key] = resolvePropValue(arg, ctx);\n }\n }\n return fn(resolvedArgs);\n }\n if (isTemplateExpression(value)) {\n return value.$template.replace(\n /\\$\\{([^}]+)\\}/g,\n (_match, rawPath) => {\n let path = rawPath;\n if (!path.startsWith(\"/\")) {\n if (!warnedTemplatePaths.has(path)) {\n if (warnedTemplatePaths.size < WARNED_TEMPLATE_MAX) {\n warnedTemplatePaths.add(path);\n }\n console.warn(\n `$template path \"${path}\" should be a JSON Pointer starting with \"/\". Automatically resolving as \"/${path}\".`\n );\n }\n path = \"/\" + path;\n }\n const resolved = getByPath(ctx.stateModel, path);\n return resolved != null ? String(resolved) : \"\";\n }\n );\n }\n if (Array.isArray(value)) {\n return value.map((item) => resolvePropValue(item, ctx));\n }\n if (typeof value === \"object\") {\n const resolved = {};\n for (const [key, val] of Object.entries(value)) {\n resolved[key] = resolvePropValue(val, ctx);\n }\n return resolved;\n }\n return value;\n}\nfunction resolveElementProps(props, ctx) {\n const resolved = {};\n for (const [key, value] of Object.entries(props)) {\n resolved[key] = resolvePropValue(value, ctx);\n }\n return resolved;\n}\nfunction resolveBindings(props, ctx) {\n let bindings;\n for (const [key, value] of Object.entries(props)) {\n if (isBindStateExpression(value)) {\n if (!bindings) bindings = {};\n bindings[key] = value.$bindState;\n } else if (isBindItemExpression(value)) {\n const resolved = resolveBindItemPath(value.$bindItem, ctx);\n if (resolved !== void 0) {\n if (!bindings) bindings = {};\n bindings[key] = resolved;\n }\n }\n }\n return bindings;\n}\nfunction resolveActionParam(value, ctx) {\n if (isItemExpression(value)) {\n return resolveBindItemPath(value.$item, ctx);\n }\n if (isIndexExpression(value)) {\n return ctx.repeatIndex;\n }\n return resolvePropValue(value, ctx);\n}\n\n// src/actions.ts\nimport { z as z2 } from \"zod\";\nvar ActionConfirmSchema = z2.object({\n title: z2.string(),\n message: z2.string(),\n confirmLabel: z2.string().optional(),\n cancelLabel: z2.string().optional(),\n variant: z2.enum([\"default\", \"danger\"]).optional()\n});\nvar ActionOnSuccessSchema = z2.union([\n z2.object({ navigate: z2.string() }),\n z2.object({ set: z2.record(z2.string(), z2.unknown()) }),\n z2.object({ action: z2.string() })\n]);\nvar ActionOnErrorSchema = z2.union([\n z2.object({ set: z2.record(z2.string(), z2.unknown()) }),\n z2.object({ action: z2.string() })\n]);\nvar ActionBindingSchema = z2.object({\n action: z2.string(),\n params: z2.record(z2.string(), DynamicValueSchema).optional(),\n confirm: ActionConfirmSchema.optional(),\n onSuccess: ActionOnSuccessSchema.optional(),\n onError: ActionOnErrorSchema.optional(),\n preventDefault: z2.boolean().optional()\n});\nvar ActionSchema = ActionBindingSchema;\nfunction resolveAction(binding, stateModel) {\n const resolvedParams = {};\n if (binding.params) {\n for (const [key, value] of Object.entries(binding.params)) {\n resolvedParams[key] = resolveDynamicValue(value, stateModel);\n }\n }\n let confirm = binding.confirm;\n if (confirm) {\n confirm = {\n ...confirm,\n message: interpolateString(confirm.message, stateModel),\n title: interpolateString(confirm.title, stateModel)\n };\n }\n return {\n action: binding.action,\n params: resolvedParams,\n confirm,\n onSuccess: binding.onSuccess,\n onError: binding.onError\n };\n}\nfunction interpolateString(template, stateModel) {\n return template.replace(/\\$\\{([^}]+)\\}/g, (_, path) => {\n const value = resolveDynamicValue({ $state: path }, stateModel);\n return String(value ?? \"\");\n });\n}\nasync function executeAction(ctx) {\n const { action: action2, handler, setState, navigate, executeAction: executeAction2 } = ctx;\n try {\n await handler(action2.params);\n if (action2.onSuccess) {\n if (\"navigate\" in action2.onSuccess && navigate) {\n navigate(action2.onSuccess.navigate);\n } else if (\"set\" in action2.onSuccess) {\n for (const [path, value] of Object.entries(action2.onSuccess.set)) {\n setState(path, value);\n }\n } else if (\"action\" in action2.onSuccess && executeAction2) {\n await executeAction2(action2.onSuccess.action);\n }\n }\n } catch (error) {\n if (action2.onError) {\n if (\"set\" in action2.onError) {\n for (const [path, value] of Object.entries(action2.onError.set)) {\n const resolvedValue = typeof value === \"string\" && value === \"$error.message\" ? error.message : value;\n setState(path, resolvedValue);\n }\n } else if (\"action\" in action2.onError && executeAction2) {\n await executeAction2(action2.onError.action);\n }\n } else {\n throw error;\n }\n }\n}\nvar actionBinding = {\n /** Create a simple action binding */\n simple: (actionName, params) => ({\n action: actionName,\n params\n }),\n /** Create an action binding with confirmation */\n withConfirm: (actionName, confirm, params) => ({\n action: actionName,\n params,\n confirm\n }),\n /** Create an action binding with success handler */\n withSuccess: (actionName, onSuccess, params) => ({\n action: actionName,\n params,\n onSuccess\n })\n};\nvar action = actionBinding;\n\n// src/validation.ts\nimport { z as z3 } from \"zod\";\nvar ValidationCheckSchema = z3.object({\n type: z3.string(),\n args: z3.record(z3.string(), DynamicValueSchema).optional(),\n message: z3.string()\n});\nvar ValidationConfigSchema = z3.object({\n checks: z3.array(ValidationCheckSchema).optional(),\n validateOn: z3.enum([\"change\", \"blur\", \"submit\"]).optional(),\n enabled: VisibilityConditionSchema.optional()\n});\nvar matchesImpl = (value, args) => {\n const other = args?.other;\n return value === other;\n};\nvar builtInValidationFunctions = {\n /**\n * Check if value is not null, undefined, or empty string\n */\n required: (value) => {\n if (value === null || value === void 0) return false;\n if (typeof value === \"string\") return value.trim().length > 0;\n if (Array.isArray(value)) return value.length > 0;\n return true;\n },\n /**\n * Check if value is a valid email address\n */\n email: (value) => {\n if (typeof value !== \"string\") return false;\n return /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(value);\n },\n /**\n * Check minimum string length\n */\n minLength: (value, args) => {\n if (typeof value !== \"string\") return false;\n const min = args?.min;\n if (typeof min !== \"number\") return false;\n return value.length >= min;\n },\n /**\n * Check maximum string length\n */\n maxLength: (value, args) => {\n if (typeof value !== \"string\") return false;\n const max = args?.max;\n if (typeof max !== \"number\") return false;\n return value.length <= max;\n },\n /**\n * Check if string matches a regex pattern\n */\n pattern: (value, args) => {\n if (typeof value !== \"string\") return false;\n const pattern = args?.pattern;\n if (typeof pattern !== \"string\") return false;\n try {\n return new RegExp(pattern).test(value);\n } catch {\n return false;\n }\n },\n /**\n * Check minimum numeric value\n */\n min: (value, args) => {\n if (typeof value !== \"number\") return false;\n const min = args?.min;\n if (typeof min !== \"number\") return false;\n return value >= min;\n },\n /**\n * Check maximum numeric value\n */\n max: (value, args) => {\n if (typeof value !== \"number\") return false;\n const max = args?.max;\n if (typeof max !== \"number\") return false;\n return value <= max;\n },\n /**\n * Check if value is a number\n */\n numeric: (value) => {\n if (typeof value === \"number\") return !isNaN(value);\n if (typeof value === \"string\") return !isNaN(parseFloat(value));\n return false;\n },\n /**\n * Check if value is a valid URL\n */\n url: (value) => {\n if (typeof value !== \"string\") return false;\n try {\n new URL(value);\n return true;\n } catch {\n return false;\n }\n },\n /**\n * Check if value matches another field\n */\n matches: matchesImpl,\n /**\n * Alias for matches with a more descriptive name for cross-field equality\n */\n equalTo: matchesImpl,\n /**\n * Check if value is less than another field's value.\n * Supports numbers, strings (useful for ISO date comparison), and\n * cross-type numeric coercion (e.g. string \"3\" vs number 5).\n */\n lessThan: (value, args) => {\n const other = args?.other;\n if (value == null || other == null || value === \"\" || other === \"\")\n return false;\n if (typeof value === \"number\" && typeof other === \"number\")\n return value < other;\n if (typeof value === \"string\" && typeof other === \"string\")\n return value < other;\n const numVal = Number(value);\n const numOther = Number(other);\n if (!isNaN(numVal) && !isNaN(numOther)) return numVal < numOther;\n return false;\n },\n /**\n * Check if value is greater than another field's value.\n * Supports numbers, strings (useful for ISO date comparison), and\n * cross-type numeric coercion (e.g. string \"7\" vs number 5).\n */\n greaterThan: (value, args) => {\n const other = args?.other;\n if (value == null || other == null || value === \"\" || other === \"\")\n return false;\n if (typeof value === \"number\" && typeof other === \"number\")\n return value > other;\n if (typeof value === \"string\" && typeof other === \"string\")\n return value > other;\n const numVal = Number(value);\n const numOther = Number(other);\n if (!isNaN(numVal) && !isNaN(numOther)) return numVal > numOther;\n return false;\n },\n /**\n * Required only when a condition is met.\n * Uses JS truthiness: 0, false, \"\", null, and undefined are all\n * treated as \"condition not met\" (field not required), matching\n * the visibility system's bare-condition semantics.\n */\n requiredIf: (value, args) => {\n const condition = args?.field;\n if (!condition) return true;\n if (value === null || value === void 0) return false;\n if (typeof value === \"string\") return value.trim().length > 0;\n if (Array.isArray(value)) return value.length > 0;\n return true;\n }\n};\nfunction runValidationCheck(check2, ctx) {\n const { value, stateModel, customFunctions } = ctx;\n const resolvedArgs = {};\n if (check2.args) {\n for (const [key, argValue] of Object.entries(check2.args)) {\n resolvedArgs[key] = resolvePropValue(argValue, { stateModel });\n }\n }\n const validationFn = builtInValidationFunctions[check2.type] ?? customFunctions?.[check2.type];\n if (!validationFn) {\n console.warn(`Unknown validation function: ${check2.type}`);\n return {\n type: check2.type,\n valid: true,\n // Don't fail on unknown functions\n message: check2.message\n };\n }\n const valid = validationFn(value, resolvedArgs);\n return {\n type: check2.type,\n valid,\n message: check2.message\n };\n}\nfunction runValidation(config, ctx) {\n const checks = [];\n const errors = [];\n if (config.enabled) {\n const enabled = evaluateVisibility(config.enabled, {\n stateModel: ctx.stateModel\n });\n if (!enabled) {\n return { valid: true, errors: [], checks: [] };\n }\n }\n if (config.checks) {\n for (const check2 of config.checks) {\n const result = runValidationCheck(check2, ctx);\n checks.push(result);\n if (!result.valid) {\n errors.push(result.message);\n }\n }\n }\n return {\n valid: errors.length === 0,\n errors,\n checks\n };\n}\nvar check = {\n required: (message = \"This field is required\") => ({\n type: \"required\",\n message\n }),\n email: (message = \"Invalid email address\") => ({\n type: \"email\",\n message\n }),\n minLength: (min, message) => ({\n type: \"minLength\",\n args: { min },\n message: message ?? `Must be at least ${min} characters`\n }),\n maxLength: (max, message) => ({\n type: \"maxLength\",\n args: { max },\n message: message ?? `Must be at most ${max} characters`\n }),\n pattern: (pattern, message = \"Invalid format\") => ({\n type: \"pattern\",\n args: { pattern },\n message\n }),\n min: (min, message) => ({\n type: \"min\",\n args: { min },\n message: message ?? `Must be at least ${min}`\n }),\n max: (max, message) => ({\n type: \"max\",\n args: { max },\n message: message ?? `Must be at most ${max}`\n }),\n url: (message = \"Invalid URL\") => ({\n type: \"url\",\n message\n }),\n numeric: (message = \"Must be a number\") => ({\n type: \"numeric\",\n message\n }),\n matches: (otherPath, message = \"Fields must match\") => ({\n type: \"matches\",\n args: { other: { $state: otherPath } },\n message\n }),\n equalTo: (otherPath, message = \"Fields must match\") => ({\n type: \"equalTo\",\n args: { other: { $state: otherPath } },\n message\n }),\n lessThan: (otherPath, message) => ({\n type: \"lessThan\",\n args: { other: { $state: otherPath } },\n message: message ?? \"Must be less than the compared field\"\n }),\n greaterThan: (otherPath, message) => ({\n type: \"greaterThan\",\n args: { other: { $state: otherPath } },\n message: message ?? \"Must be greater than the compared field\"\n }),\n requiredIf: (fieldPath, message = \"This field is required\") => ({\n type: \"requiredIf\",\n args: { field: { $state: fieldPath } },\n message\n })\n};\n\n// src/spec-validator.ts\nfunction validateSpec(spec, options = {}) {\n const { checkOrphans = false } = options;\n const issues = [];\n if (!spec.root) {\n issues.push({\n severity: \"error\",\n message: \"Spec has no root element defined.\",\n code: \"missing_root\"\n });\n return { valid: false, issues };\n }\n if (!spec.elements[spec.root]) {\n issues.push({\n severity: \"error\",\n message: `Root element \"${spec.root}\" not found in elements map.`,\n code: \"root_not_found\"\n });\n }\n if (Object.keys(spec.elements).length === 0) {\n issues.push({\n severity: \"error\",\n message: \"Spec has no elements.\",\n code: \"empty_spec\"\n });\n return { valid: false, issues };\n }\n for (const [key, element] of Object.entries(spec.elements)) {\n if (element.children) {\n for (const childKey of element.children) {\n if (!spec.elements[childKey]) {\n issues.push({\n severity: \"error\",\n message: `Element \"${key}\" references child \"${childKey}\" which does not exist in the elements map.`,\n elementKey: key,\n code: \"missing_child\"\n });\n }\n }\n }\n const props = element.props;\n if (props && \"visible\" in props && props.visible !== void 0) {\n issues.push({\n severity: \"error\",\n message: `Element \"${key}\" has \"visible\" inside \"props\". It should be a top-level field on the element (sibling of type/props/children).`,\n elementKey: key,\n code: \"visible_in_props\"\n });\n }\n if (props && \"on\" in props && props.on !== void 0) {\n issues.push({\n severity: \"error\",\n message: `Element \"${key}\" has \"on\" inside \"props\". It should be a top-level field on the element (sibling of type/props/children).`,\n elementKey: key,\n code: \"on_in_props\"\n });\n }\n if (props && \"repeat\" in props && props.repeat !== void 0) {\n issues.push({\n severity: \"error\",\n message: `Element \"${key}\" has \"repeat\" inside \"props\". It should be a top-level field on the element (sibling of type/props/children).`,\n elementKey: key,\n code: \"repeat_in_props\"\n });\n }\n if (props && \"watch\" in props && props.watch !== void 0) {\n issues.push({\n severity: \"error\",\n message: `Element \"${key}\" has \"watch\" inside \"props\". It should be a top-level field on the element (sibling of type/props/children).`,\n elementKey: key,\n code: \"watch_in_props\"\n });\n }\n }\n if (checkOrphans) {\n const reachable = /* @__PURE__ */ new Set();\n const walk = (key) => {\n if (reachable.has(key)) return;\n reachable.add(key);\n const el = spec.elements[key];\n if (el?.children) {\n for (const childKey of el.children) {\n if (spec.elements[childKey]) {\n walk(childKey);\n }\n }\n }\n };\n if (spec.elements[spec.root]) {\n walk(spec.root);\n }\n for (const key of Object.keys(spec.elements)) {\n if (!reachable.has(key)) {\n issues.push({\n severity: \"warning\",\n message: `Element \"${key}\" is not reachable from root \"${spec.root}\".`,\n elementKey: key,\n code: \"orphaned_element\"\n });\n }\n }\n }\n const hasErrors = issues.some((i) => i.severity === \"error\");\n return { valid: !hasErrors, issues };\n}\nfunction autoFixSpec(spec) {\n const fixes = [];\n const fixedElements = {};\n for (const [key, element] of Object.entries(spec.elements)) {\n const props = element.props;\n let fixed = element;\n if (props && \"visible\" in props && props.visible !== void 0) {\n const { visible, ...restProps } = fixed.props;\n fixed = {\n ...fixed,\n props: restProps,\n visible\n };\n fixes.push(`Moved \"visible\" from props to element level on \"${key}\".`);\n }\n let currentProps = fixed.props;\n if (currentProps && \"on\" in currentProps && currentProps.on !== void 0) {\n const { on, ...restProps } = currentProps;\n fixed = {\n ...fixed,\n props: restProps,\n on\n };\n fixes.push(`Moved \"on\" from props to element level on \"${key}\".`);\n }\n currentProps = fixed.props;\n if (currentProps && \"repeat\" in currentProps && currentProps.repeat !== void 0) {\n const { repeat, ...restProps } = currentProps;\n fixed = {\n ...fixed,\n props: restProps,\n repeat\n };\n fixes.push(`Moved \"repeat\" from props to element level on \"${key}\".`);\n }\n currentProps = fixed.props;\n if (currentProps && \"watch\" in currentProps && currentProps.watch !== void 0) {\n const { watch, ...restProps } = currentProps;\n fixed = {\n ...fixed,\n props: restProps,\n watch\n };\n fixes.push(`Moved \"watch\" from props to element level on \"${key}\".`);\n }\n fixedElements[key] = fixed;\n }\n return {\n spec: { root: spec.root, elements: fixedElements, state: spec.state },\n fixes\n };\n}\nfunction formatSpecIssues(issues) {\n const errors = issues.filter((i) => i.severity === \"error\");\n if (errors.length === 0) return \"\";\n const lines = [\"The generated UI spec has the following errors:\"];\n for (const issue of errors) {\n lines.push(`- ${issue.message}`);\n }\n return lines.join(\"\\n\");\n}\n\n// src/schema.ts\nimport { z as z4 } from \"zod\";\n\n// src/edit-modes.ts\nvar DEFAULT_MODES = [\"patch\"];\nfunction normalizeModes(config) {\n if (!config?.modes?.length) return DEFAULT_MODES;\n return config.modes;\n}\nfunction jsonPatchInstructions() {\n return [\n \"PATCH MODE (RFC 6902 JSON Patch):\",\n \"Output one JSON object per line. Each line is a patch operation.\",\n '- Add: {\"op\":\"add\",\"path\":\"/elements/new-key\",\"value\":{...}}',\n '- Replace: {\"op\":\"replace\",\"path\":\"/elements/existing-key\",\"value\":{...}}',\n '- Remove: {\"op\":\"remove\",\"path\":\"/elements/old-key\"}',\n \"Only output patches for what needs to change.\"\n ].join(\"\\n\");\n}\nfunction jsonMergeInstructions() {\n return [\n \"MERGE MODE (RFC 7396 JSON Merge Patch):\",\n \"Output a single JSON object on one line with __json_edit set to true.\",\n \"Include only the keys that changed. Unmentioned keys are preserved.\",\n \"Set a key to null to delete it.\",\n \"\",\n \"Example (update a title and add an element):\",\n '{\"__json_edit\":true,\"elements\":{\"main\":{\"props\":{\"title\":\"New Title\"}},\"new-el\":{\"type\":\"Card\",\"props\":{},\"children\":[]}}}',\n \"\",\n \"Example (delete an element):\",\n '{\"__json_edit\":true,\"elements\":{\"old-widget\":null}}'\n ].join(\"\\n\");\n}\nfunction jsonDiffInstructions() {\n return [\n \"DIFF MODE (unified diff):\",\n \"Output a unified diff inside a ```diff code fence.\",\n \"The diff applies against the JSON-serialized current spec.\",\n \"\",\n \"Example:\",\n \"```diff\",\n \"--- a/spec.json\",\n \"+++ b/spec.json\",\n \"@@ -3,1 +3,1 @@\",\n '- \"title\": \"Login\"',\n '+ \"title\": \"Welcome Back\"',\n \"```\"\n ].join(\"\\n\");\n}\nfunction yamlPatchInstructions() {\n return [\n \"PATCH MODE (RFC 6902 JSON Patch):\",\n \"Output RFC 6902 JSON Patch lines inside a ```yaml-patch code fence.\",\n \"Each line is one JSON patch operation.\",\n \"\",\n \"Example:\",\n \"```yaml-patch\",\n '{\"op\":\"replace\",\"path\":\"/elements/main/props/title\",\"value\":\"New Title\"}',\n '{\"op\":\"add\",\"path\":\"/elements/new-el\",\"value\":{\"type\":\"Card\",\"props\":{},\"children\":[]}}',\n \"```\"\n ].join(\"\\n\");\n}\nfunction yamlMergeInstructions() {\n return [\n \"MERGE MODE (RFC 7396 JSON Merge Patch):\",\n \"Output only the changed parts in a ```yaml-edit code fence.\",\n \"Uses deep merge semantics: only keys you include are updated. Unmentioned elements and props are preserved.\",\n \"Set a key to null to delete it.\",\n \"\",\n \"Example edit (update title, add a new element):\",\n \"```yaml-edit\",\n \"elements:\",\n \" main:\",\n \" props:\",\n \" title: Updated Title\",\n \" new-chart:\",\n \" type: Card\",\n \" props: {}\",\n \" children: []\",\n \"```\",\n \"\",\n \"Example deletion:\",\n \"```yaml-edit\",\n \"elements:\",\n \" old-widget: null\",\n \"```\"\n ].join(\"\\n\");\n}\nfunction yamlDiffInstructions() {\n return [\n \"DIFF MODE (unified diff):\",\n \"Output a unified diff inside a ```diff code fence.\",\n \"The diff applies against the YAML-serialized current spec.\",\n \"\",\n \"Example:\",\n \"```diff\",\n \"--- a/spec.yaml\",\n \"+++ b/spec.yaml\",\n \"@@ -6,1 +6,1 @@\",\n \"- title: Login\",\n \"+ title: Welcome Back\",\n \"```\"\n ].join(\"\\n\");\n}\nfunction modeSelectionGuidance(modes) {\n if (modes.length === 1) return \"\";\n const parts = [\"Choose the best edit strategy for the requested change:\"];\n if (modes.includes(\"patch\")) {\n parts.push(\"- PATCH: best for precise, targeted single-field updates\");\n }\n if (modes.includes(\"merge\")) {\n parts.push(\n \"- MERGE: best for structural changes (add/remove elements, reparent children, update multiple props at once)\"\n );\n }\n if (modes.includes(\"diff\")) {\n parts.push(\n \"- DIFF: best for small text-level changes when you can see the exact lines to change\"\n );\n }\n return parts.join(\"\\n\");\n}\nfunction buildEditInstructions(config, format) {\n const modes = normalizeModes(config);\n const sections = [];\n sections.push(\"EDITING EXISTING SPECS:\");\n sections.push(\"\");\n const guidance = modeSelectionGuidance(modes);\n if (guidance) {\n sections.push(guidance);\n sections.push(\"\");\n }\n for (const mode of modes) {\n if (format === \"json\") {\n switch (mode) {\n case \"patch\":\n sections.push(jsonPatchInstructions());\n break;\n case \"merge\":\n sections.push(jsonMergeInstructions());\n break;\n case \"diff\":\n sections.push(jsonDiffInstructions());\n break;\n }\n } else {\n switch (mode) {\n case \"patch\":\n sections.push(yamlPatchInstructions());\n break;\n case \"merge\":\n sections.push(yamlMergeInstructions());\n break;\n case \"diff\":\n sections.push(yamlDiffInstructions());\n break;\n }\n }\n sections.push(\"\");\n }\n return sections.join(\"\\n\");\n}\nfunction addLineNumbers(text) {\n const lines = text.split(\"\\n\");\n const width = String(lines.length).length;\n return lines.map((line, i) => `${String(i + 1).padStart(width)}| ${line}`).join(\"\\n\");\n}\nfunction isNonEmptySpec(spec) {\n if (!spec || typeof spec !== \"object\") return false;\n const s = spec;\n return typeof s.root === \"string\" && typeof s.elements === \"object\" && s.elements !== null && Object.keys(s.elements).length > 0;\n}\nfunction buildEditUserPrompt(options) {\n const { prompt, currentSpec, config, format, maxPromptLength, serializer } = options;\n let userText = String(prompt || \"\");\n if (maxPromptLength !== void 0 && maxPromptLength > 0) {\n userText = userText.slice(0, maxPromptLength);\n }\n if (!isNonEmptySpec(currentSpec)) {\n return userText;\n }\n const modes = normalizeModes(config);\n const showLineNumbers = modes.includes(\"diff\");\n const serialize = serializer ?? ((s) => JSON.stringify(s, null, 2));\n const specText = serialize(currentSpec);\n const parts = [];\n if (showLineNumbers) {\n parts.push(\"CURRENT UI STATE (line numbers for reference):\");\n parts.push(\"```\");\n parts.push(addLineNumbers(specText));\n parts.push(\"```\");\n } else {\n parts.push(\n \"CURRENT UI STATE (already loaded, DO NOT recreate existing elements):\"\n );\n parts.push(\"```\");\n parts.push(specText);\n parts.push(\"```\");\n }\n parts.push(\"\");\n parts.push(`USER REQUEST: ${userText}`);\n parts.push(\"\");\n if (modes.length === 1) {\n const mode = modes[0];\n switch (mode) {\n case \"patch\":\n parts.push(\n format === \"yaml\" ? \"Output ONLY the patches in a ```yaml-patch fence.\" : \"Output ONLY the JSON Patch lines needed for the change.\"\n );\n break;\n case \"merge\":\n parts.push(\n format === \"yaml\" ? \"Output ONLY the changes in a ```yaml-edit fence. Include only keys that need to change.\" : \"Output ONLY a single JSON merge line with __json_edit set to true. Include only keys that need to change.\"\n );\n break;\n case \"diff\":\n parts.push(\"Output ONLY the unified diff in a ```diff fence.\");\n break;\n }\n } else {\n const modeNames = modes.map((m) => {\n switch (m) {\n case \"patch\":\n return format === \"yaml\" ? \"```yaml-patch fence\" : \"JSON Patch lines\";\n case \"merge\":\n return format === \"yaml\" ? \"```yaml-edit fence\" : \"JSON merge line (__json_edit)\";\n case \"diff\":\n return \"```diff fence\";\n }\n });\n parts.push(\n `Choose the best edit strategy and output using one of: ${modeNames.join(\", \")}`\n );\n }\n return parts.join(\"\\n\");\n}\n\n// src/schema.ts\nfunction createBuilder() {\n return {\n string: () => ({ kind: \"string\" }),\n number: () => ({ kind: \"number\" }),\n boolean: () => ({ kind: \"boolean\" }),\n array: (item) => ({ kind: \"array\", inner: item }),\n object: (shape) => ({ kind: \"object\", inner: shape }),\n record: (value) => ({ kind: \"record\", inner: value }),\n any: () => ({ kind: \"any\" }),\n zod: () => ({ kind: \"zod\" }),\n ref: (path) => ({ kind: \"ref\", inner: path }),\n propsOf: (path) => ({ kind: \"propsOf\", inner: path }),\n map: (entryShape) => ({ kind: \"map\", inner: entryShape }),\n optional: () => ({ optional: true })\n };\n}\nfunction defineSchema(builder, options) {\n const s = createBuilder();\n const definition = builder(s);\n return {\n definition,\n promptTemplate: options?.promptTemplate,\n defaultRules: options?.defaultRules,\n builtInActions: options?.builtInActions,\n createCatalog(catalog) {\n return createCatalogFromSchema(this, catalog);\n }\n };\n}\nfunction createCatalogFromSchema(schema, catalogData) {\n const components = catalogData.components;\n const actions = catalogData.actions;\n const componentNames = components ? Object.keys(components) : [];\n const actionNames = actions ? Object.keys(actions) : [];\n const zodSchema = buildZodSchemaFromDefinition(\n schema.definition,\n catalogData\n );\n return {\n schema,\n data: catalogData,\n componentNames,\n actionNames,\n prompt(options = {}) {\n return generatePrompt(this, options);\n },\n jsonSchema(options = {}) {\n return zodToJsonSchema(zodSchema, options.strict ?? false);\n },\n validate(spec) {\n const result = zodSchema.safeParse(spec);\n if (result.success) {\n return {\n success: true,\n data: result.data\n };\n }\n return { success: false, error: result.error };\n },\n zodSchema() {\n return zodSchema;\n },\n get _specType() {\n throw new Error(\"_specType is only for type inference\");\n }\n };\n}\nfunction buildZodSchemaFromDefinition(definition, catalogData) {\n return buildZodType(definition.spec, catalogData);\n}\nfunction buildZodType(schemaType, catalogData) {\n switch (schemaType.kind) {\n case \"string\":\n return z4.string();\n case \"number\":\n return z4.number();\n case \"boolean\":\n return z4.boolean();\n case \"any\":\n return z4.any();\n case \"array\": {\n const inner = buildZodType(schemaType.inner, catalogData);\n return z4.array(inner);\n }\n case \"object\": {\n const shape = schemaType.inner;\n const zodShape = {};\n for (const [key, value] of Object.entries(shape)) {\n let zodType = buildZodType(value, catalogData);\n if (value.optional) {\n zodType = zodType.optional();\n }\n zodShape[key] = zodType;\n }\n return z4.object(zodShape);\n }\n case \"record\": {\n const inner = buildZodType(schemaType.inner, catalogData);\n return z4.record(z4.string(), inner);\n }\n case \"ref\": {\n const path = schemaType.inner;\n const keys = getKeysFromPath(path, catalogData);\n if (keys.length === 0) {\n return z4.string();\n }\n if (keys.length === 1) {\n return z4.literal(keys[0]);\n }\n return z4.enum(keys);\n }\n case \"propsOf\": {\n const path = schemaType.inner;\n const propsSchemas = getPropsFromPath(path, catalogData);\n if (propsSchemas.length === 0) {\n return z4.record(z4.string(), z4.unknown());\n }\n if (propsSchemas.length === 1) {\n return propsSchemas[0];\n }\n return z4.record(z4.string(), z4.unknown());\n }\n default:\n return z4.unknown();\n }\n}\nfunction getKeysFromPath(path, catalogData) {\n const parts = path.split(\".\");\n let current = { catalog: catalogData };\n for (const part of parts) {\n if (current && typeof current === \"object\") {\n current = current[part];\n } else {\n return [];\n }\n }\n if (current && typeof current === \"object\") {\n return Object.keys(current);\n }\n return [];\n}\nfunction getPropsFromPath(path, catalogData) {\n const parts = path.split(\".\");\n let current = { catalog: catalogData };\n for (const part of parts) {\n if (current && typeof current === \"object\") {\n current = current[part];\n } else {\n return [];\n }\n }\n if (current && typeof current === \"object\") {\n return Object.values(current).map((entry) => entry.props).filter((props) => props !== void 0);\n }\n return [];\n}\nfunction generatePrompt(catalog, options) {\n if (catalog.schema.promptTemplate) {\n const context = {\n catalog: catalog.data,\n componentNames: catalog.componentNames,\n actionNames: catalog.actionNames,\n options,\n formatZodType\n };\n return catalog.schema.promptTemplate(context);\n }\n const {\n system = \"You are a UI generator that outputs JSON.\",\n customRules = [],\n mode: rawMode = \"standalone\"\n } = options;\n const mode = rawMode === \"chat\" ? (console.warn(\n '[json-render] mode \"chat\" is deprecated, use \"inline\" instead'\n ), \"inline\") : rawMode === \"generate\" ? (console.warn(\n '[json-render] mode \"generate\" is deprecated, use \"standalone\" instead'\n ), \"standalone\") : rawMode;\n const lines = [];\n lines.push(system);\n lines.push(\"\");\n if (mode === \"inline\") {\n lines.push(\"OUTPUT FORMAT (text + JSONL, RFC 6902 JSON Patch):\");\n lines.push(\n \"You respond conversationally. When generating UI, first write a brief explanation (1-3 sentences), then output JSONL patch lines wrapped in a ```spec code fence.\"\n );\n lines.push(\n \"The JSONL lines use RFC 6902 JSON Patch operations to build a UI tree. Always wrap them in a ```spec fence block:\"\n );\n lines.push(\" ```spec\");\n lines.push(' {\"op\":\"add\",\"path\":\"/root\",\"value\":\"main\"}');\n lines.push(\n ' {\"op\":\"add\",\"path\":\"/elements/main\",\"value\":{\"type\":\"Card\",\"props\":{\"title\":\"Hello\"},\"children\":[]}}'\n );\n lines.push(\" ```\");\n lines.push(\n \"If the user's message does not require a UI (e.g. a greeting or clarifying question), respond with text only \\u2014 no JSONL.\"\n );\n } else {\n lines.push(\"OUTPUT FORMAT (JSONL, RFC 6902 JSON Patch):\");\n lines.push(\n \"Output JSONL (one JSON object per line) using RFC 6902 JSON Patch operations to build a UI tree.\"\n );\n }\n lines.push(\n \"Each line is a JSON patch operation (add, remove, replace). Start with /root, then stream /elements and /state patches interleaved so the UI fills in progressively as it streams.\"\n );\n lines.push(\"\");\n lines.push(\"Example output (each line is a separate JSON object):\");\n lines.push(\"\");\n const allComponents = catalog.data.components;\n const cn = catalog.componentNames;\n const comp1 = cn[0] || \"Component\";\n const comp2 = cn.length > 1 ? cn[1] : comp1;\n const comp1Def = allComponents?.[comp1];\n const comp2Def = allComponents?.[comp2];\n const comp1Props = comp1Def ? getExampleProps(comp1Def) : {};\n const comp2Props = comp2Def ? getExampleProps(comp2Def) : {};\n const dynamicPropName = comp2Def?.props ? findFirstStringProp(comp2Def.props) : null;\n const dynamicProps = dynamicPropName ? { ...comp2Props, [dynamicPropName]: { $item: \"title\" } } : comp2Props;\n const exampleOutput = [\n JSON.stringify({ op: \"add\", path: \"/root\", value: \"main\" }),\n JSON.stringify({\n op: \"add\",\n path: \"/elements/main\",\n value: {\n type: comp1,\n props: comp1Props,\n children: [\"child-1\", \"list\"]\n }\n }),\n JSON.stringify({\n op: \"add\",\n path: \"/elements/child-1\",\n value: { type: comp2, props: comp2Props, children: [] }\n }),\n JSON.stringify({\n op: \"add\",\n path: \"/elements/list\",\n value: {\n type: comp1,\n props: comp1Props,\n repeat: { statePath: \"/items\", key: \"id\" },\n children: [\"item\"]\n }\n }),\n JSON.stringify({\n op: \"add\",\n path: \"/elements/item\",\n value: { type: comp2, props: dynamicProps, children: [] }\n }),\n JSON.stringify({ op: \"add\", path: \"/state/items\", value: [] }),\n JSON.stringify({\n op: \"add\",\n path: \"/state/items/0\",\n value: { id: \"1\", title: \"First Item\" }\n }),\n JSON.stringify({\n op: \"add\",\n path: \"/state/items/1\",\n value: { id: \"2\", title: \"Second Item\" }\n })\n ].join(\"\\n\");\n lines.push(`${exampleOutput}\n\nNote: state patches appear right after the elements that use them, so the UI fills in as it streams. ONLY use component types from the AVAILABLE COMPONENTS list below.`);\n lines.push(\"\");\n lines.push(\"INITIAL STATE:\");\n lines.push(\n \"Specs include a /state field to seed the state model. Components with { $bindState } or { $bindItem } read from and write to this state, and $state expressions read from it.\"\n );\n lines.push(\n \"CRITICAL: You MUST include state patches whenever your UI displays data via $state, $bindState, $bindItem, $item, or $index expressions, or uses repeat to iterate over arrays. Without state, these references resolve to nothing and repeat lists render zero items.\"\n );\n lines.push(\n \"Output state patches right after the elements that reference them, so the UI fills in progressively as it streams.\"\n );\n lines.push(\n \"Stream state progressively - output one patch per array item instead of one giant blob:\"\n );\n lines.push(\n ' For arrays: {\"op\":\"add\",\"path\":\"/state/posts/0\",\"value\":{\"id\":\"1\",\"title\":\"First Post\",...}} then /state/posts/1, /state/posts/2, etc.'\n );\n lines.push(\n ' For scalars: {\"op\":\"add\",\"path\":\"/state/newTodoText\",\"value\":\"\"}'\n );\n lines.push(\n ' Initialize the array first if needed: {\"op\":\"add\",\"path\":\"/state/posts\",\"value\":[]}'\n );\n lines.push(\n 'When content comes from the state model, use { \"$state\": \"/some/path\" } dynamic props to display it instead of hardcoding the same value in both state and props. The state model is the single source of truth.'\n );\n lines.push(\n \"Include realistic sample data in state. For blogs: 3-4 posts with titles, excerpts, authors, dates. For product lists: 3-5 items with names, prices, descriptions. Never leave arrays empty.\"\n );\n lines.push(\"\");\n lines.push(\"DYNAMIC LISTS (repeat field):\");\n lines.push(\n 'Any element can have a top-level \"repeat\" field to render its children once per item in a state array: { \"repeat\": { \"statePath\": \"/arrayPath\", \"key\": \"id\" } }.'\n );\n lines.push(\n 'The element itself renders once (as the container), and its children are expanded once per array item. \"statePath\" is the state array path. \"key\" is an optional field name on each item for stable React keys.'\n );\n lines.push(\n `Example: ${JSON.stringify({ type: comp1, props: comp1Props, repeat: { statePath: \"/todos\", key: \"id\" }, children: [\"todo-item\"] })}`\n );\n lines.push(\n 'Inside children of a repeated element, use { \"$item\": \"field\" } to read a field from the current item, and { \"$index\": true } to get the current array index. For two-way binding to an item field use { \"$bindItem\": \"completed\" } on the appropriate prop.'\n );\n lines.push(\n \"ALWAYS use the repeat field for lists backed by state arrays. NEVER hardcode individual elements for each array item.\"\n );\n lines.push(\n 'IMPORTANT: \"repeat\" is a top-level field on the element (sibling of type/props/children), NOT inside props.'\n );\n lines.push(\"\");\n lines.push(\"ARRAY STATE ACTIONS:\");\n lines.push(\n 'Use action \"pushState\" to append items to arrays. Params: { statePath: \"/arrayPath\", value: { ...item }, clearStatePath: \"/inputPath\" }.'\n );\n lines.push(\n 'Values inside pushState can contain { \"$state\": \"/statePath\" } references to read current state (e.g. the text from an input field).'\n );\n lines.push(\n 'Use \"$id\" inside a pushState value to auto-generate a unique ID.'\n );\n lines.push(\n 'Example: on: { \"press\": { \"action\": \"pushState\", \"params\": { \"statePath\": \"/todos\", \"value\": { \"id\": \"$id\", \"title\": { \"$state\": \"/newTodoText\" }, \"completed\": false }, \"clearStatePath\": \"/newTodoText\" } } }'\n );\n lines.push(\n `Use action \"removeState\" to remove items from arrays by index. Params: { statePath: \"/arrayPath\", index: N }. Inside a repeated element's children, use { \"$index\": true } for the current item index. Action params support the same expressions as props: { \"$item\": \"field\" } resolves to the absolute state path, { \"$index\": true } resolves to the index number, and { \"$state\": \"/path\" } reads a value from state.`\n );\n lines.push(\n \"For lists where users can add/remove items (todos, carts, etc.), use pushState and removeState instead of hardcoding with setState.\"\n );\n lines.push(\"\");\n lines.push(\n 'IMPORTANT: State paths use RFC 6901 JSON Pointer syntax (e.g. \"/todos/0/title\"). Do NOT use JavaScript-style dot notation (e.g. \"/todos.length\" is WRONG). To generate unique IDs for new items, use \"$id\" instead of trying to read array length.'\n );\n lines.push(\"\");\n const components = allComponents;\n if (components) {\n lines.push(`AVAILABLE COMPONENTS (${catalog.componentNames.length}):`);\n lines.push(\"\");\n for (const [name, def] of Object.entries(components)) {\n const propsStr = def.props ? formatZodType(def.props) : \"{}\";\n const hasChildren = def.slots && def.slots.length > 0;\n const childrenStr = hasChildren ? \" [accepts children]\" : \"\";\n const eventsStr = def.events && def.events.length > 0 ? ` [events: ${def.events.join(\", \")}]` : \"\";\n const descStr = def.description ? ` - ${def.description}` : \"\";\n lines.push(`- ${name}: ${propsStr}${descStr}${childrenStr}${eventsStr}`);\n }\n lines.push(\"\");\n }\n const actions = catalog.data.actions;\n const builtInActions = catalog.schema.builtInActions ?? [];\n const hasCustomActions = actions && catalog.actionNames.length > 0;\n const hasBuiltInActions = builtInActions.length > 0;\n if (hasCustomActions || hasBuiltInActions) {\n lines.push(\"AVAILABLE ACTIONS:\");\n lines.push(\"\");\n for (const action2 of builtInActions) {\n lines.push(`- ${action2.name}: ${action2.description} [built-in]`);\n }\n if (hasCustomActions) {\n for (const [name, def] of Object.entries(actions)) {\n lines.push(`- ${name}${def.description ? `: ${def.description}` : \"\"}`);\n }\n }\n lines.push(\"\");\n }\n lines.push(\"EVENTS (the `on` field):\");\n lines.push(\n \"Elements can have an optional `on` field to bind events to actions. The `on` field is a top-level field on the element (sibling of type/props/children), NOT inside props.\"\n );\n lines.push(\n 'Each key in `on` is an event name (from the component\\'s supported events), and the value is an action binding: `{ \"action\": \"<actionName>\", \"params\": { ... } }`.'\n );\n lines.push(\"\");\n lines.push(\"Example:\");\n lines.push(\n ` ${JSON.stringify({ type: comp1, props: comp1Props, on: { press: { action: \"setState\", params: { statePath: \"/saved\", value: true } } }, children: [] })}`\n );\n lines.push(\"\");\n lines.push(\n 'Action params can use dynamic references to read from state: { \"$state\": \"/statePath\" }.'\n );\n lines.push(\n \"IMPORTANT: Do NOT put action/actionParams inside props. Always use the `on` field for event bindings.\"\n );\n lines.push(\"\");\n lines.push(\"VISIBILITY CONDITIONS:\");\n lines.push(\n \"Elements can have an optional `visible` field to conditionally show/hide based on state. IMPORTANT: `visible` is a top-level field on the element object (sibling of type/props/children), NOT inside props.\"\n );\n lines.push(\n `Correct: ${JSON.stringify({ type: comp1, props: comp1Props, visible: { $state: \"/activeTab\", eq: \"home\" }, children: [\"...\"] })}`\n );\n lines.push(\n '- `{ \"$state\": \"/path\" }` - visible when state at path is truthy'\n );\n lines.push(\n '- `{ \"$state\": \"/path\", \"not\": true }` - visible when state at path is falsy'\n );\n lines.push(\n '- `{ \"$state\": \"/path\", \"eq\": \"value\" }` - visible when state equals value'\n );\n lines.push(\n '- `{ \"$state\": \"/path\", \"neq\": \"value\" }` - visible when state does not equal value'\n );\n lines.push(\n '- `{ \"$state\": \"/path\", \"gt\": N }` / `gte` / `lt` / `lte` - numeric comparisons'\n );\n lines.push(\n \"- Use ONE operator per condition (eq, neq, gt, gte, lt, lte). Do not combine multiple operators.\"\n );\n lines.push('- Any condition can add `\"not\": true` to invert its result');\n lines.push(\n \"- `[condition, condition]` - all conditions must be true (implicit AND)\"\n );\n lines.push(\n '- `{ \"$and\": [condition, condition] }` - explicit AND (use when nesting inside $or)'\n );\n lines.push(\n '- `{ \"$or\": [condition, condition] }` - at least one must be true (OR)'\n );\n lines.push(\"- `true` / `false` - always visible/hidden\");\n lines.push(\"\");\n lines.push(\n \"Use a component with on.press bound to setState to update state and drive visibility.\"\n );\n lines.push(\n `Example: A ${comp1} with on: { \"press\": { \"action\": \"setState\", \"params\": { \"statePath\": \"/activeTab\", \"value\": \"home\" } } } sets state, then a container with visible: { \"$state\": \"/activeTab\", \"eq\": \"home\" } shows only when that tab is active.`\n );\n lines.push(\"\");\n lines.push(\n 'For tab patterns where the first/default tab should be visible when no tab is selected yet, use $or to handle both cases: visible: { \"$or\": [{ \"$state\": \"/activeTab\", \"eq\": \"home\" }, { \"$state\": \"/activeTab\", \"not\": true }] }. This ensures the first tab is visible both when explicitly selected AND when /activeTab is not yet set.'\n );\n lines.push(\"\");\n lines.push(\"DYNAMIC PROPS:\");\n lines.push(\n \"Any prop value can be a dynamic expression that resolves based on state. Three forms are supported:\"\n );\n lines.push(\"\");\n lines.push(\n '1. Read-only state: `{ \"$state\": \"/statePath\" }` - resolves to the value at that state path (one-way read).'\n );\n lines.push(\n ' Example: `\"color\": { \"$state\": \"/theme/primary\" }` reads the color from state.'\n );\n lines.push(\"\");\n lines.push(\n '2. Two-way binding: `{ \"$bindState\": \"/statePath\" }` - resolves to the value at the state path AND enables write-back. Use on form input props (value, checked, pressed, etc.).'\n );\n lines.push(\n ' Example: `\"value\": { \"$bindState\": \"/form/email\" }` binds the input value to /form/email.'\n );\n lines.push(\n ' Inside repeat scopes: `\"checked\": { \"$bindItem\": \"completed\" }` binds to the current item\\'s completed field.'\n );\n lines.push(\"\");\n lines.push(\n '3. Conditional: `{ \"$cond\": <condition>, \"$then\": <value>, \"$else\": <value> }` - evaluates the condition (same syntax as visibility conditions) and picks the matching value.'\n );\n lines.push(\n ' Example: `\"color\": { \"$cond\": { \"$state\": \"/activeTab\", \"eq\": \"home\" }, \"$then\": \"#007AFF\", \"$else\": \"#8E8E93\" }`'\n );\n lines.push(\"\");\n lines.push(\n \"Use $bindState for form inputs (text fields, checkboxes, selects, sliders, etc.) and $state for read-only data display. Inside repeat scopes, use $bindItem for form inputs bound to the current item. Use dynamic props instead of duplicating elements with opposing visible conditions when only prop values differ.\"\n );\n lines.push(\"\");\n lines.push(\n '4. Template: `{ \"$template\": \"Hello, ${/name}!\" }` - interpolates `${/path}` references in the string with values from the state model.'\n );\n lines.push(\n ' Example: `\"label\": { \"$template\": \"Items: ${/cart/count} | Total: ${/cart/total}\" }` renders \"Items: 3 | Total: 42.00\" when /cart/count is 3 and /cart/total is 42.00.'\n );\n lines.push(\"\");\n const catalogFunctions = catalog.data.functions;\n if (catalogFunctions && Object.keys(catalogFunctions).length > 0) {\n lines.push(\n '5. Computed: `{ \"$computed\": \"<functionName>\", \"args\": { \"key\": <expression> } }` - calls a registered function with resolved args and returns the result.'\n );\n lines.push(\n ' Example: `\"value\": { \"$computed\": \"fullName\", \"args\": { \"first\": { \"$state\": \"/form/firstName\" }, \"last\": { \"$state\": \"/form/lastName\" } } }`'\n );\n lines.push(\" Available functions:\");\n for (const name of Object.keys(\n catalogFunctions\n )) {\n lines.push(` - ${name}`);\n }\n lines.push(\"\");\n }\n const hasChecksComponents = allComponents ? Object.entries(allComponents).some(([, def]) => {\n if (!def.props) return false;\n const formatted = formatZodType(def.props);\n return formatted.includes(\"checks\");\n }) : false;\n if (hasChecksComponents) {\n lines.push(\"VALIDATION:\");\n lines.push(\n \"Form components that accept a `checks` prop support client-side validation.\"\n );\n lines.push(\n 'Each check is an object: { \"type\": \"<name>\", \"message\": \"...\", \"args\": { ... } }'\n );\n lines.push(\"\");\n lines.push(\"Built-in validation types:\");\n lines.push(\" - required \\u2014 value must be non-empty\");\n lines.push(\" - email \\u2014 valid email format\");\n lines.push(' - minLength \\u2014 minimum string length (args: { \"min\": N })');\n lines.push(' - maxLength \\u2014 maximum string length (args: { \"max\": N })');\n lines.push(' - pattern \\u2014 match a regex (args: { \"pattern\": \"regex\" })');\n lines.push(' - min \\u2014 minimum numeric value (args: { \"min\": N })');\n lines.push(' - max \\u2014 maximum numeric value (args: { \"max\": N })');\n lines.push(\" - numeric \\u2014 value must be a number\");\n lines.push(\" - url \\u2014 valid URL format\");\n lines.push(\n ' - matches \\u2014 must equal another field (args: { \"other\": { \"$state\": \"/path\" } })'\n );\n lines.push(\n ' - equalTo \\u2014 alias for matches (args: { \"other\": { \"$state\": \"/path\" } })'\n );\n lines.push(\n ' - lessThan \\u2014 value must be less than another field (args: { \"other\": { \"$state\": \"/path\" } })'\n );\n lines.push(\n ' - greaterThan \\u2014 value must be greater than another field (args: { \"other\": { \"$state\": \"/path\" } })'\n );\n lines.push(\n ' - requiredIf \\u2014 required only when another field is truthy (args: { \"field\": { \"$state\": \"/path\" } })'\n );\n lines.push(\"\");\n lines.push(\"Example:\");\n lines.push(\n ' \"checks\": [{ \"type\": \"required\", \"message\": \"Email is required\" }, { \"type\": \"email\", \"message\": \"Invalid email\" }]'\n );\n lines.push(\"\");\n lines.push(\n \"IMPORTANT: When using checks, the component must also have a { $bindState } or { $bindItem } on its value/checked prop for two-way binding.\"\n );\n lines.push(\n \"Always include validation checks on form inputs for a good user experience (e.g. required, email, minLength).\"\n );\n lines.push(\"\");\n }\n if (hasCustomActions || hasBuiltInActions) {\n lines.push(\"STATE WATCHERS:\");\n lines.push(\n \"Elements can have an optional `watch` field to react to state changes and trigger actions. The `watch` field is a top-level field on the element (sibling of type/props/children), NOT inside props.\"\n );\n lines.push(\n \"Maps state paths (JSON Pointers) to action bindings. When the value at a watched path changes, the bound actions fire automatically.\"\n );\n lines.push(\"\");\n lines.push(\n \"Example (cascading select \\u2014 country changes trigger city loading):\"\n );\n lines.push(\n ` ${JSON.stringify({ type: \"Select\", props: { value: { $bindState: \"/form/country\" }, options: [\"US\", \"Canada\", \"UK\"] }, watch: { \"/form/country\": { action: \"loadCities\", params: { country: { $state: \"/form/country\" } } } }, children: [] })}`\n );\n lines.push(\"\");\n lines.push(\n \"Use `watch` for cascading dependencies where changing one field should trigger side effects (loading data, resetting dependent fields, computing derived values).\"\n );\n lines.push(\n \"IMPORTANT: `watch` is a top-level field on the element (sibling of type/props/children), NOT inside props. Watchers only fire when the value changes, not on initial render.\"\n );\n lines.push(\"\");\n }\n const editModes = options.editModes;\n if (editModes && editModes.length > 0) {\n lines.push(buildEditInstructions({ modes: editModes }, \"json\"));\n }\n lines.push(\"RULES:\");\n const baseRules = mode === \"inline\" ? [\n \"When generating UI, wrap all JSONL patches in a ```spec code fence - one JSON object per line inside the fence\",\n \"Write a brief conversational response before any JSONL output\",\n 'First set root: {\"op\":\"add\",\"path\":\"/root\",\"value\":\"<root-key>\"}',\n 'Then add each element: {\"op\":\"add\",\"path\":\"/elements/<key>\",\"value\":{...}}',\n \"Output /state patches right after the elements that use them, one per array item for progressive loading. REQUIRED whenever using $state, $bindState, $bindItem, $item, $index, or repeat.\",\n \"ONLY use components listed above\",\n \"Each element value needs: type, props, children (array of child keys)\",\n \"Use unique keys for the element map entries (e.g., 'header', 'metric-1', 'chart-revenue')\"\n ] : [\n \"Output ONLY JSONL patches - one JSON object per line, no markdown, no code fences\",\n 'First set root: {\"op\":\"add\",\"path\":\"/root\",\"value\":\"<root-key>\"}',\n 'Then add each element: {\"op\":\"add\",\"path\":\"/elements/<key>\",\"value\":{...}}',\n \"Output /state patches right after the elements that use them, one per array item for progressive loading. REQUIRED whenever using $state, $bindState, $bindItem, $item, $index, or repeat.\",\n \"ONLY use components listed above\",\n \"Each element value needs: type, props, children (array of child keys)\",\n \"Use unique keys for the element map entries (e.g., 'header', 'metric-1', 'chart-revenue')\"\n ];\n const schemaRules = catalog.schema.defaultRules ?? [];\n const allRules = [...baseRules, ...schemaRules, ...customRules];\n allRules.forEach((rule, i) => {\n lines.push(`${i + 1}. ${rule}`);\n });\n return lines.join(\"\\n\");\n}\nfunction getExampleProps(def) {\n if (def.example && Object.keys(def.example).length > 0) {\n return def.example;\n }\n if (def.props) {\n return generateExamplePropsFromZod(def.props);\n }\n return {};\n}\nfunction generateExamplePropsFromZod(schema) {\n if (!schema || !schema._def) return {};\n const def = schema._def;\n const typeName = getZodTypeName(schema);\n if (typeName !== \"ZodObject\" && typeName !== \"object\") return {};\n const shape = typeof def.shape === \"function\" ? def.shape() : def.shape;\n if (!shape) return {};\n const result = {};\n for (const [key, value] of Object.entries(shape)) {\n const innerTypeName = getZodTypeName(value);\n if (innerTypeName === \"ZodOptional\" || innerTypeName === \"optional\" || innerTypeName === \"ZodNullable\" || innerTypeName === \"nullable\") {\n continue;\n }\n result[key] = generateExampleValue(value);\n }\n return result;\n}\nfunction generateExampleValue(schema) {\n if (!schema || !schema._def) return \"...\";\n const def = schema._def;\n const typeName = getZodTypeName(schema);\n switch (typeName) {\n case \"ZodString\":\n case \"string\":\n return \"example\";\n case \"ZodNumber\":\n case \"number\":\n return 0;\n case \"ZodBoolean\":\n case \"boolean\":\n return true;\n case \"ZodLiteral\":\n case \"literal\":\n return def.value;\n case \"ZodEnum\":\n case \"enum\": {\n if (Array.isArray(def.values) && def.values.length > 0)\n return def.values[0];\n if (def.entries && typeof def.entries === \"object\") {\n const values = Object.values(def.entries);\n return values.length > 0 ? values[0] : \"example\";\n }\n return \"example\";\n }\n case \"ZodOptional\":\n case \"optional\":\n case \"ZodNullable\":\n case \"nullable\":\n case \"ZodDefault\":\n case \"default\": {\n const inner = def.innerType ?? def.wrapped;\n return inner ? generateExampleValue(inner) : null;\n }\n case \"ZodArray\":\n case \"array\":\n return [];\n case \"ZodObject\":\n case \"object\":\n return generateExamplePropsFromZod(schema);\n case \"ZodUnion\":\n case \"union\": {\n const options = def.options;\n return options && options.length > 0 ? generateExampleValue(options[0]) : \"...\";\n }\n default:\n return \"...\";\n }\n}\nfunction findFirstStringProp(schema) {\n if (!schema || !schema._def) return null;\n const def = schema._def;\n const typeName = getZodTypeName(schema);\n if (typeName !== \"ZodObject\" && typeName !== \"object\") return null;\n const shape = typeof def.shape === \"function\" ? def.shape() : def.shape;\n if (!shape) return null;\n for (const [key, value] of Object.entries(shape)) {\n const innerTypeName = getZodTypeName(value);\n if (innerTypeName === \"ZodOptional\" || innerTypeName === \"optional\" || innerTypeName === \"ZodNullable\" || innerTypeName === \"nullable\") {\n continue;\n }\n if (innerTypeName === \"ZodString\" || innerTypeName === \"string\") {\n return key;\n }\n }\n return null;\n}\nfunction getZodTypeName(schema) {\n if (!schema || !schema._def) return \"\";\n const def = schema._def;\n return def.typeName ?? def.type ?? \"\";\n}\nfunction formatZodType(schema) {\n if (!schema || !schema._def) return \"unknown\";\n const def = schema._def;\n const typeName = getZodTypeName(schema);\n switch (typeName) {\n case \"ZodString\":\n case \"string\":\n return \"string\";\n case \"ZodNumber\":\n case \"number\":\n return \"number\";\n case \"ZodBoolean\":\n case \"boolean\":\n return \"boolean\";\n case \"ZodLiteral\":\n case \"literal\":\n return JSON.stringify(def.value);\n case \"ZodEnum\":\n case \"enum\": {\n let values;\n if (Array.isArray(def.values)) {\n values = def.values;\n } else if (def.entries && typeof def.entries === \"object\") {\n values = Object.values(def.entries);\n } else {\n return \"enum\";\n }\n return values.map((v) => `\"${v}\"`).join(\" | \");\n }\n case \"ZodArray\":\n case \"array\": {\n const inner = typeof def.element === \"object\" ? def.element : typeof def.type === \"object\" ? def.type : void 0;\n return inner ? `Array<${formatZodType(inner)}>` : \"Array<unknown>\";\n }\n case \"ZodObject\":\n case \"object\": {\n const shape = typeof def.shape === \"function\" ? def.shape() : def.shape;\n if (!shape) return \"object\";\n const props = Object.entries(shape).map(([key, value]) => {\n const innerTypeName = getZodTypeName(value);\n const isOptional = innerTypeName === \"ZodOptional\" || innerTypeName === \"ZodNullable\" || innerTypeName === \"optional\" || innerTypeName === \"nullable\";\n return `${key}${isOptional ? \"?\" : \"\"}: ${formatZodType(value)}`;\n }).join(\", \");\n return `{ ${props} }`;\n }\n case \"ZodOptional\":\n case \"optional\":\n case \"ZodNullable\":\n case \"nullable\": {\n const inner = def.innerType ?? def.wrapped;\n return inner ? formatZodType(inner) : \"unknown\";\n }\n case \"ZodUnion\":\n case \"union\": {\n const options = def.options;\n return options ? options.map((opt) => formatZodType(opt)).join(\" | \") : \"unknown\";\n }\n default:\n return \"unknown\";\n }\n}\nfunction zodTypeName(def) {\n if (typeof def.type === \"string\") return def.type;\n if (typeof def.typeName === \"string\") return def.typeName;\n return \"\";\n}\nfunction normalizeTypeName(raw) {\n if (raw.startsWith(\"Zod\")) {\n return raw.slice(3).toLowerCase();\n }\n return raw.toLowerCase();\n}\nfunction zodToJsonSchema(schema, strict = false) {\n const def = schema._def;\n const kind = normalizeTypeName(zodTypeName(def));\n switch (kind) {\n case \"string\":\n return { type: \"string\" };\n case \"number\":\n return { type: \"number\" };\n case \"boolean\":\n return { type: \"boolean\" };\n case \"literal\": {\n const values = def.values;\n const value = values ? values[0] : def.value;\n return { const: value };\n }\n case \"enum\": {\n const entries = def.entries;\n const values = entries ? Object.values(entries) : def.values;\n return { enum: values ?? [] };\n }\n case \"array\": {\n const inner = def.element ?? def.type;\n return {\n type: \"array\",\n items: inner ? zodToJsonSchema(inner, strict) : {}\n };\n }\n case \"object\": {\n const rawShape = def.shape;\n const shape = typeof rawShape === \"function\" ? rawShape() : rawShape;\n if (!shape) {\n if (strict) {\n return {\n type: \"object\",\n properties: {},\n required: [],\n additionalProperties: false\n };\n }\n return { type: \"object\" };\n }\n const properties = {};\n const required = [];\n for (const [key, value] of Object.entries(shape)) {\n const innerDef = value._def;\n const innerKind = normalizeTypeName(zodTypeName(innerDef));\n const isOptional = innerKind === \"optional\" || innerKind === \"nullable\";\n if (strict) {\n required.push(key);\n if (isOptional) {\n const unwrapped = zodToJsonSchema(value, strict);\n properties[key] = { anyOf: [unwrapped, { type: \"null\" }] };\n } else {\n properties[key] = zodToJsonSchema(value, strict);\n }\n } else {\n properties[key] = zodToJsonSchema(value);\n if (!isOptional) {\n required.push(key);\n }\n }\n }\n return {\n type: \"object\",\n properties,\n required: required.length > 0 ? required : void 0,\n additionalProperties: false\n };\n }\n case \"record\": {\n const valueType = def.valueType;\n if (strict) {\n return {\n type: \"object\",\n properties: {},\n required: [],\n additionalProperties: false\n };\n }\n return {\n type: \"object\",\n additionalProperties: valueType ? zodToJsonSchema(valueType) : true\n };\n }\n case \"optional\":\n case \"nullable\": {\n const inner = def.innerType;\n return inner ? zodToJsonSchema(inner, strict) : {};\n }\n case \"union\": {\n const options = def.options;\n return options ? { anyOf: options.map((o) => zodToJsonSchema(o, strict)) } : {};\n }\n case \"any\":\n case \"unknown\":\n if (strict) {\n return {\n type: \"object\",\n properties: {},\n required: [],\n additionalProperties: false\n };\n }\n return {};\n default:\n return {};\n }\n}\nfunction defineCatalog(schema, catalog) {\n return schema.createCatalog(catalog);\n}\n\n// src/prompt.ts\nfunction buildUserPrompt(options) {\n const {\n prompt,\n currentSpec,\n state,\n maxPromptLength,\n editModes,\n format,\n serializer\n } = options;\n let userText = String(prompt || \"\");\n if (maxPromptLength !== void 0 && maxPromptLength > 0) {\n userText = userText.slice(0, maxPromptLength);\n }\n if (isNonEmptySpec(currentSpec)) {\n const editPrompt = buildEditUserPrompt({\n prompt: userText,\n currentSpec,\n config: { modes: editModes ?? [\"patch\"] },\n format: format ?? \"json\",\n serializer\n });\n if (state && Object.keys(state).length > 0) {\n return `${editPrompt}\n\nAVAILABLE STATE:\n${JSON.stringify(state, null, 2)}`;\n }\n return editPrompt;\n }\n const parts = [userText];\n if (state && Object.keys(state).length > 0) {\n parts.push(`\nAVAILABLE STATE:\n${JSON.stringify(state, null, 2)}`);\n }\n if (format === \"yaml\") {\n parts.push(\n `\nOutput the full spec in a \\`\\`\\`yaml-spec fence. Stream progressively \\u2014 output elements one at a time.`\n );\n } else {\n parts.push(\n `\nRemember: Output /root first, then interleave /elements and /state patches so the UI fills in progressively as it streams. Output each state patch right after the elements that use it, one per array item.`\n );\n }\n return parts.join(\"\\n\");\n}\n\n// src/merge.ts\nfunction isPlainObject(value) {\n return value !== null && typeof value === \"object\" && !Array.isArray(value);\n}\nfunction deepMergeSpec(base, patch) {\n const result = { ...base };\n for (const key of Object.keys(patch)) {\n const patchVal = patch[key];\n if (patchVal === null) {\n delete result[key];\n continue;\n }\n const baseVal = result[key];\n if (isPlainObject(patchVal) && isPlainObject(baseVal)) {\n result[key] = deepMergeSpec(baseVal, patchVal);\n } else {\n result[key] = patchVal;\n }\n }\n return result;\n}\n\n// src/diff.ts\nfunction escapeToken(token) {\n return token.replace(/~/g, \"~0\").replace(/\\//g, \"~1\");\n}\nfunction buildPath(basePath, key) {\n return `${basePath}/${escapeToken(key)}`;\n}\nfunction isPlainObject2(value) {\n return value !== null && typeof value === \"object\" && !Array.isArray(value);\n}\nfunction arraysEqual(a, b) {\n if (a.length !== b.length) return false;\n for (let i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) return false;\n }\n return true;\n}\nfunction diffToPatches(oldObj, newObj, basePath = \"\") {\n const patches = [];\n for (const key of Object.keys(newObj)) {\n const path = buildPath(basePath, key);\n const oldVal = oldObj[key];\n const newVal = newObj[key];\n if (!(key in oldObj)) {\n patches.push({ op: \"add\", path, value: newVal });\n continue;\n }\n if (isPlainObject2(oldVal) && isPlainObject2(newVal)) {\n patches.push(...diffToPatches(oldVal, newVal, path));\n } else if (Array.isArray(oldVal) && Array.isArray(newVal)) {\n if (!arraysEqual(oldVal, newVal)) {\n patches.push({ op: \"replace\", path, value: newVal });\n }\n } else if (oldVal !== newVal) {\n patches.push({ op: \"replace\", path, value: newVal });\n }\n }\n for (const key of Object.keys(oldObj)) {\n if (!(key in newObj)) {\n patches.push({ op: \"remove\", path: buildPath(basePath, key) });\n }\n }\n return patches;\n}\nexport {\n ActionBindingSchema,\n ActionConfirmSchema,\n ActionOnErrorSchema,\n ActionOnSuccessSchema,\n ActionSchema,\n DynamicBooleanSchema,\n DynamicNumberSchema,\n DynamicStringSchema,\n DynamicValueSchema,\n SPEC_DATA_PART,\n SPEC_DATA_PART_TYPE,\n ValidationCheckSchema,\n ValidationConfigSchema,\n VisibilityConditionSchema,\n action,\n actionBinding,\n addByPath,\n applySpecPatch,\n applySpecStreamPatch,\n autoFixSpec,\n buildEditInstructions,\n buildEditUserPrompt,\n buildUserPrompt,\n builtInValidationFunctions,\n check,\n compileSpecStream,\n createJsonRenderTransform,\n createMixedStreamParser,\n createSpecStreamCompiler,\n createStateStore,\n deepMergeSpec,\n defineCatalog,\n defineSchema,\n diffToPatches,\n evaluateVisibility,\n executeAction,\n findFormValue,\n formatSpecIssues,\n getByPath,\n interpolateString,\n isNonEmptySpec,\n nestedToFlat,\n parseSpecStreamLine,\n pipeJsonRender,\n removeByPath,\n resolveAction,\n resolveActionParam,\n resolveBindings,\n resolveDynamicValue,\n resolveElementProps,\n resolvePropValue,\n runValidation,\n runValidationCheck,\n setByPath,\n validateSpec,\n visibility\n};\n//# sourceMappingURL=index.mjs.map","// src/schema.ts\nimport { defineSchema } from \"@json-render/core\";\nvar schema = defineSchema(\n (s) => ({\n // What the AI-generated SPEC looks like\n spec: s.object({\n /** Root element key */\n root: s.string(),\n /** Flat map of elements by key */\n elements: s.record(\n s.object({\n /** Component type from catalog */\n type: s.ref(\"catalog.components\"),\n /** Component props */\n props: s.propsOf(\"catalog.components\"),\n /** Child element keys (flat reference) */\n children: s.array(s.string()),\n /** Visibility condition */\n visible: s.any()\n })\n )\n }),\n // What the CATALOG must provide\n catalog: s.object({\n /** Component definitions */\n components: s.map({\n /** Zod schema for component props */\n props: s.zod(),\n /** Slots for this component. Use ['default'] for children, or named slots like ['header', 'footer'] */\n slots: s.array(s.string()),\n /** Description for AI generation hints */\n description: s.string(),\n /** Example prop values used in prompt examples (auto-generated from Zod schema if omitted) */\n example: s.any()\n }),\n /** Action definitions (optional) */\n actions: s.map({\n /** Zod schema for action params */\n params: s.zod(),\n /** Description for AI generation hints */\n description: s.string()\n })\n })\n }),\n {\n builtInActions: [\n {\n name: \"setState\",\n description: \"Update a value in the state model at the given statePath. Params: { statePath: string, value: any }\"\n },\n {\n name: \"pushState\",\n description: 'Append an item to an array in state. Params: { statePath: string, value: any, clearStatePath?: string }. Value can contain {\"$state\":\"/path\"} refs and \"$id\" for auto IDs.'\n },\n {\n name: \"removeState\",\n description: \"Remove an item from an array in state by index. Params: { statePath: string, index: number }\"\n },\n {\n name: \"validateForm\",\n description: \"Validate all registered form fields and write the result to state. Params: { statePath?: string }. Defaults to /formValidation. Result: { valid: boolean, errors: Record<string, string[]> }.\"\n }\n ],\n defaultRules: [\n // Element integrity\n \"CRITICAL INTEGRITY CHECK: Before outputting ANY element that references children, you MUST have already output (or will output) each child as its own element. If an element has children: ['a', 'b'], then elements 'a' and 'b' MUST exist. A missing child element causes that entire branch of the UI to be invisible.\",\n \"SELF-CHECK: After generating all elements, mentally walk the tree from root. Every key in every children array must resolve to a defined element. If you find a gap, output the missing element immediately.\",\n // Field placement\n 'CRITICAL: The \"visible\" field goes on the ELEMENT object, NOT inside \"props\". Correct: {\"type\":\"<ComponentName>\",\"props\":{},\"visible\":{\"$state\":\"/tab\",\"eq\":\"home\"},\"children\":[...]}.',\n 'CRITICAL: The \"on\" field goes on the ELEMENT object, NOT inside \"props\". Use on.press, on.change, on.submit etc. NEVER put action/actionParams inside props.',\n // State and data\n \"When the user asks for a UI that displays data (e.g. blog posts, products, users), ALWAYS include a state field with realistic sample data. The state field is a top-level field on the spec (sibling of root/elements).\",\n 'When building repeating content backed by a state array (e.g. posts, products, items), use the \"repeat\" field on a container element. Example: { \"type\": \"<ContainerComponent>\", \"props\": {}, \"repeat\": { \"statePath\": \"/posts\", \"key\": \"id\" }, \"children\": [\"post-card\"] }. Replace <ContainerComponent> with an appropriate component from the AVAILABLE COMPONENTS list. Inside repeated children, use { \"$item\": \"field\" } to read a field from the current item, and { \"$index\": true } for the current array index. For two-way binding to an item field use { \"$bindItem\": \"completed\" }. Do NOT hardcode individual elements for each array item.',\n // Design quality\n \"Design with visual hierarchy: use container components to group content, heading components for section titles, proper spacing, and status indicators. ONLY use components from the AVAILABLE COMPONENTS list.\",\n \"For data-rich UIs, use multi-column layout components if available. For forms and single-column content, use vertical layout components. ONLY use components from the AVAILABLE COMPONENTS list.\",\n \"Always include realistic, professional-looking sample data. For blogs include 3-4 posts with varied titles, authors, dates, categories. For products include names, prices, images. Never leave data empty.\"\n ]\n }\n);\nvar elementTreeSchema = schema;\n\nexport {\n schema,\n elementTreeSchema\n};\n//# sourceMappingURL=chunk-WYDS23XB.mjs.map","import {\n elementTreeSchema,\n schema\n} from \"./chunk-WYDS23XB.mjs\";\n\n// ../react-state/dist/index.mjs\nimport {\n createContext,\n useContext,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useSyncExternalStore\n} from \"react\";\nimport {\n getByPath,\n createStateStore\n} from \"@json-render/core\";\nimport { flattenToPointers } from \"@json-render/core/store-utils\";\nimport { jsx } from \"react/jsx-runtime\";\nvar StateContext = createContext(null);\nfunction computeInitialFlat(isControlled, initialState) {\n if (isControlled) return null;\n if (Object.keys(initialState).length === 0) return {};\n return flattenToPointers(initialState);\n}\nfunction StateProvider({\n store: externalStore,\n initialState = {},\n onStateChange,\n children\n}) {\n const internalStoreRef = useRef(void 0);\n if (!externalStore && !internalStoreRef.current) {\n internalStoreRef.current = createStateStore(initialState);\n }\n const store = externalStore ?? internalStoreRef.current;\n const storeRef = useRef(store);\n storeRef.current = store;\n const isControlledRef = useRef(!!externalStore);\n isControlledRef.current = !!externalStore;\n const initialModeRef = useRef(externalStore ? \"controlled\" : \"uncontrolled\");\n const modeWarnedRef = useRef(false);\n if (process.env.NODE_ENV !== \"production\") {\n const currentMode = externalStore ? \"controlled\" : \"uncontrolled\";\n if (currentMode !== initialModeRef.current && !modeWarnedRef.current) {\n modeWarnedRef.current = true;\n console.warn(\n `StateProvider: switching from ${initialModeRef.current} to ${currentMode} mode is not supported.`\n );\n }\n }\n const prevInitialStateRef = useRef(initialState);\n const prevFlatRef = useRef(\n computeInitialFlat(!!externalStore, initialState)\n );\n useEffect(() => {\n if (externalStore) return;\n if (initialState === prevInitialStateRef.current) return;\n prevInitialStateRef.current = initialState;\n const nextFlat = initialState && Object.keys(initialState).length > 0 ? flattenToPointers(initialState) : {};\n const prevFlat = prevFlatRef.current ?? {};\n const allKeys = /* @__PURE__ */ new Set([\n ...Object.keys(prevFlat),\n ...Object.keys(nextFlat)\n ]);\n const updates = {};\n for (const key of allKeys) {\n if (prevFlat[key] !== nextFlat[key]) {\n updates[key] = key in nextFlat ? nextFlat[key] : void 0;\n }\n }\n prevFlatRef.current = nextFlat;\n if (Object.keys(updates).length > 0) {\n store.update(updates);\n }\n }, [externalStore, initialState, store]);\n const state = useSyncExternalStore(\n store.subscribe,\n store.getSnapshot,\n store.getServerSnapshot ?? store.getSnapshot\n );\n const onStateChangeRef = useRef(onStateChange);\n onStateChangeRef.current = onStateChange;\n const set = useCallback((path, value2) => {\n const s = storeRef.current;\n const prev = s.getSnapshot();\n s.set(path, value2);\n if (!isControlledRef.current && s.getSnapshot() !== prev) {\n onStateChangeRef.current?.([{ path, value: value2 }]);\n }\n }, []);\n const update = useCallback((updates) => {\n const s = storeRef.current;\n const prev = s.getSnapshot();\n s.update(updates);\n if (!isControlledRef.current && s.getSnapshot() !== prev) {\n const changes = [];\n for (const [path, value2] of Object.entries(updates)) {\n if (getByPath(prev, path) !== value2) {\n changes.push({ path, value: value2 });\n }\n }\n if (changes.length > 0) {\n onStateChangeRef.current?.(changes);\n }\n }\n }, []);\n const get = useCallback((path) => storeRef.current.get(path), []);\n const getSnapshot = useCallback(() => storeRef.current.getSnapshot(), []);\n const value = useMemo(\n () => ({ state, get, set, update, getSnapshot }),\n [state, get, set, update, getSnapshot]\n );\n return /* @__PURE__ */ jsx(StateContext.Provider, { value, children });\n}\nfunction useStateStore() {\n const ctx = useContext(StateContext);\n if (!ctx) {\n throw new Error(\"useStateStore must be used within a StateProvider\");\n }\n return ctx;\n}\nfunction useStateValue(path) {\n const { state } = useStateStore();\n return getByPath(state, path);\n}\nfunction useStateBinding(path) {\n const { state, set } = useStateStore();\n const value = getByPath(state, path);\n const setValue = useCallback(\n (newValue) => set(path, newValue),\n [path, set]\n );\n return [value, setValue];\n}\n\n// src/contexts/visibility.tsx\nimport {\n createContext as createContext2,\n useContext as useContext2,\n useMemo as useMemo2\n} from \"react\";\nimport {\n evaluateVisibility\n} from \"@json-render/core\";\nimport { jsx as jsx2 } from \"react/jsx-runtime\";\nvar VisibilityContext = createContext2(null);\nfunction VisibilityProvider({ children }) {\n const { state } = useStateStore();\n const ctx = useMemo2(\n () => ({\n stateModel: state\n }),\n [state]\n );\n const isVisible = useMemo2(\n () => (condition) => evaluateVisibility(condition, ctx),\n [ctx]\n );\n const value = useMemo2(\n () => ({ isVisible, ctx }),\n [isVisible, ctx]\n );\n return /* @__PURE__ */ jsx2(VisibilityContext.Provider, { value, children });\n}\nfunction useVisibility() {\n const ctx = useContext2(VisibilityContext);\n if (!ctx) {\n throw new Error(\"useVisibility must be used within a VisibilityProvider\");\n }\n return ctx;\n}\nfunction useIsVisible(condition) {\n const { isVisible } = useVisibility();\n return isVisible(condition);\n}\n\n// src/contexts/actions.tsx\nimport {\n createContext as createContext4,\n useContext as useContext4,\n useState as useState2,\n useCallback as useCallback3,\n useMemo as useMemo4\n} from \"react\";\nimport {\n resolveAction,\n executeAction\n} from \"@json-render/core\";\n\n// src/contexts/validation.tsx\nimport React2, {\n createContext as createContext3,\n useContext as useContext3,\n useRef as useRef2,\n useState,\n useCallback as useCallback2,\n useMemo as useMemo3\n} from \"react\";\nimport {\n runValidation\n} from \"@json-render/core\";\nimport { jsx as jsx3 } from \"react/jsx-runtime\";\nvar ValidationContext = createContext3(null);\nfunction dynamicArgsEqual(a, b) {\n if (a === b) return true;\n if (!a || !b) return false;\n const keysA = Object.keys(a);\n const keysB = Object.keys(b);\n if (keysA.length !== keysB.length) return false;\n for (const key of keysA) {\n const va = a[key];\n const vb = b[key];\n if (va === vb) continue;\n if (typeof va === \"object\" && va !== null && typeof vb === \"object\" && vb !== null) {\n const sa = va.$state;\n const sb = vb.$state;\n if (typeof sa === \"string\" && sa === sb) continue;\n }\n return false;\n }\n return true;\n}\nfunction validationConfigEqual(a, b) {\n if (a === b) return true;\n if (a.validateOn !== b.validateOn) return false;\n const ac = a.checks ?? [];\n const bc = b.checks ?? [];\n if (ac.length !== bc.length) return false;\n for (let i = 0; i < ac.length; i++) {\n const ca = ac[i];\n const cb = bc[i];\n if (ca.type !== cb.type) return false;\n if (ca.message !== cb.message) return false;\n if (!dynamicArgsEqual(ca.args, cb.args)) return false;\n }\n return true;\n}\nfunction ValidationProvider({\n customFunctions = {},\n children\n}) {\n const { state, getSnapshot } = useStateStore();\n const [fieldStates, setFieldStates] = useState({});\n const fieldStatesRef = useRef2({});\n const [fieldConfigs, setFieldConfigs] = useState({});\n const registerField = useCallback2(\n (path, config) => {\n setFieldConfigs((prev) => {\n const existing = prev[path];\n if (existing && validationConfigEqual(existing, config)) {\n return prev;\n }\n return { ...prev, [path]: config };\n });\n },\n []\n );\n const validate = useCallback2(\n (path, config) => {\n const currentState = getSnapshot();\n const segments = path.split(\"/\").filter(Boolean);\n let value2 = currentState;\n for (const seg of segments) {\n if (value2 != null && typeof value2 === \"object\") {\n value2 = value2[seg];\n } else {\n value2 = void 0;\n break;\n }\n }\n const result = runValidation(config, {\n value: value2,\n stateModel: currentState,\n customFunctions\n });\n const newFieldState = {\n touched: fieldStatesRef.current[path]?.touched ?? true,\n validated: true,\n result\n };\n fieldStatesRef.current = {\n ...fieldStatesRef.current,\n [path]: newFieldState\n };\n setFieldStates(fieldStatesRef.current);\n return result;\n },\n [customFunctions, getSnapshot]\n );\n const touch = useCallback2((path) => {\n fieldStatesRef.current = {\n ...fieldStatesRef.current,\n [path]: {\n ...fieldStatesRef.current[path],\n touched: true,\n validated: fieldStatesRef.current[path]?.validated ?? false,\n result: fieldStatesRef.current[path]?.result ?? null\n }\n };\n setFieldStates(fieldStatesRef.current);\n }, []);\n const clear = useCallback2((path) => {\n const { [path]: _, ...rest } = fieldStatesRef.current;\n fieldStatesRef.current = rest;\n setFieldStates(rest);\n }, []);\n const validateAll = useCallback2(() => {\n let allValid = true;\n for (const [path, config] of Object.entries(fieldConfigs)) {\n const result = validate(path, config);\n if (!result.valid) {\n allValid = false;\n }\n }\n return allValid;\n }, [fieldConfigs, validate]);\n const value = useMemo3(\n () => ({\n customFunctions,\n // Getter returns the mutable ref so callers that read fieldStates\n // synchronously after validateAll() see the latest values.\n get fieldStates() {\n return fieldStatesRef.current;\n },\n validate,\n touch,\n clear,\n validateAll,\n registerField\n }),\n [\n customFunctions,\n // fieldStates (React state) stays in deps so the context value object\n // is recreated on re-render, triggering downstream consumers.\n fieldStates,\n validate,\n touch,\n clear,\n validateAll,\n registerField\n ]\n );\n return /* @__PURE__ */ jsx3(ValidationContext.Provider, { value, children });\n}\nfunction useValidation() {\n const ctx = useContext3(ValidationContext);\n if (!ctx) {\n throw new Error(\"useValidation must be used within a ValidationProvider\");\n }\n return ctx;\n}\nfunction useOptionalValidation() {\n return useContext3(ValidationContext);\n}\nfunction useFieldValidation(path, config) {\n const {\n fieldStates,\n validate: validateField,\n touch: touchField,\n clear: clearField,\n registerField\n } = useValidation();\n React2.useEffect(() => {\n if (path && config) {\n registerField(path, config);\n }\n }, [path, config, registerField]);\n const state = fieldStates[path] ?? {\n touched: false,\n validated: false,\n result: null\n };\n const validate = useCallback2(\n () => validateField(path, config ?? { checks: [] }),\n [path, config, validateField]\n );\n const touch = useCallback2(() => touchField(path), [path, touchField]);\n const clear = useCallback2(() => clearField(path), [path, clearField]);\n return {\n state,\n validate,\n touch,\n clear,\n errors: state.result?.errors ?? [],\n isValid: state.result?.valid ?? true\n };\n}\n\n// src/contexts/actions.tsx\nimport { jsx as jsx4, jsxs } from \"react/jsx-runtime\";\nvar idCounter = 0;\nfunction generateUniqueId() {\n idCounter += 1;\n return `${Date.now()}-${idCounter}`;\n}\nfunction deepResolveValue(value, get) {\n if (value === null || value === void 0) return value;\n if (value === \"$id\") {\n return generateUniqueId();\n }\n if (typeof value === \"object\" && !Array.isArray(value)) {\n const obj = value;\n const keys = Object.keys(obj);\n if (keys.length === 1 && typeof obj.$state === \"string\") {\n return get(obj.$state);\n }\n if (keys.length === 1 && \"$id\" in obj) {\n return generateUniqueId();\n }\n }\n if (Array.isArray(value)) {\n return value.map((item) => deepResolveValue(item, get));\n }\n if (typeof value === \"object\") {\n const resolved = {};\n for (const [key, val] of Object.entries(value)) {\n resolved[key] = deepResolveValue(val, get);\n }\n return resolved;\n }\n return value;\n}\nvar ActionContext = createContext4(null);\nfunction ActionProvider({\n handlers: initialHandlers = {},\n navigate,\n children\n}) {\n const { get, set, getSnapshot } = useStateStore();\n const validation = useOptionalValidation();\n const [handlers, setHandlers] = useState2(initialHandlers);\n const [loadingActions, setLoadingActions] = useState2(/* @__PURE__ */ new Set());\n const [pendingConfirmation, setPendingConfirmation] = useState2(null);\n const registerHandler = useCallback3(\n (name, handler) => {\n setHandlers((prev) => ({ ...prev, [name]: handler }));\n },\n []\n );\n const execute = useCallback3(\n async (binding) => {\n const resolved = resolveAction(binding, getSnapshot());\n if (resolved.action === \"setState\" && resolved.params) {\n const statePath = resolved.params.statePath;\n const value2 = resolved.params.value;\n if (statePath) {\n set(statePath, value2);\n }\n return;\n }\n if (resolved.action === \"pushState\" && resolved.params) {\n const statePath = resolved.params.statePath;\n const rawValue = resolved.params.value;\n if (statePath) {\n const resolvedValue = deepResolveValue(rawValue, get);\n const arr = get(statePath) ?? [];\n set(statePath, [...arr, resolvedValue]);\n const clearStatePath = resolved.params.clearStatePath;\n if (clearStatePath) {\n set(clearStatePath, \"\");\n }\n }\n return;\n }\n if (resolved.action === \"removeState\" && resolved.params) {\n const statePath = resolved.params.statePath;\n const index = resolved.params.index;\n if (statePath !== void 0 && index !== void 0) {\n const arr = get(statePath) ?? [];\n set(\n statePath,\n arr.filter((_, i) => i !== index)\n );\n }\n return;\n }\n if (resolved.action === \"push\" && resolved.params) {\n const screen = resolved.params.screen;\n if (screen) {\n const currentScreen = get(\"/currentScreen\");\n const navStack = get(\"/navStack\") ?? [];\n if (currentScreen) {\n set(\"/navStack\", [...navStack, currentScreen]);\n } else {\n set(\"/navStack\", [...navStack, \"\"]);\n }\n set(\"/currentScreen\", screen);\n }\n return;\n }\n if (resolved.action === \"pop\") {\n const navStack = get(\"/navStack\") ?? [];\n if (navStack.length > 0) {\n const previousScreen = navStack[navStack.length - 1];\n set(\"/navStack\", navStack.slice(0, -1));\n if (previousScreen) {\n set(\"/currentScreen\", previousScreen);\n } else {\n set(\"/currentScreen\", void 0);\n }\n }\n return;\n }\n if (resolved.action === \"validateForm\") {\n const validateAll = validation?.validateAll;\n if (!validateAll) {\n console.warn(\n \"validateForm action was dispatched but no ValidationProvider is connected. Ensure ValidationProvider is rendered inside the provider tree.\"\n );\n return;\n }\n const valid = validateAll();\n const errors = {};\n for (const [path, fs] of Object.entries(validation.fieldStates)) {\n if (fs.result && !fs.result.valid) {\n errors[path] = fs.result.errors;\n }\n }\n const statePath = resolved.params?.statePath || \"/formValidation\";\n set(statePath, { valid, errors });\n return;\n }\n const handler = handlers[resolved.action];\n if (!handler) {\n console.warn(`No handler registered for action: ${resolved.action}`);\n return;\n }\n if (resolved.confirm) {\n return new Promise((resolve, reject) => {\n setPendingConfirmation({\n action: resolved,\n handler,\n resolve: () => {\n setPendingConfirmation(null);\n resolve();\n },\n reject: () => {\n setPendingConfirmation(null);\n reject(new Error(\"Action cancelled\"));\n }\n });\n }).then(async () => {\n setLoadingActions((prev) => new Set(prev).add(resolved.action));\n try {\n await executeAction({\n action: resolved,\n handler,\n setState: set,\n navigate,\n executeAction: async (name) => {\n const subBinding = { action: name };\n await execute(subBinding);\n }\n });\n } finally {\n setLoadingActions((prev) => {\n const next = new Set(prev);\n next.delete(resolved.action);\n return next;\n });\n }\n });\n }\n setLoadingActions((prev) => new Set(prev).add(resolved.action));\n try {\n await executeAction({\n action: resolved,\n handler,\n setState: set,\n navigate,\n executeAction: async (name) => {\n const subBinding = { action: name };\n await execute(subBinding);\n }\n });\n } finally {\n setLoadingActions((prev) => {\n const next = new Set(prev);\n next.delete(resolved.action);\n return next;\n });\n }\n },\n [handlers, get, set, getSnapshot, navigate, validation]\n );\n const confirm = useCallback3(() => {\n pendingConfirmation?.resolve();\n }, [pendingConfirmation]);\n const cancel = useCallback3(() => {\n pendingConfirmation?.reject();\n }, [pendingConfirmation]);\n const value = useMemo4(\n () => ({\n handlers,\n loadingActions,\n pendingConfirmation,\n execute,\n confirm,\n cancel,\n registerHandler\n }),\n [\n handlers,\n loadingActions,\n pendingConfirmation,\n execute,\n confirm,\n cancel,\n registerHandler\n ]\n );\n return /* @__PURE__ */ jsx4(ActionContext.Provider, { value, children });\n}\nfunction useActions() {\n const ctx = useContext4(ActionContext);\n if (!ctx) {\n throw new Error(\"useActions must be used within an ActionProvider\");\n }\n return ctx;\n}\nfunction useAction(binding) {\n const { execute, loadingActions } = useActions();\n const isLoading = loadingActions.has(binding.action);\n const executeAction2 = useCallback3(() => execute(binding), [execute, binding]);\n return { execute: executeAction2, isLoading };\n}\nfunction ConfirmDialog({\n confirm,\n onConfirm,\n onCancel\n}) {\n const isDanger = confirm.variant === \"danger\";\n return /* @__PURE__ */ jsx4(\n \"div\",\n {\n style: {\n position: \"fixed\",\n inset: 0,\n backgroundColor: \"rgba(0, 0, 0, 0.5)\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n zIndex: 50\n },\n onClick: onCancel,\n children: /* @__PURE__ */ jsxs(\n \"div\",\n {\n style: {\n backgroundColor: \"white\",\n borderRadius: \"8px\",\n padding: \"24px\",\n maxWidth: \"400px\",\n width: \"100%\",\n boxShadow: \"0 20px 25px -5px rgba(0, 0, 0, 0.1)\"\n },\n onClick: (e) => e.stopPropagation(),\n children: [\n /* @__PURE__ */ jsx4(\n \"h3\",\n {\n style: {\n margin: \"0 0 8px 0\",\n fontSize: \"18px\",\n fontWeight: 600\n },\n children: confirm.title\n }\n ),\n /* @__PURE__ */ jsx4(\n \"p\",\n {\n style: {\n margin: \"0 0 24px 0\",\n color: \"#6b7280\"\n },\n children: confirm.message\n }\n ),\n /* @__PURE__ */ jsxs(\n \"div\",\n {\n style: {\n display: \"flex\",\n gap: \"12px\",\n justifyContent: \"flex-end\"\n },\n children: [\n /* @__PURE__ */ jsx4(\n \"button\",\n {\n onClick: onCancel,\n style: {\n padding: \"8px 16px\",\n borderRadius: \"6px\",\n border: \"1px solid #d1d5db\",\n backgroundColor: \"white\",\n cursor: \"pointer\"\n },\n children: confirm.cancelLabel ?? \"Cancel\"\n }\n ),\n /* @__PURE__ */ jsx4(\n \"button\",\n {\n onClick: onConfirm,\n style: {\n padding: \"8px 16px\",\n borderRadius: \"6px\",\n border: \"none\",\n backgroundColor: isDanger ? \"#dc2626\" : \"#3b82f6\",\n color: \"white\",\n cursor: \"pointer\"\n },\n children: confirm.confirmLabel ?? \"Confirm\"\n }\n )\n ]\n }\n )\n ]\n }\n )\n }\n );\n}\n\n// src/contexts/repeat-scope.tsx\nimport { createContext as createContext5, useContext as useContext5 } from \"react\";\nimport { jsx as jsx5 } from \"react/jsx-runtime\";\nvar RepeatScopeContext = createContext5(null);\nfunction RepeatScopeProvider({\n item,\n index,\n basePath,\n children\n}) {\n return /* @__PURE__ */ jsx5(RepeatScopeContext.Provider, { value: { item, index, basePath }, children });\n}\nfunction useRepeatScope() {\n return useContext5(RepeatScopeContext);\n}\n\n// src/index.ts\nimport { createStateStore as createStateStore2 } from \"@json-render/core\";\n\n// src/renderer.tsx\nimport React5, {\n useCallback as useCallback4,\n useEffect as useEffect2,\n useMemo as useMemo5,\n useRef as useRef3\n} from \"react\";\nimport {\n resolveElementProps,\n resolveBindings,\n resolveActionParam,\n evaluateVisibility as evaluateVisibility2,\n getByPath as getByPath2\n} from \"@json-render/core\";\nimport { Fragment, jsx as jsx6, jsxs as jsxs2 } from \"react/jsx-runtime\";\nvar ElementErrorBoundary = class extends React5.Component {\n constructor(props) {\n super(props);\n this.state = { hasError: false };\n }\n static getDerivedStateFromError() {\n return { hasError: true };\n }\n componentDidCatch(error, info) {\n console.error(\n `[json-render] Rendering error in <${this.props.elementType}>:`,\n error,\n info.componentStack\n );\n }\n render() {\n if (this.state.hasError) {\n return null;\n }\n return this.props.children;\n }\n};\nvar EMPTY_FUNCTIONS = {};\nvar FunctionsContext = React5.createContext(EMPTY_FUNCTIONS);\nfunction useFunctions() {\n return React5.useContext(FunctionsContext);\n}\nvar ElementRenderer = React5.memo(function ElementRenderer2({\n element,\n spec,\n registry,\n loading,\n fallback\n}) {\n const repeatScope = useRepeatScope();\n const { ctx } = useVisibility();\n const { execute } = useActions();\n const { getSnapshot, state: watchState } = useStateStore();\n const functions = useFunctions();\n const fullCtx = useMemo5(() => {\n const base = repeatScope ? {\n ...ctx,\n repeatItem: repeatScope.item,\n repeatIndex: repeatScope.index,\n repeatBasePath: repeatScope.basePath\n } : { ...ctx };\n base.functions = functions;\n return base;\n }, [ctx, repeatScope, functions]);\n const isVisible = element.visible === void 0 ? true : evaluateVisibility2(element.visible, fullCtx);\n const onBindings = element.on;\n const emit = useCallback4(\n async (eventName) => {\n const binding = onBindings?.[eventName];\n if (!binding) return;\n const actionBindings = Array.isArray(binding) ? binding : [binding];\n for (const b of actionBindings) {\n if (!b.params) {\n await execute(b);\n continue;\n }\n const liveCtx = {\n ...fullCtx,\n stateModel: getSnapshot()\n };\n const resolved = {};\n for (const [key, val] of Object.entries(b.params)) {\n resolved[key] = resolveActionParam(val, liveCtx);\n }\n await execute({ ...b, params: resolved });\n }\n },\n [onBindings, execute, fullCtx, getSnapshot]\n );\n const on = useCallback4(\n (eventName) => {\n const binding = onBindings?.[eventName];\n if (!binding) {\n return { emit: () => {\n }, shouldPreventDefault: false, bound: false };\n }\n const actionBindings = Array.isArray(binding) ? binding : [binding];\n const shouldPreventDefault = actionBindings.some((b) => b.preventDefault);\n return {\n emit: () => emit(eventName),\n shouldPreventDefault,\n bound: true\n };\n },\n [onBindings, emit]\n );\n const watchConfig = element.watch;\n const prevWatchValues = useRef3(null);\n const stableWatchRef = useRef3(void 0);\n const watchedValues = useMemo5(() => {\n if (!watchConfig) return void 0;\n const values = {};\n for (const path of Object.keys(watchConfig)) {\n values[path] = getByPath2(watchState, path);\n }\n const prev = stableWatchRef.current;\n if (prev) {\n const keys = Object.keys(values);\n if (keys.length === Object.keys(prev).length && keys.every((k) => values[k] === prev[k])) {\n return prev;\n }\n }\n stableWatchRef.current = values;\n return values;\n }, [watchConfig, watchState]);\n useEffect2(() => {\n if (!watchConfig || !watchedValues) return;\n const paths = Object.keys(watchConfig);\n if (paths.length === 0) return;\n const prev = prevWatchValues.current;\n prevWatchValues.current = watchedValues;\n if (prev === null) return;\n let cancelled = false;\n void (async () => {\n for (const path of paths) {\n if (cancelled) break;\n if (watchedValues[path] !== prev[path]) {\n const binding = watchConfig[path];\n if (!binding) continue;\n const bindings = Array.isArray(binding) ? binding : [binding];\n for (const b of bindings) {\n if (cancelled) break;\n if (!b.params) {\n await execute(b);\n if (cancelled) break;\n continue;\n }\n const liveCtx = {\n ...fullCtx,\n stateModel: getSnapshot()\n };\n const resolved = {};\n for (const [key, val] of Object.entries(b.params)) {\n resolved[key] = resolveActionParam(val, liveCtx);\n }\n await execute({ ...b, params: resolved });\n if (cancelled) break;\n }\n }\n }\n })().catch(console.error);\n return () => {\n cancelled = true;\n };\n }, [watchConfig, watchedValues, execute, fullCtx, getSnapshot]);\n if (!isVisible) {\n return null;\n }\n const rawProps = element.props;\n const elementBindings = resolveBindings(rawProps, fullCtx);\n const resolvedProps = resolveElementProps(rawProps, fullCtx);\n const resolvedElement = resolvedProps !== element.props ? { ...element, props: resolvedProps } : element;\n const Component = registry[resolvedElement.type] ?? fallback;\n if (!Component) {\n console.warn(`No renderer for component type: ${resolvedElement.type}`);\n return null;\n }\n const children = resolvedElement.repeat ? /* @__PURE__ */ jsx6(\n RepeatChildren,\n {\n element: resolvedElement,\n spec,\n registry,\n loading,\n fallback\n }\n ) : resolvedElement.children?.map((childKey) => {\n const childElement = spec.elements[childKey];\n if (!childElement) {\n if (!loading) {\n console.warn(\n `[json-render] Missing element \"${childKey}\" referenced as child of \"${resolvedElement.type}\". This element will not render.`\n );\n }\n return null;\n }\n return /* @__PURE__ */ jsx6(\n ElementRenderer2,\n {\n element: childElement,\n spec,\n registry,\n loading,\n fallback\n },\n childKey\n );\n });\n return /* @__PURE__ */ jsx6(ElementErrorBoundary, { elementType: resolvedElement.type, children: /* @__PURE__ */ jsx6(\n Component,\n {\n element: resolvedElement,\n emit,\n on,\n bindings: elementBindings,\n loading,\n children\n }\n ) });\n});\nfunction RepeatChildren({\n element,\n spec,\n registry,\n loading,\n fallback\n}) {\n const { state } = useStateStore();\n const repeat = element.repeat;\n const statePath = repeat.statePath;\n const items = getByPath2(state, statePath) ?? [];\n return /* @__PURE__ */ jsx6(Fragment, { children: items.map((itemValue, index) => {\n const key = repeat.key && typeof itemValue === \"object\" && itemValue !== null ? String(\n itemValue[repeat.key] ?? index\n ) : String(index);\n return /* @__PURE__ */ jsx6(\n RepeatScopeProvider,\n {\n item: itemValue,\n index,\n basePath: `${statePath}/${index}`,\n children: element.children?.map((childKey) => {\n const childElement = spec.elements[childKey];\n if (!childElement) {\n if (!loading) {\n console.warn(\n `[json-render] Missing element \"${childKey}\" referenced as child of \"${element.type}\" (repeat). This element will not render.`\n );\n }\n return null;\n }\n return /* @__PURE__ */ jsx6(\n ElementRenderer,\n {\n element: childElement,\n spec,\n registry,\n loading,\n fallback\n },\n childKey\n );\n })\n },\n key\n );\n }) });\n}\nfunction Renderer({ spec, registry, loading, fallback }) {\n if (!spec || !spec.root) {\n return null;\n }\n const rootElement = spec.elements[spec.root];\n if (!rootElement) {\n return null;\n }\n return /* @__PURE__ */ jsx6(\n ElementRenderer,\n {\n element: rootElement,\n spec,\n registry,\n loading,\n fallback\n }\n );\n}\nfunction JSONUIProvider({\n registry,\n store,\n initialState,\n handlers,\n navigate,\n validationFunctions,\n functions,\n onStateChange,\n children\n}) {\n return /* @__PURE__ */ jsx6(\n StateProvider,\n {\n store,\n initialState,\n onStateChange,\n children: /* @__PURE__ */ jsx6(VisibilityProvider, { children: /* @__PURE__ */ jsx6(ValidationProvider, { customFunctions: validationFunctions, children: /* @__PURE__ */ jsx6(ActionProvider, { handlers, navigate, children: /* @__PURE__ */ jsxs2(FunctionsContext.Provider, { value: functions ?? EMPTY_FUNCTIONS, children: [\n children,\n /* @__PURE__ */ jsx6(ConfirmationDialogManager, {})\n ] }) }) }) })\n }\n );\n}\nfunction ConfirmationDialogManager() {\n const { pendingConfirmation, confirm, cancel } = useActions();\n if (!pendingConfirmation?.action.confirm) {\n return null;\n }\n return /* @__PURE__ */ jsx6(\n ConfirmDialog,\n {\n confirm: pendingConfirmation.action.confirm,\n onConfirm: confirm,\n onCancel: cancel\n }\n );\n}\nfunction defineRegistry(_catalog, options) {\n const registry = {};\n if (options.components) {\n for (const [name, componentFn] of Object.entries(options.components)) {\n registry[name] = ({\n element,\n children,\n emit,\n on,\n bindings,\n loading\n }) => {\n return componentFn({\n props: element.props,\n children,\n emit,\n on,\n bindings,\n loading\n });\n };\n }\n }\n const actionMap = options.actions ? Object.entries(options.actions) : [];\n const handlers = (getSetState, getState) => {\n const result = {};\n for (const [name, actionFn] of actionMap) {\n result[name] = async (params) => {\n const setState = getSetState();\n const state = getState();\n if (setState) {\n await actionFn(params, setState, state);\n }\n };\n }\n return result;\n };\n const executeAction2 = async (actionName, params, setState, state = {}) => {\n const entry = actionMap.find(([name]) => name === actionName);\n if (entry) {\n await entry[1](params, setState, state);\n } else {\n console.warn(`Unknown action: ${actionName}`);\n }\n };\n return { registry, handlers, executeAction: executeAction2 };\n}\nfunction createRenderer(catalog, components) {\n const registry = components;\n return function CatalogRenderer({\n spec,\n store,\n state,\n onAction,\n onStateChange,\n functions,\n loading,\n fallback\n }) {\n const actionHandlers = onAction ? new Proxy(\n {},\n {\n get: (_target, prop) => {\n return (params) => onAction(prop, params);\n },\n has: () => true\n }\n ) : void 0;\n return /* @__PURE__ */ jsx6(\n StateProvider,\n {\n store,\n initialState: state,\n onStateChange,\n children: /* @__PURE__ */ jsx6(VisibilityProvider, { children: /* @__PURE__ */ jsx6(ValidationProvider, { children: /* @__PURE__ */ jsx6(ActionProvider, { handlers: actionHandlers, children: /* @__PURE__ */ jsxs2(FunctionsContext.Provider, { value: functions ?? EMPTY_FUNCTIONS, children: [\n /* @__PURE__ */ jsx6(\n Renderer,\n {\n spec,\n registry,\n loading,\n fallback\n }\n ),\n /* @__PURE__ */ jsx6(ConfirmationDialogManager, {})\n ] }) }) }) })\n }\n );\n };\n}\n\n// src/hooks.ts\nimport { useState as useState3, useCallback as useCallback5, useRef as useRef4, useEffect as useEffect3 } from \"react\";\nimport {\n setByPath,\n getByPath as getByPath3,\n removeByPath,\n createMixedStreamParser,\n applySpecPatch,\n nestedToFlat,\n SPEC_DATA_PART_TYPE\n} from \"@json-render/core\";\nfunction parseLine(line) {\n try {\n const trimmed = line.trim();\n if (!trimmed || trimmed.startsWith(\"//\")) {\n return null;\n }\n const parsed = JSON.parse(trimmed);\n if (parsed.__meta === \"usage\") {\n return {\n type: \"usage\",\n usage: {\n promptTokens: parsed.promptTokens ?? 0,\n completionTokens: parsed.completionTokens ?? 0,\n totalTokens: parsed.totalTokens ?? 0\n }\n };\n }\n return { type: \"patch\", patch: parsed };\n } catch {\n return null;\n }\n}\nfunction setSpecValue(newSpec, path, value) {\n if (path === \"/root\") {\n newSpec.root = value;\n return;\n }\n if (path === \"/state\") {\n newSpec.state = value;\n return;\n }\n if (path.startsWith(\"/state/\")) {\n if (!newSpec.state) newSpec.state = {};\n const statePath = path.slice(\"/state\".length);\n setByPath(newSpec.state, statePath, value);\n return;\n }\n if (path.startsWith(\"/elements/\")) {\n const pathParts = path.slice(\"/elements/\".length).split(\"/\");\n const elementKey = pathParts[0];\n if (!elementKey) return;\n if (pathParts.length === 1) {\n newSpec.elements[elementKey] = value;\n } else {\n const element = newSpec.elements[elementKey];\n if (element) {\n const propPath = \"/\" + pathParts.slice(1).join(\"/\");\n const newElement = { ...element };\n setByPath(\n newElement,\n propPath,\n value\n );\n newSpec.elements[elementKey] = newElement;\n }\n }\n }\n}\nfunction removeSpecValue(newSpec, path) {\n if (path === \"/state\") {\n delete newSpec.state;\n return;\n }\n if (path.startsWith(\"/state/\") && newSpec.state) {\n const statePath = path.slice(\"/state\".length);\n removeByPath(newSpec.state, statePath);\n return;\n }\n if (path.startsWith(\"/elements/\")) {\n const pathParts = path.slice(\"/elements/\".length).split(\"/\");\n const elementKey = pathParts[0];\n if (!elementKey) return;\n if (pathParts.length === 1) {\n const { [elementKey]: _, ...rest } = newSpec.elements;\n newSpec.elements = rest;\n } else {\n const element = newSpec.elements[elementKey];\n if (element) {\n const propPath = \"/\" + pathParts.slice(1).join(\"/\");\n const newElement = { ...element };\n removeByPath(\n newElement,\n propPath\n );\n newSpec.elements[elementKey] = newElement;\n }\n }\n }\n}\nfunction getSpecValue(spec, path) {\n if (path === \"/root\") return spec.root;\n if (path === \"/state\") return spec.state;\n if (path.startsWith(\"/state/\") && spec.state) {\n const statePath = path.slice(\"/state\".length);\n return getByPath3(spec.state, statePath);\n }\n return getByPath3(spec, path);\n}\nfunction applyPatch(spec, patch) {\n const newSpec = {\n ...spec,\n elements: { ...spec.elements },\n ...spec.state ? { state: { ...spec.state } } : {}\n };\n switch (patch.op) {\n case \"add\":\n case \"replace\": {\n setSpecValue(newSpec, patch.path, patch.value);\n break;\n }\n case \"remove\": {\n removeSpecValue(newSpec, patch.path);\n break;\n }\n case \"move\": {\n if (!patch.from) break;\n const moveValue = getSpecValue(newSpec, patch.from);\n removeSpecValue(newSpec, patch.from);\n setSpecValue(newSpec, patch.path, moveValue);\n break;\n }\n case \"copy\": {\n if (!patch.from) break;\n const copyValue = getSpecValue(newSpec, patch.from);\n setSpecValue(newSpec, patch.path, copyValue);\n break;\n }\n case \"test\": {\n break;\n }\n }\n return newSpec;\n}\nfunction useUIStream({\n api,\n onComplete,\n onError\n}) {\n const [spec, setSpec] = useState3(null);\n const [isStreaming, setIsStreaming] = useState3(false);\n const [error, setError] = useState3(null);\n const [usage, setUsage] = useState3(null);\n const [rawLines, setRawLines] = useState3([]);\n const abortControllerRef = useRef4(null);\n const onCompleteRef = useRef4(onComplete);\n onCompleteRef.current = onComplete;\n const onErrorRef = useRef4(onError);\n onErrorRef.current = onError;\n const clear = useCallback5(() => {\n setSpec(null);\n setError(null);\n }, []);\n const send = useCallback5(\n async (prompt, context) => {\n abortControllerRef.current?.abort();\n abortControllerRef.current = new AbortController();\n setIsStreaming(true);\n setError(null);\n setUsage(null);\n setRawLines([]);\n const previousSpec = context?.previousSpec;\n let currentSpec = previousSpec && previousSpec.root ? { ...previousSpec, elements: { ...previousSpec.elements } } : { root: \"\", elements: {} };\n setSpec(currentSpec);\n try {\n const response = await fetch(api, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({\n prompt,\n context,\n currentSpec\n }),\n signal: abortControllerRef.current.signal\n });\n if (!response.ok) {\n let errorMessage = `HTTP error: ${response.status}`;\n try {\n const errorData = await response.json();\n if (errorData.message) {\n errorMessage = errorData.message;\n } else if (errorData.error) {\n errorMessage = errorData.error;\n }\n } catch {\n }\n throw new Error(errorMessage);\n }\n const reader = response.body?.getReader();\n if (!reader) {\n throw new Error(\"No response body\");\n }\n const decoder = new TextDecoder();\n let buffer = \"\";\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n buffer += decoder.decode(value, { stream: true });\n const lines = buffer.split(\"\\n\");\n buffer = lines.pop() ?? \"\";\n for (const line of lines) {\n const trimmed = line.trim();\n if (!trimmed) continue;\n const result = parseLine(trimmed);\n if (!result) continue;\n if (result.type === \"usage\") {\n setUsage(result.usage);\n } else {\n setRawLines((prev) => [...prev, trimmed]);\n currentSpec = applyPatch(currentSpec, result.patch);\n setSpec({ ...currentSpec });\n }\n }\n }\n if (buffer.trim()) {\n const trimmed = buffer.trim();\n const result = parseLine(trimmed);\n if (result) {\n if (result.type === \"usage\") {\n setUsage(result.usage);\n } else {\n setRawLines((prev) => [...prev, trimmed]);\n currentSpec = applyPatch(currentSpec, result.patch);\n setSpec({ ...currentSpec });\n }\n }\n }\n onCompleteRef.current?.(currentSpec);\n } catch (err) {\n if (err.name === \"AbortError\") {\n return;\n }\n const error2 = err instanceof Error ? err : new Error(String(err));\n setError(error2);\n onErrorRef.current?.(error2);\n } finally {\n setIsStreaming(false);\n }\n },\n [api]\n );\n useEffect3(() => {\n return () => {\n abortControllerRef.current?.abort();\n };\n }, []);\n return {\n spec,\n isStreaming,\n error,\n usage,\n rawLines,\n send,\n clear\n };\n}\nfunction flatToTree(elements) {\n const elementMap = {};\n let root = \"\";\n for (const element of elements) {\n elementMap[element.key] = {\n type: element.type,\n props: element.props,\n children: [],\n visible: element.visible\n };\n }\n for (const element of elements) {\n if (element.parentKey) {\n const parent = elementMap[element.parentKey];\n if (parent) {\n if (!parent.children) {\n parent.children = [];\n }\n parent.children.push(element.key);\n }\n } else {\n root = element.key;\n }\n }\n return { root, elements: elementMap };\n}\nfunction useBoundProp(propValue, bindingPath) {\n const { set } = useStateStore();\n const setValue = useCallback5(\n (value) => {\n if (bindingPath) set(bindingPath, value);\n },\n [bindingPath, set]\n );\n return [propValue, setValue];\n}\nfunction isSpecDataPart(data) {\n if (typeof data !== \"object\" || data === null) return false;\n const obj = data;\n switch (obj.type) {\n case \"patch\":\n return typeof obj.patch === \"object\" && obj.patch !== null;\n case \"flat\":\n case \"nested\":\n return typeof obj.spec === \"object\" && obj.spec !== null;\n default:\n return false;\n }\n}\nfunction buildSpecFromParts(parts) {\n const spec = { root: \"\", elements: {} };\n let hasSpec = false;\n for (const part of parts) {\n if (part.type === SPEC_DATA_PART_TYPE) {\n if (!isSpecDataPart(part.data)) continue;\n const payload = part.data;\n if (payload.type === \"patch\") {\n hasSpec = true;\n applySpecPatch(spec, payload.patch);\n } else if (payload.type === \"flat\") {\n hasSpec = true;\n Object.assign(spec, payload.spec);\n } else if (payload.type === \"nested\") {\n hasSpec = true;\n const flat = nestedToFlat(payload.spec);\n Object.assign(spec, flat);\n }\n }\n }\n return hasSpec ? spec : null;\n}\nfunction getTextFromParts(parts) {\n return parts.filter(\n (p) => p.type === \"text\" && typeof p.text === \"string\"\n ).map((p) => p.text.trim()).filter(Boolean).join(\"\\n\\n\");\n}\nfunction useJsonRenderMessage(parts) {\n const prevPartsRef = useRef4([]);\n const prevResultRef = useRef4({\n spec: null,\n text: \"\"\n });\n const partsChanged = parts !== prevPartsRef.current && (parts.length !== prevPartsRef.current.length || parts[parts.length - 1] !== prevPartsRef.current[prevPartsRef.current.length - 1]);\n if (partsChanged || prevPartsRef.current.length === 0) {\n prevPartsRef.current = parts;\n prevResultRef.current = {\n spec: buildSpecFromParts(parts),\n text: getTextFromParts(parts)\n };\n }\n const { spec, text } = prevResultRef.current;\n const hasSpec = spec !== null && Object.keys(spec.elements || {}).length > 0;\n return { spec, text, hasSpec };\n}\nvar chatMessageIdCounter = 0;\nfunction generateChatId() {\n if (typeof crypto !== \"undefined\" && typeof crypto.randomUUID === \"function\") {\n return crypto.randomUUID();\n }\n chatMessageIdCounter += 1;\n return `msg-${Date.now()}-${chatMessageIdCounter}`;\n}\nfunction useChatUI({\n api,\n onComplete,\n onError\n}) {\n const [messages, setMessages] = useState3([]);\n const [isStreaming, setIsStreaming] = useState3(false);\n const [error, setError] = useState3(null);\n const abortControllerRef = useRef4(null);\n const messagesRef = useRef4(messages);\n messagesRef.current = messages;\n const onCompleteRef = useRef4(onComplete);\n onCompleteRef.current = onComplete;\n const onErrorRef = useRef4(onError);\n onErrorRef.current = onError;\n const clear = useCallback5(() => {\n setMessages([]);\n setError(null);\n }, []);\n const send = useCallback5(\n async (text) => {\n if (!text.trim()) return;\n abortControllerRef.current?.abort();\n abortControllerRef.current = new AbortController();\n const userMessage = {\n id: generateChatId(),\n role: \"user\",\n text: text.trim(),\n spec: null\n };\n const assistantId = generateChatId();\n const assistantMessage = {\n id: assistantId,\n role: \"assistant\",\n text: \"\",\n spec: null\n };\n setMessages((prev) => [...prev, userMessage, assistantMessage]);\n setIsStreaming(true);\n setError(null);\n const historyForApi = [\n ...messagesRef.current.map((m) => ({\n role: m.role,\n content: m.text\n })),\n { role: \"user\", content: text.trim() }\n ];\n let accumulatedText = \"\";\n let currentSpec = { root: \"\", elements: {} };\n let hasSpec = false;\n try {\n const response = await fetch(api, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({ messages: historyForApi }),\n signal: abortControllerRef.current.signal\n });\n if (!response.ok) {\n let errorMessage = `HTTP error: ${response.status}`;\n try {\n const errorData = await response.json();\n if (errorData.message) {\n errorMessage = errorData.message;\n } else if (errorData.error) {\n errorMessage = errorData.error;\n }\n } catch {\n }\n throw new Error(errorMessage);\n }\n const reader = response.body?.getReader();\n if (!reader) {\n throw new Error(\"No response body\");\n }\n const decoder = new TextDecoder();\n const parser = createMixedStreamParser({\n onPatch(patch) {\n hasSpec = true;\n applySpecPatch(currentSpec, patch);\n setMessages(\n (prev) => prev.map(\n (m) => m.id === assistantId ? {\n ...m,\n spec: {\n root: currentSpec.root,\n elements: { ...currentSpec.elements },\n ...currentSpec.state ? { state: { ...currentSpec.state } } : {}\n }\n } : m\n )\n );\n },\n onText(line) {\n accumulatedText += (accumulatedText ? \"\\n\" : \"\") + line;\n setMessages(\n (prev) => prev.map(\n (m) => m.id === assistantId ? { ...m, text: accumulatedText } : m\n )\n );\n }\n });\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n parser.push(decoder.decode(value, { stream: true }));\n }\n parser.flush();\n const finalMessage = {\n id: assistantId,\n role: \"assistant\",\n text: accumulatedText,\n spec: hasSpec ? {\n root: currentSpec.root,\n elements: { ...currentSpec.elements },\n ...currentSpec.state ? { state: { ...currentSpec.state } } : {}\n } : null\n };\n onCompleteRef.current?.(finalMessage);\n } catch (err) {\n if (err.name === \"AbortError\") {\n return;\n }\n const resolvedError = err instanceof Error ? err : new Error(String(err));\n setError(resolvedError);\n setMessages(\n (prev) => prev.filter((m) => m.id !== assistantId || m.text.length > 0)\n );\n onErrorRef.current?.(resolvedError);\n } finally {\n setIsStreaming(false);\n }\n },\n [api]\n );\n useEffect3(() => {\n return () => {\n abortControllerRef.current?.abort();\n };\n }, []);\n return {\n messages,\n isStreaming,\n error,\n send,\n clear\n };\n}\nexport {\n ActionProvider,\n ConfirmDialog,\n JSONUIProvider,\n Renderer,\n RepeatScopeProvider,\n StateProvider,\n ValidationProvider,\n VisibilityProvider,\n buildSpecFromParts,\n createRenderer,\n createStateStore2 as createStateStore,\n defineRegistry,\n elementTreeSchema,\n flatToTree,\n getTextFromParts,\n schema,\n useAction,\n useActions,\n useBoundProp,\n useChatUI,\n useFieldValidation,\n useIsVisible,\n useJsonRenderMessage,\n useOptionalValidation,\n useRepeatScope,\n useStateBinding,\n useStateStore,\n useStateValue,\n useUIStream,\n useValidation,\n useVisibility\n};\n//# sourceMappingURL=index.mjs.map"],"x_google_ignoreList":[1,2,3,4],"mappings":"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"}