@kitn.ai/ui 0.25.2 → 0.27.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 (603) hide show
  1. package/README.md +17 -6
  2. package/bin/mcp.js +16 -3
  3. package/bin/route.js +23 -0
  4. package/bin/route.test.js +58 -0
  5. package/dist/{elements/chunks/Icon-b5A8hlHs.js → Icon-BnFKqqtY.js} +1 -1
  6. package/dist/action-icons-CBskfBMz.js +1 -0
  7. package/dist/arrow-down-Br0qtpsz.js +1 -0
  8. package/dist/arrow-left-Dj7xgE12.js +1 -0
  9. package/dist/artifact-CvXEm1lS.js +1 -0
  10. package/dist/assets/dev-5XzXYR21.js +91 -0
  11. package/dist/attachments-C43ZegEq.js +1 -0
  12. package/dist/audio-visualizer-B-79y1Tj.js +1 -0
  13. package/dist/badge-BpUbq8c0.js +1 -0
  14. package/dist/bash-InADTalH.js +1 -6
  15. package/dist/bell-sn17Ip9v.js +1 -0
  16. package/dist/{elements/chunks/button-B9okqG73.js → button-BH6rN0U-.js} +1 -1
  17. package/dist/card-renderer-Cb1gQmth.js +1 -0
  18. package/dist/card-routing-DifQgS7n.js +1 -0
  19. package/dist/check-DPeeMUYx.js +1 -0
  20. package/dist/checkbox-Dc9Yov_B.js +1 -0
  21. package/dist/checkbox-group-B1kDLLYk.js +1 -0
  22. package/dist/chevron-down-CHSWk7ZT.js +1 -0
  23. package/dist/chevron-right-B7l_fMgx.js +1 -0
  24. package/dist/choice-card-BT3c1S8g.js +1 -0
  25. package/dist/circle-Bb0yOpqM.js +1 -0
  26. package/dist/circle-check-BGZpCiz7.js +1 -0
  27. package/dist/circle-x-wobWkoSx.js +1 -0
  28. package/dist/{elements/chunks/cn-CU7UAWzk.js → cn-DN5AWfiS.js} +1 -1
  29. package/dist/code-block-CUQ5mtv0.js +1 -0
  30. package/dist/collapsible-CPJbf6FM.js +1 -0
  31. package/dist/components/attachment-types.d.ts +53 -1
  32. package/dist/components/attachments.d.ts +31 -0
  33. package/dist/components/audio-visualizer/fit-scale.d.ts +50 -0
  34. package/dist/components/audio-visualizer/index.d.ts +15 -1
  35. package/dist/components/audio-visualizer/variant-bar.d.ts +24 -1
  36. package/dist/components/card-renderer.d.ts +13 -0
  37. package/dist/components/card.d.ts +4 -0
  38. package/dist/components/chat-thread.d.ts +49 -42
  39. package/dist/components/code-block.d.ts +22 -0
  40. package/dist/components/conversation-item.d.ts +66 -1
  41. package/dist/components/conversation-list.d.ts +77 -0
  42. package/dist/components/form-widgets.d.ts +67 -2
  43. package/dist/components/form.d.ts +89 -0
  44. package/dist/components/message.d.ts +29 -0
  45. package/dist/components/reasoning.d.ts +6 -0
  46. package/dist/components/scroll-button.d.ts +11 -0
  47. package/dist/components/thread.d.ts +5 -0
  48. package/dist/components/toast.d.ts +2 -1
  49. package/dist/components/tool-types.d.ts +9 -0
  50. package/dist/components/voice-input.d.ts +8 -0
  51. package/dist/components/voice-output.d.ts +12 -1
  52. package/dist/components/workspace-shell.d.ts +87 -0
  53. package/dist/composer-CjngLzal.js +106 -0
  54. package/dist/confirm-card-DCx_A4bU.js +1 -0
  55. package/dist/construct-cli.es.js +1169 -0
  56. package/dist/context-BY8V-Nlp.js +1 -0
  57. package/dist/controllable-D43BKmtX.js +1 -0
  58. package/dist/conversation-list-D4lLU_yS.js +1 -0
  59. package/dist/copy-B6DO4PqB.js +1 -0
  60. package/dist/core-AYMC6_lb.js +12 -5874
  61. package/dist/{create-tween-CUzOlaMS.js → create-tween-BPzaefTp.js} +1 -1
  62. package/dist/{create-tween-B5Y4Im8G.js → create-tween-CnMHviKB.js} +1 -1
  63. package/dist/{create-tween-4z1XYLkR.js → create-tween-D1aiGZZh.js} +1 -1
  64. package/dist/{elements/chunks/create-tween-CUrM6D_o.js → create-tween-DUSQUKpr.js} +2 -2
  65. package/dist/css-M7EaDHN_.js +1 -6
  66. package/dist/custom-elements.json +3468 -1927
  67. package/dist/default-input-CucQEOqH.js +1 -0
  68. package/dist/define-CGGX-7Vg.js +1 -0
  69. package/dist/define.d.ts +4 -0
  70. package/dist/define.js +510 -0
  71. package/dist/define.server.d.ts +5 -0
  72. package/dist/define.server.js +506 -0
  73. package/dist/diagnostics/hook.d.ts +81 -0
  74. package/dist/diagnostics/index.d.ts +7 -0
  75. package/dist/diagnostics/report-request.d.ts +61 -0
  76. package/dist/diagnostics.d.ts +5 -0
  77. package/dist/diagnostics.js +209 -0
  78. package/dist/disclosure-CbLtajUQ.js +1 -0
  79. package/dist/dropdown-BwhViJFd.js +1 -0
  80. package/dist/elements/agent-card.js +1 -1
  81. package/dist/elements/artifact.js +1 -1
  82. package/dist/elements/attachments.js +1 -1
  83. package/dist/elements/audio-visualizer.js +1 -1
  84. package/dist/elements/autoloader.js +1 -1
  85. package/dist/elements/avatar.js +1 -1
  86. package/dist/elements/badge.js +1 -1
  87. package/dist/elements/button.js +1 -1
  88. package/dist/elements/card.js +1 -1
  89. package/dist/elements/cards.js +1 -1
  90. package/dist/elements/chain-of-thought.js +1 -1
  91. package/dist/elements/chat-scope-picker.js +1 -1
  92. package/dist/elements/chat-workspace.js +1 -1
  93. package/dist/elements/chat.js +1 -1
  94. package/dist/elements/checkbox-group.d.ts +1 -0
  95. package/dist/elements/checkbox-group.js +1 -0
  96. package/dist/elements/checkbox.d.ts +1 -0
  97. package/dist/elements/checkbox.js +1 -0
  98. package/dist/elements/checkpoint.js +1 -1
  99. package/dist/elements/choice.js +1 -1
  100. package/dist/elements/coachmark.js +1 -1
  101. package/dist/elements/code-block.js +1 -1
  102. package/dist/elements/command.js +1 -1
  103. package/dist/elements/compare.js +1 -1
  104. package/dist/elements/composer.js +1 -1
  105. package/dist/elements/confirm-card.js +1 -1
  106. package/dist/elements/context-meter.js +1 -1
  107. package/dist/elements/conversation-item.d.ts +1 -0
  108. package/dist/elements/conversation-item.js +1 -0
  109. package/dist/elements/conversation-list.js +1 -1
  110. package/dist/elements/default-input.d.ts +3 -3
  111. package/dist/elements/define-entry.d.ts +12 -0
  112. package/dist/elements/define.d.ts +27 -0
  113. package/dist/elements/diagnostic-events.d.ts +74 -0
  114. package/dist/elements/dialog.js +1 -1
  115. package/dist/elements/dock.d.ts +1 -0
  116. package/dist/elements/dock.js +243 -0
  117. package/dist/elements/dropdown.d.ts +1 -0
  118. package/dist/elements/dropdown.js +1 -0
  119. package/dist/elements/editable-label.js +1 -1
  120. package/dist/elements/element-data-types.d.ts +37 -0
  121. package/dist/elements/element-diagnostics.d.ts +81 -0
  122. package/dist/elements/embed.js +1 -1
  123. package/dist/elements/empty.js +1 -1
  124. package/dist/elements/feedback-bar.js +1 -1
  125. package/dist/elements/file-tree.js +1 -1
  126. package/dist/elements/file-upload.js +1 -1
  127. package/dist/elements/form.js +1 -1
  128. package/dist/elements/hover-card.js +1 -1
  129. package/dist/elements/icon.js +1 -1
  130. package/dist/elements/image.js +1 -1
  131. package/dist/elements/input.js +1 -1
  132. package/dist/elements/kbd.js +1 -1
  133. package/dist/elements/link-preview.js +1 -1
  134. package/dist/elements/loader.js +1 -1
  135. package/dist/elements/markdown.js +1 -1
  136. package/dist/elements/menu.js +1 -1
  137. package/dist/elements/message-skills.js +1 -1
  138. package/dist/elements/message.js +1 -1
  139. package/dist/elements/model-switcher.js +1 -1
  140. package/dist/elements/nav.js +1 -1
  141. package/dist/elements/notice.js +1 -1
  142. package/dist/elements/pane-grid.d.ts +1 -0
  143. package/dist/elements/pane-grid.js +1 -0
  144. package/dist/elements/pane-group.js +1 -1
  145. package/dist/elements/pane.js +1 -1
  146. package/dist/elements/popover.js +1 -1
  147. package/dist/elements/progress-bar.js +1 -1
  148. package/dist/elements/prompt-dock.js +1 -1
  149. package/dist/elements/prompt-input.js +1 -1
  150. package/dist/elements/prompt-suggestions.js +1 -1
  151. package/dist/elements/radio-group.d.ts +1 -0
  152. package/dist/elements/radio-group.js +1 -0
  153. package/dist/elements/reasoning.js +1 -1
  154. package/dist/elements/register.d.ts +2 -0
  155. package/dist/elements/remote.js +1 -1
  156. package/dist/elements/resizable.js +1 -1
  157. package/dist/elements/response-stream.js +3 -3
  158. package/dist/elements/screen.js +1 -1
  159. package/dist/elements/scroll-area.js +1 -1
  160. package/dist/elements/scroll-button.js +1 -1
  161. package/dist/elements/search.js +1 -1
  162. package/dist/elements/segmented.js +1 -1
  163. package/dist/elements/select.d.ts +1 -0
  164. package/dist/elements/select.js +1 -0
  165. package/dist/elements/separator.js +1 -1
  166. package/dist/elements/setting-item.js +1 -1
  167. package/dist/elements/settings-group.js +1 -1
  168. package/dist/elements/skeleton.js +1 -1
  169. package/dist/elements/slider.d.ts +1 -0
  170. package/dist/elements/slider.js +1 -0
  171. package/dist/elements/slots.d.ts +36 -4
  172. package/dist/elements/source.js +1 -1
  173. package/dist/elements/status.js +1 -1
  174. package/dist/elements/switch.js +1 -1
  175. package/dist/elements/tabs.js +1 -1
  176. package/dist/elements/tasks.js +1 -1
  177. package/dist/elements/text-shimmer.js +1 -1
  178. package/dist/elements/thinking-bar.js +1 -1
  179. package/dist/elements/thread.js +1 -1
  180. package/dist/elements/toast.js +1 -1
  181. package/dist/elements/tool.js +1 -1
  182. package/dist/elements/tooltip.js +1 -1
  183. package/dist/elements/voice-input.js +1 -1
  184. package/dist/elements/voice-output.js +1 -1
  185. package/dist/elements.d.ts +589 -167
  186. package/dist/{elements/chunks/ellipsis-CVxqfsDZ.js → ellipsis-DFr4Vqr3.js} +1 -1
  187. package/dist/embed-5s_vU4J0.js +1 -0
  188. package/dist/engine-javascript-vq0WuIJl.js +14 -2516
  189. package/dist/{elements/chunks/external-link-DG2sRdQL.js → external-link-u9d85ORQ.js} +1 -1
  190. package/dist/file-text-CX7_x42o.js +1 -0
  191. package/dist/{elements/chunks/file-tree-yGWNK0Js.js → file-tree-D3kBjXI5.js} +1 -1
  192. package/dist/folder-V-YdIL8f.js +1 -0
  193. package/dist/form-BRNUMCN2.js +1 -0
  194. package/dist/github-dark-dimmed-DUshB20C.js +1 -4
  195. package/dist/github-light-JYsPkUQd.js +1 -4
  196. package/dist/hover-card-DaeiYrTA.js +1 -0
  197. package/dist/html-CPZ3oZQ7.js +1 -10
  198. package/dist/icon-BpixdZNq.js +1 -0
  199. package/dist/{elements/chunks/index-BCRhi84a.js → index-xu_pdcPi.js} +1 -1
  200. package/dist/index.d.ts +3 -1
  201. package/dist/index.js +8473 -6470
  202. package/dist/index.server.js +6495 -4958
  203. package/dist/info-8mFsIjS3.js +1 -0
  204. package/dist/input-d1Yuu-hz.js +1 -0
  205. package/dist/javascript-C25yR2R2.js +1 -6
  206. package/dist/json-DxJze_jm.js +1 -6
  207. package/dist/kai-provider.es.js +40 -40
  208. package/dist/kai.es.js +1 -1
  209. package/dist/kbd-961zMPFB.js +1 -0
  210. package/dist/link-DlZZBGaR.js +1 -0
  211. package/dist/{elements/chunks/link-preview-Cf5KOP-i.js → link-preview-DIIbV2Sd.js} +1 -1
  212. package/dist/loader-YQszHFaW.js +1 -0
  213. package/dist/{elements/chunks/markdown-DbozyYqa.js → markdown-CVk1MPsj.js} +1 -1
  214. package/dist/mcp.es.js +3873 -544
  215. package/dist/message-CwKVEdZg.js +1 -0
  216. package/dist/message-DS8lzHc1.js +1 -0
  217. package/dist/message-circle-Xf8Q-vZp.js +1 -0
  218. package/dist/message-square-Cxnwgkns.js +1 -0
  219. package/dist/{elements/chunks/minimize-2-SegJ_oku.js → minimize-2-UEZmP2QT.js} +1 -1
  220. package/dist/{elements/chunks/model-switcher-D7JrFFHp.js → model-switcher-Kk1jEQ5t.js} +1 -1
  221. package/dist/{elements/chunks/overlay-CV7z2YuX.js → overlay-C1od6LOz.js} +1 -1
  222. package/dist/panel-right-ryET0yyn.js +1 -0
  223. package/dist/paperclip-BDNoZFJP.js +1 -0
  224. package/dist/play-OFIvYXUQ.js +1 -0
  225. package/dist/primitives/card-data-types.d.ts +49 -0
  226. package/dist/primitives/card-routing.d.ts +1 -33
  227. package/dist/primitives/card-validate.d.ts +2 -2
  228. package/dist/primitives/chat-config.d.ts +29 -2
  229. package/dist/primitives/field-mask.d.ts +96 -0
  230. package/dist/primitives/field-semantics.d.ts +36 -0
  231. package/dist/primitives/input-mask.d.ts +46 -0
  232. package/dist/primitives/url-scheme-policy.d.ts +34 -0
  233. package/dist/primitives/use-resize-observer.d.ts +23 -0
  234. package/dist/primitives/use-speech-recognition.d.ts +8 -0
  235. package/dist/primitives/use-text-stream.d.ts +5 -0
  236. package/dist/progress-bar-BvYX0aoy.js +1 -0
  237. package/dist/prompt-suggestion-BRFu2lcu.js +1 -0
  238. package/dist/radio-DcL23cNJ.js +1 -0
  239. package/dist/react/index.d.ts +306 -283
  240. package/dist/react.js +309 -247
  241. package/dist/reasoning-Cackq4Rh.js +1 -0
  242. package/dist/register-impl-C7rENvPK.js +424 -0
  243. package/dist/{elements/chunks/resizable-Dpzjlvp4.js → resizable-Cp9HUYih.js} +1 -1
  244. package/dist/rotate-ccw-0DLRDHH5.js +1 -0
  245. package/dist/rotate-cw-DOB9IGcU.js +1 -0
  246. package/dist/schemas/form.schema.json +21 -1
  247. package/dist/schemas/index.d.ts +1 -1
  248. package/dist/schemas/tool-defs.d.ts +45 -0
  249. package/dist/schemas.js +398 -305
  250. package/dist/scroll-area-emVmWP4K.js +1 -0
  251. package/dist/scroll-button-CeP_gv1x.js +1 -0
  252. package/dist/select-CWmu00tS.js +1 -0
  253. package/dist/{elements/chunks/separator-DH2r_ZSZ.js → separator-CE6vly6z.js} +1 -1
  254. package/dist/{elements/chunks/settings-BFMOd6yB.js → settings-CE-78SvZ.js} +1 -1
  255. package/dist/{elements/chunks/settings-group-B3VZKIcz.js → settings-group-ZFWNxFQR.js} +1 -1
  256. package/dist/{elements/chunks/skeleton-N8BuWYmf.js → skeleton-BebdP4mf.js} +1 -1
  257. package/dist/slider-BAKRYUlz.js +1 -0
  258. package/dist/slots-DaNjX0rc.js +1 -0
  259. package/dist/{solid-BMuDmFo_.js → solid-BE5ui6sy.js} +10672 -8116
  260. package/dist/{solid-CGYNdLRR.js → solid-DFhsce3O.js} +8137 -6056
  261. package/dist/solid.d.ts +15 -0
  262. package/dist/solid.js +248 -235
  263. package/dist/solid.server.js +248 -235
  264. package/dist/source-B0FlguSx.js +1 -0
  265. package/dist/star-CBMZvLuN.js +1 -0
  266. package/dist/state/index.d.ts +5 -1
  267. package/dist/state/mock.d.ts +32 -2
  268. package/dist/state/persistence.d.ts +51 -0
  269. package/dist/state/stream.d.ts +50 -0
  270. package/dist/state/threads.d.ts +71 -0
  271. package/dist/state.js +297 -172
  272. package/dist/store-7eoadydQ.js +1 -0
  273. package/dist/svelte--5p79yCD.js +1 -15
  274. package/dist/switch-CViARZCy.js +1 -0
  275. package/dist/tasks-card-MjCcOhR_.js +1 -0
  276. package/dist/text-shimmer-DKlwRF2G.js +1 -0
  277. package/dist/textarea-3ay2Me2-.js +1 -0
  278. package/dist/theme.tokens.css +82 -13
  279. package/dist/{elements/chunks/thumbs-up-DQe0hvkZ.js → thumbs-up-DQcu2HMO.js} +1 -1
  280. package/dist/toast-store-C6yKOhbk.js +1 -0
  281. package/dist/{elements/chunks/tool-C1YtxwPu.js → tool-BCYNlfKy.js} +1 -1
  282. package/dist/{elements/chunks/tooltip-BqwnFWhn.js → tooltip-05zI4hjs.js} +1 -1
  283. package/dist/trash-2-BR1RxGky.js +1 -0
  284. package/dist/{elements/chunks/triangle-alert-B6or7F5u.js → triangle-alert-DHohDOCy.js} +1 -1
  285. package/dist/tsx-B8rCNbgL.js +1 -6
  286. package/dist/types.d.ts +4 -2
  287. package/dist/typescript-RycA9KXf.js +1 -6
  288. package/dist/ui/checkbox-group.d.ts +83 -0
  289. package/dist/ui/checkbox.d.ts +40 -0
  290. package/dist/ui/dock.d.ts +131 -0
  291. package/dist/ui/hover-card.d.ts +44 -0
  292. package/dist/ui/icon.d.ts +3 -0
  293. package/dist/ui/input.d.ts +48 -2
  294. package/dist/ui/radio.d.ts +85 -0
  295. package/dist/ui/select.d.ts +71 -0
  296. package/dist/ui/slider.d.ts +65 -0
  297. package/dist/ui/switch.d.ts +9 -2
  298. package/dist/upload-BbGW6A_u.js +1 -0
  299. package/dist/url-scheme-policy-DHpoTJwB.js +1 -0
  300. package/dist/use-card-resolution-CJW4grFa.js +1 -0
  301. package/dist/{variant-aurora-DwSOfraQ.js → variant-aurora-BUOVgPOB.js} +27 -27
  302. package/dist/{variant-aurora-wKvAQ5wp.js → variant-aurora-CUsUJvFI.js} +28 -28
  303. package/dist/{variant-aurora-XEkPT0_z.js → variant-aurora-CW2i4bfr.js} +2 -2
  304. package/dist/{elements/chunks/variant-aurora-QXTZPyST.js → variant-aurora-xiMPty8f.js} +2 -2
  305. package/dist/variant-custom-BQtOnmeO.js +1 -0
  306. package/dist/{variant-custom-BhS9wIpU.js → variant-custom-CAm9L-E5.js} +65 -65
  307. package/dist/{variant-custom-eFIg2XWQ.js → variant-custom-CAnzzppW.js} +40 -40
  308. package/dist/variant-custom-D91HjAKz.js +1 -0
  309. package/dist/{variant-wave-CUWGx9Bn.js → variant-wave-Ca1Ls4_y.js} +21 -21
  310. package/dist/{variant-wave-CbVsmgwT.js → variant-wave-CxX39DKd.js} +25 -25
  311. package/dist/{variant-wave-BwzrHD1s.js → variant-wave-DYyzIIZv.js} +2 -2
  312. package/dist/{elements/chunks/variant-wave-DDCwhLas.js → variant-wave-uY5crU_K.js} +2 -2
  313. package/dist/vue-BmIZj4XD.js +1 -33
  314. package/dist/wire/chunk.d.ts +47 -0
  315. package/dist/wire/diagnostics.d.ts +575 -0
  316. package/dist/wire/encode-probe.d.ts +70 -0
  317. package/dist/wire/encode.d.ts +24 -0
  318. package/dist/wire/index.d.ts +2 -0
  319. package/dist/wire/sse.d.ts +10 -2
  320. package/dist/wire.js +917 -480
  321. package/dist/x-C5m1JFgi.js +1 -0
  322. package/frameworks/react/index.tsx +325 -108
  323. package/llms-full.txt +1354 -82
  324. package/llms.txt +6 -3
  325. package/package.json +39 -6
  326. package/src/agent-tooling/archetypes.ts +41 -9
  327. package/src/agent-tooling/catalog/README.md +676 -0
  328. package/src/agent-tooling/catalog/catalog-types.ts +231 -0
  329. package/src/agent-tooling/catalog/fabrications.ts +96 -0
  330. package/src/agent-tooling/catalog/invariants.ts +284 -0
  331. package/src/agent-tooling/catalog/labs-titles.ts +114 -0
  332. package/src/agent-tooling/catalog/scenarios.ts +87 -0
  333. package/src/agent-tooling/catalog/surfaces.ts +347 -0
  334. package/src/agent-tooling/construct/cli-entry.ts +8 -0
  335. package/src/agent-tooling/construct/cli.ts +131 -0
  336. package/src/agent-tooling/construct/codegen.ts +1353 -0
  337. package/src/agent-tooling/construct/construct.v1.schema.json +250 -0
  338. package/src/agent-tooling/construct/dev.ts +148 -0
  339. package/src/agent-tooling/construct/fixtures/demo-widget.construct.json +7 -0
  340. package/src/agent-tooling/construct/fixtures/ops-console.construct.json +44 -0
  341. package/src/agent-tooling/construct/fixtures/owner-widget.construct.json +23 -0
  342. package/src/agent-tooling/construct/schema.ts +371 -0
  343. package/src/agent-tooling/integrations/anthropic.ts +7 -1
  344. package/src/agent-tooling/integrations/cloudflare.ts +43 -2
  345. package/src/agent-tooling/integrations/langgraph.ts +7 -1
  346. package/src/agent-tooling/integrations/mastra.ts +7 -1
  347. package/src/agent-tooling/integrations/mock.ts +92 -17
  348. package/src/agent-tooling/integrations/ollama.ts +7 -1
  349. package/src/agent-tooling/integrations/openai.ts +7 -1
  350. package/src/agent-tooling/integrations/openrouter.ts +7 -1
  351. package/src/agent-tooling/integrations/pi.ts +56 -1
  352. package/src/agent-tooling/integrations/vercel-ai-sdk.ts +7 -1
  353. package/src/agent-tooling/mcp/css-raw.d.ts +12 -0
  354. package/src/agent-tooling/mcp/manifest.ts +100 -1
  355. package/src/agent-tooling/mcp/server.ts +63 -6
  356. package/src/agent-tooling/mcp/tools/construct.ts +130 -0
  357. package/src/agent-tooling/mcp/tools/debug.ts +126 -4
  358. package/src/agent-tooling/mcp/tools/reference.ts +542 -5
  359. package/src/agent-tooling/mcp/tools/scaffold.ts +1834 -307
  360. package/src/agent-tooling/mcp/tools/theme.ts +146 -30
  361. package/src/agent-tooling/mcp/validate-args.ts +141 -0
  362. package/src/agent-tooling/recipes/composed-thread.ts +714 -0
  363. package/src/agent-tooling/recipes/index.ts +22 -0
  364. package/src/agent-tooling/recipes/types.ts +32 -0
  365. package/src/agent-tooling/registry.ts +24 -7
  366. package/src/agent-tooling/route-emit.ts +26 -2
  367. package/src/components/attachment-types.ts +54 -1
  368. package/src/components/attachments.tsx +169 -22
  369. package/src/components/audio-visualizer/fit-scale.ts +112 -0
  370. package/src/components/audio-visualizer/index.tsx +80 -3
  371. package/src/components/audio-visualizer/variant-aurora.tsx +10 -4
  372. package/src/components/audio-visualizer/variant-bar.tsx +38 -6
  373. package/src/components/audio-visualizer/variant-custom.tsx +8 -2
  374. package/src/components/audio-visualizer/variant-grid.tsx +16 -11
  375. package/src/components/audio-visualizer/variant-radial.tsx +15 -10
  376. package/src/components/audio-visualizer/variant-wave.tsx +7 -2
  377. package/src/components/card-renderer.tsx +39 -8
  378. package/src/components/card.tsx +10 -2
  379. package/src/components/chat-container.tsx +4 -1
  380. package/src/components/chat-scope-picker.tsx +2 -2
  381. package/src/components/chat-thread.tsx +105 -13
  382. package/src/components/choice-card.tsx +102 -37
  383. package/src/components/coachmark.tsx +1 -1
  384. package/src/components/code-block.tsx +81 -5
  385. package/src/components/composer.tsx +89 -8
  386. package/src/components/confirm-card.tsx +20 -4
  387. package/src/components/conversation-item.tsx +138 -4
  388. package/src/components/conversation-list.tsx +230 -15
  389. package/src/components/embed.tsx +4 -0
  390. package/src/components/empty.tsx +14 -3
  391. package/src/components/file-tree.tsx +5 -1
  392. package/src/components/form-widgets.tsx +257 -195
  393. package/src/components/form.tsx +336 -21
  394. package/src/components/loader.tsx +12 -5
  395. package/src/components/message-skills.tsx +1 -1
  396. package/src/components/message.tsx +142 -12
  397. package/src/components/prompt-input.tsx +7 -1
  398. package/src/components/prompt-suggestion.tsx +4 -1
  399. package/src/components/reasoning.tsx +30 -3
  400. package/src/components/response-compare.tsx +2 -2
  401. package/src/components/response-stream.tsx +13 -7
  402. package/src/components/screen.tsx +5 -0
  403. package/src/components/scroll-button.tsx +63 -4
  404. package/src/components/source.tsx +6 -1
  405. package/src/components/tasks-card.tsx +58 -16
  406. package/src/components/thread.tsx +10 -1
  407. package/src/components/toast.tsx +11 -5
  408. package/src/components/tool-types.ts +9 -0
  409. package/src/components/voice-input.tsx +35 -3
  410. package/src/components/voice-output.tsx +46 -6
  411. package/src/components/workspace-shell.tsx +285 -0
  412. package/src/diagnostics/hook.ts +352 -0
  413. package/src/diagnostics/index.ts +82 -0
  414. package/src/diagnostics/report-request.ts +296 -0
  415. package/src/elements/attachments.tsx +9 -8
  416. package/src/elements/audio-visualizer.tsx +48 -4
  417. package/src/elements/chat-workspace.tsx +159 -287
  418. package/src/elements/chat.tsx +31 -10
  419. package/src/elements/checkbox-group.tsx +164 -0
  420. package/src/elements/checkbox.tsx +134 -0
  421. package/src/elements/code-block.tsx +19 -1
  422. package/src/elements/command.tsx +4 -1
  423. package/src/elements/compiled.css +1 -1
  424. package/src/elements/composer.tsx +12 -1
  425. package/src/elements/conversation-item.tsx +120 -0
  426. package/src/elements/conversation-list.tsx +60 -11
  427. package/src/elements/default-input.tsx +5 -5
  428. package/src/elements/define-entry.ts +12 -0
  429. package/src/elements/define.tsx +168 -8
  430. package/src/elements/diagnostic-events.ts +114 -0
  431. package/src/elements/dialog.tsx +47 -0
  432. package/src/elements/disclosure.ts +34 -12
  433. package/src/elements/dock.tsx +215 -0
  434. package/src/elements/dropdown.tsx +123 -0
  435. package/src/elements/element-data-types.ts +40 -0
  436. package/src/elements/element-diagnostics.ts +392 -0
  437. package/src/elements/element-manifest.json +36 -0
  438. package/src/elements/element-meta.json +1483 -560
  439. package/src/elements/element-nonscalar.json +185 -0
  440. package/src/elements/element-types.d.ts +589 -167
  441. package/src/elements/feedback-bar.tsx +5 -0
  442. package/src/elements/icon-names.json +29 -0
  443. package/src/elements/input.tsx +312 -23
  444. package/src/elements/menu.tsx +13 -0
  445. package/src/elements/message.tsx +2 -0
  446. package/src/elements/pane-grid.tsx +111 -0
  447. package/src/elements/prompt-dock.tsx +2 -1
  448. package/src/elements/prompt-input.tsx +16 -10
  449. package/src/elements/radio-group.tsx +129 -0
  450. package/src/elements/register-impl.ts +52 -0
  451. package/src/elements/register.ts +28 -0
  452. package/src/elements/resizable.tsx +52 -25
  453. package/src/elements/scroll-button.tsx +59 -6
  454. package/src/elements/select.tsx +165 -0
  455. package/src/elements/slider.tsx +171 -0
  456. package/src/elements/slots.ts +108 -13
  457. package/src/elements/styles.css +119 -9
  458. package/src/elements/thinking-bar.tsx +16 -7
  459. package/src/elements/thread.tsx +2 -0
  460. package/src/elements/toast.tsx +17 -1
  461. package/src/elements/tool.tsx +26 -5
  462. package/src/elements/voice-input.tsx +11 -2
  463. package/src/elements/voice-output.tsx +16 -3
  464. package/src/index.ts +4 -1
  465. package/src/primitives/card-data-types.ts +49 -0
  466. package/src/primitives/card-host.tsx +4 -2
  467. package/src/primitives/card-routing.ts +7 -56
  468. package/src/primitives/card-schemas/form.schema.json +21 -1
  469. package/src/primitives/card-validate.ts +10 -2
  470. package/src/primitives/chat-config.tsx +33 -6
  471. package/src/primitives/field-mask.ts +256 -0
  472. package/src/primitives/field-semantics.ts +115 -0
  473. package/src/primitives/input-mask.ts +853 -0
  474. package/src/primitives/toast-store.ts +66 -4
  475. package/src/primitives/url-scheme-policy.ts +70 -0
  476. package/src/primitives/use-resize-observer.ts +33 -0
  477. package/src/primitives/use-speech-recognition.ts +12 -1
  478. package/src/primitives/use-stick-to-bottom.ts +34 -2
  479. package/src/primitives/use-text-stream.ts +33 -2
  480. package/src/remote/provider-runtime.ts +6 -3
  481. package/src/schemas/index.ts +1 -0
  482. package/src/schemas/tool-defs.ts +307 -6
  483. package/src/solid.ts +15 -0
  484. package/src/state/index.ts +13 -1
  485. package/src/state/mock.ts +92 -6
  486. package/src/state/persistence.ts +180 -0
  487. package/src/state/stream.ts +71 -4
  488. package/src/state/threads.ts +142 -0
  489. package/src/types.ts +4 -2
  490. package/src/ui/agent-card.tsx +2 -2
  491. package/src/ui/avatar.tsx +1 -1
  492. package/src/ui/checkbox-group.tsx +153 -0
  493. package/src/ui/checkbox.tsx +63 -0
  494. package/src/ui/dialog.tsx +6 -0
  495. package/src/ui/dock.tsx +584 -0
  496. package/src/ui/dropdown.tsx +67 -23
  497. package/src/ui/hover-card.tsx +156 -6
  498. package/src/ui/icon.tsx +53 -0
  499. package/src/ui/input.tsx +275 -16
  500. package/src/ui/kbd.tsx +1 -1
  501. package/src/ui/nav.tsx +1 -1
  502. package/src/ui/pane-group.tsx +2 -2
  503. package/src/ui/radio.tsx +150 -0
  504. package/src/ui/resizable.tsx +11 -0
  505. package/src/ui/select.tsx +168 -0
  506. package/src/ui/slider.tsx +178 -0
  507. package/src/ui/switch.tsx +49 -18
  508. package/src/utils/cn.ts +11 -5
  509. package/src/wire/chunk.ts +47 -0
  510. package/src/wire/consume.ts +185 -26
  511. package/src/wire/diagnostics.ts +727 -0
  512. package/src/wire/encode-probe.ts +214 -0
  513. package/src/wire/encode.ts +267 -14
  514. package/src/wire/formats/anthropic.ts +8 -1
  515. package/src/wire/formats/openai.ts +5 -0
  516. package/src/wire/index.ts +22 -0
  517. package/src/wire/read.ts +250 -6
  518. package/src/wire/sse.ts +16 -3
  519. package/theme.css +84 -13
  520. package/dist/elements/chunks/action-icons-DW9muWrY.js +0 -1
  521. package/dist/elements/chunks/arrow-left-iJVnQmxA.js +0 -1
  522. package/dist/elements/chunks/artifact-BSuPYFHY.js +0 -1
  523. package/dist/elements/chunks/attachments-CL6TaqIb.js +0 -1
  524. package/dist/elements/chunks/audio-visualizer-BuUqQmaO.js +0 -1
  525. package/dist/elements/chunks/badge-TIMiJFKc.js +0 -1
  526. package/dist/elements/chunks/bash-InADTalH.js +0 -1
  527. package/dist/elements/chunks/card-renderer-CSoTL_e1.js +0 -1
  528. package/dist/elements/chunks/card-routing-BK09BdmL.js +0 -1
  529. package/dist/elements/chunks/chat-thread-DxoKaStk.js +0 -1
  530. package/dist/elements/chunks/check-MdLzbxrm.js +0 -1
  531. package/dist/elements/chunks/chevron-down-MK7IzDqe.js +0 -1
  532. package/dist/elements/chunks/chevron-right-C5jXhmtV.js +0 -1
  533. package/dist/elements/chunks/choice-card-CGMc3kek.js +0 -1
  534. package/dist/elements/chunks/circle-BG7VkPep.js +0 -1
  535. package/dist/elements/chunks/circle-check-GqvO2UBs.js +0 -1
  536. package/dist/elements/chunks/circle-x-mhH7pOK2.js +0 -1
  537. package/dist/elements/chunks/code-block-ClhQO9RW.js +0 -1
  538. package/dist/elements/chunks/collapsible-DBcBkFPh.js +0 -1
  539. package/dist/elements/chunks/composer-CZZmtYOT.js +0 -69
  540. package/dist/elements/chunks/confirm-card-BWjf2-xo.js +0 -1
  541. package/dist/elements/chunks/context-hKjNqiyQ.js +0 -1
  542. package/dist/elements/chunks/conversation-list-CsGJjSKG.js +0 -1
  543. package/dist/elements/chunks/core-AYMC6_lb.js +0 -12
  544. package/dist/elements/chunks/css-M7EaDHN_.js +0 -1
  545. package/dist/elements/chunks/default-input-B1Mem5wu.js +0 -1
  546. package/dist/elements/chunks/define-B_tXMYRm.js +0 -1
  547. package/dist/elements/chunks/disclosure-DAoYOKew.js +0 -1
  548. package/dist/elements/chunks/download-DnCyWFJE.js +0 -1
  549. package/dist/elements/chunks/dropdown-CmNna5lT.js +0 -1
  550. package/dist/elements/chunks/embed-CjAD2jSi.js +0 -1
  551. package/dist/elements/chunks/engine-javascript-vq0WuIJl.js +0 -141
  552. package/dist/elements/chunks/file-text-D0J9F6M7.js +0 -1
  553. package/dist/elements/chunks/folder-NV1pi_ud.js +0 -1
  554. package/dist/elements/chunks/form-Cp8Y00Wn.js +0 -1
  555. package/dist/elements/chunks/github-dark-dimmed-DUshB20C.js +0 -1
  556. package/dist/elements/chunks/github-light-JYsPkUQd.js +0 -1
  557. package/dist/elements/chunks/hover-card-6KtXpLwT.js +0 -1
  558. package/dist/elements/chunks/html-CPZ3oZQ7.js +0 -1
  559. package/dist/elements/chunks/icon-97R8SR2p.js +0 -1
  560. package/dist/elements/chunks/info-C8r5Q6cc.js +0 -1
  561. package/dist/elements/chunks/input-DrseEjhp.js +0 -1
  562. package/dist/elements/chunks/javascript-C25yR2R2.js +0 -1
  563. package/dist/elements/chunks/json-DxJze_jm.js +0 -1
  564. package/dist/elements/chunks/kbd-OGJDUT-O.js +0 -1
  565. package/dist/elements/chunks/link-BdsfLB7b.js +0 -1
  566. package/dist/elements/chunks/loader-B5QzK_8_.js +0 -1
  567. package/dist/elements/chunks/message-CE4k-qaj.js +0 -1
  568. package/dist/elements/chunks/message-DtXKPqiR.js +0 -1
  569. package/dist/elements/chunks/message-square-C9ovmtOo.js +0 -1
  570. package/dist/elements/chunks/paperclip-Bg0ITU3b.js +0 -1
  571. package/dist/elements/chunks/progress-bar-D1_rzt6N.js +0 -1
  572. package/dist/elements/chunks/prompt-suggestion-D5Sm8xF1.js +0 -1
  573. package/dist/elements/chunks/reasoning-BrxQfpfI.js +0 -1
  574. package/dist/elements/chunks/rotate-cw-DzVDJOA1.js +0 -1
  575. package/dist/elements/chunks/scroll-area-93A1bbeG.js +0 -1
  576. package/dist/elements/chunks/scroll-button-CrTo7wm4.js +0 -1
  577. package/dist/elements/chunks/share-DgNbkJKY.js +0 -1
  578. package/dist/elements/chunks/slots-CIw9RlAe.js +0 -1
  579. package/dist/elements/chunks/source-w9V0NnBn.js +0 -1
  580. package/dist/elements/chunks/star-DHvACxtm.js +0 -1
  581. package/dist/elements/chunks/store-HIPGhNz9.js +0 -1
  582. package/dist/elements/chunks/svelte--5p79yCD.js +0 -1
  583. package/dist/elements/chunks/tasks-card-lPxoodlA.js +0 -1
  584. package/dist/elements/chunks/text-shimmer-BY_rI3s5.js +0 -1
  585. package/dist/elements/chunks/textarea-DPfuhswM.js +0 -1
  586. package/dist/elements/chunks/toast-store-VUZZBhzH.js +0 -1
  587. package/dist/elements/chunks/tsx-B8rCNbgL.js +0 -1
  588. package/dist/elements/chunks/typescript-RycA9KXf.js +0 -1
  589. package/dist/elements/chunks/use-card-resolution-DJg32jGH.js +0 -1
  590. package/dist/elements/chunks/variant-custom-D5ZlmziF.js +0 -1
  591. package/dist/elements/chunks/video-Bb86fVYI.js +0 -1
  592. package/dist/elements/chunks/vue-BmIZj4XD.js +0 -1
  593. package/dist/elements/chunks/x-BOhjBeOd.js +0 -1
  594. package/dist/llms/llms-full.txt +0 -2834
  595. package/dist/llms/llms.txt +0 -156
  596. package/dist/primitives/card-validate-generator.testlib.d.ts +0 -20
  597. package/dist/register-impl-DGmGzrEM.js +0 -145
  598. package/dist/ui/stat.d.ts +0 -16
  599. package/dist/variant-custom-MkTNTycd.js +0 -1
  600. package/src/primitives/card-validate-generator.testlib.ts +0 -38
  601. package/src/ui/stat.tsx +0 -41
  602. /package/dist/{elements/chunks/card-tags-D8lZ-C_U.js → card-tags-D8lZ-C_U.js} +0 -0
  603. /package/dist/{elements/chunks/link-preview-DNILK391.js → link-preview-DNILK391.js} +0 -0
