@kitn.ai/ui 0.17.0 → 0.18.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 (494) hide show
  1. package/README.md +28 -5
  2. package/dist/components/artifact.d.ts +39 -1
  3. package/dist/components/attachment-types.d.ts +12 -0
  4. package/dist/components/attachments.d.ts +2 -10
  5. package/dist/components/card.d.ts +27 -0
  6. package/dist/components/chain-of-thought.d.ts +78 -2
  7. package/dist/components/chat-scope-picker.d.ts +7 -0
  8. package/dist/components/chat-thread.d.ts +37 -12
  9. package/dist/components/choice-card.d.ts +26 -0
  10. package/dist/components/coachmark.d.ts +49 -0
  11. package/dist/components/composer-dom.d.ts +35 -0
  12. package/dist/components/composer-highlight.d.ts +48 -0
  13. package/dist/components/composer-history.d.ts +34 -0
  14. package/dist/components/composer.d.ts +86 -0
  15. package/dist/components/confirm-card.d.ts +17 -0
  16. package/dist/components/conversation-item.d.ts +9 -0
  17. package/dist/components/conversation-list.d.ts +36 -1
  18. package/dist/components/file-tree.d.ts +15 -0
  19. package/dist/components/form.d.ts +34 -0
  20. package/dist/components/markdown.d.ts +3 -0
  21. package/dist/components/message.d.ts +12 -0
  22. package/dist/components/model-switcher.d.ts +7 -0
  23. package/dist/components/prompt-input.d.ts +13 -4
  24. package/dist/components/prompt-suggestion.d.ts +9 -1
  25. package/dist/components/reasoning.d.ts +14 -1
  26. package/dist/components/response-compare.d.ts +14 -0
  27. package/dist/components/screen.d.ts +46 -0
  28. package/dist/components/tasks-card.d.ts +49 -1
  29. package/dist/components/toast.d.ts +12 -2
  30. package/dist/components/tool-types.d.ts +10 -0
  31. package/dist/components/tool.d.ts +8 -8
  32. package/dist/components/voice-input.d.ts +27 -0
  33. package/dist/components/voice-output.d.ts +33 -0
  34. package/dist/core-C8fzo39E.js +12 -0
  35. package/dist/custom-elements.json +8392 -1860
  36. package/dist/elements/agent-card.d.ts +1 -0
  37. package/dist/elements/agent-card.js +1 -0
  38. package/dist/elements/artifact.js +1 -1
  39. package/dist/elements/attachments.js +1 -1
  40. package/dist/elements/autoloader.js +1 -1
  41. package/dist/elements/avatar.d.ts +1 -0
  42. package/dist/elements/avatar.js +1 -0
  43. package/dist/elements/badge.d.ts +1 -0
  44. package/dist/elements/badge.js +1 -0
  45. package/dist/elements/button.d.ts +1 -0
  46. package/dist/elements/button.js +1 -0
  47. package/dist/elements/card.js +1 -1
  48. package/dist/elements/cards.js +1 -1
  49. package/dist/elements/chain-of-thought.js +1 -1
  50. package/dist/elements/chat-scope-picker.js +1 -1
  51. package/dist/elements/chat-types.d.ts +47 -0
  52. package/dist/elements/chat-workspace.js +1 -1
  53. package/dist/elements/chat.js +1 -1
  54. package/dist/elements/checkpoint.js +1 -1
  55. package/dist/elements/choice.js +1 -1
  56. package/dist/elements/chunks/Icon-DLLBeLG5.js +1 -0
  57. package/dist/elements/chunks/action-icons-UB4V5FNq.js +1 -0
  58. package/dist/elements/chunks/arrow-left-C-gwlUmx.js +1 -0
  59. package/dist/elements/chunks/attachments-CgbErf1r.js +1 -0
  60. package/dist/elements/chunks/badge-DTQpgB6N.js +1 -0
  61. package/dist/elements/chunks/button-XDUM6lXs.js +1 -0
  62. package/dist/elements/chunks/card-CBlFZ-7I.js +1 -0
  63. package/dist/elements/chunks/chat-thread-BIhmqwNL.js +1 -0
  64. package/dist/elements/chunks/check-hGUoVIKb.js +1 -0
  65. package/dist/elements/chunks/chevron-down-DDoaSUtO.js +1 -0
  66. package/dist/elements/chunks/chevron-right-CdGEUakB.js +1 -0
  67. package/dist/elements/chunks/circle-BKAZdmzb.js +1 -0
  68. package/dist/elements/chunks/circle-check-CmYG-y3I.js +1 -0
  69. package/dist/elements/chunks/circle-x-DewgAEym.js +1 -0
  70. package/dist/elements/chunks/cn-CU7UAWzk.js +1 -0
  71. package/dist/elements/chunks/code-block-DedwxwFI.js +1 -0
  72. package/dist/elements/chunks/collapsible-FfgmTHtM.js +1 -0
  73. package/dist/elements/chunks/composer-Cfbw5HKT.js +65 -0
  74. package/dist/elements/chunks/context-DwJmxlRE.js +1 -0
  75. package/dist/elements/chunks/conversation-list-DsCQMfPq.js +1 -0
  76. package/dist/elements/chunks/default-input-BuqsoENC.js +1 -0
  77. package/dist/elements/chunks/define-rGsaWsLL.js +1 -0
  78. package/dist/elements/chunks/disclosure-CwoAkpMH.js +1 -0
  79. package/dist/elements/chunks/download-DJ06G3Bz.js +1 -0
  80. package/dist/elements/chunks/dropdown-BFg8ri_R.js +1 -0
  81. package/dist/elements/chunks/ellipsis-dlN6YvGw.js +1 -0
  82. package/dist/elements/chunks/external-link-DBX2lc_R.js +1 -0
  83. package/dist/elements/chunks/file-text-HfwUx4F9.js +1 -0
  84. package/dist/elements/chunks/file-tree-C6Toj71u.js +1 -0
  85. package/dist/elements/chunks/folder-MYuqa9Xp.js +1 -0
  86. package/dist/elements/chunks/hover-card-gE7iyXdW.js +1 -0
  87. package/dist/elements/chunks/icon-Vqz4ivrY.js +1 -0
  88. package/dist/elements/chunks/{index-CTBEJeo6.js → index-BCRhi84a.js} +1 -1
  89. package/dist/elements/chunks/info-B_toFS0l.js +1 -0
  90. package/dist/elements/chunks/input-gzbHYZvQ.js +1 -0
  91. package/dist/elements/chunks/kbd-n49c4KZm.js +1 -0
  92. package/dist/elements/chunks/link-CKPs9yM0.js +1 -0
  93. package/dist/elements/chunks/loader-q6MamGus.js +1 -0
  94. package/dist/elements/chunks/{markdown-CMTGx9r8.js → markdown-DBrcqq4S.js} +9 -9
  95. package/dist/elements/chunks/message-CTqaYI0s.js +1 -0
  96. package/dist/elements/chunks/message-feedback-Cvzm03w0.js +1 -0
  97. package/dist/elements/chunks/message-square-CUg9eRCi.js +1 -0
  98. package/dist/elements/chunks/minimize-2-l2klxP6K.js +1 -0
  99. package/dist/elements/chunks/model-switcher-CmyjiHO1.js +1 -0
  100. package/dist/elements/chunks/overlay-C8sOYqjT.js +1 -0
  101. package/dist/elements/chunks/paperclip-42Ia7xHD.js +1 -0
  102. package/dist/elements/chunks/progress-bar-tzKMWAwO.js +1 -0
  103. package/dist/elements/chunks/prompt-suggestion-D3F6vP_A.js +1 -0
  104. package/dist/elements/chunks/reasoning-BJNmmyov.js +1 -0
  105. package/dist/elements/chunks/resizable-BRsk19qI.js +1 -0
  106. package/dist/elements/chunks/rotate-cw-BgcggLHC.js +1 -0
  107. package/dist/elements/chunks/scroll-area-CgGbFFbT.js +1 -0
  108. package/dist/elements/chunks/separator-8hM4GdHE.js +1 -0
  109. package/dist/elements/chunks/settings-CaUIYOg-.js +1 -0
  110. package/dist/elements/chunks/settings-group-CYjOVIZQ.js +1 -0
  111. package/dist/elements/chunks/share-BTYM3Ddt.js +1 -0
  112. package/dist/elements/chunks/skeleton-DsTYrPUe.js +1 -0
  113. package/dist/elements/chunks/slots-DkZ-Cmha.js +1 -0
  114. package/dist/elements/chunks/star-9R3LBQ9n.js +1 -0
  115. package/dist/elements/chunks/store-CYl5Y0_u.js +1 -0
  116. package/dist/elements/chunks/text-shimmer-CaYGv8Se.js +1 -0
  117. package/dist/elements/chunks/textarea-NEr2SLcD.js +1 -0
  118. package/dist/elements/chunks/thumbs-up-DZYZkFfc.js +1 -0
  119. package/dist/elements/chunks/toast-store-ClxVZRcc.js +1 -0
  120. package/dist/elements/chunks/tool-CHZOmoe9.js +1 -0
  121. package/dist/elements/chunks/tooltip-WpHElELC.js +1 -0
  122. package/dist/elements/chunks/triangle-alert-BlS80PUg.js +1 -0
  123. package/dist/elements/chunks/use-card-resolution-VSVoxDeJ.js +1 -0
  124. package/dist/elements/chunks/video-DxTPZqT8.js +1 -0
  125. package/dist/elements/chunks/x-C1qtndxn.js +1 -0
  126. package/dist/elements/coachmark.d.ts +1 -0
  127. package/dist/elements/coachmark.js +1 -0
  128. package/dist/elements/code-block.js +1 -1
  129. package/dist/elements/command.d.ts +1 -0
  130. package/dist/elements/command.js +1 -0
  131. package/dist/elements/compare.js +1 -1
  132. package/dist/elements/composer.d.ts +1 -0
  133. package/dist/elements/composer.js +1 -0
  134. package/dist/elements/confirm-card.js +1 -1
  135. package/dist/elements/context-meter.js +1 -1
  136. package/dist/elements/conversation-list.js +1 -1
  137. package/dist/elements/css.d.ts +1 -0
  138. package/dist/elements/default-input.d.ts +51 -0
  139. package/dist/elements/define.d.ts +53 -0
  140. package/dist/elements/dialog.d.ts +1 -0
  141. package/dist/elements/dialog.js +1 -0
  142. package/dist/elements/disclosure.d.ts +37 -0
  143. package/dist/elements/editable-label.d.ts +1 -0
  144. package/dist/elements/editable-label.js +1 -0
  145. package/dist/elements/embed.js +1 -1
  146. package/dist/elements/empty.js +1 -1
  147. package/dist/elements/feedback-bar.js +1 -1
  148. package/dist/elements/file-tree.js +1 -1
  149. package/dist/elements/file-upload.js +1 -1
  150. package/dist/elements/form.js +1 -1
  151. package/dist/elements/hover-card.d.ts +1 -0
  152. package/dist/elements/hover-card.js +1 -0
  153. package/dist/elements/icon.d.ts +1 -0
  154. package/dist/elements/icon.js +1 -0
  155. package/dist/elements/image.js +1 -1
  156. package/dist/elements/input.d.ts +1 -0
  157. package/dist/elements/input.js +1 -0
  158. package/dist/elements/kbd.d.ts +1 -0
  159. package/dist/elements/kbd.js +1 -0
  160. package/dist/elements/link-preview.js +1 -1
  161. package/dist/elements/loader.js +1 -1
  162. package/dist/elements/markdown.js +1 -1
  163. package/dist/elements/menu.d.ts +1 -0
  164. package/dist/elements/menu.js +1 -0
  165. package/dist/elements/message-skills.js +1 -1
  166. package/dist/elements/message.js +1 -1
  167. package/dist/elements/model-switcher.js +1 -1
  168. package/dist/elements/nav.d.ts +1 -0
  169. package/dist/elements/nav.js +1 -0
  170. package/dist/elements/notice.d.ts +1 -0
  171. package/dist/elements/notice.js +1 -0
  172. package/dist/elements/pane-group.d.ts +1 -0
  173. package/dist/elements/pane-group.js +1 -0
  174. package/dist/elements/pane.d.ts +1 -0
  175. package/dist/elements/pane.js +1 -0
  176. package/dist/elements/popover.js +1 -1
  177. package/dist/elements/progress-bar.d.ts +1 -0
  178. package/dist/elements/progress-bar.js +1 -0
  179. package/dist/elements/prompt-dock.d.ts +1 -0
  180. package/dist/elements/prompt-dock.js +1 -0
  181. package/dist/elements/prompt-input.js +1 -1
  182. package/dist/elements/prompt-suggestions.js +1 -1
  183. package/dist/elements/reasoning.js +1 -1
  184. package/dist/elements/register-impl.d.ts +0 -0
  185. package/dist/elements/register.d.ts +13 -0
  186. package/dist/elements/remote.d.ts +1 -0
  187. package/dist/elements/remote.js +1 -0
  188. package/dist/elements/resizable.js +1 -1
  189. package/dist/elements/response-stream.js +2 -2
  190. package/dist/elements/screen.d.ts +1 -0
  191. package/dist/elements/screen.js +1 -0
  192. package/dist/elements/scroll-area.d.ts +1 -0
  193. package/dist/elements/scroll-area.js +1 -0
  194. package/dist/elements/scroll-button.js +1 -1
  195. package/dist/elements/search.d.ts +1 -0
  196. package/dist/elements/search.js +1 -0
  197. package/dist/elements/segmented.d.ts +1 -0
  198. package/dist/elements/segmented.js +1 -0
  199. package/dist/elements/separator.d.ts +1 -0
  200. package/dist/elements/separator.js +1 -0
  201. package/dist/elements/setting-item.d.ts +1 -0
  202. package/dist/elements/setting-item.js +1 -0
  203. package/dist/elements/settings-group.d.ts +1 -0
  204. package/dist/elements/settings-group.js +1 -0
  205. package/dist/elements/skeleton.d.ts +1 -0
  206. package/dist/elements/skeleton.js +1 -0
  207. package/dist/elements/slots.d.ts +176 -0
  208. package/dist/elements/source.js +1 -1
  209. package/dist/elements/status.d.ts +1 -0
  210. package/dist/elements/status.js +1 -0
  211. package/dist/elements/switch.js +1 -1
  212. package/dist/elements/tabs.d.ts +1 -0
  213. package/dist/elements/tabs.js +1 -0
  214. package/dist/elements/tasks.js +1 -1
  215. package/dist/elements/text-shimmer.js +1 -1
  216. package/dist/elements/thinking-bar.js +1 -1
  217. package/dist/elements/toast.js +1 -1
  218. package/dist/elements/tool.js +1 -1
  219. package/dist/elements/tooltip.d.ts +1 -0
  220. package/dist/elements/tooltip.js +1 -0
  221. package/dist/elements/voice-input.js +1 -1
  222. package/dist/elements/voice-output.d.ts +1 -0
  223. package/dist/elements/voice-output.js +1 -0
  224. package/dist/elements.d.ts +733 -58
  225. package/dist/engine-javascript-C1x7zo1_.js +141 -0
  226. package/dist/index.d.ts +3 -2
  227. package/dist/index.js +8256 -5703
  228. package/dist/kai.es.js +1 -0
  229. package/dist/llms/llms-full.txt +1146 -64
  230. package/dist/llms/llms.txt +4 -4
  231. package/dist/mcp.es.js +62 -7
  232. package/dist/primitives/composer-model.d.ts +22 -0
  233. package/dist/primitives/composer-triggers.d.ts +19 -0
  234. package/dist/primitives/create-kai-chat.d.ts +38 -0
  235. package/dist/primitives/toast-store.d.ts +32 -2
  236. package/dist/primitives/use-speech-recognition.d.ts +26 -0
  237. package/dist/react/index.d.ts +1085 -97
  238. package/dist/react/runtime.d.ts +9 -2
  239. package/dist/react/use-kai-chat.d.ts +41 -0
  240. package/dist/react.js +572 -193
  241. package/dist/register-impl-CYWGkgbI.js +141 -0
  242. package/dist/schemas/tasks.schema.json +2 -2
  243. package/dist/state/index.d.ts +4 -0
  244. package/dist/state/messages.d.ts +11 -0
  245. package/dist/state/stream.d.ts +22 -0
  246. package/dist/state/suggestions.d.ts +4 -0
  247. package/dist/state.js +117 -0
  248. package/dist/theme.tokens.css +87 -0
  249. package/dist/types.d.ts +4 -0
  250. package/dist/ui/agent-card.d.ts +61 -0
  251. package/dist/ui/button.d.ts +5 -2
  252. package/dist/ui/card.d.ts +61 -0
  253. package/dist/ui/collapsible.d.ts +15 -1
  254. package/dist/ui/command.d.ts +33 -0
  255. package/dist/ui/dialog.d.ts +42 -0
  256. package/dist/ui/dropdown.d.ts +95 -1
  257. package/dist/ui/editable-label.d.ts +26 -0
  258. package/dist/ui/hover-card.d.ts +13 -1
  259. package/dist/ui/icon.d.ts +18 -0
  260. package/dist/ui/input.d.ts +33 -0
  261. package/dist/ui/kbd.d.ts +21 -0
  262. package/dist/ui/nav.d.ts +62 -0
  263. package/dist/ui/notice.d.ts +31 -0
  264. package/dist/ui/overlay.d.ts +12 -0
  265. package/dist/ui/pane-grid.d.ts +58 -0
  266. package/dist/ui/pane-group.d.ts +75 -0
  267. package/dist/ui/pane.d.ts +78 -0
  268. package/dist/ui/popover.d.ts +11 -1
  269. package/dist/ui/progress-bar.d.ts +23 -0
  270. package/dist/ui/prompt-dock.d.ts +96 -0
  271. package/dist/ui/resizable.d.ts +12 -0
  272. package/dist/ui/scroll-area.d.ts +4 -0
  273. package/dist/ui/segmented.d.ts +28 -0
  274. package/dist/ui/settings-group.d.ts +32 -0
  275. package/dist/ui/skeleton.d.ts +12 -0
  276. package/dist/ui/stat.d.ts +16 -0
  277. package/dist/ui/status.d.ts +13 -0
  278. package/dist/ui/switch.d.ts +8 -1
  279. package/dist/ui/tabs.d.ts +35 -0
  280. package/dist/ui/tooltip.d.ts +19 -1
  281. package/frameworks/react/index.tsx +1042 -157
  282. package/frameworks/react/runtime.tsx +30 -1
  283. package/frameworks/react/use-kai-chat.tsx +87 -0
  284. package/llms-full.txt +1146 -64
  285. package/llms.txt +4 -4
  286. package/package.json +23 -8
  287. package/src/agent-tooling/mcp/manifest.ts +14 -0
  288. package/src/agent-tooling/mcp/tools/debug.ts +10 -6
  289. package/src/agent-tooling/mcp/tools/reference.ts +32 -0
  290. package/src/agent-tooling/mcp/tools/scaffold.ts +30 -1
  291. package/src/components/artifact.tsx +98 -13
  292. package/src/components/attachment-types.ts +13 -0
  293. package/src/components/attachments.tsx +4 -14
  294. package/src/components/card.tsx +109 -15
  295. package/src/components/chain-of-thought.tsx +210 -1
  296. package/src/components/chat-scope-picker.tsx +13 -3
  297. package/src/components/chat-thread.tsx +225 -116
  298. package/src/components/choice-card.tsx +103 -11
  299. package/src/components/coachmark.tsx +245 -0
  300. package/src/components/component-meta.json +691 -102
  301. package/src/components/composer-dom.ts +159 -0
  302. package/src/components/composer-highlight.ts +242 -0
  303. package/src/components/composer-history.ts +82 -0
  304. package/src/components/composer.tsx +979 -0
  305. package/src/components/confirm-card.tsx +54 -1
  306. package/src/components/conversation-item.tsx +69 -7
  307. package/src/components/conversation-list.tsx +134 -37
  308. package/src/components/file-tree.tsx +197 -47
  309. package/src/components/form-widgets.tsx +9 -7
  310. package/src/components/form.tsx +140 -17
  311. package/src/components/image.tsx +3 -5
  312. package/src/components/link-preview.tsx +5 -4
  313. package/src/components/markdown.tsx +5 -2
  314. package/src/components/message.tsx +23 -4
  315. package/src/components/model-switcher.tsx +19 -4
  316. package/src/components/prompt-input.tsx +46 -75
  317. package/src/components/prompt-suggestion.tsx +48 -16
  318. package/src/components/reasoning.tsx +29 -6
  319. package/src/components/response-compare.tsx +31 -2
  320. package/src/components/screen.tsx +176 -0
  321. package/src/components/tasks-card.tsx +342 -21
  322. package/src/components/toast.tsx +119 -31
  323. package/src/components/tool-types.ts +10 -0
  324. package/src/components/tool.tsx +22 -16
  325. package/src/components/voice-input.tsx +102 -19
  326. package/src/components/voice-output.tsx +202 -0
  327. package/src/elements/agent-card.tsx +67 -0
  328. package/src/elements/artifact.tsx +53 -4
  329. package/src/elements/attachments.tsx +1 -0
  330. package/src/elements/avatar.tsx +33 -0
  331. package/src/elements/badge.tsx +32 -0
  332. package/src/elements/button.tsx +126 -0
  333. package/src/elements/card-media.jpg +0 -0
  334. package/src/elements/card.tsx +124 -31
  335. package/src/elements/cards.tsx +81 -7
  336. package/src/elements/chain-of-thought.tsx +77 -32
  337. package/src/elements/chat-scope-picker.tsx +35 -8
  338. package/src/elements/chat-types.ts +2 -2
  339. package/src/elements/chat-workspace.tsx +153 -41
  340. package/src/elements/chat.tsx +45 -23
  341. package/src/elements/choice.tsx +71 -19
  342. package/src/elements/coachmark.tsx +90 -0
  343. package/src/elements/command.tsx +209 -0
  344. package/src/elements/compare.tsx +24 -2
  345. package/src/elements/compiled.css +1 -1
  346. package/src/elements/composer.tsx +151 -0
  347. package/src/elements/confirm-card.tsx +36 -11
  348. package/src/elements/conversation-list.tsx +80 -11
  349. package/src/elements/default-input.tsx +75 -53
  350. package/src/elements/define.tsx +47 -6
  351. package/src/elements/dialog.tsx +98 -0
  352. package/src/elements/disclosure.ts +73 -0
  353. package/src/elements/editable-label.tsx +125 -0
  354. package/src/elements/element-manifest.json +129 -1
  355. package/src/elements/element-meta.json +5562 -1336
  356. package/src/elements/element-types.d.ts +732 -57
  357. package/src/elements/file-tree.tsx +12 -2
  358. package/src/elements/file-upload.tsx +1 -1
  359. package/src/elements/form.tsx +54 -11
  360. package/src/elements/hover-card.tsx +80 -0
  361. package/src/elements/icon-names.json +48 -0
  362. package/src/elements/icon.tsx +41 -0
  363. package/src/elements/input.tsx +203 -0
  364. package/src/elements/kbd.tsx +45 -0
  365. package/src/elements/menu.tsx +217 -0
  366. package/src/elements/message.tsx +58 -11
  367. package/src/elements/model-switcher.tsx +27 -1
  368. package/src/elements/nav.tsx +87 -0
  369. package/src/elements/notice.tsx +53 -0
  370. package/src/elements/pane-group.tsx +119 -0
  371. package/src/elements/pane.tsx +129 -0
  372. package/src/elements/popover.tsx +39 -17
  373. package/src/elements/progress-bar.tsx +39 -0
  374. package/src/elements/prompt-dock.tsx +81 -0
  375. package/src/elements/prompt-input.tsx +112 -63
  376. package/src/elements/prompt-suggestions.tsx +25 -9
  377. package/src/elements/reasoning.tsx +30 -9
  378. package/src/elements/register-impl.ts +38 -3
  379. package/src/elements/register.ts +11 -3
  380. package/src/elements/resizable.tsx +48 -11
  381. package/src/elements/screen.tsx +90 -0
  382. package/src/elements/scroll-area.tsx +33 -0
  383. package/src/elements/search.tsx +180 -0
  384. package/src/elements/segmented.tsx +135 -0
  385. package/src/elements/separator.tsx +36 -0
  386. package/src/elements/setting-item.tsx +50 -0
  387. package/src/elements/settings-group.tsx +37 -0
  388. package/src/elements/skeleton.tsx +45 -0
  389. package/src/elements/slots.ts +607 -0
  390. package/src/elements/source.tsx +13 -6
  391. package/src/elements/status.tsx +42 -0
  392. package/src/elements/switch.tsx +89 -14
  393. package/src/elements/tabs.tsx +95 -0
  394. package/src/elements/tasks.tsx +70 -14
  395. package/src/elements/toast.tsx +17 -2
  396. package/src/elements/tool.tsx +43 -9
  397. package/src/elements/tooltip.tsx +85 -0
  398. package/src/elements/video-poster.jpg +0 -0
  399. package/src/elements/voice-input.tsx +66 -16
  400. package/src/elements/voice-output.tsx +69 -0
  401. package/src/index.ts +5 -2
  402. package/src/primitives/card-schemas/tasks.schema.json +2 -2
  403. package/src/primitives/composer-model.ts +49 -0
  404. package/src/primitives/composer-triggers.ts +35 -0
  405. package/src/primitives/create-kai-chat.ts +66 -0
  406. package/src/primitives/toast-store.ts +43 -2
  407. package/src/primitives/use-speech-recognition.ts +135 -0
  408. package/src/state/index.ts +6 -0
  409. package/src/state/messages.ts +36 -0
  410. package/src/state/stream.ts +92 -0
  411. package/src/state/suggestions.ts +9 -0
  412. package/src/types.ts +4 -0
  413. package/src/ui/agent-card.tsx +212 -0
  414. package/src/ui/button.tsx +16 -5
  415. package/src/ui/card.tsx +245 -0
  416. package/src/ui/collapsible.tsx +30 -4
  417. package/src/ui/command.tsx +99 -0
  418. package/src/ui/dialog.tsx +217 -0
  419. package/src/ui/dropdown.tsx +375 -13
  420. package/src/ui/editable-label.tsx +112 -0
  421. package/src/ui/hover-card.tsx +28 -5
  422. package/src/ui/icon.tsx +110 -0
  423. package/src/ui/input.tsx +132 -0
  424. package/src/ui/kbd.tsx +118 -0
  425. package/src/ui/nav.tsx +282 -0
  426. package/src/ui/notice.tsx +84 -0
  427. package/src/ui/overlay.tsx +108 -2
  428. package/src/ui/pane-grid.tsx +116 -0
  429. package/src/ui/pane-group.tsx +280 -0
  430. package/src/ui/pane.tsx +193 -0
  431. package/src/ui/popover.tsx +16 -2
  432. package/src/ui/progress-bar.tsx +83 -0
  433. package/src/ui/prompt-dock.tsx +145 -0
  434. package/src/ui/resizable.tsx +69 -1
  435. package/src/ui/scroll-area.tsx +14 -3
  436. package/src/ui/segmented.tsx +109 -0
  437. package/src/ui/settings-group.tsx +67 -0
  438. package/src/ui/skeleton.tsx +62 -5
  439. package/src/ui/stat.tsx +41 -0
  440. package/src/ui/status.tsx +48 -0
  441. package/src/ui/switch.tsx +49 -23
  442. package/src/ui/tabs.tsx +168 -0
  443. package/src/ui/tooltip.tsx +52 -8
  444. package/theme.css +113 -0
  445. package/dist/components/slash-command.d.ts +0 -15
  446. package/dist/elements/chunks/Icon-D_Zmwmwh.js +0 -1
  447. package/dist/elements/chunks/action-icons-PVfIvcuG.js +0 -1
  448. package/dist/elements/chunks/attachments-Dp6vqtrc.js +0 -1
  449. package/dist/elements/chunks/button-CKyYD9G4.js +0 -1
  450. package/dist/elements/chunks/card-Cjho-PYk.js +0 -1
  451. package/dist/elements/chunks/chat-thread-RT808iPf.js +0 -1
  452. package/dist/elements/chunks/check-CDYaMYrM.js +0 -1
  453. package/dist/elements/chunks/chevron-down-3SBiq8HF.js +0 -1
  454. package/dist/elements/chunks/chevron-right-k2UFlIVK.js +0 -1
  455. package/dist/elements/chunks/cn-Dogu6PbV.js +0 -1
  456. package/dist/elements/chunks/code-block-BYUmfFSd.js +0 -1
  457. package/dist/elements/chunks/collapsible-BiNwdOn6.js +0 -1
  458. package/dist/elements/chunks/context-18g6oi4J.js +0 -1
  459. package/dist/elements/chunks/conversation-list-D9Y0NVdo.js +0 -1
  460. package/dist/elements/chunks/default-input-CSAoYYMd.js +0 -1
  461. package/dist/elements/chunks/download-D8K0Je8r.js +0 -1
  462. package/dist/elements/chunks/dropdown-bUs2iTia.js +0 -1
  463. package/dist/elements/chunks/external-link-6mA0wxab.js +0 -1
  464. package/dist/elements/chunks/file-text-DnaYk3Dm.js +0 -1
  465. package/dist/elements/chunks/file-tree-CgtRLlxK.js +0 -1
  466. package/dist/elements/chunks/hover-card-CIGw62gP.js +0 -1
  467. package/dist/elements/chunks/link-BlGSeoPy.js +0 -1
  468. package/dist/elements/chunks/loader-DvhR4qa0.js +0 -1
  469. package/dist/elements/chunks/message-CDZwXjhL.js +0 -1
  470. package/dist/elements/chunks/message-feedback-CYx81QiA.js +0 -1
  471. package/dist/elements/chunks/model-switcher-O_tUhoOT.js +0 -1
  472. package/dist/elements/chunks/overlay-DydXYMQW.js +0 -1
  473. package/dist/elements/chunks/prompt-suggestion-ldlWV5kd.js +0 -1
  474. package/dist/elements/chunks/reasoning-2PUnHlmr.js +0 -1
  475. package/dist/elements/chunks/resizable-B5WNbSeb.js +0 -1
  476. package/dist/elements/chunks/star-t9tI-P0q.js +0 -1
  477. package/dist/elements/chunks/store-C6rIooZz.js +0 -1
  478. package/dist/elements/chunks/text-shimmer-uh9V_KUh.js +0 -1
  479. package/dist/elements/chunks/textarea-3nm6Ia9U.js +0 -1
  480. package/dist/elements/chunks/thumbs-up-BBtguGld.js +0 -1
  481. package/dist/elements/chunks/toast-store-D8cL3fWl.js +0 -1
  482. package/dist/elements/chunks/tool-GJ3vwp1U.js +0 -1
  483. package/dist/elements/chunks/tooltip-DwKAz4XR.js +0 -1
  484. package/dist/elements/chunks/triangle-alert-Ct1zt2JL.js +0 -1
  485. package/dist/elements/chunks/use-card-resolution-D-_0Alzy.js +0 -1
  486. package/dist/elements/chunks/video-mVYiM99-.js +0 -1
  487. package/dist/elements/chunks/x-CzxL27Ch.js +0 -1
  488. package/dist/kitn-chat.es.js +0 -1
  489. package/dist/register-JyTglR6m.js +0 -1
  490. package/dist/register-impl-C6wlSsts.js +0 -77
  491. package/src/components/slash-command.tsx +0 -232
  492. package/src/elements/framework-usage.json +0 -588
  493. /package/dist/{kitn-chat-provider.d.ts → kai-provider.d.ts} +0 -0
  494. /package/dist/{kitn-chat-provider.es.js → kai-provider.es.js} +0 -0
