@kitn.ai/ui 0.28.0 → 0.30.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 (615) hide show
  1. package/README.md +11 -7
  2. package/dist/{Icon-DObhsRtm.js → Icon-BzBET3E-.js} +1 -1
  3. package/dist/{action-icons-CcgNN2oT.js → action-icons-DaW2pU6m.js} +1 -1
  4. package/dist/agent-tooling/construct/public.d.ts +15 -0
  5. package/dist/agent-tooling/construct/schema.d.ts +111 -0
  6. package/dist/arrow-down-D783iMJj.js +1 -0
  7. package/dist/arrow-left-0VLM5kyg.js +1 -0
  8. package/dist/artifact-DGjzHYUT.js +1 -0
  9. package/dist/{attachments-Qr4kg-2b.js → attachments-YvXHlg88.js} +1 -1
  10. package/dist/{audio-visualizer-DToYdfSc.js → audio-visualizer-9lz5IHsL.js} +1 -1
  11. package/dist/{badge-CdEu_jn2.js → badge-Dh_vp8A5.js} +1 -1
  12. package/dist/{bell-DQAAOpDz.js → bell-CT7_WUwS.js} +1 -1
  13. package/dist/{button-DkuOnGLy.js → button-C_3te6fm.js} +1 -1
  14. package/dist/{card-renderer-Jx70m6_l.js → card-renderer-DZVaGH2e.js} +1 -1
  15. package/dist/check-CiEOVnEN.js +1 -0
  16. package/dist/{checkbox-D7iRB3nL.js → checkbox-Bu2T2e0U.js} +1 -1
  17. package/dist/{checkbox-group-B2_rpoPM.js → checkbox-group-BiryEXPQ.js} +1 -1
  18. package/dist/chevron-down-CSobuZRG.js +1 -0
  19. package/dist/chevron-right-DR9ZAP-2.js +1 -0
  20. package/dist/{choice-card-m0BYqqOK.js → choice-card-CM6IjkmL.js} +1 -1
  21. package/dist/circle-BC66EYF7.js +1 -0
  22. package/dist/circle-check-BqmahW0O.js +1 -0
  23. package/dist/{circle-x-BPG0iPst.js → circle-x-Bk-dA5Wf.js} +1 -1
  24. package/dist/{code-block-ClMLKb7C.js → code-block-B26t-Q7q.js} +1 -1
  25. package/dist/{collapsible-B4DlWicL.js → collapsible-Bhc636Cf.js} +1 -1
  26. package/dist/components/builder-composer-triggers.d.ts +62 -0
  27. package/dist/components/builder-layout.d.ts +54 -0
  28. package/dist/components/builder-message-actions.d.ts +72 -0
  29. package/dist/components/builder-panel.d.ts +189 -0
  30. package/dist/components/builder-preview.d.ts +11 -0
  31. package/dist/components/builder-shell-controls.d.ts +69 -0
  32. package/dist/components/builder-skeleton.d.ts +58 -0
  33. package/dist/components/builder-start.d.ts +75 -0
  34. package/dist/components/builder-workspace-variants.d.ts +23 -0
  35. package/dist/components/captions.d.ts +66 -0
  36. package/dist/{composer-sQ0HcvyG.js → composer-DMI85B6j.js} +1 -1
  37. package/dist/{confirm-card-rQWDQsnC.js → confirm-card-B0YIAwXp.js} +1 -1
  38. package/dist/construct-cli.es.js +3 -3
  39. package/dist/construct.d.ts +5 -0
  40. package/dist/construct.js +327 -0
  41. package/dist/{context-0kg4ZX1J.js → context-DWgfhqWp.js} +1 -1
  42. package/dist/controllable-BagRpyHv.js +1 -0
  43. package/dist/{conversation-item-BxwQLaFJ.js → conversation-item-BsOsVGmT.js} +1 -1
  44. package/dist/{conversation-list-BCfGN1JU.js → conversation-list-aX3Vtc7L.js} +1 -1
  45. package/dist/{copy-n9u9rqpi.js → copy-BmEwsNhJ.js} +1 -1
  46. package/dist/core-C8fzo39E.js +1 -12
  47. package/dist/{create-tween-uPkArjIG.js → create-tween-CNOAU3Fx.js} +1 -1
  48. package/dist/{create-tween-C-q-JCM-.js → create-tween-WfqiENls.js} +1 -1
  49. package/dist/{create-tween-CRrJXxBd.js → create-tween-wlFtW9Kh.js} +1 -1
  50. package/dist/{create-tween-DZ3RRDHD.js → create-tween-zt79ba32.js} +1 -1
  51. package/dist/{default-input-CaMrJkgH.js → default-input-DMV5Eaze.js} +1 -1
  52. package/dist/define-CI0y3eE4.js +1 -0
  53. package/dist/define.js +40 -40
  54. package/dist/define.server.js +45 -45
  55. package/dist/{disclosure-WUImBbDv.js → disclosure-NnACBxsC.js} +1 -1
  56. package/dist/{dropdown-wZVeJOMd.js → dropdown-DT7G0RGR.js} +1 -1
  57. package/dist/elements/agent-card.js +1 -1
  58. package/dist/elements/artifact.js +1 -1
  59. package/dist/elements/attachments.js +1 -1
  60. package/dist/elements/audio-visualizer.js +1 -1
  61. package/dist/elements/avatar.js +1 -1
  62. package/dist/elements/badge.js +1 -1
  63. package/dist/elements/button.js +1 -1
  64. package/dist/elements/card.js +1 -1
  65. package/dist/elements/cards.js +1 -1
  66. package/dist/elements/chain-of-thought.js +1 -1
  67. package/dist/elements/chat-scope-picker.js +1 -1
  68. package/dist/elements/chat-workspace.js +1 -1
  69. package/dist/elements/chat.js +1 -1
  70. package/dist/elements/checkbox-group.js +1 -1
  71. package/dist/elements/checkbox.js +1 -1
  72. package/dist/elements/checkpoint.js +1 -1
  73. package/dist/elements/choice.js +1 -1
  74. package/dist/elements/coachmark.js +1 -1
  75. package/dist/elements/code-block.js +1 -1
  76. package/dist/elements/command.js +1 -1
  77. package/dist/elements/compare.js +1 -1
  78. package/dist/elements/composer.js +1 -1
  79. package/dist/elements/confirm-card.js +1 -1
  80. package/dist/elements/context-meter.js +1 -1
  81. package/dist/elements/conversation-item.js +1 -1
  82. package/dist/elements/conversation-list.js +1 -1
  83. package/dist/elements/dialog.js +1 -1
  84. package/dist/elements/dock.js +1 -1
  85. package/dist/elements/dropdown.js +1 -1
  86. package/dist/elements/editable-label.js +1 -1
  87. package/dist/elements/embed.js +1 -1
  88. package/dist/elements/empty.js +1 -1
  89. package/dist/elements/feedback-bar.js +1 -1
  90. package/dist/elements/file-tree.js +1 -1
  91. package/dist/elements/file-upload.js +1 -1
  92. package/dist/elements/form.js +1 -1
  93. package/dist/elements/hover-card.js +1 -1
  94. package/dist/elements/icon.js +1 -1
  95. package/dist/elements/image.js +1 -1
  96. package/dist/elements/input.js +1 -1
  97. package/dist/elements/kbd.js +1 -1
  98. package/dist/elements/link-preview.js +1 -1
  99. package/dist/elements/loader.js +1 -1
  100. package/dist/elements/markdown.js +1 -1
  101. package/dist/elements/menu.js +1 -1
  102. package/dist/elements/message-skills.js +1 -1
  103. package/dist/elements/message.js +1 -1
  104. package/dist/elements/model-switcher.js +1 -1
  105. package/dist/elements/nav.js +1 -1
  106. package/dist/elements/notice.js +1 -1
  107. package/dist/elements/pane-grid.js +1 -1
  108. package/dist/elements/pane-group.js +1 -1
  109. package/dist/elements/pane.js +1 -1
  110. package/dist/elements/popover.js +1 -1
  111. package/dist/elements/progress-bar.js +1 -1
  112. package/dist/elements/prompt-dock.js +1 -1
  113. package/dist/elements/prompt-input.js +1 -1
  114. package/dist/elements/prompt-suggestions.js +1 -1
  115. package/dist/elements/radio-group.js +1 -1
  116. package/dist/elements/reasoning.js +1 -1
  117. package/dist/elements/remote.js +1 -1
  118. package/dist/elements/resizable.js +1 -1
  119. package/dist/elements/response-stream.js +1 -1
  120. package/dist/elements/screen.js +1 -1
  121. package/dist/elements/scroll-area.js +1 -1
  122. package/dist/elements/scroll-button.js +1 -1
  123. package/dist/elements/search.js +1 -1
  124. package/dist/elements/segmented.js +1 -1
  125. package/dist/elements/select.js +1 -1
  126. package/dist/elements/separator.js +1 -1
  127. package/dist/elements/setting-item.js +1 -1
  128. package/dist/elements/settings-group.js +1 -1
  129. package/dist/elements/skeleton.js +1 -1
  130. package/dist/elements/slider.js +1 -1
  131. package/dist/elements/source.js +1 -1
  132. package/dist/elements/status.js +1 -1
  133. package/dist/elements/switch.js +1 -1
  134. package/dist/elements/tabs.js +1 -1
  135. package/dist/elements/tasks.js +1 -1
  136. package/dist/elements/text-shimmer.js +1 -1
  137. package/dist/elements/thinking-bar.js +1 -1
  138. package/dist/elements/thread.js +1 -1
  139. package/dist/elements/toast.js +1 -1
  140. package/dist/elements/tool.js +1 -1
  141. package/dist/elements/tooltip.js +1 -1
  142. package/dist/elements/voice-input.js +1 -1
  143. package/dist/elements/voice-output.js +1 -1
  144. package/dist/{ellipsis-CbOpJnU3.js → ellipsis-6pJ7SxYT.js} +1 -1
  145. package/dist/{embed-CrfjkbUG.js → embed-BMje-nxj.js} +1 -1
  146. package/dist/engine-javascript-C1x7zo1_.js +1 -141
  147. package/dist/{external-link-ByXAwBBQ.js → external-link-Beh9DKeR.js} +1 -1
  148. package/dist/{file-text-DMib2qwt.js → file-text-D1GPfZ8Q.js} +1 -1
  149. package/dist/{file-tree-CJqM2aP7.js → file-tree-Dwj2lqg-.js} +1 -1
  150. package/dist/{folder-_BAb929C.js → folder-b6D8x1DY.js} +1 -1
  151. package/dist/{form-DSZgZQZk.js → form-DWgdxDXu.js} +1 -1
  152. package/dist/{hover-card-BQbul9eq.js → hover-card-CWRkqm40.js} +1 -1
  153. package/dist/{icon-CdcfRhYI.js → icon-CL0jdhsf.js} +1 -1
  154. package/dist/index.js +1741 -1725
  155. package/dist/index.server.js +1582 -1566
  156. package/dist/{info-DsFjGuI_.js → info-0cOUherQ.js} +1 -1
  157. package/dist/{input-DKbmkMos.js → input-BH6Ru91Q.js} +1 -1
  158. package/dist/kai.es.js +1 -1
  159. package/dist/{kbd-PvdGhX4s.js → kbd-DRAnVtNX.js} +1 -1
  160. package/dist/{link-zF8PzWfF.js → link-Dlr0vssB.js} +1 -1
  161. package/dist/{link-preview-DbM1866N.js → link-preview-DODgRyV9.js} +1 -1
  162. package/dist/loader-KvJB6NrT.js +1 -0
  163. package/dist/{markdown-LMvmAyBk.js → markdown-DX9tuJVj.js} +1 -1
  164. package/dist/mcp.es.js +9 -5
  165. package/dist/{message-BYZECyek.js → message-BqQ7Ot5q.js} +1 -1
  166. package/dist/{message-BSsgvHvf.js → message-DkaGfBd8.js} +1 -1
  167. package/dist/message-circle-BPpp5QKv.js +1 -0
  168. package/dist/message-square-BLbsd9BJ.js +1 -0
  169. package/dist/{minimize-2-BQRoBV1V.js → minimize-2-CyOHJwcN.js} +1 -1
  170. package/dist/{model-switcher-CMpCOYcB.js → model-switcher-0hrKDiK2.js} +1 -1
  171. package/dist/{overlay-Cb-MkyDa.js → overlay-DBMFXie6.js} +1 -1
  172. package/dist/{panel-right-i8warFxT.js → panel-right-t8SWJL6e.js} +1 -1
  173. package/dist/{paperclip-ByY3UVO6.js → paperclip-CdzuOjbU.js} +1 -1
  174. package/dist/play-BXy1u7rW.js +1 -0
  175. package/dist/primitives/use-auto-resize.d.ts +11 -0
  176. package/dist/{progress-bar-jVAHvMUf.js → progress-bar-CiBtxMWT.js} +1 -1
  177. package/dist/{prompt-suggestion-CD-qtNgC.js → prompt-suggestion-I_DHP21i.js} +1 -1
  178. package/dist/{radio-BsoBMhkF.js → radio-C_p3n39l.js} +1 -1
  179. package/dist/{reasoning-4kBPtlTx.js → reasoning-BDwy_tIe.js} +1 -1
  180. package/dist/register-impl-DvEnhIxx.js +424 -0
  181. package/dist/{resizable-uPmY9VY-.js → resizable-SYC-fStM.js} +1 -1
  182. package/dist/{rotate-ccw-B2xn93py.js → rotate-ccw-B1nwmwuY.js} +1 -1
  183. package/dist/{rotate-cw-CMVLoCyH.js → rotate-cw-CLAnBcm1.js} +1 -1
  184. package/dist/{scroll-area-BqLUo8ZZ.js → scroll-area-zRyXoLhI.js} +1 -1
  185. package/dist/{scroll-button-DslXiJyL.js → scroll-button-jzrbYCG9.js} +1 -1
  186. package/dist/{select-2cLRtPGT.js → select-DM-0nEe0.js} +1 -1
  187. package/dist/{separator-BWQtNJcM.js → separator-BToOOoOt.js} +1 -1
  188. package/dist/{settings-BBR63jLg.js → settings-PaGo_S4U.js} +1 -1
  189. package/dist/{settings-group-B2ciy-Iw.js → settings-group-BFXGIfXq.js} +1 -1
  190. package/dist/{skeleton-CkHI-HgC.js → skeleton-DYpmFnnm.js} +1 -1
  191. package/dist/{slider-DDR9U-i0.js → slider-ebutAmkQ.js} +1 -1
  192. package/dist/{solid-DruVOXnf.js → solid-15v_3WVL.js} +3563 -3412
  193. package/dist/{solid-BzCFdL25.js → solid-5P-otgdi.js} +4502 -4296
  194. package/dist/solid.d.ts +6 -0
  195. package/dist/solid.js +259 -254
  196. package/dist/solid.server.js +259 -254
  197. package/dist/{source-GEnFF528.js → source-c1gpRl9h.js} +1 -1
  198. package/dist/{star-CilHq8GP.js → star-pcV_3LqF.js} +1 -1
  199. package/dist/{store-Ciyk6eZG.js → store-CSgbFFCg.js} +1 -1
  200. package/dist/{switch-KkeQIbuH.js → switch-Bh2OdLV2.js} +1 -1
  201. package/dist/{tasks-card-BrN4bggJ.js → tasks-card-CbqQAn2S.js} +1 -1
  202. package/dist/text-shimmer-BSzgEnDH.js +1 -0
  203. package/dist/textarea-DrYNt_0z.js +1 -0
  204. package/dist/theme.tokens.css +22 -21
  205. package/dist/{thumbs-up-CsT9Wzb9.js → thumbs-up-BL3-NenK.js} +1 -1
  206. package/dist/{toast-store-tgK6MuMv.js → toast-store-DkOlYczt.js} +1 -1
  207. package/dist/{tool-DzUjIBT8.js → tool-CeIWUVUe.js} +1 -1
  208. package/dist/{tooltip-Bkkg_4t0.js → tooltip-GA-nmg06.js} +1 -1
  209. package/dist/{trash-2-jBKxjGGQ.js → trash-2-CT66QWlm.js} +1 -1
  210. package/dist/{triangle-alert-DlQ68ppf.js → triangle-alert-CeHLWxhD.js} +1 -1
  211. package/dist/ui/color-field.d.ts +48 -0
  212. package/dist/ui/textarea.d.ts +4 -0
  213. package/dist/ui/toggle-chip.d.ts +40 -0
  214. package/dist/{upload-TcAHXv9W.js → upload-9Csb0F0J.js} +1 -1
  215. package/dist/{use-card-resolution-DaZqAdWf.js → use-card-resolution-Zg0a08Z-.js} +1 -1
  216. package/dist/{variant-aurora-DbW_OWL2.js → variant-aurora-4VBQHIKV.js} +1 -1
  217. package/dist/{variant-aurora-CNmfHhcx.js → variant-aurora-DBeCAQNk.js} +2 -2
  218. package/dist/{variant-aurora-D6GsdTPA.js → variant-aurora-FzHVXHby.js} +2 -2
  219. package/dist/{variant-aurora-BhLuYxJR.js → variant-aurora-LE3fqxgw.js} +1 -1
  220. package/dist/{variant-custom-BvYHR62b.js → variant-custom-AFRGcOBS.js} +1 -1
  221. package/dist/{variant-custom-DV2x254s.js → variant-custom-BQkNuPpE.js} +2 -2
  222. package/dist/{variant-custom-BRvaNHSi.js → variant-custom-DI5R0rln.js} +1 -1
  223. package/dist/{variant-custom-DMTrEO5w.js → variant-custom-WWnrrRHS.js} +2 -2
  224. package/dist/{variant-wave-CyBueXj9.js → variant-wave-DUCbH5oI.js} +2 -2
  225. package/dist/{variant-wave-BNMGrDfj.js → variant-wave-DuQV7DhQ.js} +2 -2
  226. package/dist/{variant-wave-BpDd8t3Z.js → variant-wave-nSI2sfII.js} +1 -1
  227. package/dist/{variant-wave-sp-qwsdI.js → variant-wave-wTP5v_jU.js} +1 -1
  228. package/dist/x-eiO9V6J6.js +1 -0
  229. package/{src/elements/styles.css → kit-base.css} +27 -44
  230. package/package.json +32 -17
  231. package/solid.css +33 -0
  232. package/theme.css +39 -23
  233. package/bin/route.test.js +0 -58
  234. package/dist/arrow-down-CjRU3JgV.js +0 -1
  235. package/dist/arrow-left-Bnpb1UEW.js +0 -1
  236. package/dist/artifact-Bwt7OgcR.js +0 -1
  237. package/dist/check-njkVdZu2.js +0 -1
  238. package/dist/chevron-down-B72s6PXR.js +0 -1
  239. package/dist/chevron-right-BatuHzUm.js +0 -1
  240. package/dist/circle-check-B62pODB3.js +0 -1
  241. package/dist/circle-zx0ByzY9.js +0 -1
  242. package/dist/controllable-CnGpMF6r.js +0 -1
  243. package/dist/define-By-uL588.js +0 -1
  244. package/dist/loader-BM4CEz4G.js +0 -1
  245. package/dist/message-circle-DruwObfX.js +0 -1
  246. package/dist/message-square-BG6q6mlm.js +0 -1
  247. package/dist/play-BvKKq3fX.js +0 -1
  248. package/dist/register-impl-B1hLkrI8.js +0 -424
  249. package/dist/text-shimmer-Dcj1MHuq.js +0 -1
  250. package/dist/textarea-Dpvbngbg.js +0 -1
  251. package/dist/x-Z5UntkIJ.js +0 -1
  252. package/src/agent-tooling/README.md +0 -192
  253. package/src/agent-tooling/archetypes.ts +0 -205
  254. package/src/agent-tooling/catalog/README.md +0 -676
  255. package/src/agent-tooling/catalog/catalog-types.ts +0 -231
  256. package/src/agent-tooling/catalog/fabrications.ts +0 -96
  257. package/src/agent-tooling/catalog/invariants.ts +0 -284
  258. package/src/agent-tooling/catalog/labs-titles.ts +0 -114
  259. package/src/agent-tooling/catalog/scenarios.ts +0 -87
  260. package/src/agent-tooling/catalog/surfaces.ts +0 -347
  261. package/src/agent-tooling/construct/cli-entry.ts +0 -8
  262. package/src/agent-tooling/construct/cli.ts +0 -147
  263. package/src/agent-tooling/construct/codegen.ts +0 -1635
  264. package/src/agent-tooling/construct/construct.v1.schema.json +0 -319
  265. package/src/agent-tooling/construct/dev.ts +0 -148
  266. package/src/agent-tooling/construct/fixtures/demo-widget.construct.json +0 -7
  267. package/src/agent-tooling/construct/fixtures/ops-console.construct.json +0 -44
  268. package/src/agent-tooling/construct/fixtures/owner-widget.construct.json +0 -32
  269. package/src/agent-tooling/construct/schema.ts +0 -452
  270. package/src/agent-tooling/integrations/anthropic.ts +0 -442
  271. package/src/agent-tooling/integrations/cloudflare.ts +0 -218
  272. package/src/agent-tooling/integrations/langgraph.ts +0 -133
  273. package/src/agent-tooling/integrations/mastra.ts +0 -182
  274. package/src/agent-tooling/integrations/mock.ts +0 -148
  275. package/src/agent-tooling/integrations/ollama.ts +0 -97
  276. package/src/agent-tooling/integrations/openai.ts +0 -95
  277. package/src/agent-tooling/integrations/openrouter.ts +0 -82
  278. package/src/agent-tooling/integrations/pi.ts +0 -176
  279. package/src/agent-tooling/integrations/pydantic-ai.ts +0 -108
  280. package/src/agent-tooling/integrations/vercel-ai-sdk.ts +0 -398
  281. package/src/agent-tooling/mcp/css-raw.d.ts +0 -12
  282. package/src/agent-tooling/mcp/manifest.ts +0 -422
  283. package/src/agent-tooling/mcp/server.ts +0 -116
  284. package/src/agent-tooling/mcp/stdio.ts +0 -18
  285. package/src/agent-tooling/mcp/tools/construct.ts +0 -130
  286. package/src/agent-tooling/mcp/tools/debug.ts +0 -621
  287. package/src/agent-tooling/mcp/tools/reference.ts +0 -980
  288. package/src/agent-tooling/mcp/tools/scaffold.ts +0 -6708
  289. package/src/agent-tooling/mcp/tools/theme.ts +0 -456
  290. package/src/agent-tooling/mcp/tools/types.ts +0 -14
  291. package/src/agent-tooling/mcp/validate-args.ts +0 -141
  292. package/src/agent-tooling/recipes/composed-thread.ts +0 -714
  293. package/src/agent-tooling/recipes/index.ts +0 -22
  294. package/src/agent-tooling/recipes/types.ts +0 -32
  295. package/src/agent-tooling/registry.ts +0 -132
  296. package/src/agent-tooling/route-emit.ts +0 -305
  297. package/src/agent-tooling/types.ts +0 -390
  298. package/src/components/artifact-card.tsx +0 -120
  299. package/src/components/artifact.tsx +0 -914
  300. package/src/components/attachment-types.ts +0 -66
  301. package/src/components/attachments.tsx +0 -536
  302. package/src/components/audio-visualizer/audio-visualizer.voice-fixture.ts +0 -257
  303. package/src/components/audio-visualizer/aurora.glsl.ts +0 -330
  304. package/src/components/audio-visualizer/fit-scale.ts +0 -112
  305. package/src/components/audio-visualizer/index.tsx +0 -528
  306. package/src/components/audio-visualizer/labs/lab-choreography.ts +0 -187
  307. package/src/components/audio-visualizer/labs/lab-shaders.ts +0 -363
  308. package/src/components/audio-visualizer/labs/lab-visualizer.tsx +0 -102
  309. package/src/components/audio-visualizer/shader-canvas.tsx +0 -876
  310. package/src/components/audio-visualizer/sizes.ts +0 -54
  311. package/src/components/audio-visualizer/variant-aurora.tsx +0 -305
  312. package/src/components/audio-visualizer/variant-bar.tsx +0 -175
  313. package/src/components/audio-visualizer/variant-custom.tsx +0 -344
  314. package/src/components/audio-visualizer/variant-grid.tsx +0 -175
  315. package/src/components/audio-visualizer/variant-radial.tsx +0 -163
  316. package/src/components/audio-visualizer/variant-wave.tsx +0 -130
  317. package/src/components/audio-visualizer/wave.glsl.ts +0 -130
  318. package/src/components/card-fallback.tsx +0 -60
  319. package/src/components/card-renderer.tsx +0 -220
  320. package/src/components/card.tsx +0 -212
  321. package/src/components/chain-of-thought.tsx +0 -348
  322. package/src/components/chat-container.tsx +0 -89
  323. package/src/components/chat-scope-picker.tsx +0 -57
  324. package/src/components/chat-thread.tsx +0 -1014
  325. package/src/components/checkpoint.tsx +0 -88
  326. package/src/components/choice-card.tsx +0 -743
  327. package/src/components/coachmark.tsx +0 -249
  328. package/src/components/code-block.tsx +0 -181
  329. package/src/components/composer-dom.ts +0 -159
  330. package/src/components/composer-highlight.ts +0 -242
  331. package/src/components/composer-history.ts +0 -82
  332. package/src/components/composer.tsx +0 -1075
  333. package/src/components/confirm-card.tsx +0 -402
  334. package/src/components/context.tsx +0 -377
  335. package/src/components/conversation-item.tsx +0 -241
  336. package/src/components/conversation-list.tsx +0 -429
  337. package/src/components/conversation-panel.tsx +0 -118
  338. package/src/components/dismissed-stub.tsx +0 -80
  339. package/src/components/embed.tsx +0 -200
  340. package/src/components/empty.tsx +0 -177
  341. package/src/components/feedback-bar.tsx +0 -166
  342. package/src/components/file-tree.tsx +0 -530
  343. package/src/components/file-upload.tsx +0 -167
  344. package/src/components/form-widgets.tsx +0 -525
  345. package/src/components/form.tsx +0 -1296
  346. package/src/components/home-panel.tsx +0 -159
  347. package/src/components/image.tsx +0 -65
  348. package/src/components/link-preview.tsx +0 -195
  349. package/src/components/loader.tsx +0 -367
  350. package/src/components/markdown.tsx +0 -162
  351. package/src/components/message-skills.tsx +0 -40
  352. package/src/components/message.tsx +0 -765
  353. package/src/components/model-switcher.tsx +0 -132
  354. package/src/components/prompt-input.tsx +0 -188
  355. package/src/components/prompt-suggestion.tsx +0 -150
  356. package/src/components/reasoning.tsx +0 -293
  357. package/src/components/response-compare-types.ts +0 -152
  358. package/src/components/response-compare.tsx +0 -455
  359. package/src/components/response-stream.tsx +0 -109
  360. package/src/components/screen.tsx +0 -181
  361. package/src/components/scroll-button.tsx +0 -93
  362. package/src/components/source.tsx +0 -192
  363. package/src/components/tasks-card.tsx +0 -801
  364. package/src/components/text-shimmer.tsx +0 -37
  365. package/src/components/thinking-bar.tsx +0 -50
  366. package/src/components/thread.tsx +0 -228
  367. package/src/components/toast.tsx +0 -503
  368. package/src/components/tool-classify.ts +0 -26
  369. package/src/components/tool-types.ts +0 -49
  370. package/src/components/tool.tsx +0 -190
  371. package/src/components/use-card-resolution.ts +0 -44
  372. package/src/components/voice-input.tsx +0 -222
  373. package/src/components/voice-output.tsx +0 -242
  374. package/src/components/widget-tab-bar.tsx +0 -73
  375. package/src/components/workspace-shell.tsx +0 -285
  376. package/src/diagnostics/hook.ts +0 -352
  377. package/src/diagnostics/index.ts +0 -82
  378. package/src/diagnostics/report-request.ts +0 -296
  379. package/src/elements/agent-card.tsx +0 -67
  380. package/src/elements/artifact.tsx +0 -194
  381. package/src/elements/attachments.tsx +0 -140
  382. package/src/elements/audio-visualizer.tsx +0 -227
  383. package/src/elements/autoloader.ts +0 -89
  384. package/src/elements/avatar.tsx +0 -33
  385. package/src/elements/badge.tsx +0 -32
  386. package/src/elements/button.tsx +0 -149
  387. package/src/elements/card.tsx +0 -133
  388. package/src/elements/cards.tsx +0 -266
  389. package/src/elements/chain-of-thought.tsx +0 -141
  390. package/src/elements/chat-scope-picker.tsx +0 -65
  391. package/src/elements/chat-types.ts +0 -102
  392. package/src/elements/chat-workspace.tsx +0 -188
  393. package/src/elements/chat.tsx +0 -304
  394. package/src/elements/checkbox-group.tsx +0 -164
  395. package/src/elements/checkbox.tsx +0 -134
  396. package/src/elements/checkpoint.tsx +0 -47
  397. package/src/elements/choice.tsx +0 -100
  398. package/src/elements/coachmark.tsx +0 -90
  399. package/src/elements/code-block.tsx +0 -60
  400. package/src/elements/command.tsx +0 -197
  401. package/src/elements/compare.tsx +0 -111
  402. package/src/elements/compiled.css +0 -2
  403. package/src/elements/composer.tsx +0 -162
  404. package/src/elements/confirm-card.tsx +0 -76
  405. package/src/elements/context-meter.tsx +0 -107
  406. package/src/elements/conversation-item.tsx +0 -120
  407. package/src/elements/conversation-list.tsx +0 -203
  408. package/src/elements/css.ts +0 -5
  409. package/src/elements/default-input.tsx +0 -392
  410. package/src/elements/define-entry.ts +0 -12
  411. package/src/elements/define.tsx +0 -563
  412. package/src/elements/diagnostic-events.ts +0 -114
  413. package/src/elements/dialog.tsx +0 -145
  414. package/src/elements/disclosure.ts +0 -95
  415. package/src/elements/dock.tsx +0 -215
  416. package/src/elements/dropdown.tsx +0 -123
  417. package/src/elements/editable-label.tsx +0 -140
  418. package/src/elements/element-data-types.ts +0 -152
  419. package/src/elements/element-diagnostics.ts +0 -392
  420. package/src/elements/element-manifest.json +0 -354
  421. package/src/elements/element-nonscalar.json +0 -187
  422. package/src/elements/element-types.d.ts +0 -4353
  423. package/src/elements/embed.tsx +0 -35
  424. package/src/elements/empty.tsx +0 -29
  425. package/src/elements/feedback-bar.tsx +0 -66
  426. package/src/elements/file-tree.tsx +0 -62
  427. package/src/elements/file-upload.tsx +0 -44
  428. package/src/elements/form.tsx +0 -94
  429. package/src/elements/hover-card.tsx +0 -80
  430. package/src/elements/icon.tsx +0 -41
  431. package/src/elements/image.tsx +0 -32
  432. package/src/elements/input.tsx +0 -492
  433. package/src/elements/kbd.tsx +0 -45
  434. package/src/elements/link-preview.tsx +0 -34
  435. package/src/elements/loader.tsx +0 -25
  436. package/src/elements/markdown.tsx +0 -38
  437. package/src/elements/menu.tsx +0 -241
  438. package/src/elements/message-skills.tsx +0 -83
  439. package/src/elements/message.tsx +0 -361
  440. package/src/elements/model-switcher.tsx +0 -121
  441. package/src/elements/nav.tsx +0 -87
  442. package/src/elements/notice.tsx +0 -53
  443. package/src/elements/pane-grid.tsx +0 -111
  444. package/src/elements/pane-group.tsx +0 -119
  445. package/src/elements/pane.tsx +0 -129
  446. package/src/elements/popover.tsx +0 -81
  447. package/src/elements/progress-bar.tsx +0 -39
  448. package/src/elements/prompt-dock.tsx +0 -82
  449. package/src/elements/prompt-input.tsx +0 -240
  450. package/src/elements/prompt-suggestions.tsx +0 -113
  451. package/src/elements/radio-group.tsx +0 -129
  452. package/src/elements/reasoning.tsx +0 -71
  453. package/src/elements/register-impl.ts +0 -148
  454. package/src/elements/register.ts +0 -76
  455. package/src/elements/remote.tsx +0 -225
  456. package/src/elements/resizable.globals.d.ts +0 -36
  457. package/src/elements/resizable.tsx +0 -704
  458. package/src/elements/response-stream.tsx +0 -40
  459. package/src/elements/screen.tsx +0 -90
  460. package/src/elements/scroll-area.tsx +0 -33
  461. package/src/elements/scroll-button.tsx +0 -179
  462. package/src/elements/search.tsx +0 -185
  463. package/src/elements/segmented.tsx +0 -129
  464. package/src/elements/select.tsx +0 -165
  465. package/src/elements/separator.tsx +0 -36
  466. package/src/elements/setting-item.tsx +0 -50
  467. package/src/elements/settings-group.tsx +0 -37
  468. package/src/elements/skeleton.tsx +0 -45
  469. package/src/elements/slider.tsx +0 -171
  470. package/src/elements/slot-text.ts +0 -73
  471. package/src/elements/slots.ts +0 -787
  472. package/src/elements/source.tsx +0 -126
  473. package/src/elements/status.tsx +0 -42
  474. package/src/elements/switch.tsx +0 -118
  475. package/src/elements/tabs.tsx +0 -95
  476. package/src/elements/tasks.tsx +0 -103
  477. package/src/elements/text-shimmer.tsx +0 -28
  478. package/src/elements/thinking-bar.tsx +0 -43
  479. package/src/elements/thread.tsx +0 -139
  480. package/src/elements/toast.tsx +0 -106
  481. package/src/elements/tool.tsx +0 -78
  482. package/src/elements/tooltip.tsx +0 -85
  483. package/src/elements/validate-messages.ts +0 -76
  484. package/src/elements/voice-input.tsx +0 -100
  485. package/src/elements/voice-output.tsx +0 -82
  486. package/src/index.ts +0 -430
  487. package/src/primitives/audio-bands.ts +0 -174
  488. package/src/primitives/card-component-types.ts +0 -63
  489. package/src/primitives/card-contract.ts +0 -80
  490. package/src/primitives/card-data-types.ts +0 -361
  491. package/src/primitives/card-host.tsx +0 -37
  492. package/src/primitives/card-recovery.ts +0 -160
  493. package/src/primitives/card-registry.tsx +0 -78
  494. package/src/primitives/card-resolution.ts +0 -36
  495. package/src/primitives/card-routing.ts +0 -85
  496. package/src/primitives/card-schemas/artifact.schema.json +0 -92
  497. package/src/primitives/card-schemas/card-envelope.schema.json +0 -14
  498. package/src/primitives/card-schemas/card-event.schema.json +0 -12
  499. package/src/primitives/card-schemas/choice.schema.json +0 -75
  500. package/src/primitives/card-schemas/confirm.schema.json +0 -65
  501. package/src/primitives/card-schemas/embed.schema.json +0 -63
  502. package/src/primitives/card-schemas/form.result.schema.json +0 -7
  503. package/src/primitives/card-schemas/form.schema.json +0 -53
  504. package/src/primitives/card-schemas/link.schema.json +0 -54
  505. package/src/primitives/card-schemas/tasks.result.schema.json +0 -16
  506. package/src/primitives/card-schemas/tasks.schema.json +0 -83
  507. package/src/primitives/card-tags.ts +0 -61
  508. package/src/primitives/card-validate-cards.ts +0 -255
  509. package/src/primitives/card-validate-schemas.ts +0 -58
  510. package/src/primitives/card-validate.ts +0 -131
  511. package/src/primitives/chat-config.tsx +0 -103
  512. package/src/primitives/composer-model.ts +0 -49
  513. package/src/primitives/composer-triggers.ts +0 -35
  514. package/src/primitives/controllable.ts +0 -21
  515. package/src/primitives/conversation-store.ts +0 -248
  516. package/src/primitives/create-kai-chat.ts +0 -66
  517. package/src/primitives/create-tween.ts +0 -266
  518. package/src/primitives/embed-providers.ts +0 -254
  519. package/src/primitives/field-mask.ts +0 -256
  520. package/src/primitives/field-semantics.ts +0 -115
  521. package/src/primitives/highlighter.ts +0 -157
  522. package/src/primitives/input-mask.ts +0 -853
  523. package/src/primitives/link-preview.ts +0 -87
  524. package/src/primitives/message-feedback.ts +0 -124
  525. package/src/primitives/pdf-preview.ts +0 -121
  526. package/src/primitives/toast-store.ts +0 -338
  527. package/src/primitives/url-scheme-policy.ts +0 -70
  528. package/src/primitives/use-audio-analysis.ts +0 -340
  529. package/src/primitives/use-auto-resize.ts +0 -31
  530. package/src/primitives/use-resize-observer.ts +0 -45
  531. package/src/primitives/use-sequencer.ts +0 -72
  532. package/src/primitives/use-speech-recognition.ts +0 -146
  533. package/src/primitives/use-stick-to-bottom.ts +0 -75
  534. package/src/primitives/use-text-stream.ts +0 -143
  535. package/src/primitives/use-voice-recorder.ts +0 -62
  536. package/src/primitives/visualizer-sequences.ts +0 -350
  537. package/src/remote/host-embed.ts +0 -345
  538. package/src/remote/index.ts +0 -2
  539. package/src/remote/origin.ts +0 -30
  540. package/src/remote/provider-runtime.ts +0 -262
  541. package/src/remote/provider.ts +0 -2
  542. package/src/remote/validate.ts +0 -22
  543. package/src/remote/version.ts +0 -12
  544. package/src/remote/wire.ts +0 -48
  545. package/src/schemas/from-tool-call.ts +0 -151
  546. package/src/schemas/index.ts +0 -341
  547. package/src/schemas/provider-subsets.ts +0 -538
  548. package/src/schemas/registry.ts +0 -355
  549. package/src/schemas/tool-defs.ts +0 -793
  550. package/src/solid.ts +0 -173
  551. package/src/state/index.ts +0 -44
  552. package/src/state/messages.ts +0 -53
  553. package/src/state/mock.ts +0 -297
  554. package/src/state/parts.ts +0 -295
  555. package/src/state/persistence.ts +0 -180
  556. package/src/state/stream.ts +0 -246
  557. package/src/state/suggestions.ts +0 -9
  558. package/src/state/threads.ts +0 -142
  559. package/src/test-utils/fake-clock.ts +0 -88
  560. package/src/types.ts +0 -95
  561. package/src/ui/action-icons.ts +0 -53
  562. package/src/ui/agent-card.tsx +0 -218
  563. package/src/ui/avatar.tsx +0 -23
  564. package/src/ui/badge.tsx +0 -21
  565. package/src/ui/button.tsx +0 -49
  566. package/src/ui/card.tsx +0 -245
  567. package/src/ui/checkbox-group.tsx +0 -153
  568. package/src/ui/checkbox.tsx +0 -63
  569. package/src/ui/collapsible.tsx +0 -163
  570. package/src/ui/command.tsx +0 -103
  571. package/src/ui/dialog.tsx +0 -223
  572. package/src/ui/dock.tsx +0 -630
  573. package/src/ui/dropdown.tsx +0 -636
  574. package/src/ui/editable-label.tsx +0 -112
  575. package/src/ui/hover-card.tsx +0 -345
  576. package/src/ui/icon.tsx +0 -167
  577. package/src/ui/input.tsx +0 -391
  578. package/src/ui/kbd.tsx +0 -118
  579. package/src/ui/nav.tsx +0 -282
  580. package/src/ui/notice.tsx +0 -84
  581. package/src/ui/overlay.tsx +0 -277
  582. package/src/ui/pane-grid.tsx +0 -117
  583. package/src/ui/pane-group.tsx +0 -291
  584. package/src/ui/pane.tsx +0 -193
  585. package/src/ui/popover.tsx +0 -106
  586. package/src/ui/progress-bar.tsx +0 -83
  587. package/src/ui/prompt-dock.tsx +0 -145
  588. package/src/ui/radio.tsx +0 -150
  589. package/src/ui/resizable.tsx +0 -693
  590. package/src/ui/scroll-area.tsx +0 -26
  591. package/src/ui/segmented.tsx +0 -109
  592. package/src/ui/select.tsx +0 -168
  593. package/src/ui/separator.tsx +0 -10
  594. package/src/ui/settings-group.tsx +0 -67
  595. package/src/ui/skeleton.tsx +0 -73
  596. package/src/ui/slider.tsx +0 -178
  597. package/src/ui/status.tsx +0 -48
  598. package/src/ui/switch.tsx +0 -119
  599. package/src/ui/tabs.tsx +0 -168
  600. package/src/ui/textarea.tsx +0 -21
  601. package/src/ui/tooltip.tsx +0 -118
  602. package/src/utils/cn.ts +0 -30
  603. package/src/wire/chunk.ts +0 -248
  604. package/src/wire/consume.ts +0 -599
  605. package/src/wire/diagnostics.ts +0 -727
  606. package/src/wire/encode-probe.ts +0 -214
  607. package/src/wire/encode.ts +0 -947
  608. package/src/wire/files.ts +0 -342
  609. package/src/wire/formats/anthropic.ts +0 -274
  610. package/src/wire/formats/openai.ts +0 -228
  611. package/src/wire/index.ts +0 -95
  612. package/src/wire/media-types.ts +0 -344
  613. package/src/wire/read.ts +0 -396
  614. package/src/wire/sink-helpers.ts +0 -50
  615. package/src/wire/sse.ts +0 -153