@@ -0,0 +1,243 @@
1
+ import{c as d,w as U,g as Y,j as W,z as B,u as H,d as p,i as v,m as _,S as C,a as V,H as q,l as E,t as f,e as j,f as K,v as x}from"../define-CGGX-7Vg.js";import{x as G}from"../x-C5m1JFgi.js";import{m as J}from"../message-circle-Xf8Q-vZp.js";import{w as Q}from"../disclosure-CbLtajUQ.js";var Z=f(`<style>
2
+ :host { display: contents; }
3
+
4
+ [data-kai-dock] {
5
+ position: fixed;
6
+ z-index: var(--kai-dock-z, 1000);
7
+ display: flex;
8
+ gap: var(--kai-dock-gap, 0.85rem);
9
+ /* Only a positioning frame: it must not swallow clicks on the page it floats
10
+ over. The launcher and the open panel opt back in. */
11
+ pointer-events: none;
12
+ }
13
+
14
+ /* Logical insets throughout, so an RTL page docks on the other side for free.
15
+ column-reverse for the bottom corners keeps the LAUNCHER FIRST IN DOM ORDER --
16
+ Tab reaches the control before the panel content -- while painting it below. */
17
+ [data-kai-dock][data-position^="bottom"] {
18
+ flex-direction: column-reverse;
19
+ inset-block-end: var(--kai-dock-inset, 1.5rem);
20
+ }
21
+ [data-kai-dock][data-position^="top"] {
22
+ flex-direction: column;
23
+ inset-block-start: var(--kai-dock-inset, 1.5rem);
24
+ }
25
+ [data-kai-dock][data-position$="end"] {
26
+ inset-inline-end: var(--kai-dock-inset, 1.5rem);
27
+ align-items: flex-end;
28
+ }
29
+ [data-kai-dock][data-position$="start"] {
30
+ inset-inline-start: var(--kai-dock-inset, 1.5rem);
31
+ align-items: flex-start;
32
+ }
33
+
34
+ [data-kai-dock] [part="launcher"] {
35
+ pointer-events: auto;
36
+ position: relative;
37
+ /* ABOVE the panel, always. At &lt;=480px the panel goes fixed/inset:0 and it comes
38
+ after the launcher in DOM order, so at z-index:auto it painted OVER the launcher
39
+ and a touch user lost every pointer route to closing. Both reference
40
+ implementations stacked the launcher over the panel for the same reason. The
41
+ launcher itself is now HIDDEN while the panel is open at that width (see the
42
+ &lt;=480px block below) in favour of the in-panel [part="close"] X, but this
43
+ z-index still matters for the moment between "open" landing and the panel's
44
+ own transition finishing, and for any consumer CSS that reintroduces the
45
+ launcher there. */
46
+ z-index: 1;
47
+ flex: none;
48
+ display: inline-flex;
49
+ align-items: center;
50
+ justify-content: center;
51
+ gap: 0.5rem;
52
+ /* The size token is the BLOCK size and the inline MINIMUM, not a fixed square. An
53
+ icon-only launcher is still a perfect disc (the icon plus padding is narrower
54
+ than the minimum), but a slotted TEXT label \u2014 the reference app's "Support"
55
+ pill \u2014 widens the button instead of overflowing it. */
56
+ inline-size: auto;
57
+ min-inline-size: var(--kai-dock-launcher-size, 56px);
58
+ block-size: var(--kai-dock-launcher-size, 56px);
59
+ padding-block: 0;
60
+ padding-inline: 0.9rem;
61
+ white-space: nowrap;
62
+ border: 0;
63
+ border-radius: 9999px;
64
+ background: var(--color-primary);
65
+ color: var(--color-primary-foreground);
66
+ box-shadow: 0 10px 25px -6px rgb(0 0 0 / 0.35);
67
+ cursor: pointer;
68
+ transition: transform 150ms ease, box-shadow 150ms ease;
69
+ }
70
+ [data-kai-dock] [part="launcher"]:hover:not(:disabled) { transform: translateY(-1px); }
71
+ [data-kai-dock] [part="launcher"]:focus-visible { outline: 2px solid var(--color-ring); outline-offset: 2px; }
72
+ [data-kai-dock] [part="launcher"]:disabled { opacity: 0.55; cursor: not-allowed; }
73
+
74
+ /* The mobile-only close affordance rendered INSIDE the panel. Hidden by default and
75
+ only switched on inside the &lt;=480px media block below, alongside the rule that
76
+ hides the launcher while the panel is open at that width \u2014 same query drives both,
77
+ CSS-only, no JS viewport logic. Absolutely positioned against the panel, which is
78
+ the panel's own containing block once the narrow-viewport rule below sets it to
79
+ position: fixed.
80
+
81
+ The inset is a CONSUMER-OVERRIDABLE TOKEN, same idiom as every other geometry
82
+ value in this file (--kai-dock-width and friends). The dock is content-agnostic \u2014
83
+ it never reads what is slotted into the panel \u2014 so it cannot know whether that
84
+ content renders its own trailing controls (a ChatThread header-end slot with
85
+ share/settings icons, say) in the same top-right corner.
86
+
87
+ The mobile block below reserves a BAND of the panel's own padding above whatever
88
+ is slotted, sized to this button's own footprint, so nothing paints under this X
89
+ by default -- verified fix (round 1) against a real ChatThread header-end slot
90
+ colliding with it at 375px. Owner feedback on the real widget (round 2): for a
91
+ construct with only a title in the header, that band read as a dead empty strip
92
+ with the X floating alone in it -- "that doesn't look like the empty component
93
+ either, lets do better." The actual fix composes instead of reserving space:
94
+ ChatThread now has its own headerEndContent escape hatch (see its prop doc) so a
95
+ caller puts the close control INSIDE the header row, sharing it with the title --
96
+ zero collision by construction, no band needed. hideClose on this component (see
97
+ its prop doc) then suppresses this built-in X for exactly that case, and the
98
+ band above is scoped to :not([data-hide-close]) so it comes off ONLY there --
99
+ every other consumer (anyone who hasn't opted into hideClose, including a
100
+ hand-authored dock with real header-end content) keeps the band, same as round 1
101
+ shipped, so the collision it fixed stays fixed for them. What remains here for
102
+ that default case is a plain absolute overlay, top-right of the panel, with
103
+ these consumer-overridable inset tokens for the rare case it should deliberately
104
+ sit in front of something (e.g. a single small badge). */
105
+ [data-kai-dock] [part="close"] {
106
+ display: none;
107
+ position: absolute;
108
+ inset-block-start: var(--kai-dock-close-inset-block, 0.75rem);
109
+ inset-inline-end: var(--kai-dock-close-inset-inline, 0.75rem);
110
+ z-index: 1;
111
+ align-items: center;
112
+ justify-content: center;
113
+ inline-size: 2.25rem;
114
+ block-size: 2.25rem;
115
+ padding: 0;
116
+ border: 0;
117
+ border-radius: 9999px;
118
+ background: var(--color-background);
119
+ color: var(--color-foreground);
120
+ box-shadow: 0 2px 8px -2px rgb(0 0 0 / 0.3);
121
+ cursor: pointer;
122
+ }
123
+ [data-kai-dock] [part="close"]:hover { background: var(--color-muted, var(--color-background)); }
124
+ [data-kai-dock] [part="close"]:focus-visible { outline: 2px solid var(--color-ring); outline-offset: 2px; }
125
+
126
+ [data-kai-dock] [part="badge"] {
127
+ position: absolute;
128
+ inset-block-start: 3px;
129
+ inset-inline-end: 3px;
130
+ inline-size: 0.75rem;
131
+ block-size: 0.75rem;
132
+ border-radius: 9999px;
133
+ background: var(--color-destructive);
134
+ box-shadow: 0 0 0 2px var(--color-primary);
135
+ }
136
+
137
+ [data-kai-dock] [part="panel"] {
138
+ pointer-events: auto;
139
+ display: flex;
140
+ flex-direction: column;
141
+ overflow: hidden;
142
+ inline-size: var(--kai-dock-width, 380px);
143
+ block-size: var(--kai-dock-height, 600px);
144
+ max-inline-size: calc(100vw - 2 * var(--kai-dock-inset, 1.5rem));
145
+ max-block-size: calc(
146
+ 100dvh - 2 * var(--kai-dock-inset, 1.5rem)
147
+ - var(--kai-dock-launcher-size, 56px) - var(--kai-dock-gap, 0.85rem)
148
+ );
149
+ border: 1px solid var(--color-border);
150
+ border-radius: var(--kai-dock-radius, 16px);
151
+ background: var(--color-background);
152
+ color: var(--color-foreground);
153
+ box-shadow: 0 20px 45px -12px rgb(0 0 0 / 0.35);
154
+ /* VISIBILITY IS SWITCHED, NEVER ANIMATED, and the zero duration is the whole point.
155
+ visibility 180ms here meant the COMPUTED value stayed hidden for about two
156
+ frames after opening while the inline style already said visible \u2014 and a
157
+ focus() into a hidden subtree is dropped silently, so focusOnOpen never landed
158
+ in a real browser (it worked under reduced motion, which is what made it look like
159
+ a focus bug rather than a paint one).
160
+ This rule is the CLOSING direction: hold visibility for the length of the fade so
161
+ the panel does not vanish mid-transition, then switch. The opening direction sets
162
+ the delay to 0s below, so opening is synchronous and focus has somewhere to go. */
163
+ transition: opacity 180ms ease, transform 180ms ease, visibility 0s linear 180ms;
164
+ }
165
+ [data-kai-dock] [part="panel"][data-expanded] {
166
+ transition: opacity 180ms ease, transform 180ms ease, visibility 0s linear 0s;
167
+ }
168
+ /* The panel is a flex column and the slotted surface fills it -- the one layout
169
+ fact both reference implementations wrote by hand (flex:1; min-height:0). Both
170
+ spellings are here on purpose: ::slotted covers the shadow-DOM facade, > *
171
+ covers a plain Solid caller, and each is inert in the other's world (a &lt;slot>
172
+ is display:contents, so flex properties do nothing to it). */
173
+ [data-kai-dock] [part="panel"] ::slotted(*) { flex: 1 1 auto; min-block-size: 0; }
174
+ [data-kai-dock] [part="panel"] > * { flex: 1 1 auto; min-block-size: 0; }
175
+ [data-kai-dock] [part="panel"]:focus-visible { outline: 2px solid var(--color-ring); outline-offset: 2px; }
176
+ [data-kai-dock][data-position^="bottom"] [part="panel"][data-closed] { transform: translateY(0.5rem); }
177
+ [data-kai-dock][data-position^="top"] [part="panel"][data-closed] { transform: translateY(-0.5rem); }
178
+
179
+ /* Narrow viewports take the panel full-bleed. A SHIPPED DEFAULT, not a prop: both
180
+ references wrote this rule independently, which makes it a HOW. While the panel is
181
+ OPEN at this width the launcher hides and the panel's own [part="close"] X becomes
182
+ the pointer close route instead \u2014 a FAB floating over a full-bleed panel read as
183
+ wrong (owner feedback) and Escape alone strands a touch user with no visible
184
+ affordance at all. Closed, the launcher is unaffected: it is the panel's own
185
+ [data-expanded] state that gates both rules below, not the media query alone. */
186
+ @media (max-width: 480px) {
187
+ [data-kai-dock] [part="panel"] {
188
+ position: fixed;
189
+ inset: 0;
190
+ inline-size: auto;
191
+ block-size: auto;
192
+ max-inline-size: none;
193
+ max-block-size: none;
194
+ border: 0;
195
+ border-radius: 0;
196
+ }
197
+
198
+ /* Reserve a band for the built-in [part="close"] X ABOVE whatever is slotted,
199
+ rather than overlaying it on top of the panel's own content \u2014 the fix round 1
200
+ collision protection (verified against a real ChatThread header-end slot at
201
+ 375px: without this, the X painted directly over trailing icon buttons).
202
+ DERIVED from the button's own inset + size tokens, not a second hand-typed
203
+ number.
204
+
205
+ SCOPED to :not([data-hide-close]) \u2014 round 2 (owner feedback: the band read as
206
+ a dead strip when nothing but the X occupied it) removed this UNCONDITIONALLY
207
+ and reintroduced the very collision round 1 fixed, for every consumer who
208
+ never opted into hideClose. hideClose is only true for a caller that supplies
209
+ its OWN close control in its own header row (ChatThread's headerEndContent is
210
+ the one that does today) \u2014 the built-in X and this band both come off
211
+ together for that case, since there is nothing left for the band to protect.
212
+ Every other consumer -- including a hand-authored kai-dock with real
213
+ slot="header-end" content and no opinion on hideClose -- keeps the band, the
214
+ same as round 1 shipped. */
215
+ [data-kai-dock]:not([data-hide-close]) [part="panel"] {
216
+ padding-block-start: calc(2 * var(--kai-dock-close-inset-block, 0.75rem) + 2.25rem);
217
+ }
218
+
219
+ /* The full-bleed panel gets its own close affordance instead of relying on the
220
+ launcher, which is hidden below while the panel is open at this width \u2014 a FAB
221
+ floating over a full-bleed panel with no other visible close route is exactly
222
+ what the owner flagged. Escape and the X both still work; the launcher comes
223
+ back the instant the panel closes because data-expanded is gone by then.
224
+ Absolutely positioned, so the padding-block-start above (a content-box
225
+ concern) does not shift IT \u2014 only the in-flow slotted content. Content that
226
+ supplies its own close control passes hideClose, which drops the button from
227
+ the render tree entirely (see the component body) rather than being gated
228
+ here \u2014 so this rule stays a plain, unconditional width-query switch; the band
229
+ above is what actually varies with hideClose. */
230
+ [data-kai-dock] [part="close"] { display: inline-flex; }
231
+ [data-kai-dock]:has([part="panel"][data-expanded]) [part="launcher"] { display: none; }
232
+ }
233
+
234
+ @media (prefers-reduced-motion: reduce) {
235
+ /* [data-expanded] is listed explicitly because the open-direction rule above is
236
+ MORE SPECIFIC than a bare [part="panel"], so without it an opening panel kept
237
+ animating opacity and transform for exactly the users who asked it not to. */
238
+ [data-kai-dock] [part="launcher"],
239
+ [data-kai-dock] [part="panel"],
240
+ [data-kai-dock] [part="panel"][data-expanded] { transition: none; }
241
+ [data-kai-dock] [part="panel"][data-closed] { transform: none; }
242
+ }
243
+ `),ee=f("<span part=badge aria-hidden=true>"),te=f("<button type=button part=close>"),ae=f("<div data-kai-dock><button part=launcher type=button><span aria-hidden=true style=display:inline-flex></span></button><div part=panel role=dialog aria-modal=false tabindex=-1>");function F(){return d(J,{size:24})}function z(){return d(G,{size:24})}function oe(){var e;let s=document.activeElement;for(;(e=s?.shadowRoot)!=null&&e.activeElement;)s=s.shadowRoot.activeElement;return s}function ne(e,s){let o=s;for(;o;){if(o===e)return!0;const w=o instanceof Element?o.assignedSlot:null;if(w){o=w;continue}if(o.parentNode){o=o.parentNode;continue}o=o instanceof ShadowRoot?o.host:null}return!1}function ie(e){var s;const o=`kai-dock-panel-${U()}`,[w,O]=Y(e.defaultOpen??!1),b=()=>e.open!==void 0,n=()=>b()?!!e.open:w(),h=r=>{var i;b()||O(r),(i=e.onOpenChange)==null||i.call(e,r)};(s=e.controllerRef)==null||s.call(e,{open:n,setOpen:h});let k,g;const a=()=>e.label??"Chat",c=()=>n()?e.closeLabel??`Close ${a()}`:e.openLabel??`Open ${a()}`,y=()=>{var r;const i=e.focusOnOpen??"content";if(i!=="none"){if(i==="content"){const m=(r=e.contentTarget)==null?void 0:r.call(e);if(m?.focus(),m&&ne(k,oe()))return}k?.focus()}};W(r=>{const i=n();return i!==r&&queueMicrotask(i?y:()=>g?.focus()),i},B(()=>e.open??e.defaultOpen??!1));const P=r=>{r.key!=="Escape"||!n()||h(!1)};return[Z(),(()=>{var r=ae(),i=r.firstChild,m=i.firstChild,l=i.nextSibling;return r.$$keydown=P,i.$$click=()=>h(!n()),H(t=>{var u;g=t,(u=e.launcherRef)==null||u.call(e,t)},i),p(i,"aria-controls",o),v(i,d(C,{get when(){return _(()=>!!e.unread)()&&!n()},get children(){return ee()}}),m),v(m,d(C,{get when(){return n()},get fallback(){return e.launcher??d(F,{})},get children(){return e.launcherOpen??e.launcher??d(z,{})}})),H(t=>{var u;k=t,(u=e.panelRef)==null||u.call(e,t)},l),p(l,"id",o),v(l,d(C,{get when(){return!e.hideClose},get children(){var t=te();return t.$$click=()=>h(!1),v(t,d(z,{})),V(()=>p(t,"aria-label",c())),t}}),null),v(l,()=>e.children,null),V(t=>{var u=e.position??"bottom-end",T=!!e.hideClose,I=n()?"true":"false",S=c(),R=e.disabled||void 0,N=a(),L=n()?"":void 0,D=n()?void 0:"",A=!n(),$=n()?"visible":"hidden",M=n()?"1":"0",X=n()?"auto":"none";return u!==t.e&&p(r,"data-position",t.e=u),T!==t.t&&q(r,"data-hide-close",t.t=T),I!==t.a&&p(i,"aria-expanded",t.a=I),S!==t.o&&p(i,"aria-label",t.o=S),R!==t.i&&(i.disabled=t.i=R),N!==t.n&&p(l,"aria-label",t.n=N),L!==t.s&&p(l,"data-expanded",t.s=L),D!==t.h&&p(l,"data-closed",t.h=D),A!==t.r&&q(l,"inert",t.r=A),$!==t.d&&E(l,"visibility",t.d=$),M!==t.l&&E(l,"opacity",t.l=M),X!==t.u&&E(l,"pointer-events",t.u=X),t},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0,u:void 0}),r})()]}j(["keydown","click"]);var re=f("<slot name=panel>"),se=f("<slot>"),le=f("<slot name=launcher>"),de=f("<slot name=launcher-open><slot name=launcher>");K("kai-dock",{open:void 0,defaultOpen:void 0,position:"bottom-end",label:"Chat",openLabel:void 0,closeLabel:void 0,unread:void 0,disabled:void 0,hideClose:void 0,focusOnOpen:"content"},(e,s)=>{const{flag:o,element:w,expose:O,reflectFlag:b}=s;let n,h,k;Q(s,()=>n,()=>e.open),b("unread"),b("disabled"),b("defaultOpen"),b("hideClose");const g=B(()=>o("open")||o("defaultOpen"));return O({focus:a=>{var c;return(c=n!=null&&n.open()?h:k)==null?void 0:c.focus(a)}}),d(ie,{defaultOpen:g,get position(){return e.position},get label(){return e.label},get openLabel(){return e.openLabel},get closeLabel(){return e.closeLabel},get unread(){return o("unread")},get disabled(){return o("disabled")},get hideClose(){return o("hideClose")},get focusOnOpen(){return e.focusOnOpen},contentTarget:()=>{const a=h?.querySelectorAll("slot");for(const c of Array.from(a??[])){const y=c.assignedElements()[0];if(y instanceof HTMLElement)return y}},controllerRef:a=>n=a,panelRef:a=>h=a,launcherRef:a=>k=a,get launcher(){return(()=>{var a=le();return a._$owner=x(),v(a,d(F,{})),a})()},get launcherOpen(){return(()=>{var a=de(),c=a.firstChild;return a._$owner=x(),c._$owner=x(),v(c,d(z,{})),a})()},get children(){return[(()=>{var a=re();return a._$owner=x(),a})(),(()=>{var a=se();return a._$owner=x(),a})()]}})});
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ import{f as c,c as t,v as s,i as n,S as i,m as u,t as o}from"../define-CGGX-7Vg.js";import{D as f,a as m,c as p}from"../dropdown-BwhViJFd.js";import{r as d}from"../icon-BpixdZNq.js";import{c as b}from"../cn-DN5AWfiS.js";import{w as v}from"../disclosure-CbLtajUQ.js";import{e as h}from"../ellipsis-DFr4Vqr3.js";var w=o("<style>:host([full]){display:block}"),I=o("<slot name=trigger>"),x=o("<slot>");c("kai-dropdown",{triggerIcon:void 0,triggerLabel:void 0,triggerIconTrailing:void 0,label:void 0,full:!1,open:void 0,defaultOpen:void 0,disabled:void 0},(r,g)=>{const{flag:l}=g;let a;return v(g,()=>a,()=>r.open),[w(),t(p,{get defaultOpen(){return l("defaultOpen")},get disabled(){return l("disabled")},controllerRef:e=>a=e,get children(){return[t(f,{get class(){return b("inline-flex items-center rounded-md transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",r.triggerLabel?"gap-1.5 px-2 py-1.5 text-sm font-medium text-muted-foreground hover:bg-accent hover:text-foreground":"justify-center p-1.5 text-foreground hover:bg-muted",l("full")&&"w-full")},get"aria-label"(){return u(()=>!!r.triggerLabel)()?void 0:r.label??"Open menu"},get children(){var e=I();return e._$owner=s(),n(e,t(i,{get when(){return r.triggerIcon},get children(){return d(r.triggerIcon,{class:"size-4 shrink-0"})}}),null),n(e,t(i,{get when(){return r.triggerLabel},get children(){return r.triggerLabel}}),null),n(e,t(i,{get when(){return r.triggerIconTrailing},get children(){return d(r.triggerIconTrailing,{class:"size-3.5 shrink-0 opacity-60"})}}),null),n(e,t(i,{get when(){return u(()=>!r.triggerIcon)()&&!r.triggerLabel},get children(){return t(h,{class:"size-4"})}}),null),e}}),t(m,{class:"min-w-[10rem]",get children(){var e=x();return e._$owner=s(),e}})]}})]});
@@ -1 +1 @@
1
- import{g as y,k as g,i as E,c as k,a as D,d as q,b as S,S as C,t as x,B as p,v as R,e as K,f as j}from"./chunks/define-B_tXMYRm.js";import{c as $}from"./chunks/cn-CU7UAWzk.js";import{I as B}from"./chunks/input-DrseEjhp.js";var F=x("<span>"),T=x("<span part=text>");function V(a){const[s,r]=y(!!a.editing);g(()=>r(!!a.editing));const[n,u]=y(a.value);g(()=>u(a.value));let c,l=!1;const f=()=>{const e=c?.querySelector("input");e&&(e.focus(),e.select())};g(()=>{s()&&queueMicrotask(f)});const m=()=>{a.disabled||r(!0)},v=e=>{var d;p(s)&&(r(!1),e!==p(n)&&(u(e),(d=a.onRename)==null||d.call(a,e)))},o=()=>{var e;p(s)&&(r(!1),(e=a.onCancel)==null||e.call(a))},h=e=>{const d=e.currentTarget;e.key==="Enter"?(e.preventDefault(),l=!0,v(d.value)):e.key==="Escape"&&(e.preventDefault(),l=!0,o())},t=e=>{if(l){l=!1;return}v(e)};return(()=>{var e=F(),d=c;return typeof d=="function"?R(d,e):c=e,E(e,k(C,{get when(){return s()},get fallback(){return(()=>{var b=T();return b.$$keydown=i=>{!a.disabled&&(i.key==="Enter"||i.key==="F2")&&(i.preventDefault(),m())},b.$$dblclick=m,E(b,()=>n()||a.placeholder||""),D(i=>{var A=a.disabled?void 0:0,w=$("inline-block max-w-full truncate rounded px-1 py-0.5 text-sm text-foreground",a.disabled?"cursor-default opacity-60":"cursor-text hover:bg-muted",!n()&&"text-muted-foreground");return A!==i.e&&q(b,"tabindex",i.e=A),w!==i.t&&S(b,i.t=w),i},{e:void 0,t:void 0}),b})()},get children(){return k(B,{get value(){return n()},get placeholder(){return a.placeholder},get disabled(){return a.disabled},size:"sm",class:"h-7 py-0",get"aria-label"(){return a.placeholder??"Edit label"},onKeyDown:h,onValueChange:t})}})),D(()=>S(e,$("inline-flex max-w-full items-center",a.class))),e})()}K(["dblclick","keydown"]);var z=x("<style>:host{display:inline-flex}");j("kai-editable-label",{value:void 0,editing:!1,placeholder:void 0,disabled:!1},(a,s)=>{const{element:r,dispatch:n,flag:u,expose:c}=s,[l,f]=y(a.value??r.getAttribute("value")??""),m=t=>t==null?r.getAttribute("value")??"":String(t);Object.defineProperty(r,"value",{get:()=>l(),set:t=>{const e=m(t);p(l)!==e&&f(e)},configurable:!0,enumerable:!0}),g(()=>{const t=l();t?r.getAttribute("value")!==t&&r.setAttribute("value",t):r.hasAttribute("value")&&r.removeAttribute("value")});const[v,o]=y(u("editing"));g(()=>o(u("editing"))),g(()=>{v()?r.hasAttribute("editing")||r.setAttribute("editing",""):r.hasAttribute("editing")&&r.removeAttribute("editing")});const h=()=>{var t;return((t=r.shadowRoot)==null?void 0:t.querySelector("input"))??null};return c({edit:()=>{u("disabled")||o(!0)},commit:()=>{var t;(t=h())==null||t.blur()},cancel:()=>{const t=h();t?t.dispatchEvent(new KeyboardEvent("keydown",{key:"Escape",bubbles:!0,composed:!0})):p(v)&&(o(!1),n("kai-cancel",{}))}}),[z(),k(V,{get value(){return l()},get editing(){return v()},get placeholder(){return a.placeholder},get disabled(){return u("disabled")},onRename:t=>{o(!1),t!==p(l)&&(f(t),n("kai-rename",{value:t}))},onCancel:()=>{o(!1),n("kai-cancel",{})}})]});
1
+ import{g as y,j as g,i as E,c as k,a as D,d as q,b as S,S as C,t as x,z as p,u as R,e as j,f as z}from"../define-CGGX-7Vg.js";import{c as $}from"../cn-DN5AWfiS.js";import{I as K}from"../input-d1Yuu-hz.js";var F=x("<span>"),I=x("<span part=text>");function T(a){const[s,r]=y(!!a.editing);g(()=>r(!!a.editing));const[n,u]=y(a.value);g(()=>u(a.value));let c,l=!1;const f=()=>{const e=c?.querySelector("input");e&&(e.focus(),e.select())};g(()=>{s()&&queueMicrotask(f)});const m=()=>{a.disabled||r(!0)},v=e=>{var d;p(s)&&(r(!1),e!==p(n)&&(u(e),(d=a.onRename)==null||d.call(a,e)))},o=()=>{var e;p(s)&&(r(!1),(e=a.onCancel)==null||e.call(a))},h=e=>{const d=e.currentTarget;e.key==="Enter"?(e.preventDefault(),l=!0,v(d.value)):e.key==="Escape"&&(e.preventDefault(),l=!0,o())},t=e=>{if(l){l=!1;return}v(e)};return(()=>{var e=F(),d=c;return typeof d=="function"?R(d,e):c=e,E(e,k(C,{get when(){return s()},get fallback(){return(()=>{var b=I();return b.$$keydown=i=>{!a.disabled&&(i.key==="Enter"||i.key==="F2")&&(i.preventDefault(),m())},b.$$dblclick=m,E(b,()=>n()||a.placeholder||""),D(i=>{var A=a.disabled?void 0:0,w=$("inline-block max-w-full truncate rounded px-1 py-0.5 text-sm text-foreground",a.disabled?"cursor-default opacity-60":"cursor-text hover:bg-muted",!n()&&"text-muted-foreground");return A!==i.e&&q(b,"tabindex",i.e=A),w!==i.t&&S(b,i.t=w),i},{e:void 0,t:void 0}),b})()},get children(){return k(K,{get value(){return n()},get placeholder(){return a.placeholder},get disabled(){return a.disabled},size:"sm",class:"h-7 py-0",get"aria-label"(){return a.placeholder??"Edit label"},onKeyDown:h,onValueChange:t})}})),D(()=>S(e,$("inline-flex max-w-full items-center",a.class))),e})()}j(["dblclick","keydown"]);var B=x("<style>:host{display:inline-flex}");z("kai-editable-label",{value:void 0,editing:!1,placeholder:void 0,disabled:!1},(a,s)=>{const{element:r,dispatch:n,flag:u,expose:c}=s,[l,f]=y(a.value??r.getAttribute("value")??""),m=t=>t==null?r.getAttribute("value")??"":String(t);Object.defineProperty(r,"value",{get:()=>l(),set:t=>{const e=m(t);p(l)!==e&&f(e)},configurable:!0,enumerable:!0}),g(()=>{const t=l();t?r.getAttribute("value")!==t&&r.setAttribute("value",t):r.hasAttribute("value")&&r.removeAttribute("value")});const[v,o]=y(u("editing"));g(()=>o(u("editing"))),g(()=>{v()?r.hasAttribute("editing")||r.setAttribute("editing",""):r.hasAttribute("editing")&&r.removeAttribute("editing")});const h=()=>{var t;return((t=r.shadowRoot)==null?void 0:t.querySelector("input"))??null};return c({edit:()=>{u("disabled")||o(!0)},commit:()=>{var t;(t=h())==null||t.blur()},cancel:()=>{const t=h();t?t.dispatchEvent(new KeyboardEvent("keydown",{key:"Escape",bubbles:!0,composed:!0})):p(v)&&(o(!1),n("kai-cancel",{}))}}),[B(),k(T,{get value(){return l()},get editing(){return v()},get placeholder(){return a.placeholder},get disabled(){return u("disabled")},onRename:t=>{o(!1),t!==p(l)&&(f(t),n("kai-rename",{value:t}))},onCancel:()=>{o(!1),n("kai-cancel",{})}})]});
@@ -34,6 +34,43 @@ export interface KaiSegmentedOption {
34
34
  label: string;
35
35
  icon?: string;
36
36
  }