@@ -1 +1 @@
1
- import{q as g,x as a,c as r,C as i}from"./chunks/cn-Dogu6PbV.js";import{C as n,a as d}from"./chunks/code-block-BYUmfFSd.js";g("kai-code-block",{code:"",language:void 0,codeTheme:"github-dark-dimmed",codeHighlight:!0,proseSize:"sm"},(e,{flag:t})=>{const o=a();return r(i,{get proseSize(){return e.proseSize},get codeTheme(){return e.codeTheme},get codeHighlight(){return t("codeHighlight")},get portalMount(){return o.portalMount()},get children(){return r(n,{get children(){return r(d,{get code(){return e.code},get language(){return e.language}})}})}})});
1
+ import{f as g,x as a,c as r,C as i}from"./chunks/define-rGsaWsLL.js";import{C as n,a as d}from"./chunks/code-block-DedwxwFI.js";g("kai-code-block",{code:"",language:void 0,codeTheme:"github-dark-dimmed",codeHighlight:!0,proseSize:"sm"},(e,{flag:t})=>{const o=a();return r(i,{get proseSize(){return e.proseSize},get codeTheme(){return e.codeTheme},get codeHighlight(){return t("codeHighlight")},get portalMount(){return o.portalMount()},get children(){return r(n,{get children(){return r(d,{get code(){return e.code},get language(){return e.language}})}})}})});
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ import{i as l,c as u,F as $,S as f,a as x,d as b,b as R,t as v,e as S,f as A,r as E,g as D,j as w,h as q,l as N}from"./chunks/define-rGsaWsLL.js";import{c as F}from"./chunks/cn-CU7UAWzk.js";import{r as H}from"./chunks/icon-Vqz4ivrY.js";import{K}from"./chunks/kbd-n49c4KZm.js";var O=v("<div role=listbox>"),T=v('<div class="px-3 py-4 text-center text-sm text-muted-foreground select-none">'),U=v('<div class="px-3 pt-2 pb-1 text-xs font-medium text-muted-foreground select-none">'),B=v('<span class="min-w-0 truncate text-muted-foreground">'),M=v('<button role=option><span class="font-medium whitespace-nowrap shrink-0">'),Q=v('<span part=shortcut class="ml-auto shrink-0 pl-3">');function W(i){const p=()=>i.groups.some(d=>d.items.length>0);return(()=>{var d=O();return l(d,u(f,{get when(){return p()},get fallback(){return(()=>{var a=T();return l(a,()=>i.emptyLabel??"No results"),a})()},get children(){return u($,{get each(){return i.groups},children:a=>u(f,{get when(){return a.items.length>0},get children(){return[u(f,{get when(){return a.group},get children(){var o=U();return l(o,()=>a.group),o}}),u($,{get each(){return a.items},children:o=>(()=>{var s=M(),h=s.firstChild;return s.$$click=()=>i.onSelect(o.id),s.$$mousedown=r=>r.preventDefault(),l(s,u(f,{get when(){return o.icon},children:r=>H(r(),{imgClass:"size-4 shrink-0 rounded object-cover",spanClass:"flex size-4 shrink-0 items-center justify-center text-sm",ariaHidden:!0})}),h),l(h,()=>o.label),l(s,u(f,{get when(){return o.description},get children(){var r=B();return l(r,()=>o.description),r}}),null),l(s,u(f,{get when(){return o.shortcut},children:r=>(()=>{var c=Q();return l(c,u(K,{get keys(){return r()},platform:"auto",size:"sm"})),c})()}),null),x(r=>{var c=o.id===i.activeId,m=F("flex w-full items-center gap-2 px-3 py-1.5 text-left text-sm transition-colors",o.id===i.activeId?"bg-muted text-foreground":"text-foreground hover:bg-muted");return c!==r.e&&b(s,"aria-selected",r.e=c),m!==r.t&&R(s,r.t=m),r},{e:void 0,t:void 0}),s})()})]}})})}})),x(a=>{var o=i.ariaLabel??"Command palette",s=i.id;return o!==a.e&&b(d,"aria-label",a.e=o),s!==a.t&&b(d,"id",a.t=s),a},{e:void 0,t:void 0}),d})()}S(["mousedown","click"]);var _=v('<div class="flex flex-col overflow-hidden"><div class="border-b border-border px-3 py-2"><input type=text role=combobox aria-expanded=true aria-haspopup=listbox aria-autocomplete=list class="w-full bg-transparent text-sm text-foreground placeholder:text-muted-foreground focus-visible:outline-none"></div><div class="overflow-y-auto max-h-[320px]">');A("kai-command",{items:void 0,placeholder:void 0,emptyLabel:void 0},(i,{dispatch:p,element:d,expose:a})=>{const o=E(),[s,h]=D(""),[r,c]=D(void 0),m=()=>i.items??[],y=w(()=>{const e=s().toLowerCase();return e?m().filter(t=>{var n;return t.label.toLowerCase().includes(e)||(((n=t.description)==null?void 0:n.toLowerCase().includes(e))??!1)}):m()}),j=w(()=>{const e=[];for(const t of y()){let n=e.find(g=>g.group===t.group);n||(n={group:t.group,items:[]},e.push(n)),n.items.push({id:t.id,label:t.label,icon:t.icon,description:t.description,shortcut:t.shortcut})}return e}),k=w(()=>y().map(e=>e.id));q(()=>{const e=k(),t=r();(!t||!e.includes(t))&&c(e[0])}),q(N(r,(e,t)=>{e!==t&&p("kai-active-change",{id:e})}));function C(e){p("kai-select",{id:e})}function z(e){const t=e.currentTarget.value;h(t),p("kai-query-change",{value:t})}function I(e){const t=k();if(!t.length)return;const n=r(),g=n!==void 0?t.indexOf(n):-1;if(e.key==="ArrowDown")e.preventDefault(),c(t[(g+1)%t.length]);else if(e.key==="ArrowUp")e.preventDefault(),c(t[(g-1+t.length)%t.length]);else if(e.key==="Enter"){e.preventDefault();const L=r();L!==void 0&&C(L)}else e.key==="Escape"&&(e.preventDefault(),h(""),p("kai-query-change",{value:""}))}return a({focus:e=>{var t,n;return(n=(t=d.shadowRoot)==null?void 0:t.querySelector('input[role="combobox"], input'))==null?void 0:n.focus(e)},blur:()=>{var e,t;return(t=(e=d.shadowRoot)==null?void 0:e.querySelector('input[role="combobox"], input'))==null?void 0:t.blur()},clear:()=>{h(""),p("kai-query-change",{value:""})}}),(()=>{var e=_(),t=e.firstChild,n=t.firstChild,g=t.nextSibling;return n.$$keydown=I,n.$$input=z,b(n,"aria-controls",o),l(g,u(W,{id:o,ariaLabel:"Results",get groups(){return j()},get activeId(){return r()},onSelect:C,get emptyLabel(){return i.emptyLabel??"No results"}})),x(()=>b(n,"placeholder",i.placeholder??"Search\u2026")),x(()=>n.value=s()),e})()}),S(["input","keydown"]);
@@ -1 +1 @@
1
- import{d as V,m as W,s as X,y as Y,e as m,a as D,b as z,o as M,c as l,E as Z,i as u,S as f,g as S,I as F,h as y,j as I,k as A,u as ee,t as p,n as te,q as re,x as ae,C as ne}from"./chunks/cn-Dogu6PbV.js";import{B as oe}from"./chunks/button-CKyYD9G4.js";import{C as L}from"./chunks/card-Cjho-PYk.js";import{M as U}from"./chunks/message-CDZwXjhL.js";import{T as ie}from"./chunks/text-shimmer-uh9V_KUh.js";import{c as de}from"./chunks/check-CDYaMYrM.js";function le(e){if(!Array.isArray(e))return{candidates:null,error:"This comparison couldn't be displayed."};if(e.length!==2)return{candidates:null,error:`A comparison needs exactly two candidates (got ${e.length}).`};const s=[],t=new Set;for(const i of e){if(!i||typeof i!="object")return{candidates:null,error:"This comparison couldn't be displayed."};const a=i;if(typeof a.id!="string"||a.id.length===0)return{candidates:null,error:"Each candidate needs a non-empty id."};if(t.has(a.id))return{candidates:null,error:`Duplicate candidate id "${a.id}".`};t.add(a.id),s.push({id:a.id,content:typeof a.content=="string"?a.content:"",reasoning:a.reasoning,tools:Array.isArray(a.tools)?a.tools:void 0,attachments:Array.isArray(a.attachments)?a.attachments:void 0,label:typeof a.label=="string"?a.label:void 0,model:typeof a.model=="string"?a.model:void 0,streaming:a.streaming===!0})}return{candidates:[s[0],s[1]]}}function se(e,s){const t=e.filter(i=>i.id!==s).map(i=>i.id);return{chosenId:s,rejectedIds:t,at:Date.now()}}function ce(e){return e?e.some(s=>s.streaming===!0):!1}var ue=p('<p class="text-sm text-foreground">'),ge=p('<div role=tablist aria-label="Switch response">'),pe=p("<div role=radiogroup>"),me=p("<div>"),fe=p("<button type=button role=tab>"),ve=p('<span class="text-xs font-semibold uppercase tracking-wide text-muted-foreground">'),he=p('<span class="text-xs text-muted-foreground">'),be=p('<div class="flex items-center gap-2">'),ye=p('<div><div class="min-w-0 flex-1">'),ke=p('<div class="flex flex-col gap-2 rounded-lg border border-input bg-accent/40 p-3"><div class="flex items-center gap-2 text-sm font-medium text-accent-foreground"><span>Selected'),xe=p('<p class="text-sm text-muted-foreground">Response selected.'),we=p("<div class=min-w-0>");function Se(e){const[s,t]=D(void 0);z(M(e.data,()=>t(void 0),{defer:!0}));const i=m(()=>e.prop()??s()),a=m(()=>i()!==void 0),c=m(()=>e.prop()===void 0&&s()!==void 0);return{value:i,isResolved:a,isOptimistic:c,setLocal:t}}function Ae(e){const s=W({compareId:"kai-compare",layout:"auto"},e),[t]=X(s,["data","compareId","selection","layout","class","onSelect","onReady","onError"]),i=Y(),a=m(()=>{var r;return le((r=t.data)==null?void 0:r.candidates)}),c=m(()=>a().candidates!==null),P=m(()=>a().error??""),h=m(()=>a().candidates),b=Se({prop:()=>t.selection,data:()=>t.data}),$=m(()=>ce(h())),[R,k]=D(0),[T,E]=D(0);let C;z(M(()=>t.data,()=>{k(0),E(0)})),z(M([c,$],([r,n])=>{var d,o;if(!r){(d=t.onError)==null||d.call(t,P());return}n||(o=t.onReady)==null||o.call(t)}));const q=m(()=>{var r;return(r=b.value())==null?void 0:r.chosenId}),O=m(()=>{var r;const n=q();return n===void 0||(r=h())==null?void 0:r.find(d=>d.id===n)}),H=r=>{var n;if(b.isResolved()||$())return;const d=h();if(!d)return;const o=se(d,r.id);(n=t.onSelect)==null||n.call(t,o),b.setLocal(o)},B=r=>{var n;const d=C?.querySelectorAll('[role="radio"]');(n=d?.[r])==null||n.focus()},G=r=>{if(b.isResolved())return;const n=h();if(!n)return;const d=o=>{k(o),E(o),B(o)};if(r.key==="ArrowRight"||r.key==="ArrowDown"||r.key==="ArrowLeft"||r.key==="ArrowUp")r.preventDefault(),d(R()===0?1:0);else if(r.key==="Home")r.preventDefault(),d(0);else if(r.key==="End")r.preventDefault(),d(1);else if(r.key===" "||r.key==="Enter"){r.preventDefault();const o=n[R()];o&&H(o)}},_=m(()=>{const r=t.layout;return r==="columns"?"grid grid-cols-2 gap-3":r==="tabs"?"grid grid-cols-1 gap-3":"grid grid-cols-1 gap-3 @[640px]/compare:grid-cols-2"}),J=()=>t.layout==="tabs"||t.layout==="auto",K=()=>t.layout==="auto"?"@[640px]/compare:hidden":"",N=r=>{const n=t.layout;return n==="columns"||r===T()?"":n==="tabs"?"hidden":"hidden @[640px]/compare:block"},j=`kai-compare-prompt-${i}`,Q=()=>{var r;return((r=t.data)==null?void 0:r.prompt)??"Compare two responses"};return l(f,{get when(){return c()},get fallback(){return l(L,{get errorMessage(){return P()||"This comparison couldn't be displayed."}})},get children(){return l(Z,{fallback:()=>{var r;return(r=t.onError)==null||r.call(t,"The comparison failed to render."),l(L,{errorMessage:"The comparison failed to render."})},get children(){var r=me();return u(r,l(f,{get when(){var n;return(n=t.data)==null?void 0:n.prompt},get children(){var n=ue();return S(n,"id",j),u(n,()=>{var d;return(d=t.data)==null?void 0:d.prompt}),n}}),null),u(r,l(f,{get when(){return!b.isResolved()},get fallback(){return l(Ie,{get candidate(){return O()},get optimistic(){return b.isOptimistic()}})},get children(){return[l(f,{get when(){return J()},get children(){var n=ge();return u(n,l(F,{get each(){return h()??[]},children:(d,o)=>(()=>{var g=fe();return g.$$click=()=>{E(o),k(o)},u(g,()=>d().label??`Response ${d().id}`),y(v=>{var x=T()===o,w=I("rounded-md px-3 py-1 text-xs font-medium transition-colors",T()===o?"bg-muted text-foreground":"text-muted-foreground hover:text-foreground");return x!==v.e&&S(g,"aria-selected",v.e=x),w!==v.t&&A(g,v.t=w),v},{e:void 0,t:void 0}),g})()})),y(()=>A(n,I("flex gap-1",K()))),n}}),(()=>{var n=pe();n.$$keydown=G;var d=C;return typeof d=="function"?ee(d,n):C=n,u(n,l(F,{get each(){return h()??[]},children:(o,g)=>l(Ce,{get candidate(){return o()},get tabStop(){return g===R()},get disabled(){return $()},hiddenClass:()=>N(g),onFocus:()=>k(g),onPick:()=>{k(g),H(o())}})})),y(o=>{var g,v=Q(),x=(g=t.data)!=null&&g.prompt?j:void 0,w=_();return v!==o.e&&S(n,"aria-label",o.e=v),x!==o.t&&S(n,"aria-describedby",o.t=x),w!==o.a&&A(n,o.a=w),o},{e:void 0,t:void 0,a:void 0}),n})()]}}),null),y(()=>A(r,I("flex flex-col gap-3",t.layout==="auto"&&"@container/compare",t.class))),r}})}})}function Ce(e){const s=()=>e.candidate.label??e.candidate.model??e.candidate.id;return(()=>{var t=ye(),i=t.firstChild;return u(t,l(f,{get when(){return e.candidate.label||e.candidate.model},get children(){var a=be();return u(a,l(f,{get when(){return e.candidate.label},get children(){var c=ve();return u(c,()=>e.candidate.label),c}}),null),u(a,l(f,{get when(){return e.candidate.model},get children(){var c=he();return u(c,()=>e.candidate.model),c}}),null),a}}),i),u(i,l(f,{get when(){return e.candidate.streaming},get fallback(){return l(U,{get content(){return e.candidate.content},get reasoning(){return e.candidate.reasoning},get tools(){return e.candidate.tools},get attachments(){return e.candidate.attachments},isUser:!1,markdown:!0})},get children(){return l(ie,{class:"text-sm",children:"Generating response\u2026"})}})),u(t,l(oe,{type:"button",role:"radio","aria-checked":!1,get"aria-label"(){return`Pick ${s()}`},get"data-candidate-id"(){return e.candidate.id},variant:"outline",size:"sm",class:"mt-auto w-full",get disabled(){return e.disabled},get tabindex(){return e.tabStop?0:-1},get onFocus(){return e.onFocus},onClick:a=>{a.stopPropagation(),e.onPick()},children:"Pick this"}),null),y(()=>{var a;return A(t,I("flex min-w-0 flex-col gap-3 rounded-lg border border-input bg-background/40 p-3",(a=e.hiddenClass)==null?void 0:a.call(e)))}),t})()}function Ie(e){return(()=>{var s=ke(),t=s.firstChild,i=t.firstChild;return i.firstChild,u(t,l(de,{size:16,"aria-hidden":"true"}),i),u(i,(()=>{var a=te(()=>{var c;return!!((c=e.candidate)!=null&&c.label)});return()=>a()?`: ${e.candidate.label}`:""})(),null),u(s,l(f,{get when(){return e.candidate},get fallback(){return xe()},children:a=>(()=>{var c=we();return u(c,l(U,{get content(){return a().content},get reasoning(){return a().reasoning},get tools(){return a().tools},get attachments(){return a().attachments},isUser:!1,markdown:!0})),c})()}),null),y(()=>S(s,"role",e.optimistic?"status":void 0)),s})()}V(["keydown","click"]),re("kai-compare",{data:void 0,compareId:void 0,selection:void 0,layout:"auto",proseSize:void 0,codeTheme:void 0,codeHighlight:void 0},(e,{element:s,dispatch:t})=>{const i=()=>e.compareId??(s.id||"kai-compare"),a=ae();return l(ne,{get proseSize(){return e.proseSize},get codeTheme(){return e.codeTheme},get codeHighlight(){return e.codeHighlight},get portalMount(){return a.portalMount()},get children(){return l(Ae,{get data(){return e.data},get compareId(){return i()},get selection(){return e.selection},get layout(){return e.layout??"auto"},onSelect:c=>t("kai-compare-select",c),onReady:()=>t("kai-ready",{compareId:i()}),onError:c=>t("kai-error",{compareId:i(),message:c})})}})});
1
+ import{m as W,s as X,r as Y,j as v,g as P,h as H,l as j,c as l,E as Z,i as u,S as f,d as A,I as U,a as k,b as C,u as ee,t as m,n as te,e as re,f as ae,x as ne,C as oe}from"./chunks/define-rGsaWsLL.js";import{c as T}from"./chunks/cn-CU7UAWzk.js";import{B as ie}from"./chunks/button-XDUM6lXs.js";import{C as O}from"./chunks/card-CBlFZ-7I.js";import{M as q}from"./chunks/message-CTqaYI0s.js";import{T as de}from"./chunks/text-shimmer-CaYGv8Se.js";import{c as le}from"./chunks/check-hGUoVIKb.js";function se(e){if(!Array.isArray(e))return{candidates:null,error:"This comparison couldn't be displayed."};if(e.length!==2)return{candidates:null,error:`A comparison needs exactly two candidates (got ${e.length}).`};const d=[],s=new Set;for(const r of e){if(!r||typeof r!="object")return{candidates:null,error:"This comparison couldn't be displayed."};const a=r;if(typeof a.id!="string"||a.id.length===0)return{candidates:null,error:"Each candidate needs a non-empty id."};if(s.has(a.id))return{candidates:null,error:`Duplicate candidate id "${a.id}".`};s.add(a.id),d.push({id:a.id,content:typeof a.content=="string"?a.content:"",reasoning:a.reasoning,tools:Array.isArray(a.tools)?a.tools:void 0,attachments:Array.isArray(a.attachments)?a.attachments:void 0,label:typeof a.label=="string"?a.label:void 0,model:typeof a.model=="string"?a.model:void 0,streaming:a.streaming===!0})}return{candidates:[d[0],d[1]]}}function ce(e,d){const s=e.filter(r=>r.id!==d).map(r=>r.id);return{chosenId:d,rejectedIds:s,at:Date.now()}}function ue(e){return e?e.some(d=>d.streaming===!0):!1}var ge=m('<p class="text-sm text-foreground">'),pe=m('<div role=tablist aria-label="Switch response">'),me=m("<div role=radiogroup>"),ve=m("<div>"),fe=m("<button type=button role=tab>"),he=m('<span class="text-xs font-semibold uppercase tracking-wide text-muted-foreground">'),ye=m('<span class="text-xs text-muted-foreground">'),be=m('<div class="flex items-center gap-2">'),xe=m('<div><div class="min-w-0 flex-1">'),ke=m('<div class="flex flex-col gap-2 rounded-lg border border-input bg-accent/40 p-3"><div class="flex items-center gap-2 text-sm font-medium text-accent-foreground"><span>Selected'),we=m('<p class="text-sm text-muted-foreground">Response selected.'),Se=m("<div class=min-w-0>");function Re(e){const[d,s]=P(void 0);H(j(e.data,()=>s(void 0),{defer:!0}));const r=v(()=>e.prop()??d()),a=v(()=>r()!==void 0),c=v(()=>e.prop()===void 0&&d()!==void 0);return{value:r,isResolved:a,isOptimistic:c,setLocal:s}}function Ae(e){var d;const s=W({compareId:"kai-compare",layout:"auto"},e),[r]=X(s,["data","compareId","selection","layout","class","controllerRef","onSelect","onReady","onError"]),a=Y(),c=v(()=>{var t;return se((t=r.data)==null?void 0:t.candidates)}),h=v(()=>c().candidates!==null),p=v(()=>c().error??""),b=v(()=>c().candidates),x=Re({prop:()=>r.selection,data:()=>r.data}),E=v(()=>ue(b())),[I,w]=P(0),[D,z]=P(0);let $;H(j(()=>r.data,()=>{w(0),z(0)})),H(j([h,E],([t,n])=>{var i,o;if(!t){(i=r.onError)==null||i.call(r,p());return}n||(o=r.onReady)==null||o.call(r)}));const B=v(()=>{var t;return(t=x.value())==null?void 0:t.chosenId}),G=v(()=>{var t;const n=B();return n===void 0||(t=b())==null?void 0:t.find(i=>i.id===n)}),M=t=>{var n;if(x.isResolved()||E())return;const i=b();if(!i)return;const o=ce(i,t.id);(n=r.onSelect)==null||n.call(r,o),x.setLocal(o)},F=(t,n)=>{var i;const o=$?.querySelectorAll('[role="radio"]');(i=o?.[t])==null||i.focus(n)};(d=r.controllerRef)==null||d.call(r,{select:t=>{var n;const i=(n=b())==null?void 0:n.find(o=>o.id===t);i&&M(i)},focus:t=>F(I(),t)});const _=t=>{if(x.isResolved())return;const n=b();if(!n)return;const i=o=>{w(o),z(o),F(o)};if(t.key==="ArrowRight"||t.key==="ArrowDown"||t.key==="ArrowLeft"||t.key==="ArrowUp")t.preventDefault(),i(I()===0?1:0);else if(t.key==="Home")t.preventDefault(),i(0);else if(t.key==="End")t.preventDefault(),i(1);else if(t.key===" "||t.key==="Enter"){t.preventDefault();const o=n[I()];o&&M(o)}},J=v(()=>{const t=r.layout;return t==="columns"?"grid grid-cols-2 gap-3":t==="tabs"?"grid grid-cols-1 gap-3":"grid grid-cols-1 gap-3 @[640px]/compare:grid-cols-2"}),K=()=>r.layout==="tabs"||r.layout==="auto",N=()=>r.layout==="auto"?"@[640px]/compare:hidden":"",Q=t=>{const n=r.layout;return n==="columns"||t===D()?"":n==="tabs"?"hidden":"hidden @[640px]/compare:block"},L=`kai-compare-prompt-${a}`,V=()=>{var t;return((t=r.data)==null?void 0:t.prompt)??"Compare two responses"};return l(f,{get when(){return h()},get fallback(){return l(O,{get errorMessage(){return p()||"This comparison couldn't be displayed."}})},get children(){return l(Z,{fallback:()=>{var t;return(t=r.onError)==null||t.call(r,"The comparison failed to render."),l(O,{errorMessage:"The comparison failed to render."})},get children(){var t=ve();return u(t,l(f,{get when(){var n;return(n=r.data)==null?void 0:n.prompt},get children(){var n=ge();return A(n,"id",L),u(n,()=>{var i;return(i=r.data)==null?void 0:i.prompt}),n}}),null),u(t,l(f,{get when(){return!x.isResolved()},get fallback(){return l(Ie,{get candidate(){return G()},get optimistic(){return x.isOptimistic()}})},get children(){return[l(f,{get when(){return K()},get children(){var n=pe();return u(n,l(U,{get each(){return b()??[]},children:(i,o)=>(()=>{var g=fe();return g.$$click=()=>{z(o),w(o)},u(g,()=>i().label??`Response ${i().id}`),k(y=>{var S=D()===o,R=T("rounded-md px-3 py-1 text-xs font-medium transition-colors",D()===o?"bg-muted text-foreground":"text-muted-foreground hover:text-foreground");return S!==y.e&&A(g,"aria-selected",y.e=S),R!==y.t&&C(g,y.t=R),y},{e:void 0,t:void 0}),g})()})),k(()=>C(n,T("flex gap-1",N()))),n}}),(()=>{var n=me();n.$$keydown=_;var i=$;return typeof i=="function"?ee(i,n):$=n,u(n,l(U,{get each(){return b()??[]},children:(o,g)=>l(Ce,{get candidate(){return o()},get tabStop(){return g===I()},get disabled(){return E()},hiddenClass:()=>Q(g),onFocus:()=>w(g),onPick:()=>{w(g),M(o())}})})),k(o=>{var g,y=V(),S=(g=r.data)!=null&&g.prompt?L:void 0,R=J();return y!==o.e&&A(n,"aria-label",o.e=y),S!==o.t&&A(n,"aria-describedby",o.t=S),R!==o.a&&C(n,o.a=R),o},{e:void 0,t:void 0,a:void 0}),n})()]}}),null),k(()=>C(t,T("flex flex-col gap-3",r.layout==="auto"&&"@container/compare",r.class))),t}})}})}function Ce(e){const d=()=>e.candidate.label??e.candidate.model??e.candidate.id;return(()=>{var s=xe(),r=s.firstChild;return u(s,l(f,{get when(){return e.candidate.label||e.candidate.model},get children(){var a=be();return u(a,l(f,{get when(){return e.candidate.label},get children(){var c=he();return u(c,()=>e.candidate.label),c}}),null),u(a,l(f,{get when(){return e.candidate.model},get children(){var c=ye();return u(c,()=>e.candidate.model),c}}),null),a}}),r),u(r,l(f,{get when(){return e.candidate.streaming},get fallback(){return l(q,{get content(){return e.candidate.content},get reasoning(){return e.candidate.reasoning},get tools(){return e.candidate.tools},get attachments(){return e.candidate.attachments},isUser:!1,markdown:!0})},get children(){return l(de,{class:"text-sm",children:"Generating response\u2026"})}})),u(s,l(ie,{type:"button",role:"radio","aria-checked":!1,get"aria-label"(){return`Pick ${d()}`},get"data-candidate-id"(){return e.candidate.id},variant:"outline",size:"sm",class:"mt-auto w-full",get disabled(){return e.disabled},get tabindex(){return e.tabStop?0:-1},get onFocus(){return e.onFocus},onClick:a=>{a.stopPropagation(),e.onPick()},children:"Pick this"}),null),k(()=>{var a;return C(s,T("flex min-w-0 flex-col gap-3 rounded-lg border border-input bg-background/40 p-3",(a=e.hiddenClass)==null?void 0:a.call(e)))}),s})()}function Ie(e){return(()=>{var d=ke(),s=d.firstChild,r=s.firstChild;return r.firstChild,u(s,l(le,{size:16,"aria-hidden":"true"}),r),u(r,(()=>{var a=te(()=>{var c;return!!((c=e.candidate)!=null&&c.label)});return()=>a()?`: ${e.candidate.label}`:""})(),null),u(d,l(f,{get when(){return e.candidate},get fallback(){return we()},children:a=>(()=>{var c=Se();return u(c,l(q,{get content(){return a().content},get reasoning(){return a().reasoning},get tools(){return a().tools},get attachments(){return a().attachments},isUser:!1,markdown:!0})),c})()}),null),k(()=>A(d,"role",e.optimistic?"status":void 0)),d})()}re(["keydown","click"]),ae("kai-compare",{data:void 0,compareId:void 0,selection:void 0,layout:"auto",proseSize:void 0,codeTheme:void 0,codeHighlight:void 0},(e,{element:d,dispatch:s,expose:r})=>{const a=()=>e.compareId??(d.id||"kai-compare"),c=ne();let h;return r({select:p=>h?.select(p),focus:p=>h?.focus(p)}),l(oe,{get proseSize(){return e.proseSize},get codeTheme(){return e.codeTheme},get codeHighlight(){return e.codeHighlight},get portalMount(){return c.portalMount()},get children(){return l(Ae,{get data(){return e.data},get compareId(){return a()},get selection(){return e.selection},get layout(){return e.layout??"auto"},controllerRef:p=>h=p,onSelect:p=>s("kai-compare-select",p),onReady:()=>s("kai-ready",{compareId:a()}),onError:p=>s("kai-error",{compareId:a(),message:p})})}})});
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ import{f as d,g as u,c as s}from"./chunks/define-rGsaWsLL.js";import{C as c}from"./chunks/composer-Cfbw5HKT.js";function v(e,r,n){var o;return{id:e.getAttribute("item-id")??"",label:((o=e.textContent)==null?void 0:o.trim())||e.getAttribute("label")||e.getAttribute("item-id")||"",icon:e.getAttribute("icon")??void 0,promptText:e.getAttribute("prompt-text")??void 0,data:void 0}}d("kai-composer",{value:void 0,placeholder:void 0,disabled:!1,loading:!1,maxHeight:240,submitOnEnter:!0,triggers:void 0,highlights:void 0,kindIcons:void 0},(e,{dispatch:r,flag:n,expose:o})=>{const[l,g]=u(e.value),a=()=>e.value??l();let i;return o({focus:t=>i?.focus(t),blur:()=>i?.blur(),clear:()=>i?.clear(),send:()=>i?.send(),insertEntity:t=>i?.insertEntity(t)}),s(c,{get value(){return a()},get placeholder(){return e.placeholder},get disabled(){return n("disabled")},get loading(){return n("loading")},get maxHeight(){return e.maxHeight},get submitOnEnter(){return n("submitOnEnter")},get triggers(){return e.triggers},get highlights(){return e.highlights},get kindIcons(){return e.kindIcons},onChange:t=>{g(t.doc),r("kai-value-change",{doc:t.doc,text:t.text,entities:t.entities})},onSubmit:t=>{r("kai-submit",{doc:t.doc,text:t.text,entities:t.entities})},onEntityAdd:t=>r("kai-entity-add",{entity:t}),onEntityRemove:t=>r("kai-entity-remove",{entity:t}),onTrigger:t=>r("kai-trigger",t),onTriggerClose:()=>r("kai-trigger-close",{}),onFocus:t=>r("kai-focus",{originalEvent:t}),onBlur:t=>r("kai-blur",{originalEvent:t}),controllerRef:t=>i=t})});export{v as parseKaiTriggerItemElement};
@@ -1 +1 @@
1
- import{d as q,m as B,s as L,e as g,b as E,o as M,c as n,E as N,S as c,i as l,h as C,j as O,k as F,g as T,F as H,u as U,t as v,q as G}from"./chunks/cn-Dogu6PbV.js";import{B as $}from"./chunks/button-CKyYD9G4.js";import{C as k}from"./chunks/card-Cjho-PYk.js";import{u as J,a as K,D as P}from"./chunks/use-card-resolution-D-_0Alzy.js";import{e as Q}from"./chunks/card-routing-C986KuUA.js";import{t as V}from"./chunks/triangle-alert-Ct1zt2JL.js";import{c as W}from"./chunks/check-CDYaMYrM.js";import{x as X}from"./chunks/x-CzxL27Ch.js";var Y=v('<div class="flex items-center gap-2 text-sm font-medium text-destructive dark:text-red-400"><span>Heads up'),Z=v('<p class="text-sm font-semibold text-foreground">'),_=v('<p class="text-sm text-foreground">'),ee=v("<div>"),te=v('<div class="flex w-full flex-wrap items-center justify-between gap-2"><div class="ml-auto flex flex-wrap items-center gap-2">'),re=v('<div class="ml-auto flex items-center gap-2 text-sm font-medium text-foreground"><span>');const ae="confirm",ne=new Set(["primary","default","destructive"]);function ie(d){switch(d){case"primary":return"default";case"destructive":return"destructive";case"default":case void 0:return"outline";default:return console.warn(`[kai-confirm] unknown action style "${d}"; using default`),"outline"}}function de(d){if(!Array.isArray(d)||d.length===0)return{actions:[],error:"This card couldn't be displayed."};const s=new Set,r=[];for(const h of d){if(!h||typeof h!="object")continue;const a=h;if(typeof a.id!="string"||a.id.length===0||typeof a.label!="string"||a.label.length===0)continue;if(s.has(a.id)){console.warn(`[kai-confirm] duplicate action id "${a.id}" ignored`);continue}s.add(a.id);const f=ne.has(a.style)?a.style:void 0;a.style!==void 0&&f===void 0&&console.warn(`[kai-confirm] unknown action style "${String(a.style)}"; using default`),r.push({id:a.id,label:a.label,style:f,payload:a.payload,default:a.default===!0})}return r.length===0?{actions:[],error:"This card couldn't be displayed."}:{actions:r}}function oe(d){var s;return(s=d.find(r=>r.default))==null?void 0:s.id}function se(d){const s=B({cardId:"kai-confirm",autofocus:!1},d),[r]=L(s,["data","cardId","heading","host","hostElement","autofocus","class","resolution"]),h=J(),a=e=>{const i=r.host??h;i?i.emit(e):r.hostElement&&Q(r.hostElement,e)},f=g(()=>{var e;return de((e=r.data)==null?void 0:e.actions)}),b=g(()=>f().error===void 0),w=g(()=>f().error??""),p=g(()=>f().actions),z=()=>{var e;return((e=r.data)==null?void 0:e.tone)??"default"},A=()=>z()==="danger",y=g(()=>oe(p())),u=K({prop:()=>r.resolution,data:()=>r.data}),R=g(()=>{const e=u.resolution();if(!e||e.kind!=="action")return;const i=p().find(t=>t.id===e.action);return{label:i?.label??e.action}});E(M(b,e=>{a(e?{kind:"ready",cardId:r.cardId}:{kind:"error",cardId:r.cardId,message:w()})}));const x=e=>{u.isResolved()||(a({kind:"action",cardId:r.cardId,action:e.id,...e.payload!==void 0?{payload:e.payload}:{}}),u.setLocal({kind:"action",action:e.id,...e.payload!==void 0?{payload:e.payload}:{}}))},S=()=>{u.isResolved()||(a({kind:"dismiss",cardId:r.cardId}),u.setLocal({kind:"dismissed"}))},j=()=>a({kind:"reopen",cardId:r.cardId});let I;return E(()=>{const e=r.hostElement;if(!e)return;const i=u.resolution();i&&i.kind==="action"?e.setAttribute("data-kai-resolved",i.action):e.removeAttribute("data-kai-resolved")}),n(c,{get when(){return b()},get fallback(){return n(k,{get heading(){return r.heading},get errorMessage(){return w()}})},get children(){return n(N,{fallback:()=>(a({kind:"error",cardId:r.cardId,message:"The card failed to render."}),n(k,{get heading(){return r.heading},errorMessage:"The card failed to render."})),get children(){return n(c,{get when(){return!u.isDeferred()},get fallback(){return n(P,{type:ae,get title(){return r.heading},onReopen:j})},get children(){return n(k,{get heading(){return r.heading},get actions(){return n(c,{get when(){return!u.isResolved()},get fallback(){return(()=>{var e=re(),i=e.firstChild;return l(e,n(W,{size:16,"aria-hidden":"true"}),i),l(i,()=>{var t;return(t=R())==null?void 0:t.label}),C(()=>T(e,"role",u.isOptimistic()?"status":void 0)),e})()},get children(){var e=te(),i=e.firstChild;return l(e,n(c,{get when(){var t;return((t=r.data)==null?void 0:t.dismissible)===!0},get children(){return n($,{type:"button",variant:"ghost",size:"icon-sm","aria-label":"Dismiss",onClick:S,get children(){return n(X,{size:16,"aria-hidden":"true"})}})}}),i),l(i,n(H,{get each(){return p()},children:t=>n($,{type:"button",get variant(){return ie(t.style)},get"data-action-id"(){return t.id},get"data-kai-default"(){return t.default?"true":void 0},ref:o=>{r.autofocus&&t.id===y()&&queueMicrotask(()=>o.focus())},onClick:()=>x(t),get children(){return t.label}})})),e}})},get children(){var e=ee();e.$$keydown=t=>{if(t.key!=="Enter"||t.target.tagName==="BUTTON")return;const o=y();if(o===void 0)return;const m=p().find(D=>D.id===o);m&&x(m)};var i=I;return typeof i=="function"?U(i,e):I=e,l(e,n(c,{get when(){return A()},get children(){var t=Y(),o=t.firstChild;return l(t,n(V,{size:16,class:"shrink-0","aria-hidden":"true"}),o),t}}),null),l(e,n(c,{get when(){var t;return(t=r.data)==null?void 0:t.heading},get children(){var t=Z();return l(t,()=>{var o;return(o=r.data)==null?void 0:o.heading}),t}}),null),l(e,n(c,{get when(){var t;return(t=r.data)==null?void 0:t.body},get children(){var t=_();return l(t,()=>{var o;return(o=r.data)==null?void 0:o.body}),t}}),null),C(t=>{var o=O("flex flex-col gap-2",r.class),m=y()!==void 0?0:void 0;return o!==t.e&&F(e,t.e=o),m!==t.t&&T(e,"tabindex",t.t=m),t},{e:void 0,t:void 0}),e}})}})}})}})}q(["keydown"]),G("kai-confirm",{data:void 0,cardId:void 0,heading:void 0,autofocus:!1,resolution:void 0},(d,{element:s,flag:r})=>n(se,{get data(){return d.data},get cardId(){return d.cardId??(s.id||"kai-confirm")},get heading(){return d.heading},get autofocus(){return r("autofocus")},get resolution(){return d.resolution},hostElement:s}));
1
+ import{m as N,s as O,j as m,h as T,l as F,o as H,c as o,E as L,S as v,i as c,a as $,b as U,d as z,F as G,u as A,t as h,e as J,f as K}from"./chunks/define-rGsaWsLL.js";import{c as P}from"./chunks/cn-CU7UAWzk.js";import{B as j}from"./chunks/button-XDUM6lXs.js";import{C as x}from"./chunks/card-CBlFZ-7I.js";import{u as Q,a as V,D as W}from"./chunks/use-card-resolution-VSVoxDeJ.js";import{e as X}from"./chunks/card-routing-C986KuUA.js";import{t as Y}from"./chunks/triangle-alert-BlS80PUg.js";import{c as Z}from"./chunks/check-hGUoVIKb.js";import{x as _}from"./chunks/x-C1qtndxn.js";var ee=h('<div class="flex items-center gap-2 text-sm font-medium text-destructive dark:text-red-400"><span>Heads up'),te=h('<p class="text-sm font-semibold text-foreground">'),re=h('<p class="text-sm text-foreground">'),ae=h("<div>"),ne=h('<div class="flex w-full flex-wrap items-center justify-between gap-2"><div class="ml-auto flex flex-wrap items-center gap-2">'),ie=h('<div class="ml-auto flex items-center gap-2 text-sm font-medium text-foreground"><span>');const oe="confirm",de=new Set(["primary","default","destructive"]);function se(d){switch(d){case"primary":return"default";case"destructive":return"destructive";case"default":case void 0:return"outline";default:return console.warn(`[kai-confirm] unknown action style "${d}"; using default`),"outline"}}function le(d){if(!Array.isArray(d)||d.length===0)return{actions:[],error:"This card couldn't be displayed."};const l=new Set,r=[];for(const g of d){if(!g||typeof g!="object")continue;const a=g;if(typeof a.id!="string"||a.id.length===0||typeof a.label!="string"||a.label.length===0)continue;if(l.has(a.id)){console.warn(`[kai-confirm] duplicate action id "${a.id}" ignored`);continue}l.add(a.id);const s=de.has(a.style)?a.style:void 0;a.style!==void 0&&s===void 0&&console.warn(`[kai-confirm] unknown action style "${String(a.style)}"; using default`),r.push({id:a.id,label:a.label,style:s,payload:a.payload,default:a.default===!0})}return r.length===0?{actions:[],error:"This card couldn't be displayed."}:{actions:r}}function ue(d){var l;return(l=d.find(r=>r.default))==null?void 0:l.id}function ce(d){const l=N({cardId:"kai-confirm",autofocus:!1},d),[r]=O(l,["data","cardId","heading","host","hostElement","autofocus","class","resolution","controllerRef"]),g=Q(),a=e=>{const i=r.host??g;i?i.emit(e):r.hostElement&&X(r.hostElement,e)},s=m(()=>{var e;return le((e=r.data)==null?void 0:e.actions)}),I=m(()=>s().error===void 0),E=m(()=>s().error??""),p=m(()=>s().actions),q=()=>{var e;return((e=r.data)==null?void 0:e.tone)??"default"},D=()=>q()==="danger",k=m(()=>ue(p())),f=V({prop:()=>r.resolution,data:()=>r.data}),M=m(()=>{const e=f.resolution();if(!e||e.kind!=="action")return;const i=p().find(t=>t.id===e.action);return{label:i?.label??e.action}});T(F(I,e=>{a(e?{kind:"ready",cardId:r.cardId}:{kind:"error",cardId:r.cardId,message:E()})}));const b=e=>{f.isResolved()||(a({kind:"action",cardId:r.cardId,action:e.id,...e.payload!==void 0?{payload:e.payload}:{}}),f.setLocal({kind:"action",action:e.id,...e.payload!==void 0?{payload:e.payload}:{}}))},R=()=>{f.isResolved()||(a({kind:"dismiss",cardId:r.cardId}),f.setLocal({kind:"dismissed"}))},C=()=>a({kind:"reopen",cardId:r.cardId});let S,y;const B=()=>y?y.querySelector('button[data-kai-default="true"]')??y.querySelector("button[data-action-id]"):null;return H(()=>{var e;(e=r.controllerRef)==null||e.call(r,{focus:i=>{var t;return(t=B())==null?void 0:t.focus(i)},confirm:i=>{const t=p(),n=i??k();if(n===void 0)return;const u=t.find(w=>w.id===n);u&&b(u)},dismiss:()=>R(),reopen:()=>C()})}),T(()=>{const e=r.hostElement;if(!e)return;const i=f.resolution();i&&i.kind==="action"?e.setAttribute("data-kai-resolved",i.action):e.removeAttribute("data-kai-resolved")}),o(v,{get when(){return I()},get fallback(){return o(x,{get heading(){return r.heading},get errorMessage(){return E()}})},get children(){return o(L,{fallback:()=>(a({kind:"error",cardId:r.cardId,message:"The card failed to render."}),o(x,{get heading(){return r.heading},errorMessage:"The card failed to render."})),get children(){return o(v,{get when(){return!f.isDeferred()},get fallback(){return o(W,{type:oe,get title(){return r.heading},onReopen:C})},get children(){return o(x,{get heading(){return r.heading},get actions(){return o(v,{get when(){return!f.isResolved()},get fallback(){return(()=>{var e=ie(),i=e.firstChild;return c(e,o(Z,{size:16,"aria-hidden":"true"}),i),c(i,()=>{var t;return(t=M())==null?void 0:t.label}),$(()=>z(e,"role",f.isOptimistic()?"status":void 0)),e})()},get children(){var e=ne(),i=e.firstChild;c(e,o(v,{get when(){var n;return((n=r.data)==null?void 0:n.dismissible)===!0},get children(){return o(j,{type:"button",variant:"ghost",size:"icon-sm","aria-label":"Dismiss",onClick:R,get children(){return o(_,{size:16,"aria-hidden":"true"})}})}}),i);var t=y;return typeof t=="function"?A(t,i):y=i,c(i,o(G,{get each(){return p()},children:n=>o(j,{type:"button",get variant(){return se(n.style)},get"data-action-id"(){return n.id},get"data-kai-default"(){return n.default?"true":void 0},ref:u=>{r.autofocus&&n.id===k()&&queueMicrotask(()=>u.focus())},onClick:()=>b(n),get children(){return n.label}})})),e}})},get children(){var e=ae();e.$$keydown=t=>{if(t.key!=="Enter"||t.target.tagName==="BUTTON")return;const n=k();if(n===void 0)return;const u=p().find(w=>w.id===n);u&&b(u)};var i=S;return typeof i=="function"?A(i,e):S=e,c(e,o(v,{get when(){return D()},get children(){var t=ee(),n=t.firstChild;return c(t,o(Y,{size:16,class:"shrink-0","aria-hidden":"true"}),n),t}}),null),c(e,o(v,{get when(){var t;return(t=r.data)==null?void 0:t.heading},get children(){var t=te();return c(t,()=>{var n;return(n=r.data)==null?void 0:n.heading}),t}}),null),c(e,o(v,{get when(){var t;return(t=r.data)==null?void 0:t.body},get children(){var t=re();return c(t,()=>{var n;return(n=r.data)==null?void 0:n.body}),t}}),null),$(t=>{var n=P("flex flex-col gap-2",r.class),u=k()!==void 0?0:void 0;return n!==t.e&&U(e,t.e=n),u!==t.t&&z(e,"tabindex",t.t=u),t},{e:void 0,t:void 0}),e}})}})}})}})}J(["keydown"]),K("kai-confirm",{data:void 0,cardId:void 0,heading:void 0,autofocus:!1,resolution:void 0},(d,{element:l,flag:r,expose:g})=>{let a;return g({focus:s=>a?.focus(s),confirm:s=>a?.confirm(s),dismiss:()=>a?.dismiss(),reopen:()=>a?.reopen()}),o(ce,{get data(){return d.data},get cardId(){return d.cardId??(l.id||"kai-confirm")},get heading(){return d.heading},get autofocus(){return r("autofocus")},get resolution(){return d.resolution},controllerRef:s=>a=s,hostElement:l})});
@@ -1 +1 @@
1
- import{q as d,e as g,b as i,o as l,c as t,i as r,S as s,t as T}from"./chunks/cn-Dogu6PbV.js";import{h as k,C as x,a as m,b as v,c as p,d as w,e as f,f as C,i as b,j as D,g as S,D as j,k as q}from"./chunks/context-18g6oi4J.js";var y=T("<div class=space-y-1.5>");d("kai-context",{context:void 0,warnThreshold:void 0,dangerThreshold:void 0},(e,{dispatch:c})=>{const o=()=>e.warnThreshold??j,a=()=>e.dangerThreshold??q,h=g(()=>{const n=e.context;return n?k(n.usedTokens/n.maxTokens,o(),a()):"ok"});return i(l(h,(n,u)=>{u!==void 0&&n!==u&&c("kai-threshold-change",{level:n})})),t(s,{get when(){return e.context},get children(){return t(x,{get usedTokens(){return e.context.usedTokens},get maxTokens(){return e.context.maxTokens},get inputTokens(){return e.context.inputTokens},get outputTokens(){return e.context.outputTokens},get reasoningTokens(){return e.context.reasoningTokens},get cacheTokens(){return e.context.cacheTokens},get estimatedCost(){return e.context.estimatedCost},get warnThreshold(){return o()},get dangerThreshold(){return a()},get children(){return[t(m,{}),t(v,{get children(){return[t(p,{}),t(w,{get children(){var n=y();return r(n,t(f,{}),null),r(n,t(C,{}),null),r(n,t(s,{get when(){return e.context.reasoningTokens},get children(){return t(b,{})}}),null),r(n,t(s,{get when(){return e.context.cacheTokens},get children(){return t(D,{})}}),null),n}}),t(S,{})]}})]}})}})});
1
+ import{f as d,j as g,h as i,l,c as t,i as r,S as s,t as T}from"./chunks/define-rGsaWsLL.js";import{h as k,C as x,a as m,b as v,c as p,d as w,e as f,f as C,i as j,j as D,g as S,D as b,k as y}from"./chunks/context-DwJmxlRE.js";var E=T("<div class=space-y-1.5>");d("kai-context",{context:void 0,warnThreshold:void 0,dangerThreshold:void 0},(e,{dispatch:c})=>{const o=()=>e.warnThreshold??b,a=()=>e.dangerThreshold??y,h=g(()=>{const n=e.context;return n?k(n.usedTokens/n.maxTokens,o(),a()):"ok"});return i(l(h,(n,u)=>{u!==void 0&&n!==u&&c("kai-threshold-change",{level:n})})),t(s,{get when(){return e.context},get children(){return t(x,{get usedTokens(){return e.context.usedTokens},get maxTokens(){return e.context.maxTokens},get inputTokens(){return e.context.inputTokens},get outputTokens(){return e.context.outputTokens},get reasoningTokens(){return e.context.reasoningTokens},get cacheTokens(){return e.context.cacheTokens},get estimatedCost(){return e.context.estimatedCost},get warnThreshold(){return o()},get dangerThreshold(){return a()},get children(){return[t(m,{}),t(v,{get children(){return[t(p,{}),t(w,{get children(){var n=E();return r(n,t(f,{}),null),r(n,t(C,{}),null),r(n,t(s,{get when(){return e.context.reasoningTokens},get children(){return t(j,{})}}),null),r(n,t(s,{get when(){return e.context.cacheTokens},get children(){return t(D,{})}}),null),n}}),t(S,{})]}})]}})}})});
@@ -1 +1 @@
1
- import{q as d,a as g,l,p as v,c as p}from"./chunks/cn-Dogu6PbV.js";import{C as m}from"./chunks/conversation-list-D9Y0NVdo.js";function i(t){var e;return{id:t.getAttribute("id")??"",title:((e=t.textContent)==null?void 0:e.trim())??"",groupId:t.getAttribute("group-id")??void 0,scope:{type:"collection"},messageCount:0,lastMessageAt:new Date(0).toISOString(),updatedAt:new Date(0).toISOString()}}d("kai-conversations",{groups:[],conversations:[],activeId:void 0},(t,{dispatch:e,element:n})=>{const[s,a]=g([]);l(()=>{const o=()=>{const u=[...n.querySelectorAll("kai-conversation")];a(u.map(i))};o();const r=new MutationObserver(o);r.observe(n,{childList:!0,attributes:!0,subtree:!0}),v(()=>r.disconnect())});const c=()=>[...t.conversations??[],...s()];return p(m,{get groups(){return t.groups},get conversations(){return c()},get activeId(){return t.activeId},onSelect:o=>e("kai-conversation-select",{id:o}),onNewChat:()=>e("kai-new-chat"),onToggleSidebar:()=>e("kai-toggle-sidebar")})});export{i as parseKaiConversationElement};
1
+ import{f as y,g as v,o as I,c,n as d,q as u,S as x,t as g,p as A}from"./chunks/define-rGsaWsLL.js";import{c as q,C as O,a as _}from"./chunks/conversation-list-DsCQMfPq.js";import{r as $,a as E}from"./chunks/slots-DkZ-Cmha.js";var R=g("<slot name=header>"),D=g("<slot name=footer>"),L=g("<slot name=empty>");function f(r){var t;return{id:r.getAttribute("id")??"",title:((t=r.textContent)==null?void 0:t.trim())??"",groupId:r.getAttribute("group-id")??void 0,scope:{type:"collection"},messageCount:0,lastMessageAt:new Date(0).toISOString(),updatedAt:new Date(0).toISOString()}}y("kai-conversations",{groups:[],conversations:[],activeId:void 0,collapsed:void 0,defaultCollapsed:void 0},(r,{dispatch:t,element:s,expose:m,flag:h})=>{const[w,S]=v([]),[l,b]=v({});I(()=>{const e=()=>{const i=[...s.querySelectorAll("kai-conversation")];S(i.map(f)),b($(s,E))};e();const n=new MutationObserver(e);n.observe(s,{childList:!0,attributes:!0,subtree:!0}),A(()=>n.disconnect())});const k=()=>[...r.conversations??[],...w()],[p,C]=q(()=>r.collapsed,h("defaultCollapsed")),o=e=>{C(e),t("kai-collapse-toggle",{collapsed:e})};let a;return m({focus:e=>{var n,i;a?a.focus(e):(i=(n=s.shadowRoot)==null?void 0:n.querySelector("input"))==null||i.focus(e)},clear:()=>a?.clearSearch(),select:e=>t("kai-conversation-select",{id:e}),collapse:()=>o(!0),expand:()=>o(!1),toggle:()=>o(!p())}),c(x,{get when(){return!p()},get fallback(){return c(_,{onExpand:()=>o(!1)})},get children(){return c(O,{get groups(){return r.groups},get conversations(){return k()},get activeId(){return r.activeId},onSelect:e=>t("kai-conversation-select",{id:e}),onNewChat:()=>t("kai-new-chat"),onToggleSidebar:()=>{t("kai-toggle-sidebar"),o(!0)},onSearchChange:e=>t("kai-search",{query:e}),controllerRef:e=>a=e,get header(){return d(()=>!!l().header)()?(()=>{var e=R();return e._$owner=u(),e})():void 0},get footer(){return d(()=>!!l().footer)()?(()=>{var e=D();return e._$owner=u(),e})():void 0},get empty(){return d(()=>!!l().empty)()?(()=>{var e=L();return e._$owner=u(),e})():void 0}})}})});export{f as parseKaiConversationElement};
@@ -0,0 +1 @@
1
+ export declare const ELEMENT_CSS: string;
@@ -0,0 +1,51 @@
1
+ import { TriggerDef, ComposerChange } from '../components/composer';
2
+ import { ComposerDoc } from '../primitives/composer-model';
3
+ import { AttachmentData } from '../components/attachments';
4
+ import { CustomAction } from './chat-types';
5
+ export interface DefaultPromptInputProps {
6
+ /** String = controlled text mirror; ComposerDoc = a seed that pre-populates pills. */
7
+ value: string | ComposerDoc;
8
+ placeholder?: string;
9
+ disabled?: boolean;
10
+ loading?: boolean;
11
+ suggestions?: string[];
12
+ /** Attachments staged in the input. Provide `onAttachmentsChange` to enable
13
+ * the attach button + removable previews. */
14
+ attachments?: AttachmentData[];
15
+ /** When `false`, the built-in paperclip attach button is hidden even if
16
+ * `onAttachmentsChange` is provided (e.g. when a `+` menu already covers
17
+ * file-attach). Defaults to `true`. */
18
+ attach?: boolean;
19
+ /** Show a Search (Globe) button in the left toolbar; calls `onSearch`. */
20
+ search?: boolean;
21
+ /** Show a Voice (Mic) button in the left toolbar; calls `onVoice`. */
22
+ voice?: boolean;
23
+ /** Send-button visibility. `'always'` (default) always shows it; `'auto'` shows
24
+ * it only when there's text/attachments (an empty composer hides it — Enter
25
+ * still submits). To hide it entirely (Enter-only), it's pure CSS:
26
+ * `::part(send){display:none}` — no prop needed. Restyle via `::part(send)`.
27
+ * The Stop button (stoppable + loading) is unaffected. */
28
+ submit?: 'always' | 'auto';
29
+ onValueChange: (v: string) => void;
30
+ onSubmit: () => void;
31
+ onSuggestionClick: (v: string) => void;
32
+ onAttachmentsChange?: (attachments: AttachmentData[]) => void;
33
+ onSearch?: () => void;
34
+ onVoice?: () => void;
35
+ /** When `true` and `loading` is also `true`, the send button is replaced by
36
+ * a Stop button that calls `onStop`. */
37
+ stoppable?: boolean;
38
+ /** Called when the user clicks the Stop button. */
39
+ onStop?: () => void;
40
+ /** Custom toolbar action buttons declared as `<kai-action>` light-DOM children. */
41
+ toolbarActions?: CustomAction[];
42
+ /** Called when a custom toolbar action button is clicked, with the action id. */
43
+ onAction?: (id: string) => void;
44
+ /** Rich entity triggers (`/` skills, `@` agents) passed to the composer. */
45
+ triggers?: TriggerDef[];
46
+ /** Default icon per entity kind (kind → image src) passed to the composer. */
47
+ kindIcons?: Record<string, string>;
48
+ /** Structured change (doc + entities) from the composer, on every edit. */
49
+ onComposerChange?: (change: ComposerChange) => void;
50
+ }
51
+ export declare function DefaultPromptInput(props: DefaultPromptInputProps): import("solid-js").JSX.Element;
@@ -0,0 +1,53 @@
1
+ import { JSX } from 'solid-js';
2
+ /**
3
+ * Context handed to every element facade. `E` is the element's event map —
4
+ * `{ eventName: detailType }` — which types `dispatch` so a facade can only fire
5
+ * its declared events with the right `detail` shape.
6
+ */
7
+ export interface WebComponentContext<E = Record<string, unknown>> {
8
+ /** The custom-element host node. */
9
+ element: HTMLElement;
10
+ /** Fire a non-bubbling, non-composed CustomEvent off the host. Consumers
11
+ * listen directly on the element (`el.addEventListener(...)`). Typed by the
12
+ * element's event map `E`. */
13
+ dispatch: <K extends keyof E & string>(type: K, detail?: E[K]) => void;
14
+ /**
15
+ * Resolve a boolean flag from a prop the way HTML authors expect.
16
+ *
17
+ * `component-register` parses a *bare* boolean attribute (`<el removable>`) to
18
+ * `undefined`, not `true` — so a facade can't rely on the prop value alone.
19
+ * `flag('removable')` returns ON when the property is `true`, OR when the
20
+ * matching attribute is present and not explicitly `="false"`. So all of
21
+ * `<el removable>`, `<el removable="true">`, and `el.removable = true` turn it
22
+ * on; `<el removable="false">`, absent, and `el.removable = false` turn it off.
23
+ *
24
+ * `name` is the camelCase prop name; the matching kebab attribute is derived.
25
+ */
26
+ flag: (name: string) => boolean;
27
+ /**
28
+ * Expose imperative methods on the host element instance — the input half of a
29
+ * component's interaction surface (`el.focus()`, `el.clear()`, `el.scrollToBottom()`,
30
+ * …), the counterpart to the events `dispatch` fires. Call once from the facade
31
+ * with closures over its internal state/refs; each entry is assigned to the host,
32
+ * so a consumer calls it directly: `document.querySelector('kai-prompt-input').focus()`.
33
+ * Overriding a native method name (e.g. `focus`) shadows it on the instance so it
34
+ * can target the right control inside the shadow root (the WebAwesome/Shoelace
35
+ * convention). Methods are attached when the facade renders (on element upgrade).
36
+ */
37
+ expose: (methods: Record<string, (...args: never[]) => unknown>) => void;
38
+ }
39
+ type FacadeComponent<P, E> = (props: P, ctx: WebComponentContext<E>) => JSX.Element;
40
+ /**
41
+ * Register a Solid facade as a Shadow-DOM custom element.
42
+ *
43
+ * - Renders into the element's shadow root (solid-element's default), with the
44
+ * compiled kit CSS injected via a `<style>` so Tailwind classes apply inside.
45
+ * - Creates a portal mount node inside the shadow root and provides it through
46
+ * `ChatConfig` so the kit's overlays stay inside the shadow root.
47
+ * - Gives the facade a `dispatch(type, detail)` helper that fires non-bubbling,
48
+ * non-composed CustomEvents off the host element (consumers listen directly on
49
+ * the element, so bubbling/composed would only cause consumer collisions).
50
+ * - Idempotent: redefining an already-registered tag is a no-op.
51
+ */
52
+ export declare function defineWebComponent<P extends Record<string, unknown>, E = Record<string, unknown>>(tag: string, propDefaults: P, Facade: FacadeComponent<P, E>): void;
53
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ import{x as W,g as $,r as B,h as F,c as x,P as G,u as L,i as w,S as O,d as p,a as I,b as j,t as h,e as J,f as N,o as Q,q as E,n as z,p as U}from"./chunks/define-rGsaWsLL.js";import{c as D}from"./chunks/cn-CU7UAWzk.js";import{c as V}from"./chunks/overlay-C8sOYqjT.js";import{w as X}from"./chunks/disclosure-CwoAkpMH.js";var Y=h('<header part=header class="shrink-0 border-b border-border px-5 py-4 text-base font-semibold text-foreground">'),Z=h('<footer part=footer class="flex shrink-0 items-center justify-end gap-2 border-t border-border px-5 py-3">'),ee=h('<div part=backdrop><div part=panel role=dialog aria-modal=true tabindex=-1><div part=body class="min-h-0 flex-1 overflow-auto px-5 py-4 text-sm text-foreground">');const _=["a[href]","button:not([disabled])","input:not([disabled])","select:not([disabled])","textarea:not([disabled])","audio[controls]","video[controls]",'[contenteditable]:not([contenteditable="false"])','[tabindex]:not([tabindex="-1"])'].join(",");function te(t){return!!(t.offsetWidth||t.offsetHeight||t.getClientRects().length)&&getComputedStyle(t).visibility!=="hidden"}function oe(t){const a=[],u=f=>{for(const i of Array.from(f.children))if(i instanceof HTMLSlotElement)for(const d of i.assignedElements())d instanceof HTMLElement&&(d.matches(_)&&a.push(d),u(d));else i instanceof HTMLElement&&(i.matches(_)&&a.push(i),u(i))};return u(t),a.filter(te)}function P(){var t;let a=document.activeElement;for(;(t=a?.shadowRoot)!=null&&t.activeElement;)a=a.shadowRoot.activeElement;return a}function ne(t){var a;const u=W(),[f,i]=$(t.defaultOpen??!1),d=`kai-dialog-title-${B()}`,v=()=>t.open!==void 0,m=()=>v()?!!t.open:f(),b=o=>{var n;v()||i(o),(n=t.onOpenChange)==null||n.call(t,o)};(a=t.controllerRef)==null||a.call(t,{open:m,setOpen:b});const c=V(m);let y,l,r=null,k=!1;F(o=>{const n=m();if(n&&!o)r=P(),queueMicrotask(()=>l?.focus());else if(!n&&o){const s=r;r=null,s&&s.isConnected&&queueMicrotask(()=>s.focus())}return n},!1);const A=o=>{if(o.key==="Escape"){o.stopPropagation(),b(!1);return}if(o.key!=="Tab"||!l)return;const n=oe(l);if(!n.length){o.preventDefault(),l.focus();return}const s=P(),e=s?n.indexOf(s):-1;o.shiftKey?e<=0&&(o.preventDefault(),n[n.length-1].focus()):(e===-1||e===n.length-1)&&(o.preventDefault(),n[0].focus())},K=o=>{k&&o.target===y&&b(!1),k=!1};return x(O,{get when(){return c.present()},get children(){return x(G,{get mount(){return u.portalMount()},get children(){var o=ee(),n=o.firstChild,s=n.firstChild;return o.$$keydown=A,o.$$click=K,o.$$pointerdown=e=>{k=e.target===e.currentTarget},L(e=>{y=e,c.setRef(e)},o),L(e=>{var g;l=e,(g=t.panelRef)==null||g.call(t,e)},n),w(n,x(O,{get when(){return t.header},get children(){var e=Y();return p(e,"id",d),w(e,()=>t.header),e}}),s),w(s,()=>t.children),w(n,x(O,{get when(){return t.footer},get children(){var e=Z();return w(e,()=>t.footer),e}}),null),I(e=>{var g=c.state()==="open"?"":void 0,M=c.state()==="closed"?"":void 0,R=D("fixed inset-0 z-50 flex items-center justify-center bg-black/50 p-4","animate-in fade-in-0 data-[closed]:animate-out data-[closed]:fade-out-0 motion-reduce:animate-none"),C=t.header?d:void 0,q=t.header?void 0:t["aria-label"],S=c.state()==="open"?"":void 0,T=c.state()==="closed"?"":void 0,H=D("flex max-h-[85vh] w-full max-w-lg flex-col overflow-hidden rounded-xl border border-border bg-background text-foreground shadow-xl outline-none","animate-in fade-in-0 zoom-in-95 data-[closed]:animate-out data-[closed]:fade-out-0 data-[closed]:zoom-out-95 motion-reduce:animate-none",t.class);return g!==e.e&&p(o,"data-expanded",e.e=g),M!==e.t&&p(o,"data-closed",e.t=M),R!==e.a&&j(o,e.a=R),C!==e.o&&p(n,"aria-labelledby",e.o=C),q!==e.i&&p(n,"aria-label",e.i=q),S!==e.n&&p(n,"data-expanded",e.n=S),T!==e.s&&p(n,"data-closed",e.s=T),H!==e.h&&j(n,e.h=H),e},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0}),o}})}})}J(["pointerdown","click","keydown"]);var re=h("<slot>"),ae=h("<slot name=header>"),ie=h("<slot name=footer>");N("kai-dialog",{open:void 0,defaultOpen:void 0},(t,a)=>{const{flag:u,element:f,expose:i}=a;let d,v;X(a,()=>d,()=>t.open);const[m,b]=$(!1),[c,y]=$(!1),l=()=>{b(!!f.querySelector(':scope > [slot="header"]')),y(!!f.querySelector(':scope > [slot="footer"]'))};return Q(()=>{if(l(),typeof MutationObserver=="function"){const r=new MutationObserver(l);r.observe(f,{childList:!0}),U(()=>r.disconnect())}}),i({focus:r=>v?.focus(r)}),x(ne,{get defaultOpen(){return u("defaultOpen")},get header(){return z(()=>!!m())()?(()=>{var r=ae();return r._$owner=E(),r})():void 0},get footer(){return z(()=>!!c())()?(()=>{var r=ie();return r._$owner=E(),r})():void 0},controllerRef:r=>d=r,panelRef:r=>v=r,get children(){var r=re();return r._$owner=E(),r}})});
@@ -0,0 +1,37 @@
1
+ import { Accessor } from 'solid-js';
2
+ import { WebComponentContext } from './define';
3
+ /** The open controller a primitive hands up via `controllerRef` so a facade can
4
+ * drive + observe its open/closed state. */
5
+ export interface OpenController {
6
+ open: Accessor<boolean>;
7
+ setOpen: (v: boolean) => void;
8
+ }
9
+ /**
10
+ * Wire the standard Shoelace/WebAwesome-style overlay surface onto an internal
11
+ * open controller — the kit's convention for every open/close element (hover-card,
12
+ * tooltip, popover, menu, model-switcher, scope-picker, collapsibles, …). NOT
13
+ * React-controlled: the element keeps self-managing; this layers the host-facing
14
+ * conveniences on top.
15
+ *
16
+ * Given the primitive's `{ open, setOpen }` controller, it provides:
17
+ * - **`open` reflects** to the host `[open]` attribute (for `:host([open])` CSS),
18
+ * and is **settable** — `el.open = true` / `<el open>` drives it;
19
+ * - **`kai-open-change` `{ open }`** fires once per change (a guarded reflect
20
+ * avoids the attribute⇄prop feedback loop);
21
+ * - **`show()` / `hide()` / `toggle()`** instance methods, gated by `disabled`.
22
+ *
23
+ * The facade still:
24
+ * - declares the `open` / `defaultOpen` / `disabled` props (defaults `undefined`),
25
+ * - seeds the primitive from `defaultOpen` (e.g. via the primitive's own prop),
26
+ * - includes `'kai-open-change': { open: boolean }` in its `Events` map.
27
+ *
28
+ * @param ctx the facade's WebComponentContext (its Events must include kai-open-change).
29
+ * @param getApi returns the open controller once the primitive has handed it up (may be undefined early).
30
+ * @param openProp reads the raw reactive `open` prop (e.g. `() => props.open`) — used to tell
31
+ * "consumer explicitly set open" from "unset" so a `defaultOpen` seed isn't clobbered.
32
+ */
33
+ export declare function wireDisclosure<E extends {
34
+ 'kai-open-change': {
35
+ open: boolean;
36
+ };
37
+ }>(ctx: WebComponentContext<E>, getApi: () => OpenController | undefined, openProp: () => unknown): void;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ import{g as y,h as g,i as E,c as k,a as D,d as q,b as S,S as C,t as x,A as p,u as R,e as K,f as j}from"./chunks/define-rGsaWsLL.js";import{c as $}from"./chunks/cn-CU7UAWzk.js";import{I as F}from"./chunks/input-gzbHYZvQ.js";var I=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=I(),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(F,{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 +1 @@
1
- import{c as i,m as P,d as G,s as H,a as D,e as h,l as J,b as M,o as N,f as K,j as Q,i as u,S as w,u as W,h as y,g as m,A as X,t as f,q as ee}from"./chunks/cn-Dogu6PbV.js";import{I as re}from"./chunks/Icon-D_Zmwmwh.js";import{e as te}from"./chunks/external-link-6mA0wxab.js";import{t as oe}from"./chunks/triangle-alert-Ct1zt2JL.js";import{v as ae}from"./chunks/video-mVYiM99-.js";import{e as ne}from"./chunks/card-routing-C986KuUA.js";var ie=[["polygon",{points:"6 3 20 12 6 21 6 3",key:"1oa8hb"}]],se=e=>i(re,P(e,{name:"Play",iconNode:ie})),le=se;const k="allow-scripts allow-same-origin allow-presentation allow-popups allow-popups-to-escape-sandbox",$="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; fullscreen",ue=new Set;function ce(e){const r=O(e);return r!==void 0&&ue.has(r)}function O(e){try{return new URL(e).origin}catch{return}}function T(e){let r;try{r=new URL(e)}catch{return}const a=r.hostname.replace(/^www\./,"");if(a==="youtu.be")return E(r.pathname.slice(1));if(a==="youtube.com"||a==="m.youtube.com"||a==="youtube-nocookie.com"){const s=r.searchParams.get("v");if(s)return E(s);const g=r.pathname.match(/^\/(?:shorts|embed|v)\/([^/?#]+)/);if(g)return E(g[1])}}function V(e){let r;try{r=new URL(e)}catch{return}const a=r.hostname.replace(/^www\./,"");if(a!=="vimeo.com"&&a!=="player.vimeo.com")return;const s=r.pathname.match(/(?:^|\/)(\d+)(?:\/|$)/);return s?s[1]:void 0}function E(e){return/^[A-Za-z0-9_-]+$/.test(e)?e:void 0}function de(e){const r=e.start?`&start=${e.start}`:"";switch(e.provider){case"youtube":{const a=e.id??(e.url?T(e.url):void 0);if(!a)throw new Error("youtube embed: missing or unparseable id/url");return{embedUrl:`https://www.youtube-nocookie.com/embed/${a}?autoplay=1&rel=0${r}`,posterUrl:e.poster??`https://i.ytimg.com/vi/${a}/hqdefault.jpg`,sandbox:k,allow:$}}case"vimeo":{const a=e.id??(e.url?V(e.url):void 0);if(!a)throw new Error("vimeo embed: missing or unparseable id/url");return{embedUrl:`https://player.vimeo.com/video/${a}?autoplay=1&dnt=1${e.start?`#t=${e.start}s`:""}`,posterUrl:e.poster,sandbox:k,allow:$}}case"generic":{if(!e.url)throw new Error("generic embed: missing url");if(me(e.url),!ce(e.url))throw new Error(`generic embed: origin not allowlisted \u2014 call configureEmbedAllowlist([...]) to permit ${O(e.url)??e.url}`);return{embedUrl:e.url,posterUrl:e.poster,sandbox:k,allow:$}}}}function me(e){let r;try{r=new URL(e).protocol}catch{throw new Error(`generic embed: invalid url "${e}"`)}if(r!=="https:")throw new Error(`generic embed: only https player URLs are allowed (got ${r})`)}function fe(e){switch(e.provider){case"youtube":{const r=e.id??(e.url?T(e.url):void 0);return r?`https://www.youtube.com/watch?v=${r}`:e.url}case"vimeo":{const r=e.id??(e.url?V(e.url):void 0);return r?`https://vimeo.com/${r}`:e.url}case"generic":return e.url}}function pe(e){switch(e){case"youtube":return"YouTube";case"vimeo":return"Vimeo";case"generic":return"site"}}function ve(e){switch(e){case"4:3":return"4 / 3";case"1:1":return"1 / 1";case"9:16":return"9 / 16";default:return"16 / 9"}}var be=f('<div tabindex=-1 class="absolute inset-0 outline-none"><iframe allowfullscreen class="absolute inset-0 h-full w-full border-0">'),ge=f('<button type=button class="inline-flex shrink-0 items-center gap-1 rounded-md px-2 py-1 text-xs font-medium text-muted-foreground outline-none transition-colors hover:bg-muted hover:text-foreground focus-visible:ring-2 focus-visible:ring-ring">Open on '),he=f('<div><div class="relative w-full bg-black"></div><div class="flex items-center justify-between gap-2 px-3 py-2"><span class="flex min-w-0 items-center gap-1.5 text-sm text-foreground"><span class=truncate>'),we=f(`<div role=img aria-label="Can't load this video"class="absolute inset-0 flex flex-col items-center justify-center gap-2 bg-muted p-4 text-center text-sm text-muted-foreground"><span>Can't load this video`),ye=f('<img class="absolute inset-0 h-full w-full object-cover">'),xe=f('<button type=button class="group absolute inset-0 flex h-full w-full items-center justify-center outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-inset"><span class="relative flex h-14 w-14 items-center justify-center rounded-full bg-black/60 text-white shadow-lg transition-transform motion-safe:group-hover:scale-110"aria-hidden=true>'),ke=f('<div class="absolute inset-0 bg-gradient-to-br from-zinc-800 to-zinc-950"aria-hidden=true>');function $e(e){const[r,a]=H(e,["cardId","data","onEmit","class"]),s=o=>{var p;return(p=r.onEmit)==null?void 0:p.call(r,o)},[g,U]=D(!1),[Y,I]=D(!1);let x;const c=h(()=>{try{return{ok:!0,value:de(r.data)}}catch(o){return{ok:!1,error:o instanceof Error?o.message:String(o)}}}),Z=h(()=>ve(r.data.aspectRatio)),_=()=>r.data.title??"Embedded video",C=h(()=>c().ok&&!Y()?c().value.posterUrl:void 0),j=h(()=>fe(r.data)),z=()=>pe(r.data.provider);J(()=>s({kind:"ready",cardId:r.cardId})),M(N(c,o=>{o.ok||s({kind:"error",cardId:r.cardId,message:o.error})})),M(N(()=>r.data,()=>{U(!1),I(!1)},{defer:!0}));const L=()=>{c().ok&&(U(!0),queueMicrotask(()=>x?.focus()))},B=o=>{(o.key==="Enter"||o.key===" ")&&(o.preventDefault(),L())},F=()=>{const o=j();o&&s({kind:"open",cardId:r.cardId,url:o,target:"tab"})};return(()=>{var o=he(),p=o.firstChild,R=p.nextSibling,S=R.firstChild,q=S.firstChild;return K(o,P({get class(){return Q("overflow-hidden rounded-xl border border-border bg-card text-card-foreground",r.class)}},a),!1,!0),u(p,i(w,{get when(){return c().ok},get fallback(){return(()=>{var t=we(),l=t.firstChild;return u(t,i(oe,{size:28,"aria-hidden":"true"}),l),t})()},get children(){return i(w,{get when(){return g()},get fallback(){return(()=>{var t=xe(),l=t.firstChild;return t.$$keydown=B,t.$$click=()=>L(),u(t,i(w,{get when(){return C()},get fallback(){return ke()},get children(){var n=ye();return n.addEventListener("error",()=>I(!0)),y(d=>{var v=C(),b=r.data.title??"";return v!==d.e&&m(n,"src",d.e=v),b!==d.t&&m(n,"alt",d.t=b),d},{e:void 0,t:void 0}),n}}),l),u(l,i(le,{size:26,fill:"currentColor"})),y(()=>m(t,"aria-label",`Play ${r.data.title??"video"}`)),t})()},get children(){var t=be(),l=t.firstChild;return W(n=>x=n,t),y(n=>{var d=c().value.embedUrl,v=_(),b=c().value.sandbox,A=c().value.allow;return d!==n.e&&m(l,"src",n.e=d),v!==n.t&&m(l,"title",n.t=v),b!==n.a&&m(l,"sandbox",n.a=b),A!==n.o&&m(l,"allow",n.o=A),n},{e:void 0,t:void 0,a:void 0,o:void 0}),t}})}})),u(S,i(ae,{size:14,class:"shrink-0 opacity-70","aria-hidden":"true"}),q),u(q,()=>r.data.title??z()),u(R,i(w,{get when(){return j()},get children(){var t=ge();return t.firstChild,t.$$click=()=>F(),u(t,z,null),u(t,i(te,{size:12,"aria-hidden":"true"}),null),t}}),null),y(t=>X(p,"aspect-ratio",Z())),o})()}G(["click","keydown"]),ee("kai-embed",{cardId:void 0,data:void 0},(e,{element:r})=>i($e,{get cardId(){return e.cardId??""},get data(){return e.data??{provider:"generic"}},onEmit:a=>ne(r,a)}));
1
+ import{c as i,m as A,s as G,g as D,j as h,o as H,h as M,l as N,k as J,i as u,S as w,u as K,a as y,d as m,z as Q,t as f,e as W,f as X}from"./chunks/define-rGsaWsLL.js";import{c as ee}from"./chunks/cn-CU7UAWzk.js";import{I as re}from"./chunks/Icon-DLLBeLG5.js";import{e as te}from"./chunks/external-link-DBX2lc_R.js";import{t as oe}from"./chunks/triangle-alert-BlS80PUg.js";import{v as ae}from"./chunks/video-DxTPZqT8.js";import{e as ne}from"./chunks/card-routing-C986KuUA.js";var ie=[["polygon",{points:"6 3 20 12 6 21 6 3",key:"1oa8hb"}]],se=e=>i(re,A(e,{name:"Play",iconNode:ie})),le=se;const x="allow-scripts allow-same-origin allow-presentation allow-popups allow-popups-to-escape-sandbox",$="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; fullscreen",ue=new Set;function ce(e){const r=O(e);return r!==void 0&&ue.has(r)}function O(e){try{return new URL(e).origin}catch{return}}function T(e){let r;try{r=new URL(e)}catch{return}const a=r.hostname.replace(/^www\./,"");if(a==="youtu.be")return E(r.pathname.slice(1));if(a==="youtube.com"||a==="m.youtube.com"||a==="youtube-nocookie.com"){const s=r.searchParams.get("v");if(s)return E(s);const g=r.pathname.match(/^\/(?:shorts|embed|v)\/([^/?#]+)/);if(g)return E(g[1])}}function V(e){let r;try{r=new URL(e)}catch{return}const a=r.hostname.replace(/^www\./,"");if(a!=="vimeo.com"&&a!=="player.vimeo.com")return;const s=r.pathname.match(/(?:^|\/)(\d+)(?:\/|$)/);return s?s[1]:void 0}function E(e){return/^[A-Za-z0-9_-]+$/.test(e)?e:void 0}function de(e){const r=e.start?`&start=${e.start}`:"";switch(e.provider){case"youtube":{const a=e.id??(e.url?T(e.url):void 0);if(!a)throw new Error("youtube embed: missing or unparseable id/url");return{embedUrl:`https://www.youtube-nocookie.com/embed/${a}?autoplay=1&rel=0${r}`,posterUrl:e.poster??`https://i.ytimg.com/vi/${a}/hqdefault.jpg`,sandbox:x,allow:$}}case"vimeo":{const a=e.id??(e.url?V(e.url):void 0);if(!a)throw new Error("vimeo embed: missing or unparseable id/url");return{embedUrl:`https://player.vimeo.com/video/${a}?autoplay=1&dnt=1${e.start?`#t=${e.start}s`:""}`,posterUrl:e.poster,sandbox:x,allow:$}}case"generic":{if(!e.url)throw new Error("generic embed: missing url");if(me(e.url),!ce(e.url))throw new Error(`generic embed: origin not allowlisted \u2014 call configureEmbedAllowlist([...]) to permit ${O(e.url)??e.url}`);return{embedUrl:e.url,posterUrl:e.poster,sandbox:x,allow:$}}}}function me(e){let r;try{r=new URL(e).protocol}catch{throw new Error(`generic embed: invalid url "${e}"`)}if(r!=="https:")throw new Error(`generic embed: only https player URLs are allowed (got ${r})`)}function fe(e){switch(e.provider){case"youtube":{const r=e.id??(e.url?T(e.url):void 0);return r?`https://www.youtube.com/watch?v=${r}`:e.url}case"vimeo":{const r=e.id??(e.url?V(e.url):void 0);return r?`https://vimeo.com/${r}`:e.url}case"generic":return e.url}}function pe(e){switch(e){case"youtube":return"YouTube";case"vimeo":return"Vimeo";case"generic":return"site"}}function ve(e){switch(e){case"4:3":return"4 / 3";case"1:1":return"1 / 1";case"9:16":return"9 / 16";default:return"16 / 9"}}var be=f('<div tabindex=-1 class="absolute inset-0 outline-none"><iframe allowfullscreen class="absolute inset-0 h-full w-full border-0">'),ge=f('<button type=button class="inline-flex shrink-0 items-center gap-1 rounded-md px-2 py-1 text-xs font-medium text-muted-foreground outline-none transition-colors hover:bg-muted hover:text-foreground focus-visible:ring-2 focus-visible:ring-ring">Open on '),he=f('<div><div class="relative w-full bg-black"></div><div class="flex items-center justify-between gap-2 px-3 py-2"><span class="flex min-w-0 items-center gap-1.5 text-sm text-foreground"><span class=truncate>'),we=f(`<div role=img aria-label="Can't load this video"class="absolute inset-0 flex flex-col items-center justify-center gap-2 bg-muted p-4 text-center text-sm text-muted-foreground"><span>Can't load this video`),ye=f('<img class="absolute inset-0 h-full w-full object-cover">'),ke=f('<button type=button class="group absolute inset-0 flex h-full w-full items-center justify-center outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-inset"><span class="relative flex h-14 w-14 items-center justify-center rounded-full bg-black/60 text-white shadow-lg transition-transform motion-safe:group-hover:scale-110"aria-hidden=true>'),xe=f('<div class="absolute inset-0 bg-gradient-to-br from-zinc-800 to-zinc-950"aria-hidden=true>');function $e(e){const[r,a]=G(e,["cardId","data","onEmit","class"]),s=o=>{var p;return(p=r.onEmit)==null?void 0:p.call(r,o)},[g,U]=D(!1),[Y,I]=D(!1);let k;const c=h(()=>{try{return{ok:!0,value:de(r.data)}}catch(o){return{ok:!1,error:o instanceof Error?o.message:String(o)}}}),Z=h(()=>ve(r.data.aspectRatio)),_=()=>r.data.title??"Embedded video",C=h(()=>c().ok&&!Y()?c().value.posterUrl:void 0),z=h(()=>fe(r.data)),j=()=>pe(r.data.provider);H(()=>s({kind:"ready",cardId:r.cardId})),M(N(c,o=>{o.ok||s({kind:"error",cardId:r.cardId,message:o.error})})),M(N(()=>r.data,()=>{U(!1),I(!1)},{defer:!0}));const L=()=>{c().ok&&(U(!0),queueMicrotask(()=>k?.focus()))},B=o=>{(o.key==="Enter"||o.key===" ")&&(o.preventDefault(),L())},F=()=>{const o=z();o&&s({kind:"open",cardId:r.cardId,url:o,target:"tab"})};return(()=>{var o=he(),p=o.firstChild,R=p.nextSibling,S=R.firstChild,P=S.firstChild;return J(o,A({get class(){return ee("overflow-hidden rounded-xl border border-border bg-card text-card-foreground",r.class)}},a),!1,!0),u(p,i(w,{get when(){return c().ok},get fallback(){return(()=>{var t=we(),l=t.firstChild;return u(t,i(oe,{size:28,"aria-hidden":"true"}),l),t})()},get children(){return i(w,{get when(){return g()},get fallback(){return(()=>{var t=ke(),l=t.firstChild;return t.$$keydown=B,t.$$click=()=>L(),u(t,i(w,{get when(){return C()},get fallback(){return xe()},get children(){var n=ye();return n.addEventListener("error",()=>I(!0)),y(d=>{var v=C(),b=r.data.title??"";return v!==d.e&&m(n,"src",d.e=v),b!==d.t&&m(n,"alt",d.t=b),d},{e:void 0,t:void 0}),n}}),l),u(l,i(le,{size:26,fill:"currentColor"})),y(()=>m(t,"aria-label",`Play ${r.data.title??"video"}`)),t})()},get children(){var t=be(),l=t.firstChild;return K(n=>k=n,t),y(n=>{var d=c().value.embedUrl,v=_(),b=c().value.sandbox,q=c().value.allow;return d!==n.e&&m(l,"src",n.e=d),v!==n.t&&m(l,"title",n.t=v),b!==n.a&&m(l,"sandbox",n.a=b),q!==n.o&&m(l,"allow",n.o=q),n},{e:void 0,t:void 0,a:void 0,o:void 0}),t}})}})),u(S,i(ae,{size:14,class:"shrink-0 opacity-70","aria-hidden":"true"}),P),u(P,()=>r.data.title??j()),u(R,i(w,{get when(){return z()},get children(){var t=ge();return t.firstChild,t.$$click=()=>F(),u(t,j,null),u(t,i(te,{size:12,"aria-hidden":"true"}),null),t}}),null),y(t=>Q(p,"aspect-ratio",Z())),o})()}W(["click","keydown"]),X("kai-embed",{cardId:void 0,data:void 0},(e,{element:r})=>i($e,{get cardId(){return e.cardId??""},get data(){return e.data??{provider:"generic"}},onEmit:a=>ne(r,a)}));
@@ -1 +1 @@
1
- import{s as i,f as l,m as c,j as d,i as u,t as a,q as g,c as s,r as o,S as m}from"./chunks/cn-Dogu6PbV.js";import{c as f}from"./chunks/index-CTBEJeo6.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 l(t,c({get class(){return d("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),u(t,()=>e.children),t})()}function j(r){const[e,n]=i(r,["class","children"]);return(()=>{var t=v();return l(t,c({get class(){return d("flex max-w-sm flex-col items-center gap-2 text-center",e.class)}},n),!1,!0),u(t,()=>e.children),t})()}const k=f("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 T(r){const[e,n]=i(r,["class","variant","children"]);return(()=>{var t=p();return l(t,c({get"data-variant"(){return e.variant??"default"},get class(){return d(k({variant:e.variant}),e.class)}},n),!1,!0),u(t,()=>e.children),t})()}function _(r){const[e,n]=i(r,["class","children"]);return(()=>{var t=x();return l(t,c({get class(){return d("text-lg font-medium tracking-tight",e.class)}},n),!1,!0),u(t,()=>e.children),t})()}function z(r){const[e,n]=i(r,["class","children"]);return(()=>{var t=y();return l(t,c({get class(){return d("text-muted-foreground text-sm/relaxed [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary",e.class)}},n),!1,!0),u(t,()=>e.children),t})()}function $(r){const[e,n]=i(r,["class","children"]);return(()=>{var t=w();return l(t,c({get class(){return d("flex w-full max-w-sm min-w-0 flex-col items-center gap-2 text-sm text-balance",e.class)}},n),!1,!0),u(t,()=>e.children),t})()}var q=a("<slot name=media>"),C=a("<slot>");g("kai-empty",{emptyTitle:"",description:""},r=>s(b,{get children(){return[s(j,{get children(){return[s(T,{variant:"icon",get children(){var e=q();return e._$owner=o(),e}}),s(m,{get when(){return r.emptyTitle},get children(){return s(_,{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,k as c,m as l,i as d,t as a,f,c as s,q as o,S as m}from"./chunks/define-rGsaWsLL.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 +1 @@
1
- import{d as B,a as v,i as t,c as r,M as x,S,F as W,h as j,j as T,g as H,k as $,B as I,t as g,q as N}from"./chunks/cn-Dogu6PbV.js";import{B as z}from"./chunks/button-CKyYD9G4.js";import{T as q}from"./chunks/textarea-3nm6Ia9U.js";import{t as A,a as E}from"./chunks/thumbs-up-BBtguGld.js";import{c as G}from"./chunks/check-CDYaMYrM.js";import{x as D}from"./chunks/x-CzxL27Ch.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(I,{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),j(d=>{var w=p()===c,C=T("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&&H(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}})]}})),j(()=>$(i,T("bg-background border-border inline-flex rounded-[12px] border text-sm",e.class))),i})()}B(["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 B,a as T,d as W,b as $,B as H,t as g,e as I,f as N}from"./chunks/define-rGsaWsLL.js";import{c as j}from"./chunks/cn-CU7UAWzk.js";import{B as z}from"./chunks/button-XDUM6lXs.js";import{T as q}from"./chunks/textarea-NEr2SLcD.js";import{t as A,a as E}from"./chunks/thumbs-up-DZYZkFfc.js";import{c as G}from"./chunks/check-hGUoVIKb.js";import{x as D}from"./chunks/x-C1qtndxn.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(B,{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&&W(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{q as s,i as d,c as n,t}from"./chunks/cn-Dogu6PbV.js";import{F as o}from"./chunks/file-tree-CgtRLlxK.js";var h=t("<style>:host{display:block;height:100%;min-height:0}"),m=t('<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>');s("kai-file-tree",{files:[],activeFile:void 0,defaultExpanded:void 0},(e,{dispatch:a})=>[h(),(()=>{var i=m(),l=i.firstChild;return d(l,n(o,{get files(){return e.files},get activeFile(){return e.activeFile},get defaultExpanded(){return e.defaultExpanded},onSelect:r=>a("kai-select",{path:r})})),i})()]);
1
+ import{f as d,i as m,c as n,t as i}from"./chunks/define-rGsaWsLL.js";import{F as f}from"./chunks/file-tree-C6Toj71u.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 p,m,d as x,s as b,w as E,f as L,i as w,a as A,b as $,p as F,u as R,h as T,g as D,n as I,v as P,t as v,q as j,r as q}from"./chunks/cn-Dogu6PbV.js";import{I as z}from"./chunks/Icon-D_Zmwmwh.js";var C=[["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"}]],H=l=>p(z,m(l,{name:"Upload",iconNode:C})),M=H,N=v("<input type=file class=hidden aria-hidden=true>"),U=v("<button type=button>");const h=P();function _(l){const[n]=b(l,["onFilesAdded","children","multiple","accept","disabled"]);let s;const[d,o]=A(!1);let a=0;const f=()=>n.multiple??!0,g=e=>{const t=Array.from(e);f()?n.onFilesAdded(t):n.onFilesAdded(t.slice(0,1))};$(()=>{const e=r=>{r.preventDefault(),r.stopPropagation()},t=r=>{var c;e(r),a++,(c=r.dataTransfer)!=null&&c.items.length&&o(!0)},i=r=>{e(r),a--,a===0&&o(!1)},u=r=>{var c;e(r),o(!1),a=0,(c=r.dataTransfer)!=null&&c.files.length&&g(r.dataTransfer.files)};window.addEventListener("dragenter",t),window.addEventListener("dragleave",i),window.addEventListener("dragover",e),window.addEventListener("drop",u),F(()=>{window.removeEventListener("dragenter",t),window.removeEventListener("dragleave",i),window.removeEventListener("dragover",e),window.removeEventListener("drop",u)})});const y=e=>{var t;const i=e.target;(t=i.files)!=null&&t.length&&(g(i.files),i.value="")},k={isDragging:d,get inputRef(){return s},setInputRef:e=>{s=e},multiple:n.multiple,disabled:n.disabled};return p(h.Provider,{value:k,get children(){return[(()=>{var e=N();return e.$$input=y,R(t=>{s=t},e),T(t=>{var i=f(),u=n.accept,r=n.disabled;return i!==t.e&&(e.multiple=t.e=i),u!==t.t&&D(e,"accept",t.t=u),r!==t.a&&(e.disabled=t.a=r),t},{e:void 0,t:void 0,a:void 0}),e})(),I(()=>n.children)]}})}function O(l){const[n,s]=b(l,["class","children"]),d=E(h),o=()=>{var a;return(a=d?.inputRef)==null?void 0:a.click()};return(()=>{var a=U();return a.$$click=o,L(a,m({get class(){return n.class}},s),!1,!0),w(a,()=>n.children),a})()}x(["input","click"]);var S=v("<slot>");j("kai-file-upload",{multiple:!0,accept:void 0,disabled:!1,label:"Click or drop files to upload"},(l,{dispatch:n,flag:s})=>p(_,{get multiple(){return s("multiple")},get accept(){return l.accept},get disabled(){return s("disabled")},onFilesAdded:d=>n("kai-files-added",{files:d}),get children(){return p(O,{class:"border-border bg-muted/30 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[p(M,{class:"size-5"}),(()=>{var d=S();return d._$owner=q(),w(d,()=>l.label),d})()]}})}}));
1
+ import{c as p,m,s as w,w as x,k as E,i as b,g as L,h as A,p as $,u as F,a as R,d as T,n as D,v as I,t as v,e as P,f as j,q}from"./chunks/define-rGsaWsLL.js";import{I as z}from"./chunks/Icon-DLLBeLG5.js";var C=[["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"}]],H=l=>p(z,m(l,{name:"Upload",iconNode:C})),M=H,N=v("<input type=file class=hidden aria-hidden=true>"),U=v("<button type=button>");const h=I();function _(l){const[n]=w(l,["onFilesAdded","children","multiple","accept","disabled"]);let s;const[d,o]=L(!1);let a=0;const f=()=>n.multiple??!0,g=e=>{const t=Array.from(e);f()?n.onFilesAdded(t):n.onFilesAdded(t.slice(0,1))};A(()=>{const e=r=>{r.preventDefault(),r.stopPropagation()},t=r=>{var u;e(r),a++,(u=r.dataTransfer)!=null&&u.items.length&&o(!0)},i=r=>{e(r),a--,a===0&&o(!1)},c=r=>{var u;e(r),o(!1),a=0,(u=r.dataTransfer)!=null&&u.files.length&&g(r.dataTransfer.files)};window.addEventListener("dragenter",t),window.addEventListener("dragleave",i),window.addEventListener("dragover",e),window.addEventListener("drop",c),$(()=>{window.removeEventListener("dragenter",t),window.removeEventListener("dragleave",i),window.removeEventListener("dragover",e),window.removeEventListener("drop",c)})});const y=e=>{var t;const i=e.target;(t=i.files)!=null&&t.length&&(g(i.files),i.value="")},k={isDragging:d,get inputRef(){return s},setInputRef:e=>{s=e},multiple:n.multiple,disabled:n.disabled};return p(h.Provider,{value:k,get children(){return[(()=>{var e=N();return e.$$input=y,F(t=>{s=t},e),R(t=>{var i=f(),c=n.accept,r=n.disabled;return i!==t.e&&(e.multiple=t.e=i),c!==t.t&&T(e,"accept",t.t=c),r!==t.a&&(e.disabled=t.a=r),t},{e:void 0,t:void 0,a:void 0}),e})(),D(()=>n.children)]}})}function O(l){const[n,s]=w(l,["class","children"]),d=x(h),o=()=>{var a;return(a=d?.inputRef)==null?void 0:a.click()};return(()=>{var a=U();return a.$$click=o,E(a,m({get class(){return n.class}},s),!1,!0),b(a,()=>n.children),a})()}P(["input","click"]);var S=v("<slot>");j("kai-file-upload",{multiple:!0,accept:void 0,disabled:!1,label:"Click or drop files to upload"},(l,{dispatch:n,flag:s})=>p(_,{get multiple(){return s("multiple")},get accept(){return l.accept},get disabled(){return s("disabled")},onFilesAdded:d=>n("kai-files-added",{files:d}),get children(){return p(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[p(M,{class:"size-5"}),(()=>{var d=S();return d._$owner=q(),b(d,()=>l.label),d})()]}})}}));