package/README.md CHANGED
@@ -75,7 +75,7 @@ The element bundle is a self-contained ES module — load it directly from [jsDe
75
75
  ```
76
76
 
77
77
  <!-- x-release-please-start-version -->
78
- The URLs above track the **latest** release — handy for trying things out. **For production, pin an exact version** (e.g. `@kitn.ai/ui@0.28.0/dist/kai.es.js`): pinned URLs are immutable and cached far more aggressively, and — since this package is pre-1.0 — pinning shields you from breaking changes in a future minor release.
78
+ The URLs above track the **latest** release — handy for trying things out. **For production, pin an exact version** (e.g. `@kitn.ai/ui@0.30.0/dist/kai.es.js`): pinned URLs are immutable and cached far more aggressively, and — since this package is pre-1.0 — pinning shields you from breaking changes in a future minor release.
79
79
  <!-- x-release-please-end -->
80
80
 
81
81
  > **Pin `0.25.0` or newer.** Every version from `0.14.1` through `0.24.0` is covered by a [critical security advisory](https://github.com/kitn-ai/ui/security/advisories) and is deprecated on npm. `npm install` warns you about a deprecated version; **a CDN fetch does not**, so an old pinned URL in a page keeps serving the vulnerable bundle silently.
@@ -96,7 +96,7 @@ import {
96
96
  Message, MessageContent,
97
97
  PromptInput, PromptInputTextarea, PromptInputActions,
98
98
  } from '@kitn.ai/ui';
99
- import '@kitn.ai/ui/theme.css'; // Tailwind-source; non-Tailwind builds import theme.tokens.css instead see "Which theme file"
99
+ import '@kitn.ai/ui/solid.css'; // Tailwind-source: tokens + base rules + the animation/typography plugins, see "Which theme file"
100
100
 
101
101
  function App() {
102
102
  const [input, setInput] = createSignal('');
@@ -315,17 +315,19 @@ Per element: `<kai-chat codeHighlight={false}>` renders code as plain text.
315
315
 
316
316
  ## Theming
317
317
 
318
- Visual appearance is driven by `--color-*` CSS custom properties in `theme.css`. Because inherited CSS pierces the Shadow DOM boundary, overriding tokens on `:root` rebrands the components even the web-component ones:
318
+ Every element reads its colors from `--color-*` custom properties, and each of those is defined on `:host` inside the shadow root as `var(--kai-color-*, <default>)`. A `:host` declaration beats anything inherited from the page, so setting `--color-primary` on `:root` does NOT reach the elements. Set the `--kai-` names instead; custom properties inherit through the shadow boundary and the `:host` fallback picks them up:
319
319
 
320
320
  ```css
321
321
  :root {
322
- --color-background: #0f0f0f;
323
- --color-primary: #7c3aed;
324
- --color-muted: #1e1e1e;
322
+ --kai-color-background: #0f0f0f;
323
+ --kai-color-primary: #7c3aed;
324
+ --kai-color-muted: #1e1e1e;
325
325
  }
326
326
  ```
327
327
 
328
- For web components the kit's CSS is injected into each shadow root automatically; the token stylesheet is optional and only themes host-page chrome / rebrands.
328
+ To rebrand one element rather than the page, target the element itself. A rule in the document (`kai-chat { --color-primary: #7c3aed }`) outranks the shadow root's `:host` rule, so the bare `--color-*` names work there.
329
+
330
+ The kit's CSS is injected into each shadow root automatically, so the token stylesheet is optional for web components. The unprefixed `--color-*` names it defines are for your own host-page chrome and the light-DOM SolidJS components, which have no shadow root.
329
331
 
330
332
  ### Which theme file
331
333
 
@@ -334,6 +336,8 @@ Two builds of the same tokens; the condition is whether **Tailwind processes the
334
336
  - **`@kitn.ai/ui/theme.css`** — Tailwind v4 source (`@theme` block; needs `tailwindcss` as a peer). Import it only in an app whose build runs Tailwind over its CSS. Served raw to a browser, the `@theme` block is discarded whole and the tokens never apply.
335
337
  - **`@kitn.ai/ui/theme.tokens.css`** — the compiled plain-CSS build of the same tokens, no toolchain requirements. Use it in every non-Tailwind bundler app and for `<link>`/CDN pages.
336
338
 
339
+ For the SolidJS components (Option B) import **`@kitn.ai/ui/solid.css`** instead of `theme.css`. It imports `theme.css` and adds what the `kai-*` elements carry in their shadow roots and a light-DOM app must compile itself: the form-control and focus-ring rules, `tw-animate-css` (overlay animations) and `@tailwindcss/typography` (`prose-*`). Those two are optional peer dependencies: `npm i -D tw-animate-css @tailwindcss/typography`. Keep the `@source` line pointing at the kit either way.
340
+
337
341
  ## For AI agents / LLMs
338
342
 
339
343
  The package ships a stdio MCP server too — `npx @kitn.ai/ui mcp` gives any MCP harness tools to look up the real `kai-*` API, scaffold a wired chat surface, theme it, and catch the classic mistakes:
@@ -1 +1 @@
1
- import{s as d,p as h,q as i,m as u,i as c,c as n,D as k,F as g,t as w}from"./define-By-uL588.js";var m={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round"},t=m,p=w("<svg>"),v=r=>r.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),b=(...r)=>r.filter((e,s,o)=>!!e&&o.indexOf(e)===s).join(" "),f=r=>{const[e,s]=d(r,["color","size","strokeWidth","children","class","name","iconNode","absoluteStrokeWidth"]);return(()=>{var o=p();return h(o,i(t,{get width(){return e.size??t.width},get height(){return e.size??t.height},get stroke(){return e.color??t.stroke},get"stroke-width"(){return u(()=>!!e.absoluteStrokeWidth)()?Number(e.strokeWidth??t["stroke-width"])*24/Number(e.size):Number(e.strokeWidth??t["stroke-width"])},get class(){return b("lucide","lucide-icon",e.name!=null?`lucide-${v(e?.name)}`:void 0,e.class!=null?e.class:"")}},s),!0,!0),c(o,n(g,{get each(){return e.iconNode},children:([a,l])=>n(k,i({component:a},l))})),o})()},z=f;export{z as I};
1
+ import{s as d,p as h,q as i,m as u,i as c,c as n,D as k,F as g,t as w}from"./define-CI0y3eE4.js";var m={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round"},t=m,p=w("<svg>"),v=r=>r.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),b=(...r)=>r.filter((e,s,o)=>!!e&&o.indexOf(e)===s).join(" "),f=r=>{const[e,s]=d(r,["color","size","strokeWidth","children","class","name","iconNode","absoluteStrokeWidth"]);return(()=>{var o=p();return h(o,i(t,{get width(){return e.size??t.width},get height(){return e.size??t.height},get stroke(){return e.color??t.stroke},get"stroke-width"(){return u(()=>!!e.absoluteStrokeWidth)()?Number(e.strokeWidth??t["stroke-width"])*24/Number(e.size):Number(e.strokeWidth??t["stroke-width"])},get class(){return b("lucide","lucide-icon",e.name!=null?`lucide-${v(e?.name)}`:void 0,e.class!=null?e.class:"")}},s),!0,!0),c(o,n(g,{get each(){return e.iconNode},children:([a,l])=>n(k,i({component:a},l))})),o})()},z=f;export{z as I};
@@ -1 +1 @@
1
- import{I as e}from"./Icon-DObhsRtm.js";import{c as a,q as r}from"./define-By-uL588.js";import{f as t,t as i,b as m,s as p,p as s}from"./trash-2-jBKxjGGQ.js";import{c as k}from"./check-njkVdZu2.js";import{c as n}from"./copy-n9u9rqpi.js";import{d}from"./rotate-cw-CMVLoCyH.js";import{e as f}from"./ellipsis-CbOpJnU3.js";import{l}from"./link-zF8PzWfF.js";import{s as c}from"./star-CilHq8GP.js";import{t as y,a as h}from"./thumbs-up-CsT9Wzb9.js";import{x as v}from"./x-Z5UntkIJ.js";var g=[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]],u=o=>a(e,r(o,{name:"RefreshCw",iconNode:g})),M=u,L=[["polyline",{points:"9 17 4 12 9 7",key:"hvgpf2"}],["path",{d:"M20 18v-2a4 4 0 0 0-4-4H4",key:"5vmcpk"}]],N=o=>a(e,r(o,{name:"Reply",iconNode:L})),b=N,w=[["polygon",{points:"11 5 6 9 2 9 2 15 6 15 11 19 11 5",key:"16drj5"}],["path",{d:"M15.54 8.46a5 5 0 0 1 0 7.07",key:"ltjumu"}],["path",{d:"M19.07 4.93a10 10 0 0 1 0 14.14",key:"1kegas"}]],x=o=>a(e,r(o,{name:"Volume2",iconNode:w})),C=x;const R={copy:n,like:h,dislike:y,regenerate:M,edit:s,share:p,bookmark:m,download:d,link:l,trash:i,check:k,x:v,star:c,flag:t,reply:b,more:f,"volume-2":C};function j(o){if(o)return R[o]}const q={copy:"Copy",like:"Like",dislike:"Dislike",regenerate:"Regenerate",edit:"Edit"};export{q as B,j as a};
1
+ import{I as e}from"./Icon-BzBET3E-.js";import{c as a,q as r}from"./define-CI0y3eE4.js";import{f as t,t as i,b as m,s as p,p as s}from"./trash-2-CT66QWlm.js";import{c as k}from"./check-CiEOVnEN.js";import{c as n}from"./copy-BmEwsNhJ.js";import{d}from"./rotate-cw-CLAnBcm1.js";import{e as f}from"./ellipsis-6pJ7SxYT.js";import{l}from"./link-Dlr0vssB.js";import{s as c}from"./star-pcV_3LqF.js";import{t as y,a as h}from"./thumbs-up-BL3-NenK.js";import{x as v}from"./x-eiO9V6J6.js";var g=[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]],u=o=>a(e,r(o,{name:"RefreshCw",iconNode:g})),M=u,L=[["polyline",{points:"9 17 4 12 9 7",key:"hvgpf2"}],["path",{d:"M20 18v-2a4 4 0 0 0-4-4H4",key:"5vmcpk"}]],N=o=>a(e,r(o,{name:"Reply",iconNode:L})),b=N,w=[["polygon",{points:"11 5 6 9 2 9 2 15 6 15 11 19 11 5",key:"16drj5"}],["path",{d:"M15.54 8.46a5 5 0 0 1 0 7.07",key:"ltjumu"}],["path",{d:"M19.07 4.93a10 10 0 0 1 0 14.14",key:"1kegas"}]],x=o=>a(e,r(o,{name:"Volume2",iconNode:w})),C=x;const R={copy:n,like:h,dislike:y,regenerate:M,edit:s,share:p,bookmark:m,download:d,link:l,trash:i,check:k,x:v,star:c,flag:t,reply:b,more:f,"volume-2":C};function j(o){if(o)return R[o]}const q={copy:"Copy",like:"Like",dislike:"Dislike",regenerate:"Regenerate",edit:"Edit"};export{q as B,j as a};
@@ -0,0 +1,15 @@
1
+ /**
2
+ * The public `@kitn.ai/ui/construct` export surface (dist/construct.js).
3
+ *
4
+ * Zod stays the single source of truth for the construct format (see
5
+ * schema.ts's header) — this re-export is what lets a BUILD-TIME consumer
6
+ * (create-kai's wizard, Task 2 of this round) validate a construct against the
7
+ * exact same schema the `kai` CLI and the MCP `construct` tool use, without
8
+ * hand-deriving a second copy the way the reference harness had to for the
9
+ * card schemas (see verify-schemas-exported.mjs's header for that history).
10
+ *
11
+ * Deliberately NOT added to the existing `./schemas` entry: that entry's
12
+ * source documents a size budget it holds itself to, and zod does not fit it.
13
+ * `./construct` is its own exports key for exactly that reason.
14
+ */
15
+ export { ConstructSchema, validateConstruct, CONSTRUCT_SCHEMA_URL, type Construct, type ConstructProblem, type ValidationOutcome, } from './schema.js';
@@ -0,0 +1,111 @@
1
+ import { z } from 'zod';
2
+ export declare const CONSTRUCT_SCHEMA_URL = "https://ui.kitn.ai/schemas/construct/v1.json";
3
+ export declare const ConstructSchema: z.ZodObject<{
4
+ $schema: z.ZodOptional<z.ZodString>;
5
+ name: z.ZodString;
6
+ layout: z.ZodEnum<{
7
+ custom: "custom";
8
+ widget: "widget";
9
+ fullscreen: "fullscreen";
10
+ aside: "aside";
11
+ split: "split";
12
+ }>;
13
+ provider: z.ZodDiscriminatedUnion<[z.ZodObject<{
14
+ mode: z.ZodLiteral<"mock">;
15
+ }, z.core.$strict>, z.ZodObject<{
16
+ mode: z.ZodLiteral<"endpoint">;
17
+ url: z.ZodString;
18
+ wire: z.ZodEnum<{
19
+ openai: "openai";
20
+ anthropic: "anthropic";
21
+ }>;
22
+ }, z.core.$strict>], "mode">;
23
+ userId: z.ZodOptional<z.ZodString>;
24
+ theme: z.ZodOptional<z.ZodObject<{
25
+ accent: z.ZodOptional<z.ZodString>;
26
+ unreadColor: z.ZodOptional<z.ZodString>;
27
+ mode: z.ZodDefault<z.ZodEnum<{
28
+ light: "light";
29
+ dark: "dark";
30
+ system: "system";
31
+ }>>;
32
+ }, z.core.$strict>>;
33
+ header: z.ZodOptional<z.ZodObject<{
34
+ title: z.ZodOptional<z.ZodString>;
35
+ }, z.core.$strict>>;
36
+ empty: z.ZodOptional<z.ZodObject<{
37
+ title: z.ZodString;
38
+ description: z.ZodOptional<z.ZodString>;
39
+ icon: z.ZodOptional<z.ZodString>;
40
+ }, z.core.$strict>>;
41
+ home: z.ZodOptional<z.ZodObject<{
42
+ greeting: z.ZodOptional<z.ZodObject<{
43
+ title: z.ZodOptional<z.ZodString>;
44
+ subtitle: z.ZodOptional<z.ZodString>;
45
+ }, z.core.$strict>>;
46
+ recentConversation: z.ZodOptional<z.ZodLiteral<true>>;
47
+ newConversation: z.ZodOptional<z.ZodObject<{
48
+ label: z.ZodOptional<z.ZodString>;
49
+ }, z.core.$strict>>;
50
+ links: z.ZodOptional<z.ZodArray<z.ZodObject<{
51
+ label: z.ZodString;
52
+ href: z.ZodOptional<z.ZodString>;
53
+ description: z.ZodOptional<z.ZodString>;
54
+ icon: z.ZodOptional<z.ZodString>;
55
+ }, z.core.$strict>>>;
56
+ }, z.core.$strict>>;
57
+ capabilities: z.ZodOptional<z.ZodObject<{
58
+ starters: z.ZodOptional<z.ZodArray<z.ZodString>>;
59
+ attachments: z.ZodOptional<z.ZodObject<{
60
+ accept: z.ZodArray<z.ZodString>;
61
+ }, z.core.$strict>>;
62
+ history: z.ZodOptional<z.ZodObject<{
63
+ persistence: z.ZodEnum<{
64
+ endpoint: "endpoint";
65
+ none: "none";
66
+ local: "local";
67
+ }>;
68
+ url: z.ZodOptional<z.ZodString>;
69
+ }, z.core.$strict>>;
70
+ reasoning: z.ZodOptional<z.ZodEnum<{
71
+ full: "full";
72
+ compact: "compact";
73
+ off: "off";
74
+ }>>;
75
+ reasoningOpen: z.ZodOptional<z.ZodBoolean>;
76
+ conversations: z.ZodOptional<z.ZodLiteral<true>>;
77
+ }, z.core.$strict>>;
78
+ cards: z.ZodOptional<z.ZodArray<z.ZodObject<{
79
+ name: z.ZodString;
80
+ schema: z.ZodRecord<z.ZodString, z.ZodUnknown>;
81
+ }, z.core.$strict>>>;
82
+ slots: z.ZodOptional<z.ZodArray<z.ZodString>>;
83
+ widget: z.ZodOptional<z.ZodObject<{
84
+ position: z.ZodOptional<z.ZodEnum<{
85
+ "bottom-end": "bottom-end";
86
+ "bottom-start": "bottom-start";
87
+ "top-end": "top-end";
88
+ "top-start": "top-start";
89
+ }>>;
90
+ launcherIcon: z.ZodOptional<z.ZodString>;
91
+ defaultOpen: z.ZodOptional<z.ZodBoolean>;
92
+ }, z.core.$strict>>;
93
+ }, z.core.$strict>;
94
+ export type Construct = z.infer<typeof ConstructSchema>;
95
+ export interface ConstructProblem {
96
+ /** Dotted path into the construct, '' for the root. */
97
+ path: string;
98
+ message: string;
99
+ }
100
+ export type ValidationOutcome = {
101
+ ok: true;
102
+ construct: Construct;
103
+ } | {
104
+ ok: false;
105
+ problems: ConstructProblem[];
106
+ };
107
+ /**
108
+ * Validate one construct. The ONLY doorway to codegen: a failure never reaches
109
+ * generation — the problems go back to the author/agent with paths and reasons.
110
+ */
111
+ export declare function validateConstruct(input: unknown): ValidationOutcome;
@@ -0,0 +1 @@
1
+ import{I as o}from"./Icon-BzBET3E-.js";import{c as r,q as e}from"./define-CI0y3eE4.js";var m=[["path",{d:"M12 5v14",key:"s699le"}],["path",{d:"m19 12-7 7-7-7",key:"1idqje"}]],p=a=>r(o,e(a,{name:"ArrowDown",iconNode:m})),t=p;export{t as a};
@@ -0,0 +1 @@
1
+ import{I as o}from"./Icon-BzBET3E-.js";import{c as r,q as e}from"./define-CI0y3eE4.js";var m=[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]],t=a=>r(o,e(a,{name:"ArrowLeft",iconNode:m})),p=t;export{p as a};
@@ -0,0 +1 @@
1
+ import{q as J,s as he,g as k,k as y,j as F,x as Q,o as X,p as fe,i as c,c as a,S as g,t as v,d as p,a as z,b as Y,u as Z,m as ge,h as be,e as ve}from"./define-CI0y3eE4.js";import{c as H}from"./cn-DN5AWfiS.js";import{B as C}from"./button-C_3te6fm.js";import{C as me,a as pe}from"./code-block-B26t-Q7q.js";import{F as we}from"./file-tree-Dwj2lqg-.js";import{L as xe}from"./loader-KvJB6NrT.js";import{a as ke,i as ee}from"./url-scheme-policy-DR5DgvkM.js";import{a as ye}from"./arrow-left-0VLM5kyg.js";import{a as ze,r as Ce,h as Te,e as Fe,c as Pe,d as Se}from"./rotate-cw-CLAnBcm1.js";import{e as re}from"./external-link-Beh9DKeR.js";import{f as Oe}from"./file-text-D1GPfZ8Q.js";import{m as Re,a as je}from"./minimize-2-CyOHJwcN.js";const Ie="6.0.227",ne=`https://cdn.jsdelivr.net/npm/pdfjs-dist@${Ie}/build`,He=()=>import(/*@vite-ignore*/`${ne}/pdf.min.mjs`),Ne=`${ne}/pdf.worker.min.mjs`;let Ee=He,Me=Ne,N=null;function $e(){if(!N){const r=Ee;N=(async()=>{const t=await r(),e=t.default??t;return e.GlobalWorkerOptions.workerSrc=Me,e})()}return N}async function Be(r,t,e){const i=await(await $e()).getDocument({url:r}).promise;t.replaceChildren();const o=typeof window<"u"&&window.devicePixelRatio?window.devicePixelRatio:1;for(let s=1;s<=i.numPages;s++){const d=await i.getPage(s),u=d.getViewport({scale:1}),h=u.width>0?e/u.width:1,f=d.getViewport({scale:h*o}),b=document.createElement("canvas");b.width=Math.max(1,Math.floor(f.width)),b.height=Math.max(1,Math.floor(f.height)),b.setAttribute("role","img"),b.setAttribute("aria-label",`Page ${s}`),b.style.width="100%",b.style.height="auto",b.style.display="block";const w=b.getContext("2d");t.appendChild(b),await d.render({canvasContext:w,viewport:f}).promise}return{pages:i.numPages}}var Le=v('<div><div class="relative min-h-0 flex-1">'),Ue=v('<form class="min-w-0 flex-1"><label class=sr-only for=kai-artifact-path>Address</label><input id=kai-artifact-path name=kai-artifact-path type=text autocomplete=off placeholder="Enter a path or URL\u2026">'),De=v("<div class=flex-1 aria-hidden=true>"),Ae=v('<div role=tablist aria-label=View class="flex shrink-0 items-center gap-0.5 rounded-md bg-muted p-0.5">'),Ve=v('<div data-artifact-toolbar class="flex shrink-0 items-center gap-1.5 border-b border-border bg-surface px-2 py-1.5">'),We=v("<button type=button role=tab>"),Ke=v('<iframe class="absolute inset-0 h-full w-full border-0 bg-white">'),_e=v('<div class="absolute inset-0 flex"><div class="w-56 shrink-0 overflow-auto border-r border-border bg-surface-sunken py-1.5 kai-scrollbar-thin"></div><div class="min-w-0 flex-1 overflow-auto kai-scrollbar-thin">'),qe=v('<div class="flex h-full items-center justify-center p-6 text-sm text-muted-foreground">Select a file to view its source.'),Ge=v('<div class="flex h-full items-center justify-center p-6 text-sm text-muted-foreground">No source \u2014 this file (<!>) has no code view.'),Je=v('<div class="flex flex-wrap items-center justify-center gap-2"><a class="inline-flex h-8 items-center gap-1.5 rounded-md border border-border bg-background px-3 text-xs font-medium text-foreground transition-colors hover:bg-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring"target=_blank rel="noopener noreferrer">Open in new tab</a><a class="inline-flex h-8 items-center gap-1.5 rounded-md border border-border bg-background px-3 text-xs font-medium text-foreground transition-colors hover:bg-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring"download>Download'),Qe=v(`<div role=region aria-label="PDF preview unavailable"class="absolute inset-0 flex flex-col items-center justify-center gap-3 bg-card p-6 text-center"><div class="text-sm font-medium text-foreground"></div><div class="text-xs text-muted-foreground">Can't preview this PDF inline.`),Xe=v(`<div class="text-xs text-muted-foreground">Blocked: that address uses a scheme this viewer won't open.`),Ye=v('<div class="pointer-events-none absolute inset-0 flex items-center justify-center">'),Ze=v('<div class="absolute inset-0"><div role=region aria-label="PDF preview"tabindex=0 class="absolute inset-0 flex flex-col items-center gap-3 overflow-auto bg-surface-sunken p-3 kai-scrollbar-thin focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-inset">');const er="allow-scripts allow-forms";function E(r,t){console.warn(`[kai-artifact] blocked unsafe url in ${r}: ${t}`)}function rr(r,t){if(r.url)return r.url;if(!t)return r.path;try{return new URL(r.path,t).href}catch{return r.path}}function nr(r,t){if(!r)return!1;const e=t.find(o=>o.url===r||o.path===r);if(e?.type==="pdf")return!0;const i=r.split(/[?#]/)[0];return/\.pdf$/i.test(i)}function tr(r){const t=J({files:[],defaultTab:"preview",sandbox:er,showNav:!0,showReload:!0,showHome:!0,showPathField:!0,showTabs:!0,expandable:!1,openInTab:!1,standalone:!1,readonlyPath:!1,maximized:!1},r),[e,i]=he(t,["src","files","tab","defaultTab","activeFile","sandbox","iframeTitle","onNavigate","onTabChange","onFileSelect","maximized","onMaximizeChange","showNav","showReload","showHome","showPathField","showTabs","expandable","openInTab","standalone","readonlyPath","displayUrl","controllerRef","class"]),[o,s]=k(e.src?[e.src]:[]),[d,u]=k(e.src?0:-1),h=()=>o()[d()]??"",f=()=>d()>0,b=()=>d()<o().length-1,w=y(()=>{const n=h();return n&&ke(n)?(E("preview",n),""):n}),[P,M]=k(e.tab??e.defaultTab),[$,B]=k(e.activeFile),[ae,ie]=k(0),[S,O]=k(e.maximized??!1);F(()=>O(e.maximized??!1));const le=()=>{var n;const l=!S();O(l),(n=e.onMaximizeChange)==null||n.call(e,l)},L=y(()=>{const n=h();return!!n&&n!=="about:blank"&&ee(n)}),U=()=>{const n=h();if(!L()){n&&n!=="about:blank"&&E("openExternal",n);return}window.open(n,"_blank","noopener,noreferrer")},D=y(()=>e.expandable&&!e.standalone),oe=y(()=>e.showNav||e.showReload||e.showHome||e.showPathField||e.showTabs||D()||e.openInTab);let x;F(()=>{e.tab!==void 0&&M(e.tab)}),F(()=>B(e.activeFile)),F(Q(()=>e.src,n=>{n&&n!==h()&&T(n)},{defer:!0}));const A=n=>n===void 0?void 0:e.files.find(l=>l.path===n),V=y(()=>A($())),se=y(()=>{const n=V();return!!n&&n.type!=="image"&&n.type!=="pdf"&&typeof n.code=="string"});function T(n){if(n===h()){j();return}s(l=>[...l.slice(0,d()+1),n]),u(l=>l+1),R()}function R(){var n;x&&(x.src=w()||"about:blank"),(n=e.onNavigate)==null||n.call(e,h())}function de(n){var l;n!==P()&&(M(n),(l=e.onTabChange)==null||l.call(e,n))}function W(n,l){var m;B(n),(m=e.onFileSelect)==null||m.call(e,n),T(rr(l,e.src))}const K=()=>{f()&&(u(n=>n-1),R())},_=()=>{b()&&(u(n=>n+1),R())};function j(){var n;x&&(x.src="about:blank",x.src=w()||"about:blank"),ie(l=>l+1),(n=e.onNavigate)==null||n.call(e,h())}const q=()=>{e.src&&T(e.src)},G=n=>{var l;S()!==n&&(O(n),(l=e.onMaximizeChange)==null||l.call(e,n))};X(()=>{var n;(n=e.controllerRef)==null||n.call(e,{back:()=>K(),forward:()=>_(),reload:()=>j(),home:()=>q(),navigate:l=>T(l),selectFile:l=>{const m=A(l);m&&W(l,m)},openExternal:()=>U(),maximize:()=>G(!0),restore:()=>G(!1)})});const ue=()=>{var n,l;try{const m=(n=x?.contentWindow)==null?void 0:n.location.href;m&&m!=="about:blank"&&m!==h()&&(s(I=>[...I.slice(0,d()+1),m]),u(I=>I+1),(l=e.onNavigate)==null||l.call(e,m))}catch{}},ce=n=>{n.preventDefault();const l=n.currentTarget.elements.namedItem("kai-artifact-path");if(e.readonlyPath||e.displayUrl!=null){l&&(l.value=e.displayUrl??h());return}l&&l.value&&T(l.value)};return(()=>{var n=Le(),l=n.firstChild;return fe(n,J({get class(){return H("flex h-full w-full flex-col overflow-hidden bg-card text-card-foreground",e.standalone&&"rounded-xl border border-border",e.class)}},i),!1,!0),c(n,a(g,{get when(){return oe()},get children(){return a(ar,{url:()=>e.displayUrl??h(),tab:P,canBack:f,canForward:b,canHome:()=>!!e.src,onBack:K,onForward:_,onReload:j,onHome:q,onSubmitPath:ce,onTab:de,showNav:()=>e.showNav,showReload:()=>e.showReload,showHome:()=>e.showHome,showPathField:()=>e.showPathField,showTabs:()=>e.showTabs,showExpand:D,showOpenInTab:()=>e.openInTab,maximized:S,onToggleMaximize:le,canOpenInTab:L,onOpenInTab:U,readonlyPath:()=>e.readonlyPath||e.displayUrl!=null})}}),l),c(l,a(g,{get when(){return P()==="preview"},get fallback(){return a(lr,{get files(){return e.files},activeFile:$,activeFileObj:V,hasSource:se,onSelect:W})},get children(){return a(g,{get when(){return nr(h(),e.files)},get fallback(){return a(ir,{ref:m=>x=m,src:w,get sandbox(){return e.sandbox},get title(){return e.iframeTitle??"Artifact preview"},onLoad:ue})},get children(){return a(sr,{get url(){return h()},get reloadKey(){return ae()}})}})}})),n})()}function ar(r){return(()=>{var t=Ve();return c(t,a(g,{get when(){return r.showNav()},get children(){return[a(C,{variant:"ghost",size:"icon-sm","aria-label":"Back",get disabled(){return!r.canBack()},onClick:()=>r.onBack(),get children(){return a(ye,{size:16,"aria-hidden":"true"})}}),a(C,{variant:"ghost",size:"icon-sm","aria-label":"Forward",get disabled(){return!r.canForward()},onClick:()=>r.onForward(),get children(){return a(ze,{size:16,"aria-hidden":"true"})}})]}}),null),c(t,a(g,{get when(){return r.showReload()},get children(){return a(C,{variant:"ghost",size:"icon-sm","aria-label":"Reload",onClick:()=>r.onReload(),get children(){return a(Ce,{size:15,"aria-hidden":"true"})}})}}),null),c(t,a(g,{get when(){return r.showHome()},get children(){return a(C,{variant:"ghost",size:"icon-sm","aria-label":"Home",get disabled(){return!r.canHome()},onClick:()=>r.onHome(),get children(){return a(Te,{size:15,"aria-hidden":"true"})}})}}),null),c(t,a(g,{get when(){return r.showPathField()},get children(){var e=Ue(),i=e.firstChild,o=i.nextSibling;return e.addEventListener("submit",s=>r.onSubmitPath(s)),p(o,"spellcheck",!1),z(s=>{var d=r.readonlyPath()||void 0,u=r.readonlyPath()?"true":void 0,h=H("h-7 w-full rounded-md border border-border px-2.5 text-xs text-foreground font-mono outline-none",r.readonlyPath()?"bg-muted/40 cursor-default":"bg-background focus-visible:ring-2 focus-visible:ring-ring");return d!==s.e&&(o.readOnly=s.e=d),u!==s.t&&p(o,"aria-readonly",s.t=u),h!==s.a&&Y(o,s.a=h),s},{e:void 0,t:void 0,a:void 0}),z(()=>o.value=r.url()),e}}),null),c(t,a(g,{get when(){return!r.showPathField()},get children(){return De()}}),null),c(t,a(g,{get when(){return r.showExpand()},get children(){return a(C,{variant:"ghost",size:"icon-sm",get"aria-label"(){return r.maximized()?"Collapse":"Expand"},get"aria-expanded"(){return r.maximized()},onClick:()=>r.onToggleMaximize(),get children(){return a(g,{get when(){return r.maximized()},get fallback(){return a(je,{size:15,"aria-hidden":"true"})},get children(){return a(Re,{size:15,"aria-hidden":"true"})}})}})}}),null),c(t,a(g,{get when(){return r.showOpenInTab()},get children(){return a(C,{variant:"ghost",size:"icon-sm","aria-label":"Open in new tab",get disabled(){return!r.canOpenInTab()},onClick:()=>r.onOpenInTab(),get children(){return a(re,{size:15,"aria-hidden":"true"})}})}}),null),c(t,a(g,{get when(){return r.showTabs()},get children(){var e=Ae();return c(e,a(te,{label:"Preview",get icon(){return a(Fe,{size:14,"aria-hidden":"true"})},get selected(){return r.tab()==="preview"},onClick:()=>r.onTab("preview")}),null),c(e,a(te,{label:"Code",get icon(){return a(Pe,{size:14,"aria-hidden":"true"})},get selected(){return r.tab()==="code"},onClick:()=>r.onTab("code")}),null),e}}),null),t})()}function te(r){return(()=>{var t=We();return t.$$click=()=>r.onClick(),c(t,()=>r.icon,null),c(t,()=>r.label,null),z(e=>{var i=r.selected,o=H("inline-flex h-6 items-center gap-1.5 rounded px-2 text-xs font-medium transition-colors outline-none","focus-visible:ring-2 focus-visible:ring-ring",r.selected?"bg-background text-foreground shadow-sm":"text-muted-foreground hover:text-foreground");return i!==e.e&&p(t,"aria-selected",e.e=i),o!==e.t&&Y(t,e.t=o),e},{e:void 0,t:void 0}),t})()}function ir(r){return(()=>{var t=Ke();t.addEventListener("load",()=>r.onLoad());var e=r.ref;return typeof e=="function"?Z(e,t):r.ref=t,z(i=>{var o=r.src()||"about:blank",s=r.sandbox,d=r.title;return o!==i.e&&p(t,"src",i.e=o),s!==i.t&&p(t,"sandbox",i.t=s),d!==i.a&&p(t,"title",i.a=d),i},{e:void 0,t:void 0,a:void 0}),t})()}function lr(r){return(()=>{var t=_e(),e=t.firstChild,i=e.nextSibling;return c(e,a(we,{get files(){return r.files},get activeFile(){return r.activeFile()},onSelect:(o,s)=>r.onSelect(o,s)})),c(i,a(g,{get when(){return r.activeFileObj()},get fallback(){return qe()},get children(){return a(g,{get when(){return r.hasSource()},get fallback(){return(()=>{var o=Ge(),s=o.firstChild,d=s.nextSibling;return d.nextSibling,c(o,()=>r.activeFileObj().type??"binary",d),o})()},get children(){return a(me,{class:"h-full rounded-none border-0",get children(){return a(pe,{get code(){return r.activeFileObj().code??""},get language(){return r.activeFileObj().language}})}})}})}})),t})()}function or(r){const t=()=>{const i=r.url.split(/[?#]/)[0];return i.slice(i.lastIndexOf("/")+1)||"document.pdf"},e=y(()=>{if(r.url){if(ee(r.url))return r.url;E("pdf fallback",r.url)}});return(()=>{var i=Qe(),o=i.firstChild;return o.nextSibling,c(i,a(Oe,{size:40,class:"text-muted-foreground","aria-hidden":"true"}),o),c(o,t),c(i,a(g,{get when(){return e()},get fallback(){return Xe()},get children(){var s=Je(),d=s.firstChild;d.firstChild;var u=d.nextSibling,h=u.firstChild;return c(d,a(re,{size:13,"aria-hidden":"true"}),null),c(u,a(Se,{size:13,"aria-hidden":"true"}),h),z(f=>{var b=e(),w=e();return b!==f.e&&p(d,"href",f.e=b),w!==f.t&&p(u,"href",f.t=w),f},{e:void 0,t:void 0}),s}}),null),i})()}function sr(r){const[t,e]=k("loading");let i,o=0,s;const d=async()=>{if(!i){e("error");return}const u=++o;e("loading");try{const h=i.clientWidth||600;await Be(r.url,i,h),u===o&&e("success")}catch{u===o&&e("error")}};return F(Q(()=>[r.url,r.reloadKey],()=>{d()})),X(()=>{if(!i||typeof ResizeObserver>"u")return;const u=new ResizeObserver(()=>{t()==="success"&&(clearTimeout(s),s=setTimeout(()=>{d()},200))});u.observe(i),be(()=>{u.disconnect(),clearTimeout(s),o++})}),(()=>{var u=Ze(),h=u.firstChild;return Z(f=>i=f,h),c(u,a(g,{get when(){return ge(()=>!0)()&&t()==="loading"},get children(){var f=Ye();return c(f,a(xe,{variant:"circular",size:"md"})),f}}),null),c(u,a(g,{get when(){return t()==="error"},get children(){return a(or,{get url(){return r.url}})}}),null),z(()=>p(h,"aria-busy",t()==="loading")),u})()}ve(["click"]);export{tr as A};
@@ -1 +1 @@
1
- import{c as d,q as m,s as b,p as h,i as l,S as f,m as x,t as p,G as j,H as I,a as R,d as w}from"./define-By-uL588.js";import{c as g}from"./cn-DN5AWfiS.js";import{B as U}from"./button-DkuOnGLy.js";import{H as V,a as B,b as G}from"./hover-card-BQbul9eq.js";import{x as O}from"./x-Z5UntkIJ.js";import{I as q}from"./Icon-DObhsRtm.js";import{f as W}from"./file-text-DMib2qwt.js";import{p as X,g as Y,i as Z}from"./paperclip-ByY3UVO6.js";var J=[["path",{d:"M10 12.5 8 15l2 2.5",key:"1tg20x"}],["path",{d:"m14 12.5 2 2.5-2 2.5",key:"yinavb"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7z",key:"1mlx9k"}]],K=e=>d(q,m(e,{name:"FileCode",iconNode:J})),Q=K,_=[["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z",key:"1rqfz7"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"m14.5 12.5-5 5",key:"b62r18"}],["path",{d:"m9.5 12.5 5 5",key:"1rk7el"}]],ee=e=>d(q,m(e,{name:"FileX",iconNode:_})),te=ee;const D=[{pattern:"image/jpeg",kind:"image"},{pattern:"image/png",kind:"image"},{pattern:"image/gif",kind:"image"},{pattern:"image/webp",kind:"image"},{pattern:"application/pdf",kind:"document"},{pattern:"text/*",kind:"text"},{pattern:"application/json",kind:"text"},{pattern:"application/xml",kind:"text"},{pattern:"application/x-yaml",kind:"text"},{pattern:"application/yaml",kind:"text"}],H="text/plain",ae=["","application/octet-stream"],C=e=>e.trim().toLowerCase(),A=e=>ae.includes(e===void 0?"":C(e)),re=e=>{if(!e.startsWith("."))return e;throw new Error(`\`accept\` entry "${e}" is a file extension, and this kit takes media types only. HTML's own accept attribute does take extensions, which is exactly why this throws rather than quietly matching nothing. Use a media type instead -- "text/*" covers source files, "image/*" images, "application/pdf" PDFs, and \`encodableMediaTypes()\` is the full set. You lose nothing by dropping the extension: a file the browser cannot name is decided by decoding its bytes, which is stronger than matching its name.`)},ne=e=>(typeof e=="string"?e.split(","):e).map(C).filter(a=>a!=="").map(re),P=e=>{const a=e.indexOf("/");return a===-1?[e,""]:[e.slice(0,a),e.slice(a+1)]},k=(e,a)=>{const[r,t]=P(e),[i,n]=P(a);return r!=="*"&&r!==i?!1:t==="*"||t===n},ie=(e,a)=>{if(k(e,a))return a;if(k(a,e))return e};function $(e={}){const a=e.accept===void 0?void 0:ne(e.accept),r=[];for(const t of D){if(a===void 0){r.push({...t});continue}for(const i of a){const n=ie(t.pattern,i);n!==void 0&&!r.some(s=>s.pattern===n)&&r.push({pattern:n,kind:t.kind})}}return{types:r.map(t=>t.pattern),accept:r.map(t=>t.pattern).join(","),decide(t){const i=t===void 0?"":C(t);if(A(i))return r.some(s=>k(s.pattern,H))?{status:"undetermined"}:{status:"unsupported"};const n=r.find(s=>k(s.pattern,i));return n?{status:"allowed",kind:n.kind}:D.some(s=>k(s.pattern,i))?{status:"filtered"}:{status:"unsupported"}}}}const E=$();var T=p("<div>"),se=p("<div part=attachment>"),F=p("<span class=sr-only>"),oe=p('<img class="size-full object-cover"height=96 width=96>'),de=p('<img class="size-full rounded object-cover"height=20 width=20>'),ce=p('<span class="text-warning text-caption block truncate">unsupported attachment format'),ue=p('<div part=attachment-name><span class="block truncate">'),le=p("<div part=attachment-name>"),pe=p('<span class="text-muted-foreground text-caption block truncate">');const ge={document:W,image:Z,source:Y,text:Q,unknown:X,unsendable:te},z=e=>{if(e.type==="source-document")return"source";const a=E.decide(e.mediaType);switch(a.status){case"allowed":return a.kind;case"unsupported":return"unsendable";case"undetermined":case"filtered":return"unknown"}},me=e=>{var a;return z(e)!=="unsendable"?void 0:`${((a=e.mediaType)==null?void 0:a.trim())||"This file type"} is not one of the attachment formats a model request can carry.`},N=e=>{if(e.type==="source-document")return e.title||e.filename||"Source";const a=z(e);return e.filename||(a==="image"?"Image":"Attachment")},L=j(),S=j(),he=()=>I(L)??{variant:"grid"},M=()=>{const e=I(S);if(!e)throw new Error("Attachment components must be used within <Attachment>");return e};function fe(e){const[a,r]=b(e,["variant","class","children"]),t=()=>a.variant??"grid";return d(L.Provider,{value:{get variant(){return t()}},get children(){var i=T();return h(i,m({get class(){return g("flex items-start",t()==="list"?"flex-col gap-2":"flex-wrap gap-2",t()==="grid"&&"w-fit",a.class)}},r),!1,!0),l(i,()=>a.children),i}})}function ve(e){const[a,r]=b(e,["data","onRemove","class","children"]),t=he(),i=()=>z(a.data),n=()=>me(a.data);return d(S.Provider,{value:{get data(){return a.data},get mediaCategory(){return i()},get onRemove(){return a.onRemove},get variant(){return t.variant}},get children(){var s=se();return h(s,m({get class(){return g("group relative",t.variant==="grid"&&"size-24 overflow-hidden rounded-lg",t.variant==="inline"&&["flex h-8 cursor-pointer select-none items-center gap-1.5","rounded-md bg-surface-strong px-1.5 text-foreground","font-medium text-sm transition-all","hover:bg-muted"],t.variant==="list"&&["flex w-full items-center gap-3 rounded-lg bg-surface p-3 text-foreground","hover:bg-muted/50"],a.class)},get"data-unsendable"(){return n()===void 0?void 0:""},get title(){return n()}},r),!1,!0),l(s,d(f,{get when(){return n()},children:o=>(()=>{var u=F();return l(u,o),u})()}),null),l(s,()=>a.children,null),s}})}function ye(e){const[a,r]=b(e,["fallbackIcon","class"]),t=M(),i=()=>t.variant==="inline"?"size-3":"size-4",n=o=>d(o,{get class(){return g(i(),t.mediaCategory==="unsendable"?"text-warning":"text-muted-foreground")}}),s=()=>{if(t.mediaCategory==="image"&&t.data.type==="file"&&t.data.url)return t.variant==="grid"?(()=>{var u=oe();return R(c=>{var v=t.data.filename||"Image",y=t.data.url;return v!==c.e&&w(u,"alt",c.e=v),y!==c.t&&w(u,"src",c.t=y),c},{e:void 0,t:void 0}),u})():(()=>{var u=de();return R(c=>{var v=t.data.filename||"Image",y=t.data.url;return v!==c.e&&w(u,"alt",c.e=v),y!==c.t&&w(u,"src",c.t=y),c},{e:void 0,t:void 0}),u})();const o=ge[t.mediaCategory];return a.fallbackIcon??n(o)};return(()=>{var o=T();return h(o,m({get class(){return g("flex shrink-0 items-center justify-center overflow-hidden",t.variant==="grid"&&"size-full bg-muted",t.variant==="inline"&&"size-5 rounded bg-background",t.variant==="list"&&"size-12 rounded bg-muted",a.class)}},r),!1,!0),l(o,s),o})()}function be(e){const[a,r]=b(e,["showMediaType","class"]),t=M(),i=()=>N(t.data);return d(f,{get when(){return t.variant!=="grid"},get fallback(){return d(f,{get when(){return t.mediaCategory!=="image"},get children(){var n=le();return h(n,m({get class(){return g("absolute inset-x-0 bottom-0 truncate px-1.5 py-1 text-caption","bg-background/85 backdrop-blur-sm",t.mediaCategory==="unsendable"?"text-warning":"text-foreground",a.class)}},r),!1,!0),l(n,i),n}})},get children(){var n=ue(),s=n.firstChild;return h(n,m({get class(){return g("min-w-0 flex-1",a.class)}},r),!1,!0),l(s,i),l(n,d(f,{get when(){return x(()=>t.mediaCategory==="unsendable")()&&t.variant==="list"},get fallback(){return d(f,{get when(){return x(()=>!!(a.showMediaType&&t.variant==="list"))()&&t.data.mediaType},get children(){var o=pe();return l(o,()=>t.data.mediaType),o}})},get children(){var o=ce(),u=o.firstChild;return l(o,(()=>{var c=x(()=>!!t.data.mediaType);return()=>c()?`${t.data.mediaType} \xB7 `:""})(),u),o}}),null),n}})}function ke(e){const a=M(),r=t=>{var i;t.stopPropagation(),(i=a.onRemove)==null||i.call(a)};return d(f,{get when(){return a.onRemove},get children(){return d(U,{get"aria-label"(){return e.label??"Remove"},get class(){return g(a.variant==="grid"&&["absolute top-2 right-2 size-6 rounded-full p-0","bg-background/80 backdrop-blur-sm","opacity-0 transition-opacity group-hover:opacity-100","hover:bg-background","[&>svg]:size-3"],a.variant==="inline"&&["size-5 rounded p-0","opacity-0 transition-opacity group-hover:opacity-100","[&>svg]:size-2.5"],a.variant==="list"&&["size-8 shrink-0 rounded p-0","[&>svg]:size-4"],e.class)},onClick:r,type:"button",variant:"ghost",get children(){return[x(()=>e.children??d(O,{})),(()=>{var t=F();return l(t,()=>e.label??"Remove"),t})()]}})}})}function xe(e){return d(V,{get openDelay(){return e.openDelay??0},get closeDelay(){return e.closeDelay??0},get children(){return e.children}})}function we(e){return d(B,{get class(){return e.class},get children(){return e.children}})}function ze(e){return d(G,{get class(){return g("w-auto p-2",e.class)},get children(){return e.children}})}function Ce(e){const[a,r]=b(e,["class","children"]);return(()=>{var t=T();return h(t,m({get class(){return g("flex items-center justify-center p-4 text-muted-foreground text-sm",a.class)}},r),!1,!0),l(t,()=>a.children??"No attachments"),t})()}export{fe as A,E as D,H as U,ve as a,xe as b,we as c,ye as d,be as e,ze as f,N as g,z as h,ke as i,Ce as j,A as n,$ as r};
1
+ import{c as d,q as m,s as b,p as h,i as l,S as f,m as x,t as p,G as j,H as I,a as R,d as w}from"./define-CI0y3eE4.js";import{c as g}from"./cn-DN5AWfiS.js";import{B as U}from"./button-C_3te6fm.js";import{H as V,a as B,b as G}from"./hover-card-CWRkqm40.js";import{x as O}from"./x-eiO9V6J6.js";import{I as q}from"./Icon-BzBET3E-.js";import{f as W}from"./file-text-D1GPfZ8Q.js";import{p as X,g as Y,i as Z}from"./paperclip-CdzuOjbU.js";var J=[["path",{d:"M10 12.5 8 15l2 2.5",key:"1tg20x"}],["path",{d:"m14 12.5 2 2.5-2 2.5",key:"yinavb"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7z",key:"1mlx9k"}]],K=e=>d(q,m(e,{name:"FileCode",iconNode:J})),Q=K,_=[["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z",key:"1rqfz7"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"m14.5 12.5-5 5",key:"b62r18"}],["path",{d:"m9.5 12.5 5 5",key:"1rk7el"}]],ee=e=>d(q,m(e,{name:"FileX",iconNode:_})),te=ee;const D=[{pattern:"image/jpeg",kind:"image"},{pattern:"image/png",kind:"image"},{pattern:"image/gif",kind:"image"},{pattern:"image/webp",kind:"image"},{pattern:"application/pdf",kind:"document"},{pattern:"text/*",kind:"text"},{pattern:"application/json",kind:"text"},{pattern:"application/xml",kind:"text"},{pattern:"application/x-yaml",kind:"text"},{pattern:"application/yaml",kind:"text"}],H="text/plain",ae=["","application/octet-stream"],C=e=>e.trim().toLowerCase(),A=e=>ae.includes(e===void 0?"":C(e)),re=e=>{if(!e.startsWith("."))return e;throw new Error(`\`accept\` entry "${e}" is a file extension, and this kit takes media types only. HTML's own accept attribute does take extensions, which is exactly why this throws rather than quietly matching nothing. Use a media type instead -- "text/*" covers source files, "image/*" images, "application/pdf" PDFs, and \`encodableMediaTypes()\` is the full set. You lose nothing by dropping the extension: a file the browser cannot name is decided by decoding its bytes, which is stronger than matching its name.`)},ne=e=>(typeof e=="string"?e.split(","):e).map(C).filter(a=>a!=="").map(re),P=e=>{const a=e.indexOf("/");return a===-1?[e,""]:[e.slice(0,a),e.slice(a+1)]},k=(e,a)=>{const[r,t]=P(e),[i,n]=P(a);return r!=="*"&&r!==i?!1:t==="*"||t===n},ie=(e,a)=>{if(k(e,a))return a;if(k(a,e))return e};function $(e={}){const a=e.accept===void 0?void 0:ne(e.accept),r=[];for(const t of D){if(a===void 0){r.push({...t});continue}for(const i of a){const n=ie(t.pattern,i);n!==void 0&&!r.some(s=>s.pattern===n)&&r.push({pattern:n,kind:t.kind})}}return{types:r.map(t=>t.pattern),accept:r.map(t=>t.pattern).join(","),decide(t){const i=t===void 0?"":C(t);if(A(i))return r.some(s=>k(s.pattern,H))?{status:"undetermined"}:{status:"unsupported"};const n=r.find(s=>k(s.pattern,i));return n?{status:"allowed",kind:n.kind}:D.some(s=>k(s.pattern,i))?{status:"filtered"}:{status:"unsupported"}}}}const E=$();var T=p("<div>"),se=p("<div part=attachment>"),F=p("<span class=sr-only>"),oe=p('<img class="size-full object-cover"height=96 width=96>'),de=p('<img class="size-full rounded object-cover"height=20 width=20>'),ce=p('<span class="text-warning text-caption block truncate">unsupported attachment format'),ue=p('<div part=attachment-name><span class="block truncate">'),le=p("<div part=attachment-name>"),pe=p('<span class="text-muted-foreground text-caption block truncate">');const ge={document:W,image:Z,source:Y,text:Q,unknown:X,unsendable:te},z=e=>{if(e.type==="source-document")return"source";const a=E.decide(e.mediaType);switch(a.status){case"allowed":return a.kind;case"unsupported":return"unsendable";case"undetermined":case"filtered":return"unknown"}},me=e=>{var a;return z(e)!=="unsendable"?void 0:`${((a=e.mediaType)==null?void 0:a.trim())||"This file type"} is not one of the attachment formats a model request can carry.`},N=e=>{if(e.type==="source-document")return e.title||e.filename||"Source";const a=z(e);return e.filename||(a==="image"?"Image":"Attachment")},L=j(),S=j(),he=()=>I(L)??{variant:"grid"},M=()=>{const e=I(S);if(!e)throw new Error("Attachment components must be used within <Attachment>");return e};function fe(e){const[a,r]=b(e,["variant","class","children"]),t=()=>a.variant??"grid";return d(L.Provider,{value:{get variant(){return t()}},get children(){var i=T();return h(i,m({get class(){return g("flex items-start",t()==="list"?"flex-col gap-2":"flex-wrap gap-2",t()==="grid"&&"w-fit",a.class)}},r),!1,!0),l(i,()=>a.children),i}})}function ve(e){const[a,r]=b(e,["data","onRemove","class","children"]),t=he(),i=()=>z(a.data),n=()=>me(a.data);return d(S.Provider,{value:{get data(){return a.data},get mediaCategory(){return i()},get onRemove(){return a.onRemove},get variant(){return t.variant}},get children(){var s=se();return h(s,m({get class(){return g("group relative",t.variant==="grid"&&"size-24 overflow-hidden rounded-lg",t.variant==="inline"&&["flex h-8 cursor-pointer select-none items-center gap-1.5","rounded-md bg-surface-strong px-1.5 text-foreground","font-medium text-sm transition-all","hover:bg-muted"],t.variant==="list"&&["flex w-full items-center gap-3 rounded-lg bg-surface p-3 text-foreground","hover:bg-muted/50"],a.class)},get"data-unsendable"(){return n()===void 0?void 0:""},get title(){return n()}},r),!1,!0),l(s,d(f,{get when(){return n()},children:o=>(()=>{var u=F();return l(u,o),u})()}),null),l(s,()=>a.children,null),s}})}function ye(e){const[a,r]=b(e,["fallbackIcon","class"]),t=M(),i=()=>t.variant==="inline"?"size-3":"size-4",n=o=>d(o,{get class(){return g(i(),t.mediaCategory==="unsendable"?"text-warning":"text-muted-foreground")}}),s=()=>{if(t.mediaCategory==="image"&&t.data.type==="file"&&t.data.url)return t.variant==="grid"?(()=>{var u=oe();return R(c=>{var v=t.data.filename||"Image",y=t.data.url;return v!==c.e&&w(u,"alt",c.e=v),y!==c.t&&w(u,"src",c.t=y),c},{e:void 0,t:void 0}),u})():(()=>{var u=de();return R(c=>{var v=t.data.filename||"Image",y=t.data.url;return v!==c.e&&w(u,"alt",c.e=v),y!==c.t&&w(u,"src",c.t=y),c},{e:void 0,t:void 0}),u})();const o=ge[t.mediaCategory];return a.fallbackIcon??n(o)};return(()=>{var o=T();return h(o,m({get class(){return g("flex shrink-0 items-center justify-center overflow-hidden",t.variant==="grid"&&"size-full bg-muted",t.variant==="inline"&&"size-5 rounded bg-background",t.variant==="list"&&"size-12 rounded bg-muted",a.class)}},r),!1,!0),l(o,s),o})()}function be(e){const[a,r]=b(e,["showMediaType","class"]),t=M(),i=()=>N(t.data);return d(f,{get when(){return t.variant!=="grid"},get fallback(){return d(f,{get when(){return t.mediaCategory!=="image"},get children(){var n=le();return h(n,m({get class(){return g("absolute inset-x-0 bottom-0 truncate px-1.5 py-1 text-caption","bg-background/85 backdrop-blur-sm",t.mediaCategory==="unsendable"?"text-warning":"text-foreground",a.class)}},r),!1,!0),l(n,i),n}})},get children(){var n=ue(),s=n.firstChild;return h(n,m({get class(){return g("min-w-0 flex-1",a.class)}},r),!1,!0),l(s,i),l(n,d(f,{get when(){return x(()=>t.mediaCategory==="unsendable")()&&t.variant==="list"},get fallback(){return d(f,{get when(){return x(()=>!!(a.showMediaType&&t.variant==="list"))()&&t.data.mediaType},get children(){var o=pe();return l(o,()=>t.data.mediaType),o}})},get children(){var o=ce(),u=o.firstChild;return l(o,(()=>{var c=x(()=>!!t.data.mediaType);return()=>c()?`${t.data.mediaType} \xB7 `:""})(),u),o}}),null),n}})}function ke(e){const a=M(),r=t=>{var i;t.stopPropagation(),(i=a.onRemove)==null||i.call(a)};return d(f,{get when(){return a.onRemove},get children(){return d(U,{get"aria-label"(){return e.label??"Remove"},get class(){return g(a.variant==="grid"&&["absolute top-2 right-2 size-6 rounded-full p-0","bg-background/80 backdrop-blur-sm","opacity-0 transition-opacity group-hover:opacity-100","hover:bg-background","[&>svg]:size-3"],a.variant==="inline"&&["size-5 rounded p-0","opacity-0 transition-opacity group-hover:opacity-100","[&>svg]:size-2.5"],a.variant==="list"&&["size-8 shrink-0 rounded p-0","[&>svg]:size-4"],e.class)},onClick:r,type:"button",variant:"ghost",get children(){return[x(()=>e.children??d(O,{})),(()=>{var t=F();return l(t,()=>e.label??"Remove"),t})()]}})}})}function xe(e){return d(V,{get openDelay(){return e.openDelay??0},get closeDelay(){return e.closeDelay??0},get children(){return e.children}})}function we(e){return d(B,{get class(){return e.class},get children(){return e.children}})}function ze(e){return d(G,{get class(){return g("w-auto p-2",e.class)},get children(){return e.children}})}function Ce(e){const[a,r]=b(e,["class","children"]);return(()=>{var t=T();return h(t,m({get class(){return g("flex items-center justify-center p-4 text-muted-foreground text-sm",a.class)}},r),!1,!0),l(t,()=>a.children??"No attachments"),t})()}export{fe as A,E as D,H as U,ve as a,xe as b,we as c,ye as d,be as e,ze as f,N as g,z as h,ke as i,Ce as j,A as n,$ as r};
@@ -1 +1 @@
1
- import{g as C,j as L,h as N,k as gt,i as P,c as M,a as q,d as w,b as S,l as z,I as B,n as O,t as T,u as X,p as ft,q as I,M as H,S as mt,m as vt,r as pt,f as bt}from"./define-By-uL588.js";import{c as D}from"./cn-DN5AWfiS.js";const yt=-100,xt=-10;function kt(t){if(t===-1/0)return 0;const e=Math.max(yt,Math.min(xt,t));return Math.sqrt(1-e*-1/100)}function Mt(t,e,n,r){const i=t.slice(Math.max(0,n),Math.max(0,r)),a=i.length,c=[];for(let s=0;s<e;s++){const l=Math.floor(s*a/e),h=Math.floor((s+1)*a/e);if(h<=l){c.push(0);continue}let b=0;for(let d=l;d<h;d++)b+=kt(i[d]);c.push(b/(h-l))}return c}function At(t){if(t.length===0)return 0;let e=0;for(let n=0;n<t.length;n++){const r=t[n];e+=r*r}return Math.sqrt(e/t.length)/255}function U(t,e){if(t.length===e)return t;if(t.length>e)return t.slice(0,e);const n=t[t.length-1]??0;return[...t,...new Array(e-t.length).fill(n)]}function wt(t,e){const n=(e-1)/2,r=new Array(e);for(let i=0;i<e;i++){const a=Math.floor(Math.abs(i-n));r[i]=t[Math.min(a,t.length-1)]??0}return r}function zt(t,e){const n=new Array(e);for(let r=0;r<e;r++){const i=Math.min(r,e-r);n[r]=t[Math.min(i,t.length-1)]??0}return n}const Ct={bands:5,loPass:100,hiPass:200,updateInterval:32},Z={fftSize:2048,smoothingTimeConstant:.8},R={fftSize:512,smoothingTimeConstant:.55,minDecibels:-100,maxDecibels:-80};function _(t){return typeof t=="function"?t():t}let Y;function $t(){if(!(typeof AudioContext>"u"))return Y??(Y=new AudioContext),Y}const tt=new WeakMap,et=new WeakMap;function qt(t){return"tagName"in t}function Ft(t){if(t.state!=="suspended")return()=>{};if(typeof document>"u")return()=>{};const e=()=>{t.resume().catch(()=>{})},n=["pointerdown","keydown","touchstart"];return n.forEach(r=>document.addEventListener(r,e,{once:!0,passive:!0})),()=>n.forEach(r=>document.removeEventListener(r,e))}function Dt(t,e={}){const n={...Ct,...e},[r,i]=C(new Array(_(n.bands)).fill(0)),[a,c]=C(0);return L(()=>{const s=t(),l=_(n.bands);if(i(new Array(l).fill(0)),c(0),!s)return;const h=$t();if(!h||typeof requestAnimationFrame>"u"||typeof cancelAnimationFrame>"u")return;const b=cancelAnimationFrame.bind(globalThis),d=Ft(h);let o;if(qt(s)){const v=s;let x=tt.get(v);x||(x=h.createMediaElementSource(v),x.connect(h.destination),tt.set(v,x)),o=x}else{let v=et.get(s);v||(v=h.createMediaStreamSource(s),et.set(s,v)),o=v}const u=h.createAnalyser();u.fftSize=Z.fftSize,u.smoothingTimeConstant=Z.smoothingTimeConstant;const m=h.createAnalyser();m.fftSize=R.fftSize,m.smoothingTimeConstant=R.smoothingTimeConstant,m.minDecibels=R.minDecibels,m.maxDecibels=R.maxDecibels,o.connect(u),o.connect(m);const k=new Float32Array(u.frequencyBinCount),p=new Uint8Array(m.frequencyBinCount);let g=0,f=0;const y=v=>{v-f>=n.updateInterval&&(u.getFloatFrequencyData(k),m.getByteFrequencyData(p),i(Mt(k,l,n.loPass,n.hiPass)),c(At(p)),f=v),g=requestAnimationFrame(y)};g=requestAnimationFrame(y),N(()=>{b(g),d(),u.disconnect(),m.disconnect(),o.disconnect(u),o.disconnect(m)})}),{bands:r,volume:a}}const Et=["idle","connecting","listening","thinking","speaking","disconnected"],Nt={failed:"disconnected",initializing:"connecting","pre-connect-buffering":"connecting"};function St(t){return t?Et.includes(t)?t:Nt[t]??"idle":"idle"}function Tt(t,e){switch(t){case"connecting":{const n=[];for(let r=0;r<e;r++)n.push([r,e-1-r]);return n.length?n:[[]]}case"listening":case"thinking":return[[Math.floor(e/2)],[-1]];case"speaking":return[Array.from({length:e},(n,r)=>r)];case"disconnected":return[[]];default:return[[]]}}function It(t,e){switch(t){case"connecting":return 2e3/Math.max(1,e);case"listening":return 500;case"thinking":return 150;default:return 1e3}}function Wt(t,e,n){const r=[],i=Math.floor(e/2),a=Math.floor(t/2),c={x:Math.max(0,i-n),y:Math.max(0,a-n)},s={x:Math.min(e-1,i+n),y:Math.min(t-1,a+n)};for(let l=c.x;l<=s.x;l++)r.push({x:l,y:c.y});for(let l=c.y+1;l<=s.y;l++)r.push({x:s.x,y:l});for(let l=s.x-1;l>=c.x;l--)r.push({x:l,y:s.y});for(let l=s.y-1;l>c.y;l--)r.push({x:c.x,y:l});return r}function Lt(t,e,n,r){const i={x:Math.floor(n/2),y:Math.floor(e/2)};switch(t){case"connecting":{const a=Math.floor(Math.max(e,n)/2),c=r!==void 0?Math.min(r,a):a,s=Wt(e,n,c);return s.length?s:[i]}case"listening":{const a={x:-1,y:-1};return[i,a,a,a,a,a,a,a,a]}case"thinking":{const a=Math.floor(e/2),c=[];for(let s=0;s<n;s++)c.push({x:s,y:a});for(let s=n-1;s>=0;s--)c.push({x:s,y:a});return c.length?c:[i]}case"disconnected":return[i];default:return[i]}}function nt(t,e){const n=(r,i)=>{for(;i!==0;){const a=i;i=r%i,r=a}return r};for(let r=e;r>=1;r--)if(n(t,r)===r)return r;return 1}function Pt(t){const e=t>8?t/nt(t,4):nt(t,2),n=Math.max(1,Math.floor(e)),r=Math.floor(t/n);return Array.from({length:n},(i,a)=>Array.from({length:r},(c,s)=>s*n+a))}function Vt(t,e){switch(t){case"connecting":{const n=Math.floor(e/2),r=[];for(let i=0;i<e;i++)r.push([i,(i+n)%e]);return r.length?r:[[]]}case"listening":case"thinking":{const n=Pt(e);return n.length?n:[[]]}case"speaking":return[Array.from({length:e},(n,r)=>r)];case"disconnected":return[[]];default:return[[]]}}function Ot(t){switch(t){case"connecting":case"listening":return 500;case"thinking":return 1/0;default:return 1e3}}function Rt(t){switch(t){case"listening":return{intensity:[.5,.8],speed:2.5};case"thinking":return{intensity:[.25,.5],speed:4};case"connecting":return{intensity:[.25,.5],speed:6};case"speaking":return{intensity:.3,speed:2.5};case"disconnected":return{intensity:.3,speed:.5};default:return{intensity:.3,speed:1}}}const V=5,G=.025,J=10;function jt(t){switch(t){case"listening":return{speed:V,amplitude:G,frequency:J,opacity:[1,.3],pulseDuration:.75};case"thinking":case"connecting":return{speed:V*4,amplitude:G/4,frequency:J*4,opacity:[1,.3],pulseDuration:.4};case"speaking":case"idle":return{speed:V*2,amplitude:G,frequency:J,opacity:1,pulseDuration:0};case"disconnected":return{speed:V,amplitude:0,frequency:0,opacity:1,pulseDuration:0};default:return{speed:V,amplitude:0,frequency:0,opacity:1,pulseDuration:0}}}function K(t){const[e,n]=C(0),r=gt(()=>t());return L(()=>{const i=r();if(n(0),!Number.isFinite(i)||i<=0||typeof requestAnimationFrame>"u"||typeof cancelAnimationFrame>"u")return;const a=cancelAnimationFrame.bind(globalThis);let c=0,s=performance.now();const l=h=>{h-s>=i&&(n(b=>b+1),s=h),c=requestAnimationFrame(l)};c=requestAnimationFrame(l),N(()=>a(c))}),e}const Q={icon:24,sm:56,md:112,lg:224,xl:448},Bt={icon:2,sm:4,md:8,lg:16,xl:32},rt={icon:4,sm:8,md:16,lg:32,xl:64},it={icon:2,sm:4,md:8,lg:12,xl:16},Ht={icon:2,sm:4,md:8,lg:12,xl:16},Ut={icon:6,sm:16,md:32,lg:64,xl:128};function at(t){return t==="icon"||t==="sm"?3:5}function ot(t){return t==="icon"||t==="sm"?12:24}function st(t){return t==="icon"?3:5}var lt=T("<div>");function j(t,e){return e===!0&&t==="listening"?"speaking":t}function ut(t){const e=()=>t.barCount??at(t.size),n=()=>j(t.state,t.listeningAmplitude),r=K(()=>t.frozen?1/0:It(n(),e())),i=()=>Tt(n(),e()),a=()=>i()[r()%i().length]??[],c=()=>n()==="speaking"?U(t.bands,e()):new Array(e()).fill(0);return(()=>{var s=lt();return P(s,M(B,{get each(){return c()},children:(l,h)=>{var b;const d={index:h,highlighted:()=>a().includes(h),value:()=>l()};return((b=t.children)==null?void 0:b.call(t,d))??(()=>{var o=lt();return q(u=>{var m=d.highlighted()?"bar highlighted":"bar",k=d.index,p=d.highlighted(),g=D("rounded-full bg-current/10","data-[kai-highlighted=true]:bg-current"),f=`${rt[t.size]}px`,y=`${rt[t.size]}px`,v=`${l()*100}%`,x=t.frozen?"none":"height 100ms ease-linear, background-color 250ms ease-linear";return m!==u.e&&w(o,"part",u.e=m),k!==u.t&&w(o,"data-kai-index",u.t=k),p!==u.a&&w(o,"data-kai-highlighted",u.a=p),g!==u.o&&S(o,u.o=g),f!==u.i&&z(o,"width",u.i=f),y!==u.n&&z(o,"min-height",u.n=y),v!==u.s&&z(o,"height",u.s=v),x!==u.h&&z(o,"transition",u.h=x),u},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0}),o})()}})),q(l=>{var h=t.state,b=D("relative flex items-center justify-center",t.class),d={height:`${Q[t.size]}px`,gap:`${Bt[t.size]}px`,...t.color?{color:t.color}:{}};return h!==l.e&&w(s,"data-kai-state",l.e=h),b!==l.t&&S(s,l.t=b),l.a=O(s,d,l.a),l},{e:void 0,t:void 0,a:void 0}),s})()}function Yt(t,e){return t===void 0||e===void 0||!Number.isFinite(t)||!Number.isFinite(e)||t<=0||e<=0?1:Math.min(1,t/e)}function Gt(){const[t,e]=C(),[n,r]=C(),[i,a]=C();let c,s,l;const h=()=>{if(l)return l;if(!(typeof ResizeObserver>"u"))return l=new ResizeObserver(d=>{for(const o of d)o.target===c&&e(o.contentRect.width),o.target===s&&(r(o.contentRect.width),a(o.contentRect.height))}),l};N(()=>l?.disconnect());const b=()=>Yt(t(),n());return{observeOuter:d=>{var o;c=d,(o=h())==null||o.observe(d)},observeInner:d=>{var o;s=d,(o=h())==null||o.observe(d)},scale:b,scaledHeight:()=>{const d=b(),o=i();return d<1&&o!==void 0&&o>0?o*d:void 0}}}var ct=T("<div>");const Jt=.65,Kt=.02;function Qt(t){const e=()=>t.count??st(t.size),n=()=>e(),r=()=>t.interval??100,i=()=>Array.from({length:e()*n()},(o,u)=>u),a=()=>j(t.state,t.listeningAmplitude),c=K(()=>t.frozen||a()==="speaking"?1/0:r()),s=()=>Lt(a(),e(),n(),t.spread),l=()=>s()[c()%s().length]??{x:-1,y:-1},h=()=>a()==="speaking"?U(t.bands,n()):new Array(n()).fill(0);function b(o){if(a()==="speaking"){const u=Math.floor(o/n()),m=Math.floor(e()/2),k=Math.abs(m-u)/(m+1)*Jt,p=Math.max(k,Kt);return(h()[o%n()]??0)>=p}return a()==="idle"||a()==="disconnected"?!1:l().x===o%n()&&l().y===Math.floor(o/n())}function d(o){return a()==="speaking"?"150ms":`${r()/(b(o)?1e3:100)}s`}return(()=>{var o=ct();return P(o,M(B,{get each(){return i()},children:(u,m)=>{var k;const p={index:m,highlighted:()=>b(m),value:()=>h()[m%n()]??0};return((k=t.children)==null?void 0:k.call(t,p))??(()=>{var g=ct();return q(f=>{var y=p.highlighted()?"cell highlighted":"cell",v=p.index,x=p.highlighted(),A=D("place-self-center rounded-full bg-current/10 transition-all ease-out","data-[kai-highlighted=true]:bg-current"),$=`${it[t.size]}px`,F=`${it[t.size]}px`,W=d(m);return y!==f.e&&w(g,"part",f.e=y),v!==f.t&&w(g,"data-kai-index",f.t=v),x!==f.a&&w(g,"data-kai-highlighted",f.a=x),A!==f.o&&S(g,f.o=A),$!==f.i&&z(g,"width",f.i=$),F!==f.n&&z(g,"height",f.n=F),W!==f.s&&z(g,"transition-duration",f.s=W),f},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),g})()}})),q(u=>{var m=t.state,k=D("grid",t.class),p={"grid-template-columns":`repeat(${n()}, 1fr)`,gap:`${Ht[t.size]}px`,...t.color?{color:t.color}:{}};return m!==u.e&&w(o,"data-kai-state",u.e=m),k!==u.t&&S(o,u.t=k),u.a=O(o,p,u.a),u},{e:void 0,t:void 0,a:void 0}),o})()}var Xt=T("<div style=aspect-ratio:1>"),Zt=T('<div data-kai-spoke class="absolute top-1/2 left-1/2 h-1 w-1 -translate-x-1/2 -translate-y-1/2"style=transform-origin:center>'),_t=T("<div>");function te(t){const e=()=>Math.max(1,t.barCount??ot(t.size)),n=()=>t.radius??Ut[t.size];e()%4!==0&&console.warn(`<kai-audio-visualizer variant="radial">: barCount ${e()} is not divisible by 4. The ring will look asymmetric.`);const r=()=>n()*Math.PI/e(),i=()=>j(t.state,t.listeningAmplitude),a=K(()=>t.frozen?1/0:Ot(i())),c=()=>Vt(i(),e()),s=()=>i()==="thinking"?Array.from({length:e()},(b,d)=>d):c()[a()%c().length]??[],l=()=>i()==="speaking"?U(t.bands,e()):new Array(e()).fill(0),h=()=>i()==="thinking"&&!t.frozen;return(()=>{var b=Xt();return P(b,M(B,{get each(){return l()},children:(d,o)=>{const u={index:o,highlighted:()=>s().includes(o),value:()=>d()};return(()=>{var m=Zt();return P(m,()=>{var k;return((k=t.children)==null?void 0:k.call(t,u))??(()=>{var p=_t();return q(g=>{var f=u.highlighted()?"bar highlighted":"bar",y=u.index,v=u.highlighted(),x=D("origin-bottom rounded-full bg-current/10","data-[kai-highlighted=true]:bg-current"),A=`${r()}px`,$=`${r()}px`,F=`${r()*10*d()}px`,W=t.frozen?"none":"height 100ms ease-linear, background-color 150ms ease-linear";return f!==g.e&&w(p,"part",g.e=f),y!==g.t&&w(p,"data-kai-index",g.t=y),v!==g.a&&w(p,"data-kai-highlighted",g.a=v),x!==g.o&&S(p,g.o=x),A!==g.i&&z(p,"width",g.i=A),$!==g.n&&z(p,"min-height",g.n=$),F!==g.s&&z(p,"height",g.s=F),W!==g.h&&z(p,"transition",g.h=W),g},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0}),p})()}),q(k=>z(m,"transform",`rotate(${o/e()*Math.PI*2}rad) translateY(${n()}px)`)),m})()}})),q(d=>{var o=t.state,u=D("relative flex items-center justify-center",h()&&"animate-spin",t.class),m={height:`${Q[t.size]}px`,...h()?{"animation-duration":"5s"}:{},...t.color?{color:t.color}:{}};return o!==d.e&&w(b,"data-kai-state",d.e=o),u!==d.t&&S(b,d.t=u),d.a=O(b,m,d.a),d},{e:void 0,t:void 0,a:void 0}),b})()}var ee=T('<div><div style="flex:0 0 auto;align-self:flex-start">');const ne=["bar","grid","radial","wave","aurora","custom"],re={aura:"aurora"};function ie(t){return t?ne.includes(t)?t:re[t]??"bar":"bar"}function ae(){const[t,e]=C(!1);return L(()=>{var n;if(typeof matchMedia!="function")return;const r=matchMedia("(prefers-reduced-motion: reduce)");e(r.matches);const i=a=>e(a.matches);(n=r.addEventListener)==null||n.call(r,"change",i),N(()=>{var a;return(a=r.removeEventListener)==null?void 0:a.call(r,"change",i)})}),t}function oe(t){const[e,n]=C(!1);return L(()=>{var r;if(typeof matchMedia!="function")return;const i=matchMedia("(prefers-color-scheme: dark)");n(i.matches);const a=c=>n(c.matches);(r=i.addEventListener)==null||r.call(i,"change",a),N(()=>{var c;return(c=i.removeEventListener)==null?void 0:c.call(i,"change",a)})}),()=>{const r=t()??"auto";return r==="dark"||r==="auto"&&e()}}const dt={wave:()=>import("./variant-wave-sp-qwsdI.js"),aurora:()=>import("./variant-aurora-BhLuYxJR.js"),custom:()=>import("./variant-custom-BRvaNHSi.js")};function se(t){const e=()=>ie(t.variant),n=()=>t.size??"md",r=()=>St(t.state),i=ae(),a=oe(()=>t.theme),c=()=>e()in dt,s=()=>e()==="grid"?t.count??st(n()):e()==="radial"?t.barCount??ot(n()):t.barCount??at(n()),l=Dt(()=>t.bands?void 0:t.stream??t.audioElement,{bands:()=>Math.ceil(s()/2)}),h=()=>t.bands?t.bands:e()==="radial"?zt(l.bands(),s()):wt(l.bands(),s()),b=()=>{if(!t.bands)return l.volume();if(t.bands.length===0)return 0;let y=0;for(const v of t.bands)y+=v*v;return Math.sqrt(y/t.bands.length)},[d,o]=C(),[u,m]=C(!1);L(()=>{const y=e(),v=dt[y];if(o(void 0),m(!1),!v)return;let x=!1;v().then(A=>{x||o(()=>A.default)}).catch(A=>{x||console.warn(`<kai-audio-visualizer variant="${y}">: failed to load the shader chunk, falling back to bars.`,A)}),N(()=>{x=!0})});const k=()=>({state:r(),size:n(),frozen:i(),color:t.color,listeningAmplitude:t.listeningAmplitude}),p=()=>({...k(),children:t.children}),g=()=>t.label?{role:"img","aria-label":t.label}:{"aria-hidden":"true"},f=Gt();return(()=>{var y=ee(),v=y.firstChild,x=f.observeOuter;typeof x=="function"?X(x,y):f.observeOuter=y,ft(y,I({get class(){return D("inline-flex",t.class)}},g,{get style(){return{"max-width":"100%",...f.scaledHeight()!==void 0?{height:`${f.scaledHeight()}px`,overflow:"hidden","vertical-align":"top"}:{}}}}),!1,!0);var A=f.observeInner;return typeof A=="function"?X(A,v):f.observeInner=v,P(v,M(pt,{get fallback(){return M(ut,I(p,{get bands(){return h()},get barCount(){return t.barCount}}))},get children(){return[M(H,{get when(){return e()==="grid"},get children(){return M(Qt,I(p,{get bands(){return h()},get count(){return t.count},get spread(){return t.spread},get interval(){return t.interval}}))}}),M(H,{get when(){return e()==="radial"},get children(){return M(te,I(p,{get bands(){return h()},get barCount(){return t.barCount},get radius(){return t.radius}}))}}),M(H,{get when(){return c()},get children(){return M(mt,{get when(){return vt(()=>!u())()&&d()},get fallback(){return M(ut,I(p,{get bands(){return h()},get barCount(){return t.barCount}}))},children:$=>{const F=$();return M(F,I(k,{get bands(){return h()},get volume(){return b()},get complexity(){return t.complexity},get shader(){return t.shader},get dark(){return a()},get animateWhenNotVisible(){return t.animateWhenNotVisible},onUnavailable:()=>m(!0)}))}})}})]}})),q($=>O(v,{...f.scale()<1?{transform:`scale(${f.scale()})`,"transform-origin":"top left"}:{}},$)),y})()}function E(t){if(t==null||t==="")return;const e=Number(t);return Number.isFinite(e)?e:void 0}function ht(t,e){var n,r;const i=((n=e?.dark)==null?void 0:n.call(e))??!1,a=e!=null&&e.flag?e.flag("animateWhenNotVisible"):t.animateWhenNotVisible===!0,c=e!=null&&e.flag?e.flag("listeningAmplitude"):t.listeningAmplitude===!0;return(r=e?.reflectFlag)==null||r.call(e,"listeningAmplitude"),M(se,{get variant(){return t.variant},get state(){return t.state},get size(){return t.size},get barCount(){return E(t.barCount)},get count(){return E(t.count)},get radius(){return E(t.radius)},get spread(){return E(t.spread)},get interval(){return E(t.interval)},get color(){return t.color},get complexity(){return E(t.complexity)},get label(){return t.label},get stream(){return t.stream},get audioElement(){return t.audioElement},get bands(){return t.bands},listeningAmplitude:c,get shader(){return t.shader},animateWhenNotVisible:a,theme:i?"dark":"light"})}bt("kai-audio-visualizer",{variant:"bar",state:"idle",size:"md",barCount:void 0,count:void 0,radius:void 0,spread:void 0,interval:void 0,color:void 0,complexity:void 0,label:void 0,stream:void 0,audioElement:void 0,bands:void 0,listeningAmplitude:void 0,shader:void 0,animateWhenNotVisible:void 0},ht);export{ht as A,Q as C,j as a,E as n,Rt as s,jt as w};
1
+ import{g as C,j as L,h as N,k as gt,i as P,c as M,a as q,d as w,b as S,l as z,I as B,n as O,t as T,u as X,p as ft,q as I,M as H,S as mt,m as vt,r as pt,f as bt}from"./define-CI0y3eE4.js";import{c as D}from"./cn-DN5AWfiS.js";const yt=-100,xt=-10;function kt(t){if(t===-1/0)return 0;const e=Math.max(yt,Math.min(xt,t));return Math.sqrt(1-e*-1/100)}function Mt(t,e,n,r){const i=t.slice(Math.max(0,n),Math.max(0,r)),a=i.length,c=[];for(let s=0;s<e;s++){const l=Math.floor(s*a/e),h=Math.floor((s+1)*a/e);if(h<=l){c.push(0);continue}let b=0;for(let d=l;d<h;d++)b+=kt(i[d]);c.push(b/(h-l))}return c}function At(t){if(t.length===0)return 0;let e=0;for(let n=0;n<t.length;n++){const r=t[n];e+=r*r}return Math.sqrt(e/t.length)/255}function U(t,e){if(t.length===e)return t;if(t.length>e)return t.slice(0,e);const n=t[t.length-1]??0;return[...t,...new Array(e-t.length).fill(n)]}function wt(t,e){const n=(e-1)/2,r=new Array(e);for(let i=0;i<e;i++){const a=Math.floor(Math.abs(i-n));r[i]=t[Math.min(a,t.length-1)]??0}return r}function zt(t,e){const n=new Array(e);for(let r=0;r<e;r++){const i=Math.min(r,e-r);n[r]=t[Math.min(i,t.length-1)]??0}return n}const Ct={bands:5,loPass:100,hiPass:200,updateInterval:32},Z={fftSize:2048,smoothingTimeConstant:.8},R={fftSize:512,smoothingTimeConstant:.55,minDecibels:-100,maxDecibels:-80};function _(t){return typeof t=="function"?t():t}let Y;function $t(){if(!(typeof AudioContext>"u"))return Y??(Y=new AudioContext),Y}const tt=new WeakMap,et=new WeakMap;function qt(t){return"tagName"in t}function Ft(t){if(t.state!=="suspended")return()=>{};if(typeof document>"u")return()=>{};const e=()=>{t.resume().catch(()=>{})},n=["pointerdown","keydown","touchstart"];return n.forEach(r=>document.addEventListener(r,e,{once:!0,passive:!0})),()=>n.forEach(r=>document.removeEventListener(r,e))}function Dt(t,e={}){const n={...Ct,...e},[r,i]=C(new Array(_(n.bands)).fill(0)),[a,c]=C(0);return L(()=>{const s=t(),l=_(n.bands);if(i(new Array(l).fill(0)),c(0),!s)return;const h=$t();if(!h||typeof requestAnimationFrame>"u"||typeof cancelAnimationFrame>"u")return;const b=cancelAnimationFrame.bind(globalThis),d=Ft(h);let o;if(qt(s)){const v=s;let x=tt.get(v);x||(x=h.createMediaElementSource(v),x.connect(h.destination),tt.set(v,x)),o=x}else{let v=et.get(s);v||(v=h.createMediaStreamSource(s),et.set(s,v)),o=v}const u=h.createAnalyser();u.fftSize=Z.fftSize,u.smoothingTimeConstant=Z.smoothingTimeConstant;const m=h.createAnalyser();m.fftSize=R.fftSize,m.smoothingTimeConstant=R.smoothingTimeConstant,m.minDecibels=R.minDecibels,m.maxDecibels=R.maxDecibels,o.connect(u),o.connect(m);const k=new Float32Array(u.frequencyBinCount),p=new Uint8Array(m.frequencyBinCount);let g=0,f=0;const y=v=>{v-f>=n.updateInterval&&(u.getFloatFrequencyData(k),m.getByteFrequencyData(p),i(Mt(k,l,n.loPass,n.hiPass)),c(At(p)),f=v),g=requestAnimationFrame(y)};g=requestAnimationFrame(y),N(()=>{b(g),d(),u.disconnect(),m.disconnect(),o.disconnect(u),o.disconnect(m)})}),{bands:r,volume:a}}const Et=["idle","connecting","listening","thinking","speaking","disconnected"],Nt={failed:"disconnected",initializing:"connecting","pre-connect-buffering":"connecting"};function St(t){return t?Et.includes(t)?t:Nt[t]??"idle":"idle"}function Tt(t,e){switch(t){case"connecting":{const n=[];for(let r=0;r<e;r++)n.push([r,e-1-r]);return n.length?n:[[]]}case"listening":case"thinking":return[[Math.floor(e/2)],[-1]];case"speaking":return[Array.from({length:e},(n,r)=>r)];case"disconnected":return[[]];default:return[[]]}}function It(t,e){switch(t){case"connecting":return 2e3/Math.max(1,e);case"listening":return 500;case"thinking":return 150;default:return 1e3}}function Wt(t,e,n){const r=[],i=Math.floor(e/2),a=Math.floor(t/2),c={x:Math.max(0,i-n),y:Math.max(0,a-n)},s={x:Math.min(e-1,i+n),y:Math.min(t-1,a+n)};for(let l=c.x;l<=s.x;l++)r.push({x:l,y:c.y});for(let l=c.y+1;l<=s.y;l++)r.push({x:s.x,y:l});for(let l=s.x-1;l>=c.x;l--)r.push({x:l,y:s.y});for(let l=s.y-1;l>c.y;l--)r.push({x:c.x,y:l});return r}function Lt(t,e,n,r){const i={x:Math.floor(n/2),y:Math.floor(e/2)};switch(t){case"connecting":{const a=Math.floor(Math.max(e,n)/2),c=r!==void 0?Math.min(r,a):a,s=Wt(e,n,c);return s.length?s:[i]}case"listening":{const a={x:-1,y:-1};return[i,a,a,a,a,a,a,a,a]}case"thinking":{const a=Math.floor(e/2),c=[];for(let s=0;s<n;s++)c.push({x:s,y:a});for(let s=n-1;s>=0;s--)c.push({x:s,y:a});return c.length?c:[i]}case"disconnected":return[i];default:return[i]}}function nt(t,e){const n=(r,i)=>{for(;i!==0;){const a=i;i=r%i,r=a}return r};for(let r=e;r>=1;r--)if(n(t,r)===r)return r;return 1}function Pt(t){const e=t>8?t/nt(t,4):nt(t,2),n=Math.max(1,Math.floor(e)),r=Math.floor(t/n);return Array.from({length:n},(i,a)=>Array.from({length:r},(c,s)=>s*n+a))}function Vt(t,e){switch(t){case"connecting":{const n=Math.floor(e/2),r=[];for(let i=0;i<e;i++)r.push([i,(i+n)%e]);return r.length?r:[[]]}case"listening":case"thinking":{const n=Pt(e);return n.length?n:[[]]}case"speaking":return[Array.from({length:e},(n,r)=>r)];case"disconnected":return[[]];default:return[[]]}}function Ot(t){switch(t){case"connecting":case"listening":return 500;case"thinking":return 1/0;default:return 1e3}}function Rt(t){switch(t){case"listening":return{intensity:[.5,.8],speed:2.5};case"thinking":return{intensity:[.25,.5],speed:4};case"connecting":return{intensity:[.25,.5],speed:6};case"speaking":return{intensity:.3,speed:2.5};case"disconnected":return{intensity:.3,speed:.5};default:return{intensity:.3,speed:1}}}const V=5,G=.025,J=10;function jt(t){switch(t){case"listening":return{speed:V,amplitude:G,frequency:J,opacity:[1,.3],pulseDuration:.75};case"thinking":case"connecting":return{speed:V*4,amplitude:G/4,frequency:J*4,opacity:[1,.3],pulseDuration:.4};case"speaking":case"idle":return{speed:V*2,amplitude:G,frequency:J,opacity:1,pulseDuration:0};case"disconnected":return{speed:V,amplitude:0,frequency:0,opacity:1,pulseDuration:0};default:return{speed:V,amplitude:0,frequency:0,opacity:1,pulseDuration:0}}}function K(t){const[e,n]=C(0),r=gt(()=>t());return L(()=>{const i=r();if(n(0),!Number.isFinite(i)||i<=0||typeof requestAnimationFrame>"u"||typeof cancelAnimationFrame>"u")return;const a=cancelAnimationFrame.bind(globalThis);let c=0,s=performance.now();const l=h=>{h-s>=i&&(n(b=>b+1),s=h),c=requestAnimationFrame(l)};c=requestAnimationFrame(l),N(()=>a(c))}),e}const Q={icon:24,sm:56,md:112,lg:224,xl:448},Bt={icon:2,sm:4,md:8,lg:16,xl:32},rt={icon:4,sm:8,md:16,lg:32,xl:64},it={icon:2,sm:4,md:8,lg:12,xl:16},Ht={icon:2,sm:4,md:8,lg:12,xl:16},Ut={icon:6,sm:16,md:32,lg:64,xl:128};function at(t){return t==="icon"||t==="sm"?3:5}function ot(t){return t==="icon"||t==="sm"?12:24}function st(t){return t==="icon"?3:5}var lt=T("<div>");function j(t,e){return e===!0&&t==="listening"?"speaking":t}function ut(t){const e=()=>t.barCount??at(t.size),n=()=>j(t.state,t.listeningAmplitude),r=K(()=>t.frozen?1/0:It(n(),e())),i=()=>Tt(n(),e()),a=()=>i()[r()%i().length]??[],c=()=>n()==="speaking"?U(t.bands,e()):new Array(e()).fill(0);return(()=>{var s=lt();return P(s,M(B,{get each(){return c()},children:(l,h)=>{var b;const d={index:h,highlighted:()=>a().includes(h),value:()=>l()};return((b=t.children)==null?void 0:b.call(t,d))??(()=>{var o=lt();return q(u=>{var m=d.highlighted()?"bar highlighted":"bar",k=d.index,p=d.highlighted(),g=D("rounded-full bg-current/10","data-[kai-highlighted=true]:bg-current"),f=`${rt[t.size]}px`,y=`${rt[t.size]}px`,v=`${l()*100}%`,x=t.frozen?"none":"height 100ms ease-linear, background-color 250ms ease-linear";return m!==u.e&&w(o,"part",u.e=m),k!==u.t&&w(o,"data-kai-index",u.t=k),p!==u.a&&w(o,"data-kai-highlighted",u.a=p),g!==u.o&&S(o,u.o=g),f!==u.i&&z(o,"width",u.i=f),y!==u.n&&z(o,"min-height",u.n=y),v!==u.s&&z(o,"height",u.s=v),x!==u.h&&z(o,"transition",u.h=x),u},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0}),o})()}})),q(l=>{var h=t.state,b=D("relative flex items-center justify-center",t.class),d={height:`${Q[t.size]}px`,gap:`${Bt[t.size]}px`,...t.color?{color:t.color}:{}};return h!==l.e&&w(s,"data-kai-state",l.e=h),b!==l.t&&S(s,l.t=b),l.a=O(s,d,l.a),l},{e:void 0,t:void 0,a:void 0}),s})()}function Yt(t,e){return t===void 0||e===void 0||!Number.isFinite(t)||!Number.isFinite(e)||t<=0||e<=0?1:Math.min(1,t/e)}function Gt(){const[t,e]=C(),[n,r]=C(),[i,a]=C();let c,s,l;const h=()=>{if(l)return l;if(!(typeof ResizeObserver>"u"))return l=new ResizeObserver(d=>{for(const o of d)o.target===c&&e(o.contentRect.width),o.target===s&&(r(o.contentRect.width),a(o.contentRect.height))}),l};N(()=>l?.disconnect());const b=()=>Yt(t(),n());return{observeOuter:d=>{var o;c=d,(o=h())==null||o.observe(d)},observeInner:d=>{var o;s=d,(o=h())==null||o.observe(d)},scale:b,scaledHeight:()=>{const d=b(),o=i();return d<1&&o!==void 0&&o>0?o*d:void 0}}}var ct=T("<div>");const Jt=.65,Kt=.02;function Qt(t){const e=()=>t.count??st(t.size),n=()=>e(),r=()=>t.interval??100,i=()=>Array.from({length:e()*n()},(o,u)=>u),a=()=>j(t.state,t.listeningAmplitude),c=K(()=>t.frozen||a()==="speaking"?1/0:r()),s=()=>Lt(a(),e(),n(),t.spread),l=()=>s()[c()%s().length]??{x:-1,y:-1},h=()=>a()==="speaking"?U(t.bands,n()):new Array(n()).fill(0);function b(o){if(a()==="speaking"){const u=Math.floor(o/n()),m=Math.floor(e()/2),k=Math.abs(m-u)/(m+1)*Jt,p=Math.max(k,Kt);return(h()[o%n()]??0)>=p}return a()==="idle"||a()==="disconnected"?!1:l().x===o%n()&&l().y===Math.floor(o/n())}function d(o){return a()==="speaking"?"150ms":`${r()/(b(o)?1e3:100)}s`}return(()=>{var o=ct();return P(o,M(B,{get each(){return i()},children:(u,m)=>{var k;const p={index:m,highlighted:()=>b(m),value:()=>h()[m%n()]??0};return((k=t.children)==null?void 0:k.call(t,p))??(()=>{var g=ct();return q(f=>{var y=p.highlighted()?"cell highlighted":"cell",v=p.index,x=p.highlighted(),A=D("place-self-center rounded-full bg-current/10 transition-all ease-out","data-[kai-highlighted=true]:bg-current"),$=`${it[t.size]}px`,F=`${it[t.size]}px`,W=d(m);return y!==f.e&&w(g,"part",f.e=y),v!==f.t&&w(g,"data-kai-index",f.t=v),x!==f.a&&w(g,"data-kai-highlighted",f.a=x),A!==f.o&&S(g,f.o=A),$!==f.i&&z(g,"width",f.i=$),F!==f.n&&z(g,"height",f.n=F),W!==f.s&&z(g,"transition-duration",f.s=W),f},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),g})()}})),q(u=>{var m=t.state,k=D("grid",t.class),p={"grid-template-columns":`repeat(${n()}, 1fr)`,gap:`${Ht[t.size]}px`,...t.color?{color:t.color}:{}};return m!==u.e&&w(o,"data-kai-state",u.e=m),k!==u.t&&S(o,u.t=k),u.a=O(o,p,u.a),u},{e:void 0,t:void 0,a:void 0}),o})()}var Xt=T("<div style=aspect-ratio:1>"),Zt=T('<div data-kai-spoke class="absolute top-1/2 left-1/2 h-1 w-1 -translate-x-1/2 -translate-y-1/2"style=transform-origin:center>'),_t=T("<div>");function te(t){const e=()=>Math.max(1,t.barCount??ot(t.size)),n=()=>t.radius??Ut[t.size];e()%4!==0&&console.warn(`<kai-audio-visualizer variant="radial">: barCount ${e()} is not divisible by 4. The ring will look asymmetric.`);const r=()=>n()*Math.PI/e(),i=()=>j(t.state,t.listeningAmplitude),a=K(()=>t.frozen?1/0:Ot(i())),c=()=>Vt(i(),e()),s=()=>i()==="thinking"?Array.from({length:e()},(b,d)=>d):c()[a()%c().length]??[],l=()=>i()==="speaking"?U(t.bands,e()):new Array(e()).fill(0),h=()=>i()==="thinking"&&!t.frozen;return(()=>{var b=Xt();return P(b,M(B,{get each(){return l()},children:(d,o)=>{const u={index:o,highlighted:()=>s().includes(o),value:()=>d()};return(()=>{var m=Zt();return P(m,()=>{var k;return((k=t.children)==null?void 0:k.call(t,u))??(()=>{var p=_t();return q(g=>{var f=u.highlighted()?"bar highlighted":"bar",y=u.index,v=u.highlighted(),x=D("origin-bottom rounded-full bg-current/10","data-[kai-highlighted=true]:bg-current"),A=`${r()}px`,$=`${r()}px`,F=`${r()*10*d()}px`,W=t.frozen?"none":"height 100ms ease-linear, background-color 150ms ease-linear";return f!==g.e&&w(p,"part",g.e=f),y!==g.t&&w(p,"data-kai-index",g.t=y),v!==g.a&&w(p,"data-kai-highlighted",g.a=v),x!==g.o&&S(p,g.o=x),A!==g.i&&z(p,"width",g.i=A),$!==g.n&&z(p,"min-height",g.n=$),F!==g.s&&z(p,"height",g.s=F),W!==g.h&&z(p,"transition",g.h=W),g},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0}),p})()}),q(k=>z(m,"transform",`rotate(${o/e()*Math.PI*2}rad) translateY(${n()}px)`)),m})()}})),q(d=>{var o=t.state,u=D("relative flex items-center justify-center",h()&&"animate-spin",t.class),m={height:`${Q[t.size]}px`,...h()?{"animation-duration":"5s"}:{},...t.color?{color:t.color}:{}};return o!==d.e&&w(b,"data-kai-state",d.e=o),u!==d.t&&S(b,d.t=u),d.a=O(b,m,d.a),d},{e:void 0,t:void 0,a:void 0}),b})()}var ee=T('<div><div style="flex:0 0 auto;align-self:flex-start">');const ne=["bar","grid","radial","wave","aurora","custom"],re={aura:"aurora"};function ie(t){return t?ne.includes(t)?t:re[t]??"bar":"bar"}function ae(){const[t,e]=C(!1);return L(()=>{var n;if(typeof matchMedia!="function")return;const r=matchMedia("(prefers-reduced-motion: reduce)");e(r.matches);const i=a=>e(a.matches);(n=r.addEventListener)==null||n.call(r,"change",i),N(()=>{var a;return(a=r.removeEventListener)==null?void 0:a.call(r,"change",i)})}),t}function oe(t){const[e,n]=C(!1);return L(()=>{var r;if(typeof matchMedia!="function")return;const i=matchMedia("(prefers-color-scheme: dark)");n(i.matches);const a=c=>n(c.matches);(r=i.addEventListener)==null||r.call(i,"change",a),N(()=>{var c;return(c=i.removeEventListener)==null?void 0:c.call(i,"change",a)})}),()=>{const r=t()??"auto";return r==="dark"||r==="auto"&&e()}}const dt={wave:()=>import("./variant-wave-wTP5v_jU.js"),aurora:()=>import("./variant-aurora-LE3fqxgw.js"),custom:()=>import("./variant-custom-DI5R0rln.js")};function se(t){const e=()=>ie(t.variant),n=()=>t.size??"md",r=()=>St(t.state),i=ae(),a=oe(()=>t.theme),c=()=>e()in dt,s=()=>e()==="grid"?t.count??st(n()):e()==="radial"?t.barCount??ot(n()):t.barCount??at(n()),l=Dt(()=>t.bands?void 0:t.stream??t.audioElement,{bands:()=>Math.ceil(s()/2)}),h=()=>t.bands?t.bands:e()==="radial"?zt(l.bands(),s()):wt(l.bands(),s()),b=()=>{if(!t.bands)return l.volume();if(t.bands.length===0)return 0;let y=0;for(const v of t.bands)y+=v*v;return Math.sqrt(y/t.bands.length)},[d,o]=C(),[u,m]=C(!1);L(()=>{const y=e(),v=dt[y];if(o(void 0),m(!1),!v)return;let x=!1;v().then(A=>{x||o(()=>A.default)}).catch(A=>{x||console.warn(`<kai-audio-visualizer variant="${y}">: failed to load the shader chunk, falling back to bars.`,A)}),N(()=>{x=!0})});const k=()=>({state:r(),size:n(),frozen:i(),color:t.color,listeningAmplitude:t.listeningAmplitude}),p=()=>({...k(),children:t.children}),g=()=>t.label?{role:"img","aria-label":t.label}:{"aria-hidden":"true"},f=Gt();return(()=>{var y=ee(),v=y.firstChild,x=f.observeOuter;typeof x=="function"?X(x,y):f.observeOuter=y,ft(y,I({get class(){return D("inline-flex",t.class)}},g,{get style(){return{"max-width":"100%",...f.scaledHeight()!==void 0?{height:`${f.scaledHeight()}px`,overflow:"hidden","vertical-align":"top"}:{}}}}),!1,!0);var A=f.observeInner;return typeof A=="function"?X(A,v):f.observeInner=v,P(v,M(pt,{get fallback(){return M(ut,I(p,{get bands(){return h()},get barCount(){return t.barCount}}))},get children(){return[M(H,{get when(){return e()==="grid"},get children(){return M(Qt,I(p,{get bands(){return h()},get count(){return t.count},get spread(){return t.spread},get interval(){return t.interval}}))}}),M(H,{get when(){return e()==="radial"},get children(){return M(te,I(p,{get bands(){return h()},get barCount(){return t.barCount},get radius(){return t.radius}}))}}),M(H,{get when(){return c()},get children(){return M(mt,{get when(){return vt(()=>!u())()&&d()},get fallback(){return M(ut,I(p,{get bands(){return h()},get barCount(){return t.barCount}}))},children:$=>{const F=$();return M(F,I(k,{get bands(){return h()},get volume(){return b()},get complexity(){return t.complexity},get shader(){return t.shader},get dark(){return a()},get animateWhenNotVisible(){return t.animateWhenNotVisible},onUnavailable:()=>m(!0)}))}})}})]}})),q($=>O(v,{...f.scale()<1?{transform:`scale(${f.scale()})`,"transform-origin":"top left"}:{}},$)),y})()}function E(t){if(t==null||t==="")return;const e=Number(t);return Number.isFinite(e)?e:void 0}function ht(t,e){var n,r;const i=((n=e?.dark)==null?void 0:n.call(e))??!1,a=e!=null&&e.flag?e.flag("animateWhenNotVisible"):t.animateWhenNotVisible===!0,c=e!=null&&e.flag?e.flag("listeningAmplitude"):t.listeningAmplitude===!0;return(r=e?.reflectFlag)==null||r.call(e,"listeningAmplitude"),M(se,{get variant(){return t.variant},get state(){return t.state},get size(){return t.size},get barCount(){return E(t.barCount)},get count(){return E(t.count)},get radius(){return E(t.radius)},get spread(){return E(t.spread)},get interval(){return E(t.interval)},get color(){return t.color},get complexity(){return E(t.complexity)},get label(){return t.label},get stream(){return t.stream},get audioElement(){return t.audioElement},get bands(){return t.bands},listeningAmplitude:c,get shader(){return t.shader},animateWhenNotVisible:a,theme:i?"dark":"light"})}bt("kai-audio-visualizer",{variant:"bar",state:"idle",size:"md",barCount:void 0,count:void 0,radius:void 0,spread:void 0,interval:void 0,color:void 0,complexity:void 0,label:void 0,stream:void 0,audioElement:void 0,bands:void 0,listeningAmplitude:void 0,shader:void 0,animateWhenNotVisible:void 0},ht);export{ht as A,Q as C,j as a,E as n,Rt as s,jt as w};
@@ -1 +1 @@
1
- import{s as n,p as i,q as s,i as o,t as u}from"./define-By-uL588.js";import{c as m}from"./index-xu_pdcPi.js";import{c}from"./cn-DN5AWfiS.js";var d=u("<span>");const p=m("inline-flex items-center justify-center rounded-full text-xs font-medium min-h-5 min-w-5",{variants:{variant:{default:"bg-muted text-muted-foreground px-2 py-0.5",count:"bg-muted text-muted-foreground h-5 px-1.5",citation:"bg-primary text-primary-foreground px-1.5 py-0.5 cursor-pointer"}},defaultVariants:{variant:"default"}});function f(a){const[t,e]=n(a,["variant","class","children"]);return(()=>{var r=d();return i(r,s({get class(){return c(p({variant:t.variant}),t.class)}},e),!1,!0),o(r,()=>t.children),r})()}export{f as B};
1
+ import{s as n,p as i,q as s,i as o,t as u}from"./define-CI0y3eE4.js";import{c as m}from"./index-xu_pdcPi.js";import{c}from"./cn-DN5AWfiS.js";var d=u("<span>");const p=m("inline-flex items-center justify-center rounded-full text-xs font-medium min-h-5 min-w-5",{variants:{variant:{default:"bg-muted text-muted-foreground px-2 py-0.5",count:"bg-muted text-muted-foreground h-5 px-1.5",citation:"bg-primary text-primary-foreground px-1.5 py-0.5 cursor-pointer"}},defaultVariants:{variant:"default"}});function f(a){const[t,e]=n(a,["variant","class","children"]);return(()=>{var r=d();return i(r,s({get class(){return c(p({variant:t.variant}),t.class)}},e),!1,!0),o(r,()=>t.children),r})()}export{f as B};
@@ -1 +1 @@
1
- import{I as o}from"./Icon-DObhsRtm.js";import{c as e,q as r}from"./define-By-uL588.js";var s=[["path",{d:"M6 8a6 6 0 0 1 12 0c0 7 3 9 3 9H3s3-2 3-9",key:"1qo2s2"}],["path",{d:"M10.3 21a1.94 1.94 0 0 0 3.4 0",key:"qgo35s"}]],p=a=>e(o,r(a,{name:"Bell",iconNode:s})),t=p;export{t as b};
1
+ import{I as o}from"./Icon-BzBET3E-.js";import{c as e,q as r}from"./define-CI0y3eE4.js";var s=[["path",{d:"M6 8a6 6 0 0 1 12 0c0 7 3 9 3 9H3s3-2 3-9",key:"1qo2s2"}],["path",{d:"M10.3 21a1.94 1.94 0 0 0 3.4 0",key:"qgo35s"}]],p=a=>e(o,r(a,{name:"Bell",iconNode:s})),t=p;export{t as b};
@@ -1 +1 @@
1
- import{s,p as n,q as o,i as a,t as u}from"./define-By-uL588.js";import{c as d}from"./index-xu_pdcPi.js";import{c as l}from"./cn-DN5AWfiS.js";var c=u("<button>");const f=d("inline-flex items-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:pointer-events-none disabled:opacity-50",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",ghost:"hover:bg-muted text-foreground",subtle:"text-muted-foreground hover:bg-accent hover:text-foreground",outline:"bg-muted/50 text-foreground hover:bg-muted",destructive:"bg-destructive text-destructive-foreground hover:bg-destructive/90"},size:{sm:"h-8 px-3 text-xs rounded-md",md:"h-9 px-4 text-sm",lg:"h-10 px-6 text-sm",icon:"h-9 w-9","icon-sm":"h-7 w-7"},align:{start:"justify-start",center:"justify-center",end:"justify-end"}},defaultVariants:{variant:"default",size:"md",align:"center"}});function g(r){const[e,i]=s(r,["variant","size","align","full","class","children"]);return(()=>{var t=c();return n(t,o({get class(){return l(f({variant:e.variant,size:e.size,align:e.align}),e.full&&"w-full",e.class)}},i),!1,!0),a(t,()=>e.children),t})()}export{g as B};
1
+ import{s,p as n,q as o,i as a,t as u}from"./define-CI0y3eE4.js";import{c as d}from"./index-xu_pdcPi.js";import{c as l}from"./cn-DN5AWfiS.js";var c=u("<button>");const f=d("inline-flex items-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:pointer-events-none disabled:opacity-50",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",ghost:"hover:bg-muted text-foreground",subtle:"text-muted-foreground hover:bg-accent hover:text-foreground",outline:"bg-muted/50 text-foreground hover:bg-muted",destructive:"bg-destructive text-destructive-foreground hover:bg-destructive/90"},size:{sm:"h-8 px-3 text-xs rounded-md",md:"h-9 px-4 text-sm",lg:"h-10 px-6 text-sm",icon:"h-9 w-9","icon-sm":"h-7 w-7"},align:{start:"justify-start",center:"justify-center",end:"justify-end"}},defaultVariants:{variant:"default",size:"md",align:"center"}});function g(r){const[e,i]=s(r,["variant","size","align","full","class","children"]);return(()=>{var t=c();return n(t,o({get class(){return l(f({variant:e.variant,size:e.size,align:e.align}),e.full&&"w-full",e.class)}},i),!1,!0),a(t,()=>e.children),t})()}export{g as B};
@@ -1 +1 @@
1
- import{z as f,i as l,c as a,d as m,S as g,m as E,a as A,l as O,t as c,w as $,k as y,j as S,D as z}from"./define-By-uL588.js";import{C as F,u as k}from"./use-card-resolution-DaZqAdWf.js";import{e as U}from"./card-routing-0YidER_3.js";import{F as T,v as M}from"./form-DSZgZQZk.js";import{C as P}from"./confirm-card-rQWDQsnC.js";import{T as N}from"./tasks-card-BrN4bggJ.js";import{C as B}from"./choice-card-m0BYqqOK.js";import{L as D}from"./link-preview-DbM1866N.js";import{E as R}from"./embed-CrfjkbUG.js";import{A as Z}from"./artifact-Bwt7OgcR.js";import{t as j}from"./triangle-alert-DlQ68ppf.js";var _=c('<h3 class="shrink-0 truncate border-b border-border px-3 py-2 text-sm font-medium text-foreground">'),G=c('<div part=card data-card-type=artifact role=group class="flex w-full flex-col overflow-hidden rounded-xl border border-border bg-card"><div class="min-h-0 flex-1">');const H="420px";function J(e){return typeof e=="number"?`${e}px`:typeof e=="string"&&e.trim()!==""?e:H}function K(e){const r=$(),t=f(()=>e.data.tab),d=f(()=>e.data.activeFile),s=i=>{var o;return(o=e.host)==null?void 0:o.emit({kind:"state",cardId:e.cardId,patch:i})};return(()=>{var i=G(),o=i.firstChild;return l(i,a(g,{get when(){return e.heading},get children(){var n=_();return m(n,"id",r),l(n,()=>e.heading),n}}),o),l(o,a(Z,{get src(){return e.data.src},get files(){return e.data.files},defaultTab:t,activeFile:d,get displayUrl(){return e.data.displayUrl},get iframeTitle(){return E(()=>!!e.heading)()?`${e.heading} preview`:"Artifact preview"},onNavigate:n=>s({src:n}),onTabChange:n=>s({tab:n}),onFileSelect:n=>s({activeFile:n})})),A(n=>{var p=e.cardId,u=e.heading?r:void 0,b=e.heading?void 0:"Artifact",x=J(e.data.height);return p!==n.e&&m(i,"data-card-id",n.e=p),u!==n.t&&m(i,"aria-labelledby",n.t=u),b!==n.a&&m(i,"aria-label",n.a=b),x!==n.o&&O(i,"height",n.o=x),n},{e:void 0,t:void 0,a:void 0,o:void 0}),i})()}const h={form:e=>a(T,{get data(){return e.envelope.data},get cardId(){return e.envelope.id},get heading(){return e.envelope.title},get resolution(){return e.envelope.resolution},get host(){return e.host}}),confirm:e=>a(P,{get data(){return e.envelope.data},get cardId(){return e.envelope.id},get heading(){return e.envelope.title},get resolution(){return e.envelope.resolution},get host(){return e.host}}),tasks:e=>a(N,{get data(){return e.envelope.data},get cardId(){return e.envelope.id},get heading(){return e.envelope.title},get resolution(){return e.envelope.resolution},get host(){return e.host}}),choice:e=>a(B,{get data(){return e.envelope.data},get cardId(){return e.envelope.id},get heading(){return e.envelope.title},get resolution(){return e.envelope.resolution},get host(){return e.host}}),link:e=>a(D,{get data(){return e.envelope.data},get cardId(){return e.envelope.id},onEmit:r=>{var t;return(t=e.host)==null?void 0:t.emit(r)}}),embed:e=>a(R,{get data(){return e.envelope.data},get cardId(){return e.envelope.id},onEmit:r=>{var t;return(t=e.host)==null?void 0:t.emit(r)}}),artifact:e=>a(K,{get data(){return e.envelope.data},get cardId(){return e.envelope.id},get heading(){return e.envelope.title},get host(){return e.host}})};function Q(e){return e?{...h,...e}:{...h}}const I={artifact:{type:"object",properties:{src:{type:"string"},files:{type:"array",maxItems:500,items:{type:"object",required:["path"],properties:{path:{type:"string",maxLength:1024},url:{type:"string"},code:{type:"string"},language:{type:"string",maxLength:40},type:{type:"string",enum:["html","pdf","image","other"]},additions:{type:"integer",minimum:0},deletions:{type:"integer",minimum:0},status:{type:"string",enum:["added","modified","deleted","renamed","untracked"]}}}},tab:{type:"string",enum:["preview","code"]},activeFile:{type:"string",maxLength:1024},displayUrl:{type:"string",maxLength:2048}}},choice:{type:"object",required:["options"],properties:{prompt:{type:"string"},submitLabel:{type:"string"},options:{type:"array",minItems:1,items:{type:"object",required:["id","label"],properties:{id:{type:"string",minLength:1},label:{type:"string",minLength:1},description:{type:"string"},media:{type:"object",properties:{image:{type:"string"},imageAlt:{type:"string"},icon:{type:"string"}}},meta:{type:"string"},recommended:{type:"boolean"},disabled:{type:"boolean"}}}},dismissible:{type:"boolean"}}},confirm:{type:"object",required:["actions"],properties:{heading:{type:"string"},body:{type:"string"},tone:{type:"string",enum:["default","warning","danger"]},actions:{type:"array",minItems:1,maxItems:4,items:{type:"object",required:["id","label"],properties:{id:{type:"string",minLength:1},label:{type:"string",minLength:1},style:{type:"string",enum:["primary","default","destructive"]},default:{type:"boolean"}}}},dismissible:{type:"boolean"}}},embed:{type:"object",required:["provider"],properties:{provider:{type:"string",enum:["youtube","vimeo","generic"]},id:{type:"string",maxLength:64,pattern:"^[A-Za-z0-9_-]+$"},url:{type:"string"},title:{type:"string",maxLength:300},poster:{type:"string"},start:{type:"integer",minimum:0},aspectRatio:{type:"string",enum:["16:9","4:3","1:1","9:16"]}}},form:{type:"object",required:["type","properties"],properties:{type:{const:"object"},title:{type:"string"},description:{type:"string"},required:{type:"array",items:{type:"string"}},properties:{type:"object"},"x-kai-order":{type:"array",items:{type:"string"}},"x-kai-inlineMax":{type:"integer",minimum:1},"x-kai-submitLabel":{type:"string"},"x-kai-dismissible":{type:"boolean"},"x-kai-actions":{type:"array",items:{type:"object",required:["id","label"],properties:{id:{type:"string"},label:{type:"string"},variant:{enum:["default","ghost","outline"]}}}}}},link:{type:"object",required:["url"],properties:{url:{type:"string"},title:{type:"string",maxLength:300},description:{type:"string",maxLength:1e3},image:{type:"string"},imageAlt:{type:"string",maxLength:300},favicon:{type:"string"},domain:{type:"string",maxLength:253},siteName:{type:"string",maxLength:200}}},tasks:{type:"object",required:["tasks"],properties:{mode:{type:"string",enum:["select","progress"]},heading:{type:"string"},tasks:{type:"array",minItems:1,items:{type:"object",required:["id","label"],properties:{id:{type:"string",minLength:1},label:{type:"string",minLength:1},description:{type:"string"},checked:{type:"boolean"},disabled:{type:"boolean"}}}},selectAll:{type:"boolean"},confirmLabel:{type:"string"},allowEmpty:{type:"boolean"},min:{type:"integer",minimum:0},max:{type:"integer",minimum:1},dismissible:{type:"boolean"}}}},V=Object.freeze({type:"hard",required:"hard",const:"hard",minItems:"hard",enum:"soft",maxItems:"soft",minLength:"soft",maxLength:"soft",pattern:"soft",minimum:"soft",maximum:"soft",exclusiveMinimum:"soft",exclusiveMaximum:"soft",uniqueItems:"soft"}),W="soft";function X(e){return Object.prototype.hasOwnProperty.call(I,e)}function Y(e,r){if(r&&Object.prototype.hasOwnProperty.call(r,e)){const t=r[e];if(t&&typeof t=="object")return t}return X(e)?I[e]:null}function ee(e){const r=e.slice(0,3).map(d=>d.message),t=e.length-r.length;return r.join("; ")+(t>0?`; and ${t} more`:"")}function L(e,r,t){const d=Y(e,t);if(d===null)return null;const s=M(d,r);if(s.valid)return{ok:!0,tier:"ok",issues:[],hard:[],summary:""};const i=s.issues.map(n=>({...n,tier:V[n.keyword]??W})),o=i.filter(n=>n.tier==="hard");return{ok:!1,tier:o.length>0?"hard":"soft",issues:i,hard:o,summary:ee(o.length>0?o:i)}}function w(e){return`invalid card data (${e.tier}): ${e.summary}`}var te=c('<div data-card-fallback role=alert class="flex items-center gap-2 p-4 text-sm text-muted-foreground"><span>Unsupported card type: <code class=font-mono>'),re=c('<div data-card-fallback data-card-invalid role=alert class="flex items-start gap-2 p-4 text-sm text-muted-foreground"><span class=min-w-0>Invalid <code class=font-mono></code> card: <code data-card-invalid-reason class="font-mono break-words">');function v(e){return a(F,{get children(){return a(g,{get when(){return e.reason},get fallback(){return(()=>{var r=te(),t=r.firstChild,d=t.firstChild,s=d.nextSibling;return l(r,a(j,{class:"size-4 shrink-0 text-destructive dark:text-red-400","aria-hidden":"true"}),t),l(s,()=>e.type),r})()},children:r=>(()=>{var t=re(),d=t.firstChild,s=d.firstChild,i=s.nextSibling,o=i.nextSibling,n=o.nextSibling;return l(t,a(j,{class:"size-4 shrink-0 translate-y-0.5 text-destructive dark:text-red-400","aria-hidden":"true"}),d),l(i,()=>e.type),l(n,r),t})()})}})}function q(e,r){return e||(r?{context:()=>({theme:{mode:"light"},locale:"en"}),emit:t=>U(r,t)}:void 0)}function C(e,r){if(!e||!Object.prototype.hasOwnProperty.call(e,r))return!1;const t=e[r];return typeof t=="object"&&t!==null}function ne(e){const r=k(),t=y(()=>q(r,e.hostElement)),d=y(()=>Q(e.types)),s=y(()=>d()[e.envelope.type]),i=y(()=>e.validateCards===!1||!C(e.schemas,e.envelope.type)&&s()!==h[e.envelope.type]?null:L(e.envelope.type,e.envelope.data,e.schemas));let o=null;return S(()=>{var n;const p=i();if(!s())return;if(!p||p.ok){o=null;return}const u=w(p);u!==o&&(o=u,(n=t())==null||n.emit({kind:"error",cardId:e.envelope.id,message:u}))}),a(g,{get when(){return s()},get fallback(){return a(ie,{get envelope(){return e.envelope},get hostElement(){return e.hostElement}})},children:n=>a(g,{get when(){var p;return((p=i())==null?void 0:p.tier)==="hard"},get fallback(){return a(z,{get component(){return n()},get envelope(){return e.envelope},get host(){return t()}})},get children(){return a(v,{get type(){return e.envelope.type},get cardId(){return e.envelope.id},get reason(){return i().summary}})}})})}function ie(e){const r=k();return f(()=>{var t;return(t=q(r,e.hostElement))==null?void 0:t.emit({kind:"error",cardId:e.envelope.id,message:`Unsupported card type: ${e.envelope.type}`})}),a(v,{get type(){return e.envelope.type},get cardId(){return e.envelope.id}})}export{h as B,v as C,ne as a,w as c,C as h,L as v};
1
+ import{z as f,i as l,c as a,d as m,S as g,m as E,a as A,l as O,t as c,w as $,k as y,j as S,D as z}from"./define-CI0y3eE4.js";import{C as F,u as k}from"./use-card-resolution-Zg0a08Z-.js";import{e as U}from"./card-routing-0YidER_3.js";import{F as T,v as M}from"./form-DWgdxDXu.js";import{C as P}from"./confirm-card-B0YIAwXp.js";import{T as N}from"./tasks-card-CbqQAn2S.js";import{C as B}from"./choice-card-CM6IjkmL.js";import{L as D}from"./link-preview-DODgRyV9.js";import{E as R}from"./embed-BMje-nxj.js";import{A as Z}from"./artifact-DGjzHYUT.js";import{t as j}from"./triangle-alert-CeHLWxhD.js";var _=c('<h3 class="shrink-0 truncate border-b border-border px-3 py-2 text-sm font-medium text-foreground">'),G=c('<div part=card data-card-type=artifact role=group class="flex w-full flex-col overflow-hidden rounded-xl border border-border bg-card"><div class="min-h-0 flex-1">');const H="420px";function J(e){return typeof e=="number"?`${e}px`:typeof e=="string"&&e.trim()!==""?e:H}function K(e){const r=$(),t=f(()=>e.data.tab),d=f(()=>e.data.activeFile),s=i=>{var o;return(o=e.host)==null?void 0:o.emit({kind:"state",cardId:e.cardId,patch:i})};return(()=>{var i=G(),o=i.firstChild;return l(i,a(g,{get when(){return e.heading},get children(){var n=_();return m(n,"id",r),l(n,()=>e.heading),n}}),o),l(o,a(Z,{get src(){return e.data.src},get files(){return e.data.files},defaultTab:t,activeFile:d,get displayUrl(){return e.data.displayUrl},get iframeTitle(){return E(()=>!!e.heading)()?`${e.heading} preview`:"Artifact preview"},onNavigate:n=>s({src:n}),onTabChange:n=>s({tab:n}),onFileSelect:n=>s({activeFile:n})})),A(n=>{var p=e.cardId,u=e.heading?r:void 0,b=e.heading?void 0:"Artifact",x=J(e.data.height);return p!==n.e&&m(i,"data-card-id",n.e=p),u!==n.t&&m(i,"aria-labelledby",n.t=u),b!==n.a&&m(i,"aria-label",n.a=b),x!==n.o&&O(i,"height",n.o=x),n},{e:void 0,t:void 0,a:void 0,o:void 0}),i})()}const h={form:e=>a(T,{get data(){return e.envelope.data},get cardId(){return e.envelope.id},get heading(){return e.envelope.title},get resolution(){return e.envelope.resolution},get host(){return e.host}}),confirm:e=>a(P,{get data(){return e.envelope.data},get cardId(){return e.envelope.id},get heading(){return e.envelope.title},get resolution(){return e.envelope.resolution},get host(){return e.host}}),tasks:e=>a(N,{get data(){return e.envelope.data},get cardId(){return e.envelope.id},get heading(){return e.envelope.title},get resolution(){return e.envelope.resolution},get host(){return e.host}}),choice:e=>a(B,{get data(){return e.envelope.data},get cardId(){return e.envelope.id},get heading(){return e.envelope.title},get resolution(){return e.envelope.resolution},get host(){return e.host}}),link:e=>a(D,{get data(){return e.envelope.data},get cardId(){return e.envelope.id},onEmit:r=>{var t;return(t=e.host)==null?void 0:t.emit(r)}}),embed:e=>a(R,{get data(){return e.envelope.data},get cardId(){return e.envelope.id},onEmit:r=>{var t;return(t=e.host)==null?void 0:t.emit(r)}}),artifact:e=>a(K,{get data(){return e.envelope.data},get cardId(){return e.envelope.id},get heading(){return e.envelope.title},get host(){return e.host}})};function Q(e){return e?{...h,...e}:{...h}}const I={artifact:{type:"object",properties:{src:{type:"string"},files:{type:"array",maxItems:500,items:{type:"object",required:["path"],properties:{path:{type:"string",maxLength:1024},url:{type:"string"},code:{type:"string"},language:{type:"string",maxLength:40},type:{type:"string",enum:["html","pdf","image","other"]},additions:{type:"integer",minimum:0},deletions:{type:"integer",minimum:0},status:{type:"string",enum:["added","modified","deleted","renamed","untracked"]}}}},tab:{type:"string",enum:["preview","code"]},activeFile:{type:"string",maxLength:1024},displayUrl:{type:"string",maxLength:2048}}},choice:{type:"object",required:["options"],properties:{prompt:{type:"string"},submitLabel:{type:"string"},options:{type:"array",minItems:1,items:{type:"object",required:["id","label"],properties:{id:{type:"string",minLength:1},label:{type:"string",minLength:1},description:{type:"string"},media:{type:"object",properties:{image:{type:"string"},imageAlt:{type:"string"},icon:{type:"string"}}},meta:{type:"string"},recommended:{type:"boolean"},disabled:{type:"boolean"}}}},dismissible:{type:"boolean"}}},confirm:{type:"object",required:["actions"],properties:{heading:{type:"string"},body:{type:"string"},tone:{type:"string",enum:["default","warning","danger"]},actions:{type:"array",minItems:1,maxItems:4,items:{type:"object",required:["id","label"],properties:{id:{type:"string",minLength:1},label:{type:"string",minLength:1},style:{type:"string",enum:["primary","default","destructive"]},default:{type:"boolean"}}}},dismissible:{type:"boolean"}}},embed:{type:"object",required:["provider"],properties:{provider:{type:"string",enum:["youtube","vimeo","generic"]},id:{type:"string",maxLength:64,pattern:"^[A-Za-z0-9_-]+$"},url:{type:"string"},title:{type:"string",maxLength:300},poster:{type:"string"},start:{type:"integer",minimum:0},aspectRatio:{type:"string",enum:["16:9","4:3","1:1","9:16"]}}},form:{type:"object",required:["type","properties"],properties:{type:{const:"object"},title:{type:"string"},description:{type:"string"},required:{type:"array",items:{type:"string"}},properties:{type:"object"},"x-kai-order":{type:"array",items:{type:"string"}},"x-kai-inlineMax":{type:"integer",minimum:1},"x-kai-submitLabel":{type:"string"},"x-kai-dismissible":{type:"boolean"},"x-kai-actions":{type:"array",items:{type:"object",required:["id","label"],properties:{id:{type:"string"},label:{type:"string"},variant:{enum:["default","ghost","outline"]}}}}}},link:{type:"object",required:["url"],properties:{url:{type:"string"},title:{type:"string",maxLength:300},description:{type:"string",maxLength:1e3},image:{type:"string"},imageAlt:{type:"string",maxLength:300},favicon:{type:"string"},domain:{type:"string",maxLength:253},siteName:{type:"string",maxLength:200}}},tasks:{type:"object",required:["tasks"],properties:{mode:{type:"string",enum:["select","progress"]},heading:{type:"string"},tasks:{type:"array",minItems:1,items:{type:"object",required:["id","label"],properties:{id:{type:"string",minLength:1},label:{type:"string",minLength:1},description:{type:"string"},checked:{type:"boolean"},disabled:{type:"boolean"}}}},selectAll:{type:"boolean"},confirmLabel:{type:"string"},allowEmpty:{type:"boolean"},min:{type:"integer",minimum:0},max:{type:"integer",minimum:1},dismissible:{type:"boolean"}}}},V=Object.freeze({type:"hard",required:"hard",const:"hard",minItems:"hard",enum:"soft",maxItems:"soft",minLength:"soft",maxLength:"soft",pattern:"soft",minimum:"soft",maximum:"soft",exclusiveMinimum:"soft",exclusiveMaximum:"soft",uniqueItems:"soft"}),W="soft";function X(e){return Object.prototype.hasOwnProperty.call(I,e)}function Y(e,r){if(r&&Object.prototype.hasOwnProperty.call(r,e)){const t=r[e];if(t&&typeof t=="object")return t}return X(e)?I[e]:null}function ee(e){const r=e.slice(0,3).map(d=>d.message),t=e.length-r.length;return r.join("; ")+(t>0?`; and ${t} more`:"")}function L(e,r,t){const d=Y(e,t);if(d===null)return null;const s=M(d,r);if(s.valid)return{ok:!0,tier:"ok",issues:[],hard:[],summary:""};const i=s.issues.map(n=>({...n,tier:V[n.keyword]??W})),o=i.filter(n=>n.tier==="hard");return{ok:!1,tier:o.length>0?"hard":"soft",issues:i,hard:o,summary:ee(o.length>0?o:i)}}function w(e){return`invalid card data (${e.tier}): ${e.summary}`}var te=c('<div data-card-fallback role=alert class="flex items-center gap-2 p-4 text-sm text-muted-foreground"><span>Unsupported card type: <code class=font-mono>'),re=c('<div data-card-fallback data-card-invalid role=alert class="flex items-start gap-2 p-4 text-sm text-muted-foreground"><span class=min-w-0>Invalid <code class=font-mono></code> card: <code data-card-invalid-reason class="font-mono break-words">');function v(e){return a(F,{get children(){return a(g,{get when(){return e.reason},get fallback(){return(()=>{var r=te(),t=r.firstChild,d=t.firstChild,s=d.nextSibling;return l(r,a(j,{class:"size-4 shrink-0 text-destructive dark:text-red-400","aria-hidden":"true"}),t),l(s,()=>e.type),r})()},children:r=>(()=>{var t=re(),d=t.firstChild,s=d.firstChild,i=s.nextSibling,o=i.nextSibling,n=o.nextSibling;return l(t,a(j,{class:"size-4 shrink-0 translate-y-0.5 text-destructive dark:text-red-400","aria-hidden":"true"}),d),l(i,()=>e.type),l(n,r),t})()})}})}function q(e,r){return e||(r?{context:()=>({theme:{mode:"light"},locale:"en"}),emit:t=>U(r,t)}:void 0)}function C(e,r){if(!e||!Object.prototype.hasOwnProperty.call(e,r))return!1;const t=e[r];return typeof t=="object"&&t!==null}function ne(e){const r=k(),t=y(()=>q(r,e.hostElement)),d=y(()=>Q(e.types)),s=y(()=>d()[e.envelope.type]),i=y(()=>e.validateCards===!1||!C(e.schemas,e.envelope.type)&&s()!==h[e.envelope.type]?null:L(e.envelope.type,e.envelope.data,e.schemas));let o=null;return S(()=>{var n;const p=i();if(!s())return;if(!p||p.ok){o=null;return}const u=w(p);u!==o&&(o=u,(n=t())==null||n.emit({kind:"error",cardId:e.envelope.id,message:u}))}),a(g,{get when(){return s()},get fallback(){return a(ie,{get envelope(){return e.envelope},get hostElement(){return e.hostElement}})},children:n=>a(g,{get when(){var p;return((p=i())==null?void 0:p.tier)==="hard"},get fallback(){return a(z,{get component(){return n()},get envelope(){return e.envelope},get host(){return t()}})},get children(){return a(v,{get type(){return e.envelope.type},get cardId(){return e.envelope.id},get reason(){return i().summary}})}})})}function ie(e){const r=k();return f(()=>{var t;return(t=q(r,e.hostElement))==null?void 0:t.emit({kind:"error",cardId:e.envelope.id,message:`Unsupported card type: ${e.envelope.type}`})}),a(v,{get type(){return e.envelope.type},get cardId(){return e.envelope.id}})}export{h as B,v as C,ne as a,w as c,C as h,L as v};
@@ -0,0 +1 @@
1
+ import{I as o}from"./Icon-BzBET3E-.js";import{c as m,q as r}from"./define-CI0y3eE4.js";var c=[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]],e=a=>m(o,r(a,{name:"Check",iconNode:c})),f=e;export{f as c};
@@ -1 +1 @@
1
- import{s as c,u as i,j as o,p as f,q as m,t as p}from"./define-By-uL588.js";import{c as u}from"./cn-DN5AWfiS.js";var l=p("<input>");function x(n){const[t,r]=c(n,["class","indeterminate","ref"]);return(()=>{var e=l();return i(s=>{const a=t.ref;typeof a=="function"&&a(s),o(()=>{s.indeterminate=!!t.indeterminate})},e),f(e,m(r,{type:"checkbox",get class(){return u("kai-checkbox",t.class)}}),!1,!1),e})()}export{x as C};
1
+ import{s as c,u as i,j as o,p as f,q as m,t as p}from"./define-CI0y3eE4.js";import{c as u}from"./cn-DN5AWfiS.js";var l=p("<input>");function x(n){const[t,r]=c(n,["class","indeterminate","ref"]);return(()=>{var e=l();return i(s=>{const a=t.ref;typeof a=="function"&&a(s),o(()=>{s.indeterminate=!!t.indeterminate})},e),f(e,m(r,{type:"checkbox",get class(){return u("kai-checkbox",t.class)}}),!1,!1),e})()}export{x as C};
@@ -1 +1 @@
1
- import{s as C,p as k,q as w,i as n,c as o,S as b,a as B,b as S,F as y,t as i}from"./define-By-uL588.js";import{c as m}from"./cn-DN5AWfiS.js";import{C as O}from"./checkbox-D7iRB3nL.js";var F=i("<div>"),q=i("<label>"),G=i('<span class="flex flex-col gap-0.5"><span></span><span class="text-xs font-normal text-muted-foreground">'),P=i("<span>");function T(f){const[r,h]=C(f,["options","value","name","disabled","label","onChange","onOptionBlur","itemClass","children","class"]),g=()=>r.value??[];return(()=>{var d=F();return k(d,w(h,{role:"group",get"aria-label"(){return r.label},get class(){return m("divide-y divide-border overflow-hidden rounded-lg border border-border",r.class)}}),!1,!0),n(d,o(y,{get each(){return r.options},children:e=>{const u=()=>g().includes(e.value),v=()=>!!(r.disabled||e.disabled);return(()=>{var l=q();return n(l,o(O,{get name(){return r.name},get value(){return String(e.value)},get checked(){return u()},get disabled(){return v()},get class(){return e.description===void 0?void 0:"mt-0.5"},onChange:t=>{var a;const s=t.currentTarget.checked,p=g(),x=s?[...p.filter(c=>c!==e.value),e.value]:p.filter(c=>c!==e.value);(a=r.onChange)==null||a.call(r,x,e,s)},onBlur:()=>{var t;return(t=r.onOptionBlur)==null?void 0:t.call(r)}}),null),n(l,o(b,{get when(){return r.children},get fallback(){return o(b,{get when(){return e.description!==void 0},get fallback(){return(()=>{var t=P();return n(t,()=>e.label),t})()},get children(){var t=G(),a=t.firstChild,s=a.nextSibling;return n(a,()=>e.label),n(s,()=>e.description),t}})},children:t=>t()(e,{checked:u(),disabled:v()})}),null),B(()=>S(l,m("flex cursor-pointer items-center gap-3 px-3 py-2.5 text-sm transition-colors",e.description!==void 0&&"items-start",u()?"bg-accent font-medium text-accent-foreground":"text-foreground hover:bg-muted/50",r.itemClass))),l})()}})),d})()}export{T as C};
1
+ import{s as C,p as k,q as w,i as n,c as o,S as b,a as B,b as S,F as y,t as i}from"./define-CI0y3eE4.js";import{c as m}from"./cn-DN5AWfiS.js";import{C as O}from"./checkbox-Bu2T2e0U.js";var F=i("<div>"),q=i("<label>"),G=i('<span class="flex flex-col gap-0.5"><span></span><span class="text-xs font-normal text-muted-foreground">'),P=i("<span>");function T(f){const[r,h]=C(f,["options","value","name","disabled","label","onChange","onOptionBlur","itemClass","children","class"]),g=()=>r.value??[];return(()=>{var d=F();return k(d,w(h,{role:"group",get"aria-label"(){return r.label},get class(){return m("divide-y divide-border overflow-hidden rounded-lg border border-border",r.class)}}),!1,!0),n(d,o(y,{get each(){return r.options},children:e=>{const u=()=>g().includes(e.value),v=()=>!!(r.disabled||e.disabled);return(()=>{var l=q();return n(l,o(O,{get name(){return r.name},get value(){return String(e.value)},get checked(){return u()},get disabled(){return v()},get class(){return e.description===void 0?void 0:"mt-0.5"},onChange:t=>{var a;const s=t.currentTarget.checked,p=g(),x=s?[...p.filter(c=>c!==e.value),e.value]:p.filter(c=>c!==e.value);(a=r.onChange)==null||a.call(r,x,e,s)},onBlur:()=>{var t;return(t=r.onOptionBlur)==null?void 0:t.call(r)}}),null),n(l,o(b,{get when(){return r.children},get fallback(){return o(b,{get when(){return e.description!==void 0},get fallback(){return(()=>{var t=P();return n(t,()=>e.label),t})()},get children(){var t=G(),a=t.firstChild,s=a.nextSibling;return n(a,()=>e.label),n(s,()=>e.description),t}})},children:t=>t()(e,{checked:u(),disabled:v()})}),null),B(()=>S(l,m("flex cursor-pointer items-center gap-3 px-3 py-2.5 text-sm transition-colors",e.description!==void 0&&"items-start",u()?"bg-accent font-medium text-accent-foreground":"text-foreground hover:bg-muted/50",r.itemClass))),l})()}})),d})()}export{T as C};
@@ -0,0 +1 @@
1
+ import{I as r}from"./Icon-BzBET3E-.js";import{c as a,q as m}from"./define-CI0y3eE4.js";var e=[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]],n=o=>a(r,m(o,{name:"ChevronDown",iconNode:e})),p=n;export{p as c};
@@ -0,0 +1 @@
1
+ import{I as a}from"./Icon-BzBET3E-.js";import{c as m,q as r}from"./define-CI0y3eE4.js";var t=[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]],e=o=>m(a,r(o,{name:"ChevronRight",iconNode:t})),h=e;export{h as c};
@@ -1 +1 @@
1
- import{q as ve,s as fe,k,g as H,j as U,x as ee,o as he,c as l,E as be,S as f,i as u,F as ye,a as w,d as h,b as O,u as re,w as ke,t as m,m as E,e as xe}from"./define-By-uL588.js";import{c as _}from"./cn-DN5AWfiS.js";import{B as te}from"./button-DkuOnGLy.js";import{a as we}from"./radio-BsoBMhkF.js";import{c as Ie}from"./hover-card-BQbul9eq.js";import{u as De,a as Ae,C as G,D as Re}from"./use-card-resolution-DaZqAdWf.js";import{e as $e}from"./card-routing-0YidER_3.js";import{c as Ce}from"./check-njkVdZu2.js";var Ee=m("<div role=radiogroup>"),je=m('<div class="flex flex-col gap-2"><label class=sr-only></label><input type=text class="w-full rounded-md border border-input bg-background px-3 py-2 text-sm text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-60">'),Se=m('<div class="flex w-full flex-wrap items-center justify-between gap-2">'),Te=m("<div>"),Le=m('<span class="inline-flex items-center rounded-full bg-[var(--color-primary)] px-1.5 py-0.5 text-micro font-medium uppercase leading-none tracking-wide text-[var(--color-primary-foreground,white)]">Recommended'),Me=m("<img>"),Ve=m('<span aria-hidden=true class="flex h-9 w-9 shrink-0 items-center justify-center rounded-md bg-muted text-sm font-medium text-muted-foreground">'),Fe=m('<img class="max-h-80 max-w-80 rounded-md object-contain">'),Oe=m('<span class="text-xs font-normal text-muted-foreground">'),_e=m('<span class="ml-auto shrink-0 text-xs font-normal text-muted-foreground">'),qe=m('<label><span class="flex min-w-0 flex-col gap-0.5"><span class="flex items-center gap-2"><span class=truncate>'),Pe=m("<span>"),ze=m('<span class="ml-auto text-xs font-normal text-muted-foreground">'),Be=m('<div class="flex items-center gap-3 rounded-lg border border-border bg-accent px-3 py-2.5 text-sm font-medium text-accent-foreground">'),He=m("<span>Other: ");const Ue="choice",I="__other__",J="Other\u2026";function Ge(r){if(!Array.isArray(r)||r.length===0)return{options:[],error:"This card couldn't be displayed."};const d=new Set,t=[];for(const i of r){if(!i||typeof i!="object")continue;const o=i;if(typeof o.id!="string"||o.id.length===0||typeof o.label!="string"||o.label.length===0)continue;if(d.has(o.id)){console.warn(`[kai-choice] duplicate option id "${o.id}" ignored`);continue}d.add(o.id);const c=o.media&&typeof o.media=="object"?{image:typeof o.media.image=="string"?o.media.image:void 0,imageAlt:typeof o.media.imageAlt=="string"?o.media.imageAlt:void 0,icon:typeof o.media.icon=="string"?o.media.icon:void 0}:void 0;t.push({id:o.id,label:o.label,description:typeof o.description=="string"?o.description:void 0,media:c,meta:typeof o.meta=="string"?o.meta:void 0,recommended:o.recommended===!0,disabled:o.disabled===!0,payload:o.payload})}return t.length===0?{options:[],error:"This card couldn't be displayed."}:{options:t}}function Je(r){return r?r===!0?{label:J,placeholder:void 0}:typeof r=="object"?{label:typeof r.label=="string"&&r.label.length>0?r.label:J,placeholder:typeof r.placeholder=="string"?r.placeholder:void 0}:null:null}function ne(r,d,t){const i=r.length;if(i===0)return d;for(let o=1;o<=i;o+=1){const c=((d+t*o)%i+i)%i;if(!r[c].disabled)return c}return d}function oe(r){return r.findIndex(d=>!d.disabled)}function Ke(r){const d=ve({cardId:"kai-choice"},r),[t]=fe(d,["data","cardId","heading","host","hostElement","class","resolution","value","defaultValue","disabled","onValueChange","controllerRef"]),i=De(),o=ke(),c=e=>{const n=t.host??i;n?n.emit(e):t.hostElement&&$e(t.hostElement,e)},T=k(()=>{var e;return Ge((e=t.data)==null?void 0:e.options)}),g=k(()=>T().error===void 0),b=k(()=>T().error??""),D=k(()=>T().options),j=k(()=>{var e;return Je((e=t.data)==null?void 0:e.allowOther)}),M=k(()=>{const e=j();return e?[...D(),{id:I,label:e.label}]:D()}),v=Ae({prop:()=>t.resolution,data:()=>t.data}),ae=k(()=>{const e=v.resolution();return e&&e.kind==="action"?e.action:void 0}),[q,A]=H(0),[ie,K]=H(r.defaultValue),L=k(()=>t.value??ie()),de=e=>{var n;L()!==e&&(K(e),(n=t.onValueChange)==null||n.call(t,e))},[P,N]=H(""),x=()=>t.disabled===!0;let V,S;const Q=k(()=>L()===I);U(ee(()=>t.data,()=>{K(t.defaultValue),N(""),A(Math.max(0,oe(M())))}));const le=k(()=>{var e;const n=v.resolution();return!n||n.kind!=="action"?void 0:n.action===I?{other:!0,text:((e=n.payload)==null?void 0:e.text)??""}:{other:!1,opt:D().find(s=>s.id===n.action),id:n.action}});U(ee(g,e=>{c(e?{kind:"ready",cardId:t.cardId}:{kind:"error",cardId:t.cardId,message:b()})})),U(()=>{const e=t.hostElement;if(!e)return;const n=ae();n!==void 0?e.setAttribute("data-kai-resolved",n):e.removeAttribute("data-kai-resolved")});const se=e=>e.id===I,z=e=>{v.isResolved()||x()||e.disabled||(de(e.id),se(e)&&queueMicrotask(()=>S?.focus()))},ce=k(()=>{if(v.isResolved()||x())return!1;const e=L();return e===void 0?!1:e===I?P().trim().length>0:!0}),ue=()=>{var e;return((e=t.data)==null?void 0:e.submitLabel)??"Submit"},B=()=>{if(v.isResolved()||x())return;const e=L();if(e===void 0)return;if(e===I){const s=P().trim();if(s.length===0)return;c({kind:"action",cardId:t.cardId,action:I,payload:{text:s}}),v.setLocal({kind:"action",action:I,payload:{text:s}});return}const n=D().find(s=>s.id===e);n&&(c({kind:"action",cardId:t.cardId,action:n.id,...n.payload!==void 0?{payload:n.payload}:{}}),v.setLocal({kind:"action",action:n.id,...n.payload!==void 0?{payload:n.payload}:{}}))},W=()=>{v.isResolved()||(c({kind:"dismiss",cardId:t.cardId}),v.setLocal({kind:"dismissed"}))},Y=()=>c({kind:"reopen",cardId:t.cardId}),F=(e,n)=>{var s;const a=V?.querySelectorAll('[role="radio"]');(s=a?.[e])==null||s.focus(n)};he(()=>{var e;(e=t.controllerRef)==null||e.call(t,{focus:n=>{Q()&&S?S.focus(n):F(q(),n)},select:n=>{const s=M(),a=s.findIndex(y=>y.id===n);a!==-1&&(A(a),z(s[a]))},send:()=>B(),dismiss:()=>W(),reopen:()=>Y()})});const ge=e=>{if(v.isResolved()||x())return;const n=M(),s=q();if(e.key==="ArrowDown"||e.key==="ArrowRight"){e.preventDefault();const a=ne(n,s,1);A(a),F(a)}else if(e.key==="ArrowUp"||e.key==="ArrowLeft"){e.preventDefault();const a=ne(n,s,-1);A(a),F(a)}else if(e.key==="Home"){e.preventDefault();const a=Math.max(0,oe(n));A(a),F(a)}else if(e.key===" "||e.key==="Enter"){e.preventDefault();const a=n[s];a&&z(a)}},pe=()=>{var e;return t.heading??((e=t.data)==null?void 0:e.prompt)??"Choose an option"},X=`kai-choice-prompt-${o}`,Z=`kai-choice-other-${o}`,me=`kai-choice-${o}`;return l(f,{get when(){return g()},get fallback(){return l(G,{get heading(){return t.heading},get errorMessage(){return b()}})},get children(){return l(be,{fallback:()=>(c({kind:"error",cardId:t.cardId,message:"The card failed to render."}),l(G,{get heading(){return t.heading},errorMessage:"The card failed to render."})),get children(){return l(f,{get when(){return!v.isDeferred()},get fallback(){return l(Re,{type:Ue,get title(){return t.heading},onReopen:Y})},get children(){return l(G,{get heading(){return t.heading},get description(){var e;return(e=t.data)==null?void 0:e.prompt},descriptionId:X,get children(){var e=Te();return u(e,l(f,{get when(){return!v.isResolved()},get fallback(){return l(Xe,{get choice(){return le()},get optimistic(){return v.isOptimistic()}})},get children(){return[(()=>{var n=Ee();n.$$keydown=ge;var s=V;return typeof s=="function"?re(s,n):V=n,u(n,l(ye,{get each(){return M()},children:(a,y)=>{const p=()=>L()===a.id,R=()=>!a.disabled&&!x()&&y()===q()&&!v.isResolved(),$=`kai-choice-desc-${o}-${a.id}`,C=()=>!!a.description;return l(Ye,{opt:a,name:me,get checked(){return p()},get tabStop(){return R()},get groupDisabled(){return x()},descId:$,get hasDesc(){return C()},onPick:()=>{A(y()),z(a)},onFocus:()=>A(y())})}})),w(a=>{var y,p=pe(),R=(y=t.data)!=null&&y.prompt?X:void 0,$=x()?"true":void 0,C=_("divide-y divide-border overflow-hidden rounded-lg border border-border",x()&&"cursor-not-allowed opacity-60");return p!==a.e&&h(n,"aria-label",a.e=p),R!==a.t&&h(n,"aria-describedby",a.t=R),$!==a.a&&h(n,"aria-disabled",a.a=$),C!==a.o&&O(n,a.o=C),a},{e:void 0,t:void 0,a:void 0,o:void 0}),n})(),l(f,{get when(){return Q()},get children(){var n=je(),s=n.firstChild,a=s.nextSibling;h(s,"for",Z),u(s,()=>{var p;return((p=j())==null?void 0:p.label)??J}),a.$$keydown=p=>{p.key==="Enter"&&(p.preventDefault(),B())},a.$$input=p=>N(p.currentTarget.value);var y=S;return typeof y=="function"?re(y,a):S=a,h(a,"id",Z),w(p=>{var R,$=x(),C=(R=j())==null?void 0:R.placeholder;return $!==p.e&&(a.disabled=p.e=$),C!==p.t&&h(a,"placeholder",p.t=C),p},{e:void 0,t:void 0}),w(()=>a.value=P()),n}}),(()=>{var n=Se();return u(n,l(f,{get when(){var s;return((s=t.data)==null?void 0:s.dismissible)===!0},get children(){return l(te,{type:"button",variant:"ghost","aria-label":"Dismiss",onClick:W,children:"Dismiss"})}}),null),u(n,l(te,{type:"button",class:"ml-auto",get disabled(){return!ce()},onClick:B,get children(){return ue()}}),null),n})()]}})),w(()=>O(e,_("flex flex-col gap-3",t.class))),e}})}})}})}})}function Ne(){return Le()}function Qe(r){return(()=>{var d=Me();return w(t=>{var i=r.media.image,o=r.media.imageAlt??"",c=_("shrink-0 rounded-md object-cover",r.class);return i!==t.e&&h(d,"src",t.e=i),o!==t.t&&h(d,"alt",t.t=o),c!==t.a&&O(d,t.a=c),t},{e:void 0,t:void 0,a:void 0}),d})()}function We(r){return(()=>{var d=Ve();return u(d,()=>r.name.slice(0,2)),d})()}function Ye(r){const d=()=>r.opt.disabled===!0||r.groupDisabled,t=()=>{d()||r.onPick()};return(()=>{var i=qe(),o=i.firstChild,c=o.firstChild,T=c.firstChild;return i.$$click=t,u(i,l(we,{role:"radio",get name(){return r.name},get value(){return r.opt.id},get checked(){return r.checked},get disabled(){return d()},get"aria-checked"(){return r.checked},get"aria-disabled"(){return r.opt.disabled?"true":void 0},get"aria-describedby"(){return E(()=>!!r.hasDesc)()?r.descId:void 0},get"data-option-id"(){return r.opt.id},get tabindex(){return E(()=>!!r.opt.disabled)()?-1:r.tabStop?0:-1},class:"focus-visible:outline-none",onChange:t,get onFocus(){return r.onFocus}}),o),u(i,l(f,{get when(){var g;return(g=r.opt.media)==null?void 0:g.image},get children(){return l(Ie,{openDelay:150,class:"p-1 w-auto",placement:"right-start",get trigger(){return l(Qe,{get media(){return r.opt.media},class:"h-9 w-9"})},get children(){var g=Fe();return w(b=>{var D=r.opt.media.image,j=r.opt.media.imageAlt??"";return D!==b.e&&h(g,"src",b.e=D),j!==b.t&&h(g,"alt",b.t=j),b},{e:void 0,t:void 0}),g}})}}),o),u(i,l(f,{get when(){var g;return E(()=>{var b;return!((b=r.opt.media)!=null&&b.image)})()&&((g=r.opt.media)==null?void 0:g.icon)},get children(){return l(We,{get name(){return r.opt.media.icon}})}}),o),u(T,()=>r.opt.label),u(c,l(f,{get when(){return r.opt.recommended},get children(){return l(Ne,{})}}),null),u(o,l(f,{get when(){return r.opt.description},get children(){var g=Oe();return u(g,()=>r.opt.description),w(()=>h(g,"id",r.descId)),g}}),null),u(i,l(f,{get when(){return r.opt.meta},get children(){var g=_e();return u(g,()=>r.opt.meta),g}}),null),w(()=>O(i,_("flex items-center gap-3 px-3 py-2.5 text-sm transition-colors","has-[:focus-visible]:ring-2 has-[:focus-visible]:ring-inset has-[:focus-visible]:ring-ring",r.opt.disabled?"cursor-not-allowed opacity-60 text-foreground":"cursor-pointer hover:bg-muted/50",r.checked?"bg-accent font-medium text-accent-foreground":"text-foreground"))),i})()}function Xe(r){const d=r.choice;return(()=>{var t=Be();return u(t,l(Ce,{size:16,"aria-hidden":"true"}),null),u(t,l(f,{get when(){return!d.other},get fallback(){return(()=>{var i=He();return i.firstChild,u(i,(()=>{var o=E(()=>!!d.other);return()=>o()?d.text:""})(),null),i})()},get children(){return[(()=>{var i=Pe();return u(i,(()=>{var o=E(()=>!d.other);return()=>{var c;return o()?((c=d.opt)==null?void 0:c.label)??d.id:""}})()),i})(),l(f,{get when(){var i;return E(()=>!d.other)()&&((i=d.opt)==null?void 0:i.meta)},get children(){var i=ze();return u(i,(()=>{var o=E(()=>!d.other);return()=>{var c;return o()?(c=d.opt)==null?void 0:c.meta:""}})()),i}})]}}),null),w(()=>h(t,"role",r.optimistic?"status":void 0)),t})()}xe(["keydown","input","click"]);export{Ke as C};
1
+ import{q as ve,s as fe,k,g as H,j as U,x as ee,o as he,c as l,E as be,S as f,i as u,F as ye,a as w,d as h,b as O,u as re,w as ke,t as m,m as E,e as xe}from"./define-CI0y3eE4.js";import{c as _}from"./cn-DN5AWfiS.js";import{B as te}from"./button-C_3te6fm.js";import{a as we}from"./radio-C_p3n39l.js";import{c as Ie}from"./hover-card-CWRkqm40.js";import{u as De,a as Ae,C as G,D as Re}from"./use-card-resolution-Zg0a08Z-.js";import{e as $e}from"./card-routing-0YidER_3.js";import{c as Ce}from"./check-CiEOVnEN.js";var Ee=m("<div role=radiogroup>"),je=m('<div class="flex flex-col gap-2"><label class=sr-only></label><input type=text class="w-full rounded-md border border-input bg-background px-3 py-2 text-sm text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-60">'),Se=m('<div class="flex w-full flex-wrap items-center justify-between gap-2">'),Te=m("<div>"),Le=m('<span class="inline-flex items-center rounded-full bg-[var(--color-primary)] px-1.5 py-0.5 text-micro font-medium uppercase leading-none tracking-wide text-[var(--color-primary-foreground,white)]">Recommended'),Me=m("<img>"),Ve=m('<span aria-hidden=true class="flex h-9 w-9 shrink-0 items-center justify-center rounded-md bg-muted text-sm font-medium text-muted-foreground">'),Fe=m('<img class="max-h-80 max-w-80 rounded-md object-contain">'),Oe=m('<span class="text-xs font-normal text-muted-foreground">'),_e=m('<span class="ml-auto shrink-0 text-xs font-normal text-muted-foreground">'),qe=m('<label><span class="flex min-w-0 flex-col gap-0.5"><span class="flex items-center gap-2"><span class=truncate>'),Pe=m("<span>"),ze=m('<span class="ml-auto text-xs font-normal text-muted-foreground">'),Be=m('<div class="flex items-center gap-3 rounded-lg border border-border bg-accent px-3 py-2.5 text-sm font-medium text-accent-foreground">'),He=m("<span>Other: ");const Ue="choice",I="__other__",J="Other\u2026";function Ge(r){if(!Array.isArray(r)||r.length===0)return{options:[],error:"This card couldn't be displayed."};const d=new Set,t=[];for(const i of r){if(!i||typeof i!="object")continue;const o=i;if(typeof o.id!="string"||o.id.length===0||typeof o.label!="string"||o.label.length===0)continue;if(d.has(o.id)){console.warn(`[kai-choice] duplicate option id "${o.id}" ignored`);continue}d.add(o.id);const c=o.media&&typeof o.media=="object"?{image:typeof o.media.image=="string"?o.media.image:void 0,imageAlt:typeof o.media.imageAlt=="string"?o.media.imageAlt:void 0,icon:typeof o.media.icon=="string"?o.media.icon:void 0}:void 0;t.push({id:o.id,label:o.label,description:typeof o.description=="string"?o.description:void 0,media:c,meta:typeof o.meta=="string"?o.meta:void 0,recommended:o.recommended===!0,disabled:o.disabled===!0,payload:o.payload})}return t.length===0?{options:[],error:"This card couldn't be displayed."}:{options:t}}function Je(r){return r?r===!0?{label:J,placeholder:void 0}:typeof r=="object"?{label:typeof r.label=="string"&&r.label.length>0?r.label:J,placeholder:typeof r.placeholder=="string"?r.placeholder:void 0}:null:null}function ne(r,d,t){const i=r.length;if(i===0)return d;for(let o=1;o<=i;o+=1){const c=((d+t*o)%i+i)%i;if(!r[c].disabled)return c}return d}function oe(r){return r.findIndex(d=>!d.disabled)}function Ke(r){const d=ve({cardId:"kai-choice"},r),[t]=fe(d,["data","cardId","heading","host","hostElement","class","resolution","value","defaultValue","disabled","onValueChange","controllerRef"]),i=De(),o=ke(),c=e=>{const n=t.host??i;n?n.emit(e):t.hostElement&&$e(t.hostElement,e)},T=k(()=>{var e;return Ge((e=t.data)==null?void 0:e.options)}),g=k(()=>T().error===void 0),b=k(()=>T().error??""),D=k(()=>T().options),j=k(()=>{var e;return Je((e=t.data)==null?void 0:e.allowOther)}),M=k(()=>{const e=j();return e?[...D(),{id:I,label:e.label}]:D()}),v=Ae({prop:()=>t.resolution,data:()=>t.data}),ae=k(()=>{const e=v.resolution();return e&&e.kind==="action"?e.action:void 0}),[q,A]=H(0),[ie,K]=H(r.defaultValue),L=k(()=>t.value??ie()),de=e=>{var n;L()!==e&&(K(e),(n=t.onValueChange)==null||n.call(t,e))},[P,N]=H(""),x=()=>t.disabled===!0;let V,S;const Q=k(()=>L()===I);U(ee(()=>t.data,()=>{K(t.defaultValue),N(""),A(Math.max(0,oe(M())))}));const le=k(()=>{var e;const n=v.resolution();return!n||n.kind!=="action"?void 0:n.action===I?{other:!0,text:((e=n.payload)==null?void 0:e.text)??""}:{other:!1,opt:D().find(s=>s.id===n.action),id:n.action}});U(ee(g,e=>{c(e?{kind:"ready",cardId:t.cardId}:{kind:"error",cardId:t.cardId,message:b()})})),U(()=>{const e=t.hostElement;if(!e)return;const n=ae();n!==void 0?e.setAttribute("data-kai-resolved",n):e.removeAttribute("data-kai-resolved")});const se=e=>e.id===I,z=e=>{v.isResolved()||x()||e.disabled||(de(e.id),se(e)&&queueMicrotask(()=>S?.focus()))},ce=k(()=>{if(v.isResolved()||x())return!1;const e=L();return e===void 0?!1:e===I?P().trim().length>0:!0}),ue=()=>{var e;return((e=t.data)==null?void 0:e.submitLabel)??"Submit"},B=()=>{if(v.isResolved()||x())return;const e=L();if(e===void 0)return;if(e===I){const s=P().trim();if(s.length===0)return;c({kind:"action",cardId:t.cardId,action:I,payload:{text:s}}),v.setLocal({kind:"action",action:I,payload:{text:s}});return}const n=D().find(s=>s.id===e);n&&(c({kind:"action",cardId:t.cardId,action:n.id,...n.payload!==void 0?{payload:n.payload}:{}}),v.setLocal({kind:"action",action:n.id,...n.payload!==void 0?{payload:n.payload}:{}}))},W=()=>{v.isResolved()||(c({kind:"dismiss",cardId:t.cardId}),v.setLocal({kind:"dismissed"}))},Y=()=>c({kind:"reopen",cardId:t.cardId}),F=(e,n)=>{var s;const a=V?.querySelectorAll('[role="radio"]');(s=a?.[e])==null||s.focus(n)};he(()=>{var e;(e=t.controllerRef)==null||e.call(t,{focus:n=>{Q()&&S?S.focus(n):F(q(),n)},select:n=>{const s=M(),a=s.findIndex(y=>y.id===n);a!==-1&&(A(a),z(s[a]))},send:()=>B(),dismiss:()=>W(),reopen:()=>Y()})});const ge=e=>{if(v.isResolved()||x())return;const n=M(),s=q();if(e.key==="ArrowDown"||e.key==="ArrowRight"){e.preventDefault();const a=ne(n,s,1);A(a),F(a)}else if(e.key==="ArrowUp"||e.key==="ArrowLeft"){e.preventDefault();const a=ne(n,s,-1);A(a),F(a)}else if(e.key==="Home"){e.preventDefault();const a=Math.max(0,oe(n));A(a),F(a)}else if(e.key===" "||e.key==="Enter"){e.preventDefault();const a=n[s];a&&z(a)}},pe=()=>{var e;return t.heading??((e=t.data)==null?void 0:e.prompt)??"Choose an option"},X=`kai-choice-prompt-${o}`,Z=`kai-choice-other-${o}`,me=`kai-choice-${o}`;return l(f,{get when(){return g()},get fallback(){return l(G,{get heading(){return t.heading},get errorMessage(){return b()}})},get children(){return l(be,{fallback:()=>(c({kind:"error",cardId:t.cardId,message:"The card failed to render."}),l(G,{get heading(){return t.heading},errorMessage:"The card failed to render."})),get children(){return l(f,{get when(){return!v.isDeferred()},get fallback(){return l(Re,{type:Ue,get title(){return t.heading},onReopen:Y})},get children(){return l(G,{get heading(){return t.heading},get description(){var e;return(e=t.data)==null?void 0:e.prompt},descriptionId:X,get children(){var e=Te();return u(e,l(f,{get when(){return!v.isResolved()},get fallback(){return l(Xe,{get choice(){return le()},get optimistic(){return v.isOptimistic()}})},get children(){return[(()=>{var n=Ee();n.$$keydown=ge;var s=V;return typeof s=="function"?re(s,n):V=n,u(n,l(ye,{get each(){return M()},children:(a,y)=>{const p=()=>L()===a.id,R=()=>!a.disabled&&!x()&&y()===q()&&!v.isResolved(),$=`kai-choice-desc-${o}-${a.id}`,C=()=>!!a.description;return l(Ye,{opt:a,name:me,get checked(){return p()},get tabStop(){return R()},get groupDisabled(){return x()},descId:$,get hasDesc(){return C()},onPick:()=>{A(y()),z(a)},onFocus:()=>A(y())})}})),w(a=>{var y,p=pe(),R=(y=t.data)!=null&&y.prompt?X:void 0,$=x()?"true":void 0,C=_("divide-y divide-border overflow-hidden rounded-lg border border-border",x()&&"cursor-not-allowed opacity-60");return p!==a.e&&h(n,"aria-label",a.e=p),R!==a.t&&h(n,"aria-describedby",a.t=R),$!==a.a&&h(n,"aria-disabled",a.a=$),C!==a.o&&O(n,a.o=C),a},{e:void 0,t:void 0,a:void 0,o:void 0}),n})(),l(f,{get when(){return Q()},get children(){var n=je(),s=n.firstChild,a=s.nextSibling;h(s,"for",Z),u(s,()=>{var p;return((p=j())==null?void 0:p.label)??J}),a.$$keydown=p=>{p.key==="Enter"&&(p.preventDefault(),B())},a.$$input=p=>N(p.currentTarget.value);var y=S;return typeof y=="function"?re(y,a):S=a,h(a,"id",Z),w(p=>{var R,$=x(),C=(R=j())==null?void 0:R.placeholder;return $!==p.e&&(a.disabled=p.e=$),C!==p.t&&h(a,"placeholder",p.t=C),p},{e:void 0,t:void 0}),w(()=>a.value=P()),n}}),(()=>{var n=Se();return u(n,l(f,{get when(){var s;return((s=t.data)==null?void 0:s.dismissible)===!0},get children(){return l(te,{type:"button",variant:"ghost","aria-label":"Dismiss",onClick:W,children:"Dismiss"})}}),null),u(n,l(te,{type:"button",class:"ml-auto",get disabled(){return!ce()},onClick:B,get children(){return ue()}}),null),n})()]}})),w(()=>O(e,_("flex flex-col gap-3",t.class))),e}})}})}})}})}function Ne(){return Le()}function Qe(r){return(()=>{var d=Me();return w(t=>{var i=r.media.image,o=r.media.imageAlt??"",c=_("shrink-0 rounded-md object-cover",r.class);return i!==t.e&&h(d,"src",t.e=i),o!==t.t&&h(d,"alt",t.t=o),c!==t.a&&O(d,t.a=c),t},{e:void 0,t:void 0,a:void 0}),d})()}function We(r){return(()=>{var d=Ve();return u(d,()=>r.name.slice(0,2)),d})()}function Ye(r){const d=()=>r.opt.disabled===!0||r.groupDisabled,t=()=>{d()||r.onPick()};return(()=>{var i=qe(),o=i.firstChild,c=o.firstChild,T=c.firstChild;return i.$$click=t,u(i,l(we,{role:"radio",get name(){return r.name},get value(){return r.opt.id},get checked(){return r.checked},get disabled(){return d()},get"aria-checked"(){return r.checked},get"aria-disabled"(){return r.opt.disabled?"true":void 0},get"aria-describedby"(){return E(()=>!!r.hasDesc)()?r.descId:void 0},get"data-option-id"(){return r.opt.id},get tabindex(){return E(()=>!!r.opt.disabled)()?-1:r.tabStop?0:-1},class:"focus-visible:outline-none",onChange:t,get onFocus(){return r.onFocus}}),o),u(i,l(f,{get when(){var g;return(g=r.opt.media)==null?void 0:g.image},get children(){return l(Ie,{openDelay:150,class:"p-1 w-auto",placement:"right-start",get trigger(){return l(Qe,{get media(){return r.opt.media},class:"h-9 w-9"})},get children(){var g=Fe();return w(b=>{var D=r.opt.media.image,j=r.opt.media.imageAlt??"";return D!==b.e&&h(g,"src",b.e=D),j!==b.t&&h(g,"alt",b.t=j),b},{e:void 0,t:void 0}),g}})}}),o),u(i,l(f,{get when(){var g;return E(()=>{var b;return!((b=r.opt.media)!=null&&b.image)})()&&((g=r.opt.media)==null?void 0:g.icon)},get children(){return l(We,{get name(){return r.opt.media.icon}})}}),o),u(T,()=>r.opt.label),u(c,l(f,{get when(){return r.opt.recommended},get children(){return l(Ne,{})}}),null),u(o,l(f,{get when(){return r.opt.description},get children(){var g=Oe();return u(g,()=>r.opt.description),w(()=>h(g,"id",r.descId)),g}}),null),u(i,l(f,{get when(){return r.opt.meta},get children(){var g=_e();return u(g,()=>r.opt.meta),g}}),null),w(()=>O(i,_("flex items-center gap-3 px-3 py-2.5 text-sm transition-colors","has-[:focus-visible]:ring-2 has-[:focus-visible]:ring-inset has-[:focus-visible]:ring-ring",r.opt.disabled?"cursor-not-allowed opacity-60 text-foreground":"cursor-pointer hover:bg-muted/50",r.checked?"bg-accent font-medium text-accent-foreground":"text-foreground"))),i})()}function Xe(r){const d=r.choice;return(()=>{var t=Be();return u(t,l(Ce,{size:16,"aria-hidden":"true"}),null),u(t,l(f,{get when(){return!d.other},get fallback(){return(()=>{var i=He();return i.firstChild,u(i,(()=>{var o=E(()=>!!d.other);return()=>o()?d.text:""})(),null),i})()},get children(){return[(()=>{var i=Pe();return u(i,(()=>{var o=E(()=>!d.other);return()=>{var c;return o()?((c=d.opt)==null?void 0:c.label)??d.id:""}})()),i})(),l(f,{get when(){var i;return E(()=>!d.other)()&&((i=d.opt)==null?void 0:i.meta)},get children(){var i=ze();return u(i,(()=>{var o=E(()=>!d.other);return()=>{var c;return o()?(c=d.opt)==null?void 0:c.meta:""}})()),i}})]}}),null),w(()=>h(t,"role",r.optimistic?"status":void 0)),t})()}xe(["keydown","input","click"]);export{Ke as C};
@@ -0,0 +1 @@
1
+ import{I as c}from"./Icon-BzBET3E-.js";import{c as o,q as a}from"./define-CI0y3eE4.js";var e=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]],m=r=>o(c,a(r,{name:"Circle",iconNode:e})),i=m;export{i as c};
@@ -0,0 +1 @@
1
+ import{I as m}from"./Icon-BzBET3E-.js";import{c as r,q as a}from"./define-CI0y3eE4.js";var e=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]],o=c=>r(m,a(c,{name:"CircleCheck",iconNode:e})),i=o;export{i as c};