37
+ /** A single row of `<kai-radio-group>`.
38
+ *
39
+ * Distinct from the Solid `RadioOption`, whose `label` and `description` are JSX
40
+ * nodes: on the element both are plain strings, because an element property has to
41
+ * survive being assigned from HTML/React/Vue/Svelte with no framework in between. */
42
+ export interface KaiRadioOption {
43
+ value: string;
44
+ label: string;
45
+ description?: string;
46
+ disabled?: boolean;
47
+ }
48
+ /** A single row of `<kai-checkbox-group>`.
49
+ *
50
+ * Distinct from the Solid `CheckboxOption`, whose `value` is generic and whose
51
+ * `label` and `description` are JSX nodes: on the element all three are plain
52
+ * strings, because an element property has to survive being assigned from
53
+ * HTML/React/Vue/Svelte with no framework in between. Structurally identical to
54
+ * `KaiRadioOption`, and kept as its own name anyway: the two elements are free to
55
+ * diverge, and a consumer typing a checkbox list should not have to import the radio
56
+ * group's type to do it. */
57
+ export interface KaiCheckboxOption {
58
+ value: string;
59
+ label: string;
60
+ description?: string;
61
+ disabled?: boolean;
62
+ }
63
+ /** A single choice in `<kai-select>`.
64
+ *
65
+ * Distinct from the Solid `SelectOption`, whose `value` is generic: on the element
66
+ * it is a string, because a native `<option>`'s value is a string and an element
67
+ * property has to survive being assigned from HTML/React/Vue/Svelte with no
68
+ * framework in between. `label` defaults to `value`. */
69
+ export interface KaiSelectOption {
70
+ value: string;
71
+ label?: string;
72
+ disabled?: boolean;
73
+ }
37
74
  /** A single citation in `<kai-sources>`' `sources` property. Also the shape
38
75
  * `<kai-source>` light-DOM children are parsed into. */
39
76
  export interface KaiSourceItem {
@@ -0,0 +1,81 @@
1
+ import { ElementRegistryEvent } from './diagnostic-events.js';
2
+ /**
3
+ * What SHAPE arrived in the attribute -- or `undefined` when the attribute is
4
+ * fine and nothing should be reported.
5
+ *
6
+ * An attribute is NOT automatically a violation on a non-scalar prop. A literal
7
+ * `conversations='[{"id":"a"}]'` is valid JSON, `JSON.parse` succeeds, and the
8
+ * property really does receive an array: that works, and reporting it would be
9
+ * reporting correct code. The violation is precisely the case where the value
10
+ * that reaches the property is not an object -- either because `JSON.parse`
11
+ * threw and component-register's `catch` handed back the raw string, or because
12
+ * the JSON was valid but scalar.
13
+ *
14
+ * EVERY RETURN IS A SHAPE, NEVER CONTENT. The vocabulary is closed and small:
15
+ * two fixed markers, a type name, and a LENGTH. The raw text is never returned,
16
+ * never interpolated, and never measured for anything but its length -- which
17
+ * is what lets this run with no payload gate at all. Pinned with sentinels by
18
+ * `element-diagnostics-payload.test.ts`.
19
+ */
20
+ export declare function classifyAttributeValue(raw: string): string | undefined;
21
+ /** Whether this tag has anything to watch at all. `defineWebComponent` asks
22
+ * BEFORE it decides whether it needs to intercept the registry, so a tag with
23
+ * no non-scalar prop pays not even the interception. */
24
+ export declare function elementDiagnosticsWanted(tag: string): boolean;
25
+ /**
26
+ * Install the contract checks onto one element class's PROTOTYPE.
27
+ *
28
+ * MUST BE CALLED BEFORE `customElements.define()` SEES THE CLASS.
29
+ *
30
+ * This is not a preference, it is the platform: `define()` snapshots the
31
+ * lifecycle callbacks -- `connectedCallback`, `attributeChangedCallback` and
32
+ * the rest -- off the prototype into the custom-element definition at
33
+ * definition time, and the browser invokes THOSE. Replacing a prototype method
34
+ * afterwards changes an object nothing reads: the wrapper installs perfectly,
35
+ * `hasOwnProperty` confirms it is there, and it is never called once. (Measured
36
+ * exactly that way in jsdom before this comment existed.) It is the same trap,
37
+ * for the same reason, that `defineWithNonReflectingProps` in `define.tsx` was
38
+ * built to get around -- so this rides through that same seam.
39
+ *
40
+ * Returns without touching anything when the tag has no non-scalar prop, which
41
+ * is 37 of the 80 elements: for those this capability has no runtime presence
42
+ * whatsoever.
43
+ */
44
+ export declare function installElementDiagnostics(tag: string, proto: object): void;
45
+ /**
46
+ * Snapshot which `kai-*` elements are defined in THIS realm, and emit it.
47
+ *
48
+ * The question is hydration. An undefined custom element is a perfectly valid,
49
+ * perfectly inert `HTMLElement`: an SSR page whose markup contains `<kai-chat>`
50
+ * but whose element bundle never loaded renders empty boxes, throws nothing and
51
+ * logs nothing. The SSR starters already answer this by hand for a hard-coded
52
+ * handful (`HydrationBadge.tsx` in the nextjs and tanstack-start starters); this
53
+ * is the same answer, derived, over every tag.
54
+ *
55
+ * WHY THE MANIFEST AND NOT `element-meta.json`. The two generated artifacts
56
+ * disagree -- 79 tags against 80 entries -- and the manifest is the one that
57
+ * answers THIS question. `kai-remote` is in the meta file because
58
+ * `gen-element-api.mjs` scans the `src/elements` directory listing, and absent
59
+ * from the manifest because `gen-elements-manifest.mjs` reads the import list in
60
+ * `register-impl.ts`, which does not import `remote.tsx`.
61
+ *
62
+ * AND THAT IS DELIBERATE, not a generator bug -- `vite.config.elements.ts:44-50`
63
+ * says so at the site: `<kai-remote>` mounts a sandboxed cross-origin iframe and
64
+ * is opt-in, reachable only through `@kitn.ai/ui/elements/remote` or the React
65
+ * `Remote` wrapper, and intentionally kept out of the register-all bundle. So
66
+ * the honest universe for "did the element bundle load" is the 79 that bundle
67
+ * registers. Listing `kai-remote` beside them would report a permanent "not
68
+ * defined" against an element almost no app is missing, and adding it to the
69
+ * manifest -- the obvious "fix" -- would hand an opt-in cross-origin iframe
70
+ * element to the autoloader's lazy-load set, which is a behaviour change wearing
71
+ * the costume of a data fix.
72
+ *
73
+ * The cost is stated rather than hidden: a consumer who HAS opted into
74
+ * `kai-remote` sees it in neither list. `element-artifact-divergence.test.ts`
75
+ * pins the divergence at exactly this one tag, so it stays a known exception and
76
+ * a NEW one fails.
77
+ *
78
+ * Returns the event it emitted, or `undefined` where there is no custom-element
79
+ * registry (SSR) or nobody is listening.
80
+ */
81
+ export declare function emitElementRegistry(): ElementRegistryEvent | undefined;
@@ -1 +1 @@
1
- import{f as t,c as e}from"./chunks/define-B_tXMYRm.js";import{E as o}from"./chunks/embed-CjAD2jSi.js";import{e as m}from"./chunks/card-routing-BK09BdmL.js";t("kai-embed",{cardId:void 0,data:void 0},(r,{element:a})=>e(o,{get cardId(){return r.cardId??""},get data(){return r.data??{provider:"generic"}},onEmit:d=>m(a,d)}));
1
+ import{f as t,c as e}from"../define-CGGX-7Vg.js";import{E as o}from"../embed-5s_vU4J0.js";import{e as m}from"../card-routing-DifQgS7n.js";t("kai-embed",{cardId:void 0,data:void 0},(r,{element:a})=>e(o,{get cardId(){return r.cardId??""},get data(){return r.data??{provider:"generic"}},onEmit:d=>m(a,d)}));
@@ -1 +1 @@
1
- import{s as i,q as c,m as l,i as d,t as a,f,c as s,u as o,S as m}from"./chunks/define-B_tXMYRm.js";import{c as g}from"./chunks/index-BCRhi84a.js";import{c as u}from"./chunks/cn-CU7UAWzk.js";var h=a("<div data-slot=empty>"),v=a("<div data-slot=empty-header>"),p=a("<div data-slot=empty-media>"),x=a("<div data-slot=empty-title>"),y=a("<p data-slot=empty-description>"),w=a("<div data-slot=empty-content>");function b(r){const[e,n]=i(r,["class","children"]);return(()=>{var t=h();return c(t,l({get class(){return u("flex min-w-0 flex-1 flex-col items-center justify-center gap-6 rounded-lg p-6 text-center text-balance",e.class)}},n),!1,!0),d(t,()=>e.children),t})()}function k(r){const[e,n]=i(r,["class","children"]);return(()=>{var t=v();return c(t,l({get class(){return u("flex max-w-sm flex-col items-center gap-2 text-center",e.class)}},n),!1,!0),d(t,()=>e.children),t})()}const T=g("flex shrink-0 items-center justify-center mb-2 [&_svg]:size-6",{variants:{variant:{default:"bg-transparent",icon:"bg-muted text-foreground size-10 rounded-lg"}},defaultVariants:{variant:"default"}});function _(r){const[e,n]=i(r,["class","variant","children"]);return(()=>{var t=p();return c(t,l({get"data-variant"(){return e.variant??"default"},get class(){return u(T({variant:e.variant}),e.class)}},n),!1,!0),d(t,()=>e.children),t})()}function j(r){const[e,n]=i(r,["class","children"]);return(()=>{var t=x();return c(t,l({get class(){return u("text-lg font-medium tracking-tight",e.class)}},n),!1,!0),d(t,()=>e.children),t})()}function z(r){const[e,n]=i(r,["class","children"]);return(()=>{var t=y();return c(t,l({get class(){return u("text-muted-foreground text-sm/relaxed [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary",e.class)}},n),!1,!0),d(t,()=>e.children),t})()}function $(r){const[e,n]=i(r,["class","children"]);return(()=>{var t=w();return c(t,l({get class(){return u("flex w-full max-w-sm min-w-0 flex-col items-center gap-2 text-sm text-balance",e.class)}},n),!1,!0),d(t,()=>e.children),t})()}var q=a("<slot name=media>"),C=a("<slot>");f("kai-empty",{emptyTitle:"",description:""},r=>s(b,{get children(){return[s(k,{get children(){return[s(_,{variant:"icon",get children(){var e=q();return e._$owner=o(),e}}),s(m,{get when(){return r.emptyTitle},get children(){return s(j,{get children(){return r.emptyTitle}})}}),s(m,{get when(){return r.description},get children(){return s(z,{get children(){return r.description}})}})]}}),s($,{get children(){var e=C();return e._$owner=o(),e}})]}}));
1
+ import{s as i,p as c,q as l,i as d,t as a,f,c as s,v as o,S as m}from"../define-CGGX-7Vg.js";import{c as g}from"../index-xu_pdcPi.js";import{c as u}from"../cn-DN5AWfiS.js";var v=a("<div data-slot=empty>"),h=a("<div data-slot=empty-header>"),p=a("<div data-slot=empty-media>"),x=a("<div data-slot=empty-title>"),y=a("<p data-slot=empty-description>"),w=a("<div data-slot=empty-content>");function b(r){const[t,n]=i(r,["class","children"]);return(()=>{var e=v();return c(e,l({get class(){return u("flex min-w-0 flex-1 flex-col items-center justify-center gap-6 rounded-lg p-6",t.class)}},n),!1,!0),d(e,()=>t.children),e})()}function k(r){const[t,n]=i(r,["class","children"]);return(()=>{var e=h();return c(e,l({get class(){return u("flex max-w-sm flex-col items-center gap-2 text-center",t.class)}},n),!1,!0),d(e,()=>t.children),e})()}const T=g("flex shrink-0 items-center justify-center mb-2 [&_svg]:size-6",{variants:{variant:{default:"bg-transparent",icon:"bg-muted text-foreground size-10 rounded-lg"}},defaultVariants:{variant:"default"}});function _(r){const[t,n]=i(r,["class","variant","children"]);return(()=>{var e=p();return c(e,l({get"data-variant"(){return t.variant??"default"},get class(){return u(T({variant:t.variant}),t.class)}},n),!1,!0),d(e,()=>t.children),e})()}function j(r){const[t,n]=i(r,["class","children"]);return(()=>{var e=x();return c(e,l({get class(){return u("text-title font-medium tracking-tight text-center text-balance",t.class)}},n),!1,!0),d(e,()=>t.children),e})()}function z(r){const[t,n]=i(r,["class","children"]);return(()=>{var e=y();return c(e,l({get class(){return u("text-muted-foreground text-body text-center text-balance [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary",t.class)}},n),!1,!0),d(e,()=>t.children),e})()}function $(r){const[t,n]=i(r,["class","children"]);return(()=>{var e=w();return c(e,l({get class(){return u("flex w-full max-w-sm min-w-0 flex-col items-center gap-2 text-sm text-balance",t.class)}},n),!1,!0),d(e,()=>t.children),e})()}var q=a("<slot name=media>"),C=a("<slot>");f("kai-empty",{emptyTitle:"",description:""},r=>s(b,{get children(){return[s(k,{get children(){return[s(_,{variant:"icon",get children(){var t=q();return t._$owner=o(),t}}),s(m,{get when(){return r.emptyTitle},get children(){return s(j,{get children(){return r.emptyTitle}})}}),s(m,{get when(){return r.description},get children(){return s(z,{get children(){return r.description}})}})]}}),s($,{get children(){var t=C();return t._$owner=o(),t}})]}}));
@@ -1 +1 @@
1
- import{g as v,i as t,c as r,M as x,S,F as W,a as T,d as B,b as $,r as H,t as g,e as I,f as N}from"./chunks/define-B_tXMYRm.js";import{c as j}from"./chunks/cn-CU7UAWzk.js";import{B as z}from"./chunks/button-B9okqG73.js";import{T as q}from"./chunks/textarea-DPfuhswM.js";import{t as A,a as E}from"./chunks/thumbs-up-DQe0hvkZ.js";import{c as G}from"./chunks/check-MdLzbxrm.js";import{x as D}from"./chunks/x-BOhjBeOd.js";var J=g('<div class="flex w-full items-center justify-between"><div class="flex flex-1 items-center justify-start gap-4 py-3 pl-4"><span class="text-foreground font-medium"></span></div><div class="flex items-center justify-center gap-0.5 px-3 py-0"><button type=button class="text-muted-foreground hover:text-foreground flex size-8 items-center justify-center rounded-md transition-colors"aria-label=Helpful></button><button type=button class="text-muted-foreground hover:text-foreground flex size-8 items-center justify-center rounded-md transition-colors"aria-label="Not helpful"></button></div><div class="border-border flex items-center justify-center border-l"><button type=button class="text-muted-foreground hover:text-foreground flex items-center justify-center rounded-md p-3"aria-label=Close>'),K=g('<div class="flex flex-wrap gap-1.5">'),O=g('<div class="flex w-[min(22rem,80vw)] flex-col gap-2.5 p-3"><div class="flex items-center justify-between"><span class="text-foreground font-medium"></span><button type=button aria-label=Skip class="text-muted-foreground hover:text-foreground"></button></div><div class="flex justify-end gap-2">'),Q=g('<div class="flex items-center gap-2 px-4 py-3"role=status><span class="text-foreground font-medium">'),R=g("<div>"),U=g("<button type=button>");function V(e){const[u,f]=v("ask"),[b,M]=v(),[p,L]=v(),[k,P]=v(""),y=i=>{var l;M(i),(l=e.onFeedback)==null||l.call(e,i),f(i==="not-helpful"&&e.collectDetail?"detail":"thanks")},F=()=>{var i;(i=e.onSubmitDetail)==null||i.call(e,{value:b(),category:p(),comment:k()||void 0}),f("thanks")};return(()=>{var i=R();return t(i,r(H,{get children(){return[r(x,{get when(){return u()==="ask"},get children(){var l=J(),n=l.firstChild,m=n.firstChild,h=n.nextSibling,s=h.firstChild,a=s.nextSibling,c=h.nextSibling,o=c.firstChild;return t(n,r(S,{get when(){return e.icon},get children(){return e.icon}}),m),t(m,()=>e.title),s.$$click=()=>y("helpful"),t(s,r(A,{class:"size-4"})),a.$$click=()=>y("not-helpful"),t(a,r(E,{class:"size-4"})),o.$$click=()=>{var d;return(d=e.onClose)==null?void 0:d.call(e)},t(o,r(D,{class:"size-5"})),l}}),r(x,{get when(){return u()==="detail"},get children(){var l=O(),n=l.firstChild,m=n.firstChild,h=m.nextSibling,s=n.nextSibling;return t(m,()=>e.detailTitle??"What went wrong?"),h.$$click=()=>f("thanks"),t(h,r(D,{class:"size-4"})),t(l,r(S,{get when(){var a;return(a=e.categories)==null?void 0:a.length},get children(){var a=K();return t(a,r(W,{get each(){return e.categories},children:c=>(()=>{var o=U();return o.$$click=()=>L(p()===c?void 0:c),t(o,c),T(d=>{var w=p()===c,C=j("rounded-full border px-2.5 py-1 text-xs transition-colors",p()===c?"border-primary bg-primary text-primary-foreground":"border-border text-muted-foreground hover:text-foreground");return w!==d.e&&B(o,"aria-pressed",d.e=w),C!==d.t&&$(o,d.t=C),d},{e:void 0,t:void 0}),o})()})),a}}),s),t(l,r(q,{get value(){return k()},onInput:a=>P(a.currentTarget.value),get placeholder(){return e.detailPlaceholder??"Tell us more (optional)"},class:"border-border min-h-[3rem] rounded-md border px-2 py-1.5"}),s),t(s,r(z,{variant:"ghost",size:"sm",onClick:()=>f("thanks"),children:"Skip"}),null),t(s,r(z,{variant:"default",size:"sm",onClick:F,get children(){return e.submitLabel??"Submit"}}),null),l}}),r(x,{get when(){return u()==="thanks"},get children(){var l=Q(),n=l.firstChild;return t(l,r(G,{class:"size-4 text-emerald-500"}),n),t(n,()=>e.thanksMessage??"Thanks for your feedback"),l}})]}})),T(()=>$(i,j("bg-background border-border inline-flex rounded-[12px] border text-sm",e.class))),i})()}I(["click"]),N("kai-feedback-bar",{barTitle:"Was this helpful?",collectDetail:void 0,categories:void 0,detailTitle:void 0,detailPlaceholder:void 0,submitLabel:void 0,thanksMessage:void 0},(e,{dispatch:u,flag:f})=>r(V,{get title(){return e.barTitle},get collectDetail(){return f("collectDetail")},get categories(){return e.categories},get detailTitle(){return e.detailTitle},get detailPlaceholder(){return e.detailPlaceholder},get submitLabel(){return e.submitLabel},get thanksMessage(){return e.thanksMessage},onFeedback:b=>u("kai-feedback",{value:b}),onSubmitDetail:b=>u("kai-feedback-detail",b),onClose:()=>u("kai-close")}));
1
+ import{g as v,i as t,c as r,M as x,S,F as W,a as T,d as B,b as $,r as H,t as g,e as I,f as N}from"../define-CGGX-7Vg.js";import{c as j}from"../cn-DN5AWfiS.js";import{B as z}from"../button-BH6rN0U-.js";import{T as q}from"../textarea-3ay2Me2-.js";import{a as A,t as E}from"../thumbs-up-DQcu2HMO.js";import{c as G}from"../check-DPeeMUYx.js";import{x as D}from"../x-C5m1JFgi.js";var J=g('<div class="flex w-full items-center justify-between"><div class="flex flex-1 items-center justify-start gap-4 py-3 pl-4"><span class="text-foreground font-medium"></span></div><div class="flex items-center justify-center gap-0.5 px-3 py-0"><button type=button class="text-muted-foreground hover:text-foreground flex size-8 items-center justify-center rounded-md transition-colors"aria-label=Helpful></button><button type=button class="text-muted-foreground hover:text-foreground flex size-8 items-center justify-center rounded-md transition-colors"aria-label="Not helpful"></button></div><div class="border-border flex items-center justify-center border-l"><button type=button class="text-muted-foreground hover:text-foreground flex items-center justify-center rounded-md p-3"aria-label=Close>'),K=g('<div class="flex flex-wrap gap-1.5">'),O=g('<div class="flex w-[min(22rem,80vw)] flex-col gap-2.5 p-3"><div class="flex items-center justify-between"><span class="text-foreground font-medium"></span><button type=button aria-label=Skip class="text-muted-foreground hover:text-foreground"></button></div><div class="flex justify-end gap-2">'),Q=g('<div class="flex items-center gap-2 px-4 py-3"role=status><span class="text-foreground font-medium">'),R=g("<div>"),U=g("<button type=button>");function V(e){const[u,f]=v("ask"),[b,M]=v(),[p,L]=v(),[k,P]=v(""),y=i=>{var l;M(i),(l=e.onFeedback)==null||l.call(e,i),f(i==="not-helpful"&&e.collectDetail?"detail":"thanks")},F=()=>{var i;(i=e.onSubmitDetail)==null||i.call(e,{value:b(),category:p(),comment:k()||void 0}),f("thanks")};return(()=>{var i=R();return t(i,r(H,{get children(){return[r(x,{get when(){return u()==="ask"},get children(){var l=J(),n=l.firstChild,m=n.firstChild,h=n.nextSibling,s=h.firstChild,a=s.nextSibling,c=h.nextSibling,o=c.firstChild;return t(n,r(S,{get when(){return e.icon},get children(){return e.icon}}),m),t(m,()=>e.title),s.$$click=()=>y("helpful"),t(s,r(A,{class:"size-4"})),a.$$click=()=>y("not-helpful"),t(a,r(E,{class:"size-4"})),o.$$click=()=>{var d;return(d=e.onClose)==null?void 0:d.call(e)},t(o,r(D,{class:"size-5"})),l}}),r(x,{get when(){return u()==="detail"},get children(){var l=O(),n=l.firstChild,m=n.firstChild,h=m.nextSibling,s=n.nextSibling;return t(m,()=>e.detailTitle??"What went wrong?"),h.$$click=()=>f("thanks"),t(h,r(D,{class:"size-4"})),t(l,r(S,{get when(){var a;return(a=e.categories)==null?void 0:a.length},get children(){var a=K();return t(a,r(W,{get each(){return e.categories},children:c=>(()=>{var o=U();return o.$$click=()=>L(p()===c?void 0:c),t(o,c),T(d=>{var w=p()===c,C=j("rounded-full border px-2.5 py-1 text-xs transition-colors",p()===c?"border-primary bg-primary text-primary-foreground":"border-border text-muted-foreground hover:text-foreground");return w!==d.e&&B(o,"aria-pressed",d.e=w),C!==d.t&&$(o,d.t=C),d},{e:void 0,t:void 0}),o})()})),a}}),s),t(l,r(q,{get value(){return k()},onInput:a=>P(a.currentTarget.value),get placeholder(){return e.detailPlaceholder??"Tell us more (optional)"},class:"border-border min-h-[3rem] rounded-md border px-2 py-1.5"}),s),t(s,r(z,{variant:"ghost",size:"sm",onClick:()=>f("thanks"),children:"Skip"}),null),t(s,r(z,{variant:"default",size:"sm",onClick:F,get children(){return e.submitLabel??"Submit"}}),null),l}}),r(x,{get when(){return u()==="thanks"},get children(){var l=Q(),n=l.firstChild;return t(l,r(G,{class:"size-4 text-emerald-500"}),n),t(n,()=>e.thanksMessage??"Thanks for your feedback"),l}})]}})),T(()=>$(i,j("bg-background border-border inline-flex rounded-[12px] border text-sm",e.class))),i})()}I(["click"]),N("kai-feedback-bar",{barTitle:"Was this helpful?",collectDetail:void 0,categories:void 0,detailTitle:void 0,detailPlaceholder:void 0,submitLabel:void 0,thanksMessage:void 0},(e,{dispatch:u,flag:f})=>r(V,{get title(){return e.barTitle},get collectDetail(){return f("collectDetail")},get categories(){return e.categories},get detailTitle(){return e.detailTitle},get detailPlaceholder(){return e.detailPlaceholder},get submitLabel(){return e.submitLabel},get thanksMessage(){return e.thanksMessage},onFeedback:b=>u("kai-feedback",{value:b}),onSubmitDetail:b=>u("kai-feedback-detail",b),onClose:()=>u("kai-close")}));
@@ -1 +1 @@
1
- import{f as d,i as m,c as n,t as i}from"./chunks/define-B_tXMYRm.js";import{F as f}from"./chunks/file-tree-yGWNK0Js.js";var h=i("<style>:host{display:block;height:100%;min-height:0}"),o=i('<div style="display:grid;grid-template-rows:minmax(0, 1fr);grid-template-columns:minmax(0, 1fr);height:100%;min-height:0"><div class="overflow-auto scrollbar-thin py-1.5"style=min-height:0>');d("kai-file-tree",{files:[],activeFile:void 0,defaultExpanded:void 0,summary:!1},(e,{dispatch:a,flag:r})=>[h(),(()=>{var t=o(),l=t.firstChild;return m(l,n(f,{get files(){return e.files},get activeFile(){return e.activeFile},get defaultExpanded(){return e.defaultExpanded},get summary(){return r("summary")},onSelect:s=>a("kai-select",{path:s})})),t})()]);
1
+ import{f as d,i as m,c as n,t as i}from"../define-CGGX-7Vg.js";import{F as f}from"../file-tree-D3kBjXI5.js";var h=i("<style>:host{display:block;height:100%;min-height:0}"),o=i('<div style="display:grid;grid-template-rows:minmax(0, 1fr);grid-template-columns:minmax(0, 1fr);height:100%;min-height:0"><div class="overflow-auto scrollbar-thin py-1.5"style=min-height:0>');d("kai-file-tree",{files:[],activeFile:void 0,defaultExpanded:void 0,summary:!1},(e,{dispatch:a,flag:r})=>[h(),(()=>{var t=o(),l=t.firstChild;return m(l,n(f,{get files(){return e.files},get activeFile(){return e.activeFile},get defaultExpanded(){return e.defaultExpanded},get summary(){return r("summary")},onSelect:s=>a("kai-select",{path:s})})),t})()]);
@@ -1 +1 @@
1
- import{c as v,m as b,s as h,A as L,q as A,i as y,g as w,k as $,h as F,v as R,a as T,d as j,j as z,z as D,t as f,e as I,f as P,u as q}from"./chunks/define-B_tXMYRm.js";import{I as C}from"./chunks/Icon-b5A8hlHs.js";var H=[["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["polyline",{points:"17 8 12 3 7 8",key:"t8dd8p"}],["line",{x1:"12",x2:"12",y1:"3",y2:"15",key:"widbto"}]],M=s=>v(C,b(s,{name:"Upload",iconNode:H})),N=M,U=f("<input type=file class=hidden aria-hidden=true>"),_=f("<button type=button>");const k=D();function O(s){const[r]=h(s,["onFilesAdded","children","multiple","accept","disabled"]);let o;const[d,c]=w(!1);let a=0;const g=()=>r.multiple??!0,m=e=>{const t=Array.from(e);g()?r.onFilesAdded(t):r.onFilesAdded(t.slice(0,1))};$(()=>{const e=l=>{l.preventDefault(),l.stopPropagation()},t=l=>{var p;e(l),a++,(p=l.dataTransfer)!=null&&p.items.length&&c(!0)},i=l=>{e(l),a--,a===0&&c(!1)},u=l=>{var p;e(l),c(!1),a=0,(p=l.dataTransfer)!=null&&p.files.length&&m(l.dataTransfer.files)},n=window;n.addEventListener("dragenter",t),n.addEventListener("dragleave",i),n.addEventListener("dragover",e),n.addEventListener("drop",u),F(()=>{n.removeEventListener("dragenter",t),n.removeEventListener("dragleave",i),n.removeEventListener("dragover",e),n.removeEventListener("drop",u)})});const x=e=>{var t;const i=e.target;(t=i.files)!=null&&t.length&&(m(i.files),i.value="")},E={isDragging:d,get inputRef(){return o},setInputRef:e=>{o=e},multiple:r.multiple,disabled:r.disabled};return v(k.Provider,{value:E,get children(){return[(()=>{var e=U();return e.$$input=x,R(t=>{o=t},e),T(t=>{var i=g(),u=r.accept,n=r.disabled;return i!==t.e&&(e.multiple=t.e=i),u!==t.t&&j(e,"accept",t.t=u),n!==t.a&&(e.disabled=t.a=n),t},{e:void 0,t:void 0,a:void 0}),e})(),z(()=>r.children)]}})}function S(s){const[r,o]=h(s,["class","children"]),d=L(k),c=()=>{var a;return(a=d?.inputRef)==null?void 0:a.click()};return(()=>{var a=_();return a.$$click=c,A(a,b({get class(){return r.class}},o),!1,!0),y(a,()=>r.children),a})()}I(["input","click"]);var V=f("<slot>");P("kai-file-upload",{multiple:!0,accept:void 0,disabled:!1,label:"Click or drop files to upload"},(s,{dispatch:r,flag:o})=>v(O,{get multiple(){return o("multiple")},get accept(){return s.accept},get disabled(){return o("disabled")},onFilesAdded:d=>r("kai-files-added",{files:d}),get children(){return v(S,{class:"border-border bg-surface hover:bg-muted/60 text-muted-foreground flex w-full cursor-pointer flex-col items-center justify-center gap-2 rounded-xl border border-dashed px-6 py-8 text-sm transition-colors",get children(){return[v(N,{class:"size-5"}),(()=>{var d=V();return d._$owner=q(),y(d,()=>s.label),d})()]}})}}));
1
+ import{s as b,G as x,p as y,q as A,i as h,g as $,j as w,h as F,c as v,u as R,a as T,d as j,m as D,B as P,t as f,e as q,f as z,v as B}from"../define-CGGX-7Vg.js";import{u as C}from"../upload-BbGW6A_u.js";var I=f("<input type=file class=hidden aria-hidden=true>"),_=f("<button type=button>");const E=P();function G(o){const[r]=b(o,["onFilesAdded","children","multiple","accept","disabled"]);let s;const[d,u]=$(!1);let a=0;const g=()=>r.multiple??!0,m=e=>{const t=Array.from(e);g()?r.onFilesAdded(t):r.onFilesAdded(t.slice(0,1))};w(()=>{const e=n=>{n.preventDefault(),n.stopPropagation()},t=n=>{var p;e(n),a++,(p=n.dataTransfer)!=null&&p.items.length&&u(!0)},i=n=>{e(n),a--,a===0&&u(!1)},c=n=>{var p;e(n),u(!1),a=0,(p=n.dataTransfer)!=null&&p.files.length&&m(n.dataTransfer.files)},l=window;l.addEventListener("dragenter",t),l.addEventListener("dragleave",i),l.addEventListener("dragover",e),l.addEventListener("drop",c),F(()=>{l.removeEventListener("dragenter",t),l.removeEventListener("dragleave",i),l.removeEventListener("dragover",e),l.removeEventListener("drop",c)})});const L=e=>{var t;const i=e.target;(t=i.files)!=null&&t.length&&(m(i.files),i.value="")},k={isDragging:d,get inputRef(){return s},setInputRef:e=>{s=e},multiple:r.multiple,disabled:r.disabled};return v(E.Provider,{value:k,get children(){return[(()=>{var e=I();return e.$$input=L,R(t=>{s=t},e),T(t=>{var i=g(),c=r.accept,l=r.disabled;return i!==t.e&&(e.multiple=t.e=i),c!==t.t&&j(e,"accept",t.t=c),l!==t.a&&(e.disabled=t.a=l),t},{e:void 0,t:void 0,a:void 0}),e})(),D(()=>r.children)]}})}function O(o){const[r,s]=b(o,["class","children"]),d=x(E),u=()=>{var a;return(a=d?.inputRef)==null?void 0:a.click()};return(()=>{var a=_();return a.$$click=u,y(a,A({get class(){return r.class}},s),!1,!0),h(a,()=>r.children),a})()}q(["input","click"]);var S=f("<slot>");z("kai-file-upload",{multiple:!0,accept:void 0,disabled:!1,label:"Click or drop files to upload"},(o,{dispatch:r,flag:s})=>v(G,{get multiple(){return s("multiple")},get accept(){return o.accept},get disabled(){return s("disabled")},onFilesAdded:d=>r("kai-files-added",{files:d}),get children(){return v(O,{class:"border-border bg-surface hover:bg-muted/60 text-muted-foreground flex w-full cursor-pointer flex-col items-center justify-center gap-2 rounded-xl border border-dashed px-6 py-8 text-sm transition-colors",get children(){return[v(C,{class:"size-5"}),(()=>{var d=S();return d._$owner=B(),h(d,()=>o.label),d})()]}})}}));
@@ -1 +1 @@
1
- import{f as o,c as s}from"./chunks/define-B_tXMYRm.js";import{F as n}from"./chunks/form-Cp8Y00Wn.js";o("kai-form",{data:void 0,cardId:void 0,heading:void 0,resolution:void 0,values:void 0,defaultValues:void 0,disabled:!1},(d,{element:a,dispatch:t,flag:i,expose:r})=>{let e;return r({focus:l=>e?.focus(l),send:()=>e?.send(),validate:()=>e?.validate()??{valid:!1},reset:()=>e?.reset(),dismiss:()=>e?.dismiss(),reopen:()=>e?.reopen()}),s(n,{get data(){return d.data},get cardId(){return d.cardId??(a.id||"kai-form")},get heading(){return d.heading},get resolution(){return d.resolution},get values(){return d.values},get defaultValues(){return d.defaultValues},get disabled(){return i("disabled")},onValuesChange:l=>t("kai-values-change",l),controllerRef:l=>e=l,hostElement:a})});
1
+ import{f as o,c as s}from"../define-CGGX-7Vg.js";import{F as n}from"../form-BRNUMCN2.js";o("kai-form",{data:void 0,cardId:void 0,heading:void 0,resolution:void 0,values:void 0,defaultValues:void 0,disabled:!1},(d,{element:a,dispatch:t,flag:i,expose:r})=>{let e;return r({focus:l=>e?.focus(l),send:()=>e?.send(),validate:()=>e?.validate()??{valid:!1},reset:()=>e?.reset(),dismiss:()=>e?.dismiss(),reopen:()=>e?.reopen()}),s(n,{get data(){return d.data},get cardId(){return d.cardId??(a.id||"kai-form")},get heading(){return d.heading},get resolution(){return d.resolution},get values(){return d.values},get defaultValues(){return d.defaultValues},get disabled(){return i("disabled")},onValuesChange:l=>t("kai-values-change",l),controllerRef:l=>e=l,hostElement:a})});
@@ -1 +1 @@
1
- import{f as s,c as o,u as d,j as i,t as a}from"./chunks/define-B_tXMYRm.js";import{a as u,b as c,H as p}from"./chunks/hover-card-6KtXpLwT.js";import{w as v}from"./chunks/disclosure-DAoYOKew.js";var m=a("<style>:host{display:inline-block}"),f=a("<slot>"),g=a("<slot name=card>");s("kai-hover-card",{openDelay:void 0,closeDelay:void 0,placement:void 0,open:void 0,defaultOpen:void 0,disabled:void 0},(l,n)=>{const{flag:r}=n;let t;return v(n,()=>t,()=>l.open),[m(),o(p,{get openDelay(){return i(()=>l.openDelay!=null)()?Number(l.openDelay):void 0},get closeDelay(){return i(()=>l.closeDelay!=null)()?Number(l.closeDelay):void 0},get defaultOpen(){return r("defaultOpen")},get disabled(){return r("disabled")},controllerRef:e=>t=e,get children(){return[o(u,{get children(){var e=f();return e._$owner=d(),e}}),o(c,{get placement(){return l.placement??void 0},get children(){var e=g();return e._$owner=d(),e}})]}})]});
1
+ import{f as s,c as o,v as d,m as i,t as a}from"../define-CGGX-7Vg.js";import{a as c,b as p,H as u}from"../hover-card-DaeiYrTA.js";import{w as v}from"../disclosure-CbLtajUQ.js";var m=a("<style>:host{display:inline-block}"),f=a("<slot>"),g=a("<slot name=card>");s("kai-hover-card",{openDelay:void 0,closeDelay:void 0,placement:void 0,open:void 0,defaultOpen:void 0,disabled:void 0},(l,n)=>{const{flag:r}=n;let t;return v(n,()=>t,()=>l.open),[m(),o(u,{get openDelay(){return i(()=>l.openDelay!=null)()?Number(l.openDelay):void 0},get closeDelay(){return i(()=>l.closeDelay!=null)()?Number(l.closeDelay):void 0},get defaultOpen(){return r("defaultOpen")},get disabled(){return r("disabled")},controllerRef:e=>t=e,get children(){return[o(c,{get children(){var e=f();return e._$owner=d(),e}}),o(p,{get placement(){return l.placement??void 0},get children(){var e=g();return e._$owner=d(),e}})]}})]});
@@ -1 +1 @@
1
- import{f as l,i as m,a as n,b as r,t as a}from"./chunks/define-B_tXMYRm.js";import{r as o}from"./chunks/icon-97R8SR2p.js";import{c as f}from"./chunks/cn-CU7UAWzk.js";var t=a("<style>:host{display:inline-flex}"),z=a("<span part=icon>");const e={sm:"size-3.5",md:"size-4",lg:"size-5"};l("kai-icon",{name:"",size:"md"},i=>[t(),(()=>{var s=z();return m(s,()=>o(i.name,{class:"size-full",imgClass:"size-full",spanClass:"size-full"})),n(()=>r(s,f("inline-flex shrink-0",e[i.size??"md"]??e.md))),s})()]);
1
+ import{f as l,i as m,a as n,b as r,t as a}from"../define-CGGX-7Vg.js";import{r as o}from"../icon-BpixdZNq.js";import{c as f}from"../cn-DN5AWfiS.js";var t=a("<style>:host{display:inline-flex}"),z=a("<span part=icon>");const e={sm:"size-3.5",md:"size-4",lg:"size-5"};l("kai-icon",{name:"",size:"md"},i=>[t(),(()=>{var s=z();return m(s,()=>o(i.name,{class:"size-full",imgClass:"size-full",spanClass:"size-full"})),n(()=>r(s,f("inline-flex shrink-0",e[i.size??"md"]??e.md))),s})()]);
@@ -1 +1 @@
1
- import{s as b,g as v,k as f,h as y,c as o,a as p,d as m,b as h,S as w,t as T,f as k}from"./chunks/define-B_tXMYRm.js";import{c}from"./chunks/cn-CU7UAWzk.js";import{S as R}from"./chunks/skeleton-N8BuWYmf.js";var U=T("<img role=img>");function A(r,e){if(r&&e)return`data:${e};base64,${r}`}function L(r){const[e,j]=b(r,["base64","uint8Array","mediaType","class","alt"]),[g,n]=v(void 0),l=()=>e.mediaType??"image/png";f(()=>{const t=e.uint8Array,a=l();if(t&&a){const i=new Blob([t],{type:a}),s=URL.createObjectURL(i);n(s),y(()=>URL.revokeObjectURL(s))}else n(void 0)});const d=()=>A(e.base64,l())??g();return o(w,{get when(){return d()},get fallback(){return o(R,{get"aria-label"(){return e.alt},role:"img",get class(){return c("h-auto max-w-full overflow-hidden",e.class)}})},get children(){var t=U();return p(a=>{var i=d(),s=e.alt,u=c("h-auto max-w-full overflow-hidden rounded-md",e.class);return i!==a.e&&m(t,"src",a.e=i),s!==a.t&&m(t,"alt",a.t=s),u!==a.a&&h(t,a.a=u),a},{e:void 0,t:void 0,a:void 0}),t}})}k("kai-image",{base64:void 0,bytes:void 0,alt:"",mediaType:void 0},r=>o(L,{get alt(){return r.alt??""},get base64(){return r.base64},get uint8Array(){return r.bytes},get mediaType(){return r.mediaType}}));
1
+ import{s as b,g as v,j as f,h as y,c as o,a as p,d as m,b as h,S as w,t as T,f as R}from"../define-CGGX-7Vg.js";import{c}from"../cn-DN5AWfiS.js";import{S as U}from"../skeleton-BebdP4mf.js";var j=T("<img role=img>");function k(r,e){if(r&&e)return`data:${e};base64,${r}`}function A(r){const[e,L]=b(r,["base64","uint8Array","mediaType","class","alt"]),[g,n]=v(void 0),l=()=>e.mediaType??"image/png";f(()=>{const t=e.uint8Array,a=l();if(t&&a){const i=new Blob([t],{type:a}),s=URL.createObjectURL(i);n(s),y(()=>URL.revokeObjectURL(s))}else n(void 0)});const d=()=>k(e.base64,l())??g();return o(w,{get when(){return d()},get fallback(){return o(U,{get"aria-label"(){return e.alt},role:"img",get class(){return c("h-auto max-w-full overflow-hidden",e.class)}})},get children(){var t=j();return p(a=>{var i=d(),s=e.alt,u=c("h-auto max-w-full overflow-hidden rounded-md",e.class);return i!==a.e&&m(t,"src",a.e=i),s!==a.t&&m(t,"alt",a.t=s),u!==a.a&&h(t,a.a=u),a},{e:void 0,t:void 0,a:void 0}),t}})}R("kai-image",{base64:void 0,bytes:void 0,alt:"",mediaType:void 0},r=>o(A,{get alt(){return r.alt??""},get base64(){return r.base64},get uint8Array(){return r.bytes},get mediaType(){return r.mediaType}}));
@@ -1 +1 @@
1
- import{f as x,g as l,k as O,o as S,h as m,c as I,B as M,d as V,u as $,t as h}from"./chunks/define-B_tXMYRm.js";import{I as C}from"./chunks/input-DrseEjhp.js";var F=h("<slot>"),_=h("<style>:host{display:block}");const j=["leading","trailing"];x("kai-input",{type:"text",value:void 0,placeholder:void 0,label:void 0,hint:void 0,error:void 0,size:"md",disabled:void 0,readonly:void 0,required:void 0,invalid:void 0,name:void 0,autocomplete:void 0,inputmode:void 0},(r,y)=>{const{element:t,dispatch:a,flag:n,expose:f}=y,[o,u]=l(r.value??t.getAttribute("value")??""),A=e=>e==null?t.getAttribute("value")??"":String(e),d=e=>{M(o)!==e&&u(e)};Object.defineProperty(t,"value",{get:()=>o(),set:e=>d(A(e)),configurable:!0,enumerable:!0}),O(()=>{const e=o();e?t.getAttribute("value")!==e&&t.setAttribute("value",e):t.hasAttribute("value")&&t.removeAttribute("value")});const[z,k]=l(t.getAttribute("autocapitalize")??void 0),[q,w]=l({leading:!1,trailing:!1});S(()=>{const e=()=>{const p={};for(const b of j)p[b]=!!t.querySelector(`:scope > [slot="${b}"]`);w(p)};e();const i=new MutationObserver(e);i.observe(t,{childList:!0,subtree:!1}),m(()=>i.disconnect());const c=()=>k(t.getAttribute("autocapitalize")??void 0);c();const g=new MutationObserver(c);g.observe(t,{attributes:!0,attributeFilter:["autocapitalize"]}),m(()=>g.disconnect())});const s=e=>q()[e]?(()=>{var i=F();return V(i,"name",e),i._$owner=$(),i})():void 0,v=()=>{var e;return((e=t.shadowRoot)==null?void 0:e.querySelector("input"))??null};return f({focus:e=>{var i;return(i=v())==null?void 0:i.focus(e)},select:()=>{var e;return(e=v())==null?void 0:e.select()},clear:()=>{u(""),a("kai-change",{value:""})}}),[_(),I(C,{get type(){return r.type??"text"},get value(){return o()},get placeholder(){return r.placeholder},get label(){return r.label},get hint(){return r.hint},get error(){return r.error},get size(){return r.size??"md"},get invalid(){return n("invalid")},get disabled(){return n("disabled")},get readonly(){return n("readonly")},get required(){return n("required")},get name(){return r.name},get autocomplete(){return r.autocomplete},get inputmode(){return r.inputmode},get autocapitalize(){return z()},get leading(){return s("leading")},get trailing(){return s("trailing")},onValueInput:e=>{u(e),a("kai-input",{value:e})},onValueChange:e=>{d(e),a("kai-change",{value:e})}})]});
1
+ import{f as O,g as b,j as V,z as o,o as $,h as q,c as C,d as D,v as L,t as w}from"../define-CGGX-7Vg.js";import{I as _,D as B,f as G,c as H,n as J,d as K,g as N,b as Q}from"../input-d1Yuu-hz.js";var T=w("<slot>"),U=w("<style>:host{display:block}");const W=["leading","trailing"];O("kai-input",{type:"text",value:void 0,placeholder:void 0,label:void 0,hint:void 0,error:void 0,size:"md",disabled:void 0,readonly:void 0,required:void 0,invalid:void 0,name:void 0,autocomplete:void 0,inputmode:void 0,format:void 0,guide:void 0,semantic:void 0,caseMode:void 0,copyPolicy:void 0},(t,j)=>{const{element:r,dispatch:v,flag:g,expose:P}=j,m=()=>{const e=t.format;return e!==void 0&&e!==""},h=e=>{const a={canonical:e,formatted:e};if(e===""||!m())return a;const n=t.semantic??"custom",i=t.format,c=i===B?G(n).defaultFormat:i;if(c===void 0)return a;try{const s=H(c,t.guide),A=J(s,e,t.caseMode??"preserve");return{canonical:N(s,Q(s,A),n),formatted:K(s,A)}}catch{return a}},M=h(t.value??r.getAttribute("value")??""),[u,p]=b(M.canonical),[l,f]=b(M.formatted),F=e=>e==null?r.getAttribute("value")??"":String(e),R=e=>{o(u)!==e&&p(e),o(l)!==e&&f(e)},d=()=>{var e;return((e=r.shadowRoot)==null?void 0:e.querySelector("input"))??null};let y=!1;const k=(e,a=!1)=>{if(!a&&o(u)===e)return;const n=d();if(n===null||!m()){R(e);return}y=!0;try{n.value=e,n.dispatchEvent(new Event("input",{bubbles:!0,composed:!0}))}finally{y=!1}};Object.defineProperty(r,"value",{get:()=>u(),set:e=>k(F(e)),configurable:!0,enumerable:!0});{let e=!0;V(()=>{if(t.format,t.guide,t.semantic,t.caseMode,e){e=!1;return}queueMicrotask(()=>{var a;const n=m()?o(u):((a=d())==null?void 0:a.value)??o(l),i=h(n);o(u)!==i.canonical&&p(i.canonical),o(l)!==i.formatted&&f(i.formatted)})})}V(()=>{const e=u();e?r.getAttribute("value")!==e&&r.setAttribute("value",e):r.hasAttribute("value")&&r.removeAttribute("value")});const[S,x]=b(r.getAttribute("autocapitalize")??void 0),[E,I]=b({leading:!1,trailing:!1});$(()=>{const e=()=>{const c={};for(const s of W)c[s]=!!r.querySelector(`:scope > [slot="${s}"]`);I(c)};e();const a=new MutationObserver(e);a.observe(r,{childList:!0,subtree:!1}),q(()=>a.disconnect());const n=()=>x(r.getAttribute("autocapitalize")??void 0);n();const i=new MutationObserver(n);i.observe(r,{attributes:!0,attributeFilter:["autocapitalize"]}),q(()=>i.disconnect())});const z=e=>E()[e]?(()=>{var a=T();return D(a,"name",e),a._$owner=L(),a})():void 0;return P({focus:e=>{var a;return(a=d())==null?void 0:a.focus(e)},select:()=>{var e;return(e=d())==null?void 0:e.select()},getRawValue:()=>o(u),getFormattedValue:()=>{var e;return((e=d())==null?void 0:e.value)??o(l)},clear:()=>{k("",!0),v("kai-change",{value:o(u),formattedValue:o(l)})}}),[U(),C(_,{get type(){return t.type??"text"},get value(){return l()},get placeholder(){return t.placeholder},get label(){return t.label},get hint(){return t.hint},get error(){return t.error},get size(){return t.size??"md"},get invalid(){return g("invalid")},get disabled(){return g("disabled")},get readonly(){return g("readonly")},get required(){return g("required")},get name(){return t.name},get autocomplete(){return t.autocomplete},get inputmode(){return t.inputmode},get autocapitalize(){return S()},get format(){return t.format},get guide(){return t.guide},get semantic(){return t.semantic},get caseMode(){return t.caseMode},get copyPolicy(){return t.copyPolicy},get leading(){return z("leading")},get trailing(){return z("trailing")},onValueInput:e=>{var a;p(e),f(((a=d())==null?void 0:a.value)??e),y||v("kai-input",{value:e,formattedValue:o(l)})},onValueChange:e=>{var a;p(e),m()||f(e),v("kai-change",{value:e,formattedValue:((a=d())==null?void 0:a.value)??e})},onMaskReject:e=>v("kai-input-rejected",e)})]});
@@ -1 +1 @@
1
- import{f as s,c as a,u as o,t as e}from"./chunks/define-B_tXMYRm.js";import{K as i}from"./chunks/kbd-OGJDUT-O.js";var l=e("<style>:host{display:inline-flex}"),m=e("<slot>");s("kai-kbd",{keys:void 0,platform:"auto",size:"md"},r=>[l(),a(i,{get keys(){return r.keys},get platform(){return r.platform??"auto"},get size(){return r.size??"md"},get children(){var t=m();return t._$owner=o(),t}})]);
1
+ import{f as s,c as a,v as o,t as e}from"../define-CGGX-7Vg.js";import{K as i}from"../kbd-961zMPFB.js";var l=e("<style>:host{display:inline-flex}"),m=e("<slot>");s("kai-kbd",{keys:void 0,platform:"auto",size:"md"},r=>[l(),a(i,{get keys(){return r.keys},get platform(){return r.platform??"auto"},get size(){return r.size??"md"},get children(){var t=m();return t._$owner=o(),t}})]);
@@ -1 +1 @@
1
- import{f as d,c as i}from"./chunks/define-B_tXMYRm.js";import{L as o}from"./chunks/link-preview-Cf5KOP-i.js";import{e}from"./chunks/card-routing-BK09BdmL.js";d("kai-link-preview",{cardId:void 0,data:void 0},(r,{element:a})=>i(o,{get cardId(){return r.cardId??""},get data(){return r.data??{url:""}},onEmit:t=>e(a,t)}));
1
+ import{f as d,c as i}from"../define-CGGX-7Vg.js";import{L as o}from"../link-preview-DIIbV2Sd.js";import{e}from"../card-routing-DifQgS7n.js";d("kai-link-preview",{cardId:void 0,data:void 0},(r,{element:a})=>i(o,{get cardId(){return r.cardId??""},get data(){return r.data??{url:""}},onEmit:t=>e(a,t)}));
@@ -1 +1 @@
1
- import{f as r,c as a}from"./chunks/define-B_tXMYRm.js";import{L as e}from"./chunks/loader-B5QzK_8_.js";r("kai-loader",{variant:"circular",size:"md",text:void 0},t=>a(e,{get variant(){return t.variant},get size(){return t.size},get text(){return t.text}}));
1
+ import{f as r,c as a}from"../define-CGGX-7Vg.js";import{L as e}from"../loader-YQszHFaW.js";r("kai-loader",{variant:"circular",size:"md",text:void 0},t=>a(e,{get variant(){return t.variant},get size(){return t.size},get text(){return t.text}}));
@@ -1 +1 @@
1
- import{f as n,y as i,c as t,C as g}from"./chunks/define-B_tXMYRm.js";import{M as a}from"./chunks/markdown-DbozyYqa.js";n("kai-markdown",{content:"",proseSize:"sm",codeTheme:"github-dark-dimmed",codeHighlight:!0},(e,{flag:r})=>{const o=i();return t(g,{get proseSize(){return e.proseSize},get codeTheme(){return e.codeTheme},get codeHighlight(){return r("codeHighlight")},get portalMount(){return o.portalMount()},get children(){return t(a,{get content(){return e.content}})}})});
1
+ import{f as n,A as i,c as t,C as g}from"../define-CGGX-7Vg.js";import{M as a}from"../markdown-CVk1MPsj.js";n("kai-markdown",{content:"",proseSize:"sm",codeTheme:"github-dark-dimmed",codeHighlight:!0},(e,{flag:r})=>{const o=i();return t(g,{get proseSize(){return e.proseSize},get codeTheme(){return e.codeTheme},get codeHighlight(){return r("codeHighlight")},get portalMount(){return o.portalMount()},get children(){return t(a,{get content(){return e.content}})}})});
@@ -1 +1 @@
1
- import{f,c as r,u as p,i as a,S as n,j as s,F as b,t as m}from"./chunks/define-B_tXMYRm.js";import{D as k,a as v,c as w,e as x,f as y,g as z,h as C,i as j,d as I,j as L,b as O}from"./chunks/dropdown-CmNna5lT.js";import{r as l}from"./chunks/icon-97R8SR2p.js";import{K as S}from"./chunks/kbd-OGJDUT-O.js";import{c as G}from"./chunks/cn-CU7UAWzk.js";import{w as T}from"./chunks/disclosure-DAoYOKew.js";import{e as D}from"./chunks/ellipsis-CVxqfsDZ.js";var _=m('<span part=shortcut class="ml-auto pl-4 text-muted-foreground">'),$=m("<slot name=trigger>");f("kai-menu",{items:void 0,placement:void 0,triggerIcon:void 0,triggerLabel:void 0,triggerIconTrailing:void 0,label:void 0,open:void 0,defaultOpen:void 0,disabled:void 0},(t,g)=>{const{dispatch:c,flag:o}=g;let d;T(g,()=>d,()=>t.open);function u(i){return r(b,{each:i,children:e=>e.separator?r(x,{}):e.heading?r(y,{get children(){return e.label}}):e.items&&e.items.length>0?r(z,{get children(){return[r(C,{get children(){return[r(n,{get when(){return e.icon},get children(){return l(e.icon,{imgClass:"mr-2 size-4 shrink-0",spanClass:"mr-2 flex h-4 w-4 shrink-0 items-center justify-center text-sm"})}}),s(()=>e.label)]}}),r(j,{get children(){return u(e.items)}})]}}):e.radioGroup!==void 0?r(I,{get checked(){return e.checked},get disabled(){return e.disabled},onSelect:()=>{e.id&&c("kai-select",{id:e.id,radioGroup:e.radioGroup})},get children(){return[r(n,{get when(){return e.icon},get children(){return l(e.icon,{imgClass:"mr-2 size-4 shrink-0",spanClass:"mr-2 flex h-4 w-4 shrink-0 items-center justify-center text-sm"})}}),s(()=>e.label)]}}):e.checked!==void 0?r(L,{get checked(){return e.checked},get disabled(){return e.disabled},onSelect:()=>{e.id&&c("kai-select",{id:e.id,checked:!e.checked})},get children(){return[r(n,{get when(){return e.icon},get children(){return l(e.icon,{imgClass:"mr-2 size-4 shrink-0",spanClass:"mr-2 flex h-4 w-4 shrink-0 items-center justify-center text-sm"})}}),s(()=>e.label)]}}):r(O,{get disabled(){return e.disabled},onSelect:()=>{e.id&&c("kai-select",{id:e.id})},get children(){return[r(n,{get when(){return e.icon},get children(){return l(e.icon,{imgClass:"mr-2 size-4 shrink-0",spanClass:"mr-2 flex h-4 w-4 shrink-0 items-center justify-center text-sm"})}}),s(()=>e.label),r(n,{get when(){return e.shortcut},get children(){var h=_();return a(h,r(S,{get keys(){return e.shortcut},platform:"auto",size:"sm"})),h}})]}})})}return r(w,{get defaultOpen(){return o("defaultOpen")},get disabled(){return o("disabled")},controllerRef:i=>d=i,get children(){return[r(k,{get class(){return G("inline-flex items-center rounded-md transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",t.triggerLabel?"gap-1.5 px-2 py-1.5 text-sm font-medium text-muted-foreground hover:bg-accent hover:text-foreground":"justify-center p-1.5 text-foreground hover:bg-muted")},get"aria-label"(){return s(()=>!!t.triggerLabel)()?void 0:t.label??"Open menu"},get children(){var i=$();return i._$owner=p(),a(i,r(n,{get when(){return t.triggerIcon},get children(){return l(t.triggerIcon,{class:"size-4 shrink-0"})}}),null),a(i,r(n,{get when(){return t.triggerLabel},get children(){return t.triggerLabel}}),null),a(i,r(n,{get when(){return t.triggerIconTrailing},get children(){return l(t.triggerIconTrailing,{class:"size-3.5 shrink-0 opacity-60"})}}),null),a(i,r(n,{get when(){return s(()=>!t.triggerIcon)()&&!t.triggerLabel},get children(){return r(D,{class:"size-4"})}}),null),i}}),r(v,{class:"min-w-[15rem]",get children(){return u(t.items??[])}})]}})});
1
+ import{f,c as r,v as p,i as a,S as n,m as s,F as b,t as d}from"../define-CGGX-7Vg.js";import{D as k,a as v,c as w,e as x,f as y,g as z,h as C,i as I,d as j,j as L,b as O}from"../dropdown-BwhViJFd.js";import{r as l}from"../icon-BpixdZNq.js";import{K as S}from"../kbd-961zMPFB.js";import{c as G}from"../cn-DN5AWfiS.js";import{w as T}from"../disclosure-CbLtajUQ.js";import{e as D}from"../ellipsis-DFr4Vqr3.js";var F=d('<span part=shortcut class="ml-auto pl-4 text-muted-foreground">'),_=d("<style>:host([full]){display:block}"),$=d("<slot name=trigger>");f("kai-menu",{items:void 0,placement:void 0,triggerIcon:void 0,triggerLabel:void 0,triggerIconTrailing:void 0,label:void 0,full:!1,open:void 0,defaultOpen:void 0,disabled:void 0},(t,g)=>{const{dispatch:c,flag:o}=g;let u;T(g,()=>u,()=>t.open);function h(i){return r(b,{each:i,children:e=>e.separator?r(x,{}):e.heading?r(y,{get children(){return e.label}}):e.items&&e.items.length>0?r(z,{get children(){return[r(C,{get children(){return[r(n,{get when(){return e.icon},get children(){return l(e.icon,{imgClass:"mr-2 size-4 shrink-0",spanClass:"mr-2 flex h-4 w-4 shrink-0 items-center justify-center text-sm"})}}),s(()=>e.label)]}}),r(I,{get children(){return h(e.items)}})]}}):e.radioGroup!==void 0?r(j,{get checked(){return e.checked},get disabled(){return e.disabled},onSelect:()=>{e.id&&c("kai-select",{id:e.id,radioGroup:e.radioGroup})},get children(){return[r(n,{get when(){return e.icon},get children(){return l(e.icon,{imgClass:"mr-2 size-4 shrink-0",spanClass:"mr-2 flex h-4 w-4 shrink-0 items-center justify-center text-sm"})}}),s(()=>e.label)]}}):e.checked!==void 0?r(L,{get checked(){return e.checked},get disabled(){return e.disabled},onSelect:()=>{e.id&&c("kai-select",{id:e.id,checked:!e.checked})},get children(){return[r(n,{get when(){return e.icon},get children(){return l(e.icon,{imgClass:"mr-2 size-4 shrink-0",spanClass:"mr-2 flex h-4 w-4 shrink-0 items-center justify-center text-sm"})}}),s(()=>e.label)]}}):r(O,{get disabled(){return e.disabled},onSelect:()=>{e.id&&c("kai-select",{id:e.id})},get children(){return[r(n,{get when(){return e.icon},get children(){return l(e.icon,{imgClass:"mr-2 size-4 shrink-0",spanClass:"mr-2 flex h-4 w-4 shrink-0 items-center justify-center text-sm"})}}),s(()=>e.label),r(n,{get when(){return e.shortcut},get children(){var m=F();return a(m,r(S,{get keys(){return e.shortcut},platform:"auto",size:"sm"})),m}})]}})})}return[_(),r(w,{get defaultOpen(){return o("defaultOpen")},get disabled(){return o("disabled")},controllerRef:i=>u=i,get children(){return[r(k,{get class(){return G("inline-flex items-center rounded-md transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",t.triggerLabel?"gap-1.5 px-2 py-1.5 text-sm font-medium text-muted-foreground hover:bg-accent hover:text-foreground":"justify-center p-1.5 text-foreground hover:bg-muted",o("full")&&"w-full")},get"aria-label"(){return s(()=>!!t.triggerLabel)()?void 0:t.label??"Open menu"},get children(){var i=$();return i._$owner=p(),a(i,r(n,{get when(){return t.triggerIcon},get children(){return l(t.triggerIcon,{class:"size-4 shrink-0"})}}),null),a(i,r(n,{get when(){return t.triggerLabel},get children(){return t.triggerLabel}}),null),a(i,r(n,{get when(){return t.triggerIconTrailing},get children(){return l(t.triggerIconTrailing,{class:"size-3.5 shrink-0 opacity-60"})}}),null),a(i,r(n,{get when(){return s(()=>!t.triggerIcon)()&&!t.triggerLabel},get children(){return r(D,{class:"size-4"})}}),null),i}}),r(v,{class:"min-w-[15rem]",get children(){return h(t.items??[])}})]}})]});
@@ -1 +1 @@
1
- import{c as n,i as a,F as d,a as k,b as p,S as v,t as o,f as x,g as f,o as g,h as b}from"./chunks/define-B_tXMYRm.js";import{c as h}from"./chunks/cn-CU7UAWzk.js";var w=o("<div>"),S=o('<span class="inline-flex items-center px-1.5 py-0.5 rounded text-[10px] font-medium bg-violet-400/10 text-violet-600 dark:text-violet-400">');function y(t){return n(v,{get when(){return t.skills.length>0},get children(){var e=w();return a(e,n(d,{get each(){return t.skills},children:s=>(()=>{var r=S();return a(r,()=>s.name),r})()})),k(()=>p(e,h("flex items-center gap-1 flex-wrap",t.class))),e}})}function c(t){var e;const s=((e=t.textContent)==null?void 0:e.trim())??"";return{id:t.getAttribute("id")??s,name:s}}x("kai-skills",{skills:[]},(t,{element:e})=>{const[s,r]=f([]);g(()=>{const i=()=>{const m=[...e.querySelectorAll("kai-skill")];r(m.map(c))};i();const l=new MutationObserver(i);l.observe(e,{childList:!0,attributes:!0,subtree:!0}),b(()=>l.disconnect())});const u=()=>[...t.skills??[],...s()];return n(y,{get skills(){return u()}})});export{c as parseKaiSkillElement};
1
+ import{c as n,i as a,F as d,a as k,b as v,S as p,t as o,f,g as x,o as g,h as b}from"../define-CGGX-7Vg.js";import{c as h}from"../cn-DN5AWfiS.js";var w=o("<div>"),S=o('<span class="inline-flex items-center px-1.5 py-0.5 rounded text-micro font-medium bg-violet-400/10 text-violet-600 dark:text-violet-400">');function y(t){return n(p,{get when(){return t.skills.length>0},get children(){var e=w();return a(e,n(d,{get each(){return t.skills},children:s=>(()=>{var r=S();return a(r,()=>s.name),r})()})),k(()=>v(e,h("flex items-center gap-1 flex-wrap",t.class))),e}})}function c(t){var e;const s=((e=t.textContent)==null?void 0:e.trim())??"";return{id:t.getAttribute("id")??s,name:s}}f("kai-skills",{skills:[]},(t,{element:e})=>{const[s,r]=x([]);g(()=>{const i=()=>{const m=[...e.querySelectorAll("kai-skill")];r(m.map(c))};i();const l=new MutationObserver(i);l.observe(e,{childList:!0,attributes:!0,subtree:!0}),b(()=>l.disconnect())});const u=()=>[...t.skills??[],...s()];return n(y,{get skills(){return u()}})});export{c as parseKaiSkillElement};
@@ -1 +1 @@
1
- import"./chunks/define-B_tXMYRm.js";import"./chunks/slots-CIw9RlAe.js";import"./chunks/message-CE4k-qaj.js";import{c as o}from"./chunks/message-DtXKPqiR.js";import"./chunks/card-renderer-CSoTL_e1.js";import"./chunks/card-tags-D8lZ-C_U.js";export{o as cardComponentsFromTags};
1
+ import"../define-CGGX-7Vg.js";import"../slots-DaNjX0rc.js";import"../message-DS8lzHc1.js";import{a as o}from"../message-CwKVEdZg.js";import"../card-renderer-Cb1gQmth.js";import"../card-tags-D8lZ-C_U.js";export{o as cardComponentsFromTags};