@kitn.ai/ui 0.17.0 → 0.18.1

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-C2LTALdM.js +1 -0
  57. package/dist/elements/chunks/action-icons-Dtl8Ox5D.js +1 -0
  58. package/dist/elements/chunks/arrow-left-GbBceGBE.js +1 -0
  59. package/dist/elements/chunks/attachments-DLJcWCDV.js +1 -0
  60. package/dist/elements/chunks/badge-BTNZTODL.js +1 -0
  61. package/dist/elements/chunks/button-DBDZebGr.js +1 -0
  62. package/dist/elements/chunks/card-YfCyI4fH.js +1 -0
  63. package/dist/elements/chunks/chat-thread-Dz2qbzvI.js +1 -0
  64. package/dist/elements/chunks/check-fhmRksq_.js +1 -0
  65. package/dist/elements/chunks/chevron-down-DcRg1aRU.js +1 -0
  66. package/dist/elements/chunks/chevron-right-ChzBcNJ-.js +1 -0
  67. package/dist/elements/chunks/circle-B4fTe9v6.js +1 -0
  68. package/dist/elements/chunks/circle-check-CJV-3Rem.js +1 -0
  69. package/dist/elements/chunks/circle-x-pDtzlghQ.js +1 -0
  70. package/dist/elements/chunks/cn-CU7UAWzk.js +1 -0
  71. package/dist/elements/chunks/code-block-DZ6mz6vs.js +1 -0
  72. package/dist/elements/chunks/collapsible-CWUAShMC.js +1 -0
  73. package/dist/elements/chunks/composer-BZyPU6gD.js +65 -0
  74. package/dist/elements/chunks/context-Cx6eQA_G.js +1 -0
  75. package/dist/elements/chunks/conversation-list-C4xTQSpT.js +1 -0
  76. package/dist/elements/chunks/default-input-BZcwyKcP.js +1 -0
  77. package/dist/elements/chunks/define-CNSKFZCd.js +1 -0
  78. package/dist/elements/chunks/disclosure-BcBs--Jf.js +1 -0
  79. package/dist/elements/chunks/download-BDQwcFav.js +1 -0
  80. package/dist/elements/chunks/dropdown-wgs8xCJZ.js +1 -0
  81. package/dist/elements/chunks/ellipsis-CUiEJ6R1.js +1 -0
  82. package/dist/elements/chunks/external-link-DJUmC7g2.js +1 -0
  83. package/dist/elements/chunks/file-text-DOYfYvrh.js +1 -0
  84. package/dist/elements/chunks/file-tree-DQzNQrbr.js +1 -0
  85. package/dist/elements/chunks/folder-DBDUBANz.js +1 -0
  86. package/dist/elements/chunks/hover-card-BQGdGAQ3.js +1 -0
  87. package/dist/elements/chunks/icon-CAyRqVrg.js +1 -0
  88. package/dist/elements/chunks/{index-CTBEJeo6.js → index-BCRhi84a.js} +1 -1
  89. package/dist/elements/chunks/info-DBQl-m6e.js +1 -0
  90. package/dist/elements/chunks/input-DZD67EvW.js +1 -0
  91. package/dist/elements/chunks/kbd-DbyVrlnU.js +1 -0
  92. package/dist/elements/chunks/link-vko7AttA.js +1 -0
  93. package/dist/elements/chunks/loader-Cg6rO8tQ.js +1 -0
  94. package/dist/elements/chunks/{markdown-CMTGx9r8.js → markdown-n3Xbj3PR.js} +9 -9
  95. package/dist/elements/chunks/message-CgKytiSB.js +1 -0
  96. package/dist/elements/chunks/message-feedback-Ds3-US0e.js +1 -0
  97. package/dist/elements/chunks/message-square-MmRkvc-M.js +1 -0
  98. package/dist/elements/chunks/minimize-2-3kCdE0q3.js +1 -0
  99. package/dist/elements/chunks/model-switcher-BMtXGwLU.js +1 -0
  100. package/dist/elements/chunks/overlay-B1-MBI6h.js +1 -0
  101. package/dist/elements/chunks/paperclip-DDEfmkHc.js +1 -0
  102. package/dist/elements/chunks/progress-bar-Dwbiyv3s.js +1 -0
  103. package/dist/elements/chunks/prompt-suggestion-9lvgFcEa.js +1 -0
  104. package/dist/elements/chunks/reasoning-DzHWsdAJ.js +1 -0
  105. package/dist/elements/chunks/resizable-Bq_eHxUm.js +1 -0
  106. package/dist/elements/chunks/rotate-cw-jpisOdOV.js +1 -0
  107. package/dist/elements/chunks/scroll-area-g5Ze3K6f.js +1 -0
  108. package/dist/elements/chunks/separator-Bmjc5XyX.js +1 -0
  109. package/dist/elements/chunks/settings-Cz1bMJP9.js +1 -0
  110. package/dist/elements/chunks/settings-group-9imY3kRA.js +1 -0
  111. package/dist/elements/chunks/share-BdenF0wQ.js +1 -0
  112. package/dist/elements/chunks/skeleton-Pjc5jiaY.js +1 -0
  113. package/dist/elements/chunks/slots-DkZ-Cmha.js +1 -0
  114. package/dist/elements/chunks/star-DY6z1UUH.js +1 -0
  115. package/dist/elements/chunks/store-th4VyJXM.js +1 -0
  116. package/dist/elements/chunks/text-shimmer-CEi-tlXr.js +1 -0
  117. package/dist/elements/chunks/textarea-CboigarR.js +1 -0
  118. package/dist/elements/chunks/thumbs-up-BR33KLfA.js +1 -0
  119. package/dist/elements/chunks/toast-store-BEMda0fv.js +1 -0
  120. package/dist/elements/chunks/tool-TMued3WO.js +1 -0
  121. package/dist/elements/chunks/tooltip-Cft_Rxiw.js +1 -0
  122. package/dist/elements/chunks/triangle-alert-B07fX3Q8.js +1 -0
  123. package/dist/elements/chunks/use-card-resolution-M36zVciB.js +1 -0
  124. package/dist/elements/chunks/video-MKp3LmNT.js +1 -0
  125. package/dist/elements/chunks/x-Ckwicf6g.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 +8255 -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-cKscku5m.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 +77 -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 +31 -10
  287. package/src/agent-tooling/mcp/manifest.ts +14 -0
  288. package/src/agent-tooling/mcp/tools/debug.ts +11 -7
  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 +249 -0
  300. package/src/components/component-meta.json +699 -110
  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 +341 -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 +2 -2
  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 +87 -7
  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 +218 -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 +117 -0
  429. package/src/ui/pane-group.tsx +291 -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,29 +1,67 @@
1
- import { createSignal, createUniqueId, onCleanup, Show, type JSX, splitProps } from 'solid-js';
1
+ import { createSignal, createUniqueId, onCleanup, Show, type JSX, type Accessor, splitProps } from 'solid-js';
2
2
  import { Portal } from 'solid-js/web';
3
+ import { type Placement } from '@floating-ui/dom';
3
4
  import { cn } from '../utils/cn';
4
5
  import { useChatConfig } from '../primitives/chat-config';
5
6
  import { createPresence, usePosition, useDismiss, As } from './overlay';
6
7
 
7
- export interface TooltipProps { content: string; children: JSX.Element; class?: string; openDelay?: number; dismissOnClick?: boolean; }
8
+ /** Imperative open controller, handed to a parent (e.g. the kai-tooltip facade)
9
+ * via `controllerRef` so it can drive/observe open state. */
10
+ export interface TooltipController { open: Accessor<boolean>; setOpen: (v: boolean) => void; }
11
+
12
+ export interface TooltipProps {
13
+ content: string;
14
+ children: JSX.Element;
15
+ class?: string;
16
+ openDelay?: number;
17
+ /** Delay (ms) before it hides after the pointer leaves. Defaults to 0 (hides
18
+ * immediately). */
19
+ closeDelay?: number;
20
+ /** Preferred placement (post flip/shift). Defaults to `'top'`. */
21
+ placement?: Placement;
22
+ /** Initial open state on mount (uncontrolled seed). */
23
+ defaultOpen?: boolean;
24
+ /** When true, hover/focus (and `show()`) never opens the tooltip. */
25
+ disabled?: boolean;
26
+ /** Receive the open controller (open accessor + setOpen) once mounted. */
27
+ controllerRef?: (api: TooltipController) => void;
28
+ dismissOnClick?: boolean;
29
+ }
8
30
 
9
31
  export function Tooltip(props: TooltipProps) {
10
- const [local] = splitProps(props, ['content', 'children', 'class', 'openDelay', 'dismissOnClick']);
32
+ const [local] = splitProps(props, ['content', 'children', 'class', 'openDelay', 'closeDelay', 'placement', 'defaultOpen', 'disabled', 'controllerRef', 'dismissOnClick']);
11
33
  const config = useChatConfig();
12
34
  const id = createUniqueId();
13
- const [open, setOpen] = createSignal(false);
35
+ const [open, setOpen] = createSignal(local.defaultOpen ?? false);
14
36
  const [triggerEl, setTriggerEl] = createSignal<HTMLElement>();
15
37
  const [contentEl, setContentEl] = createSignal<HTMLElement>();
38
+ // Hand the open controller up so a facade (kai-tooltip) can drive/observe it.
39
+ // setOpen is gated on `disabled` so the disclosure surface (show/hide/toggle)
40
+ // can never force the tooltip open while disabled.
41
+ local.controllerRef?.({ open, setOpen: (v) => setOpen(v && !local.disabled) });
16
42
  let timer: number | undefined;
43
+ // True for the span of a click (pointerdown → focus → click). Suppresses the
44
+ // focus-show so clicking a hovered trigger DISMISSES it instead of flickering
45
+ // hide→show→hide (pointerdown hid it, the click-induced focus re-showed it,
46
+ // then click hid it again). Keyboard focus has no preceding pointerdown, so it
47
+ // still shows the tooltip normally.
48
+ let pointerDown = false;
17
49
 
18
50
  const [pointerInside, setPointerInside] = createSignal(false);
19
51
  const [focusInside, setFocusInside] = createSignal(false);
20
52
 
21
53
  const show = (delay = 0) => {
54
+ if (local.disabled) return;
22
55
  clearTimeout(timer);
23
56
  if (delay) timer = window.setTimeout(() => setOpen(true), delay);
24
57
  else setOpen(true);
25
58
  };
26
- const hide = () => { clearTimeout(timer); setOpen(false); };
59
+ const hide = () => {
60
+ clearTimeout(timer);
61
+ const delay = local.closeDelay ?? 0;
62
+ if (delay) timer = window.setTimeout(() => setOpen(false), delay);
63
+ else setOpen(false);
64
+ };
27
65
  const maybeHide = () => { if (!pointerInside() && !focusInside()) hide(); };
28
66
  // Action-style tooltips should dismiss when their trigger is clicked: the pointer
29
67
  // never "leaves", so reset the inside flags and force-close until the next genuine
@@ -32,20 +70,26 @@ export function Tooltip(props: TooltipProps) {
32
70
  onCleanup(() => clearTimeout(timer));
33
71
 
34
72
  const presence = createPresence(open);
35
- const position = usePosition(triggerEl, contentEl, { placement: 'top', gutter: 6 });
73
+ const position = usePosition(triggerEl, contentEl, {
74
+ placement: local.placement ?? 'top',
75
+ gutter: 6,
76
+ // Trigger removed from the DOM -> close so the tooltip portal doesn't orphan.
77
+ onDisconnect: () => setOpen(false),
78
+ });
36
79
  useDismiss({ enabled: open, onDismiss: hide, refs: () => [triggerEl(), contentEl()] });
37
80
 
38
81
  return (
39
82
  <>
40
83
  <As
41
84
  as="span"
85
+ class="inline-flex"
42
86
  ref={setTriggerEl}
43
87
  aria-describedby={open() ? id : undefined}
44
88
  onPointerEnter={() => { setPointerInside(true); show(local.openDelay ?? 600); }}
45
89
  onPointerLeave={() => { setPointerInside(false); maybeHide(); }}
46
- onPointerDown={dismiss}
90
+ onPointerDown={() => { pointerDown = true; dismiss(); window.setTimeout(() => { pointerDown = false; }, 0); }}
47
91
  onClick={dismiss}
48
- onFocusIn={() => { setFocusInside(true); show(); }}
92
+ onFocusIn={() => { setFocusInside(true); if (!pointerDown) show(); }}
49
93
  onFocusOut={(e: FocusEvent) => { const t = triggerEl(); if (t && t.contains(e.relatedTarget as Node)) return; setFocusInside(false); maybeHide(); }}
50
94
  >
51
95
  {local.children}
package/theme.css CHANGED
@@ -23,10 +23,57 @@
23
23
  --color-secondary-foreground: var(--kai-color-secondary-foreground, hsl(240 5.9% 10%));
24
24
  --color-muted: var(--kai-color-muted, hsl(240 4.8% 95.9%));
25
25
  --color-muted-foreground: var(--kai-color-muted-foreground, hsl(240 3.8% 43%));
26
+ /* Subtle SURFACE — an opaque "muted panel" for things that sit OVER content
27
+ (the prompt input, message bubbles, artifact/card headers, chips). CALCULATED
28
+ from existing tokens — `--color-muted` blended 40% onto `--color-background`
29
+ — so it tracks the theme (incl. dark) automatically and needs no hand-picked
30
+ value. SOLID (no alpha), so nothing behind it bleeds through. This replaces
31
+ ad-hoc `bg-muted/40` surfaces. Retint via the --kai-color-surface knob (or a
32
+ bare value); --color-surface-strong is the stronger step (hover/raised) and
33
+ --color-surface-sunken is recessed BELOW the base surface (wells, or a banner
34
+ that sits behind a card). Sunken is theme-specific: "darker than the card"
35
+ means a LOWER muted% in dark but a HIGHER one in light, so the two scopes
36
+ can't share a number — see the .dark block. */
37
+ --color-surface: var(--kai-color-surface, color-mix(in srgb, var(--color-muted) 40%, var(--color-background)));
38
+ --color-surface-strong: var(--kai-color-surface-strong, color-mix(in srgb, var(--color-muted) 60%, var(--color-background)));
39
+ --color-surface-sunken: var(--kai-color-surface-sunken, color-mix(in srgb, var(--color-muted) 85%, var(--color-background)));
26
40
  --color-accent: var(--kai-color-accent, hsl(240 4.8% 95.9%));
27
41
  --color-accent-foreground: var(--kai-color-accent-foreground, hsl(240 5.9% 10%));
28
42
  --color-destructive: var(--kai-color-destructive, hsl(0 72% 45%));
29
43
  --color-destructive-foreground: var(--kai-color-destructive-foreground, hsl(0 0% 98%));
44
+ /* Semantic status colors - solid fills with a legible foreground, matched to
45
+ the kit's tool-green / -amber / -blue hues so they read on-brand. Use
46
+ bg-success / bg-warning / bg-info with the matching -foreground for badges,
47
+ banners, and buttons; or text-success / -warning / -info on a soft tint
48
+ (below). destructive (above) is the danger/error member of the same family.
49
+ Light uses darker hues so the color carries a light foreground AND stays
50
+ legible as text on a pale tint; dark (see .dark) flips to brighter hues over
51
+ a near-black foreground. Override via --kai-color-success / -warning / -info
52
+ (+ -foreground). */
53
+ --color-success: var(--kai-color-success, hsl(142 71% 30%));
54
+ --color-success-foreground: var(--kai-color-success-foreground, hsl(0 0% 98%));
55
+ --color-warning: var(--kai-color-warning, hsl(38 92% 30%));
56
+ --color-warning-foreground: var(--kai-color-warning-foreground, hsl(0 0% 98%));
57
+ --color-info: var(--kai-color-info, hsl(217 91% 42%));
58
+ --color-info-foreground: var(--kai-color-info-foreground, hsl(0 0% 98%));
59
+ /* Soft tinted status surfaces - OPAQUE, theme-tracking fills derived as ~14% of
60
+ the status hue blended onto the background. Use these for subtle callouts /
61
+ banners instead of an eyeballed bg-success/10; pair with text-success /
62
+ -warning / -info / -destructive. Derived, so declared in BOTH light and dark
63
+ (a color-mix resolves where it's declared - see the surface tokens above). A
64
+ bare bg- utility for a color-mix token is added at the bottom (see bg-surface). */
65
+ --color-success-soft: var(--kai-color-success-soft, color-mix(in oklab, var(--color-success) 14%, var(--color-background)));
66
+ --color-warning-soft: var(--kai-color-warning-soft, color-mix(in oklab, var(--color-warning) 14%, var(--color-background)));
67
+ --color-info-soft: var(--kai-color-info-soft, color-mix(in oklab, var(--color-info) 14%, var(--color-background)));
68
+ --color-destructive-soft: var(--kai-color-destructive-soft, color-mix(in oklab, var(--color-destructive) 14%, var(--color-background)));
69
+ /* Interaction-state backgrounds - opaque, theme-tracking fills for row/control
70
+ states so consumers stop eyeballing /10 opacities. --color-hover is a subtle
71
+ neutral (a little --color-muted on the background); --color-selected is a
72
+ faint --color-primary tint so a selected row tracks the brand. Use bg-hover /
73
+ bg-selected. Derived, so declared in BOTH light and dark; bare bg- utilities
74
+ added at the bottom. */
75
+ --color-hover: var(--kai-color-hover, color-mix(in oklab, var(--color-muted) 60%, var(--color-background)));
76
+ --color-selected: var(--kai-color-selected, color-mix(in oklab, var(--color-primary) 8%, var(--color-background)));
30
77
  --color-border: var(--kai-color-border, hsl(240 5.9% 90%));
31
78
  --color-input: var(--kai-color-input, hsl(240 5.9% 90%));
32
79
  /* Focus ring — a deliberate blue (not a neutral) so keyboard focus is always
@@ -103,10 +150,36 @@
103
150
  --color-secondary-foreground: var(--kai-color-secondary-foreground, hsl(0 0% 98%));
104
151
  --color-muted: var(--kai-color-muted, hsl(45 4% 17%));
105
152
  --color-muted-foreground: var(--kai-color-muted-foreground, hsl(45 4% 64%));
153
+ /* Re-declared in the dark scope so the color-mix recomputes with the DARK
154
+ muted/background (a derived token is computed where it's declared, not where
155
+ it's used — see the light --color-surface for the full note). */
156
+ --color-surface: var(--kai-color-surface, color-mix(in srgb, var(--color-muted) 40%, var(--color-background)));
157
+ --color-surface-strong: var(--kai-color-surface-strong, color-mix(in srgb, var(--color-muted) 60%, var(--color-background)));
158
+ /* Sunken: in dark a LOWER muted% is darker (blends toward the dark background). */
159
+ --color-surface-sunken: var(--kai-color-surface-sunken, color-mix(in srgb, var(--color-muted) 18%, var(--color-background)));
106
160
  --color-accent: var(--kai-color-accent, hsl(45 4% 17%));
107
161
  --color-accent-foreground: var(--kai-color-accent-foreground, hsl(0 0% 98%));
108
162
  --color-destructive: var(--kai-color-destructive, hsl(0 62.8% 30.6%));
109
163
  --color-destructive-foreground: var(--kai-color-destructive-foreground, hsl(0 0% 98%));
164
+ /* Semantic status colors - dark mode flips to the brighter tool-* dark hues
165
+ (matching the chip values) carried over a near-black foreground, so the color
166
+ both reads as text on a dark soft tint AND backs a legible foreground. See
167
+ the light @theme note. */
168
+ --color-success: var(--kai-color-success, hsl(142 71% 45%));
169
+ --color-success-foreground: var(--kai-color-success-foreground, hsl(45 4% 11%));
170
+ --color-warning: var(--kai-color-warning, hsl(38 92% 50%));
171
+ --color-warning-foreground: var(--kai-color-warning-foreground, hsl(45 4% 11%));
172
+ --color-info: var(--kai-color-info, hsl(217 91% 70%));
173
+ --color-info-foreground: var(--kai-color-info-foreground, hsl(45 4% 11%));
174
+ /* Soft status surfaces + interaction states - re-declared so each color-mix
175
+ recomputes with the DARK hues/background (a derived token resolves where it's
176
+ declared; see the light block for the full note). */
177
+ --color-success-soft: var(--kai-color-success-soft, color-mix(in oklab, var(--color-success) 14%, var(--color-background)));
178
+ --color-warning-soft: var(--kai-color-warning-soft, color-mix(in oklab, var(--color-warning) 14%, var(--color-background)));
179
+ --color-info-soft: var(--kai-color-info-soft, color-mix(in oklab, var(--color-info) 14%, var(--color-background)));
180
+ --color-destructive-soft: var(--kai-color-destructive-soft, color-mix(in oklab, var(--color-destructive) 14%, var(--color-background)));
181
+ --color-hover: var(--kai-color-hover, color-mix(in oklab, var(--color-muted) 60%, var(--color-background)));
182
+ --color-selected: var(--kai-color-selected, color-mix(in oklab, var(--color-primary) 8%, var(--color-background)));
110
183
  --color-border: var(--kai-color-border, hsl(45 4% 17%));
111
184
  --color-input: var(--kai-color-input, hsl(45 4% 17%));
112
185
  --color-ring: var(--kai-color-ring, hsl(217 91% 68%));
@@ -187,3 +260,43 @@
187
260
  }
188
261
  .scrollbar-thin::-webkit-scrollbar-thumb:hover { background-color: var(--color-scrollbar-thumb-hover); }
189
262
  .scrollbar-thin::-webkit-scrollbar-corner { background: transparent; }
263
+
264
+ /* Surface utilities — `bg-surface` / `bg-surface-strong` paint the opaque,
265
+ theme-derived surface tokens (see --color-surface above). Defined explicitly
266
+ because a color-mix-valued @theme token does NOT emit a bare `bg-` utility on
267
+ its own (only opacity variants). Use these for panels that sit OVER content
268
+ instead of `bg-muted/NN`. */
269
+ @utility bg-surface {
270
+ background-color: var(--color-surface);
271
+ }
272
+ @utility bg-surface-strong {
273
+ background-color: var(--color-surface-strong);
274
+ }
275
+ @utility bg-surface-sunken {
276
+ background-color: var(--color-surface-sunken);
277
+ }
278
+
279
+ /* Soft-status + interaction-state utilities. Same reason as bg-surface above: a
280
+ color-mix-valued @theme token does NOT emit a bare `bg-` utility on its own, so
281
+ bg-success-soft / bg-warning-soft / bg-info-soft / bg-destructive-soft and
282
+ bg-hover / bg-selected are declared here. (The SOLID tokens - success / warning
283
+ / info + their -foreground - are plain hsl values, so bg-success / text-success
284
+ etc. ARE auto-generated by @theme and need no explicit utility.) */
285
+ @utility bg-success-soft {
286
+ background-color: var(--color-success-soft);
287
+ }
288
+ @utility bg-warning-soft {
289
+ background-color: var(--color-warning-soft);
290
+ }
291
+ @utility bg-info-soft {
292
+ background-color: var(--color-info-soft);
293
+ }
294
+ @utility bg-destructive-soft {
295
+ background-color: var(--color-destructive-soft);
296
+ }
297
+ @utility bg-hover {
298
+ background-color: var(--color-hover);
299
+ }
300
+ @utility bg-selected {
301
+ background-color: var(--color-selected);
302
+ }
@@ -1,15 +0,0 @@
1
- export interface SlashCommandItem {
2
- id: string;
3
- label: string;
4
- description?: string;
5
- category?: string;
6
- }
7
- export interface SlashCommandProps {
8
- commands: SlashCommandItem[];
9
- activeIds?: string[];
10
- onSelect: (command: SlashCommandItem) => void;
11
- compact?: boolean;
12
- class?: string;
13
- }
14
- declare function SlashCommand(props: SlashCommandProps): import("solid-js").JSX.Element;
15
- export { SlashCommand };
@@ -1 +0,0 @@
1
- import{s as d,f as h,m as i,n as u,i as c,c as n,D as k,F as g,t as w}from"./cn-Dogu6PbV.js";var m={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round"},t=m,v=w("<svg>"),p=r=>r.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),b=(...r)=>r.filter((e,s,o)=>!!e&&o.indexOf(e)===s).join(" "),f=r=>{const[e,s]=d(r,["color","size","strokeWidth","children","class","name","iconNode","absoluteStrokeWidth"]);return(()=>{var o=v();return h(o,i(t,{get width(){return e.size??t.width},get height(){return e.size??t.height},get stroke(){return e.color??t.stroke},get"stroke-width"(){return u(()=>!!e.absoluteStrokeWidth)()?Number(e.strokeWidth??t["stroke-width"])*24/Number(e.size):Number(e.strokeWidth??t["stroke-width"])},get class(){return b("lucide","lucide-icon",e.name!=null?`lucide-${p(e?.name)}`:void 0,e.class!=null?e.class:"")}},s),!0,!0),c(o,n(g,{get each(){return e.iconNode},children:([l,a])=>n(k,i({component:l},a))})),o})()},z=f;export{z as I};
@@ -1 +0,0 @@
1
- import{I as a}from"./Icon-D_Zmwmwh.js";import{c as o,m as i}from"./cn-Dogu6PbV.js";import{c as r}from"./check-CDYaMYrM.js";import{d as y}from"./download-D8K0Je8r.js";import{l as c}from"./link-BlGSeoPy.js";import{s as t}from"./star-t9tI-P0q.js";import{a as k,t as n}from"./thumbs-up-BBtguGld.js";import{x as p}from"./x-CzxL27Ch.js";var m=[["path",{d:"m19 21-7-4-7 4V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2v16z",key:"1fy3hk"}]],h=e=>o(a,i(e,{name:"Bookmark",iconNode:m})),d=h,l=[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]],s=e=>o(a,i(e,{name:"Copy",iconNode:l})),x=s,f=[["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}],["circle",{cx:"19",cy:"12",r:"1",key:"1wjl8i"}],["circle",{cx:"5",cy:"12",r:"1",key:"1pcz8c"}]],v=e=>o(a,i(e,{name:"Ellipsis",iconNode:f})),M=v,N=[["path",{d:"M4 15s1-1 4-1 5 2 8 2 4-1 4-1V3s-1 1-4 1-5-2-8-2-4 1-4 1z",key:"i9b6wo"}],["line",{x1:"4",x2:"4",y1:"22",y2:"15",key:"1cm3nv"}]],u=e=>o(a,i(e,{name:"Flag",iconNode:N})),g=u,w=[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]],z=e=>o(a,i(e,{name:"Pencil",iconNode:w})),V=z,j=[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]],L=e=>o(a,i(e,{name:"RefreshCw",iconNode:j})),b=L,C=[["polyline",{points:"9 17 4 12 9 7",key:"hvgpf2"}],["path",{d:"M20 18v-2a4 4 0 0 0-4-4H4",key:"5vmcpk"}]],H=e=>o(a,i(e,{name:"Reply",iconNode:C})),R=H,B=[["path",{d:"M4 12v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-8",key:"1b2hhj"}],["polyline",{points:"16 6 12 2 8 6",key:"m901s6"}],["line",{x1:"12",x2:"12",y1:"2",y2:"15",key:"1p0rca"}]],E=e=>o(a,i(e,{name:"Share",iconNode:B})),I=E,P=[["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6",key:"4alrt4"}],["path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2",key:"v07s0e"}],["line",{x1:"10",x2:"10",y1:"11",y2:"17",key:"1uufr5"}],["line",{x1:"14",x2:"14",y1:"11",y2:"17",key:"xtxkd"}]],T=e=>o(a,i(e,{name:"Trash2",iconNode:P})),q=T;const D={copy:x,like:n,dislike:k,regenerate:b,edit:V,share:I,bookmark:d,download:y,link:c,trash:q,check:r,x:p,star:t,flag:g,reply:R,more:M};function F(e){if(e)return D[e]}const J={copy:"Copy",like:"Like",dislike:"Dislike",regenerate:"Regenerate",edit:"Edit"};export{J as B,F as a};
@@ -1 +0,0 @@
1
- import{c as a,m as u,s as p,f,j as d,i as g,S as w,n as I,t as m,v as R,w as M,h as z,g as y}from"./cn-Dogu6PbV.js";import{B as P}from"./button-CKyYD9G4.js";import{a as S,b as B,c as E}from"./hover-card-CIGw62gP.js";import{x as G}from"./x-CzxL27Ch.js";import{f as L}from"./file-text-DnaYk3Dm.js";import{I as b}from"./Icon-D_Zmwmwh.js";import{v as V}from"./video-mVYiM99-.js";var q=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20",key:"13o1zl"}],["path",{d:"M2 12h20",key:"9i4pu4"}]],F=e=>a(b,u(e,{name:"Globe",iconNode:q})),A=F,H=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}],["circle",{cx:"9",cy:"9",r:"2",key:"af1f0g"}],["path",{d:"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21",key:"1xmnt7"}]],J=e=>a(b,u(e,{name:"Image",iconNode:H})),K=J,O=[["circle",{cx:"8",cy:"18",r:"4",key:"1fc0mg"}],["path",{d:"M12 18V2l7 4",key:"g04rme"}]],Q=e=>a(b,u(e,{name:"Music2",iconNode:O})),U=Q,X=[["path",{d:"m21.44 11.05-9.19 9.19a6 6 0 0 1-8.49-8.49l8.57-8.57A4 4 0 1 1 18 8.84l-8.59 8.57a2 2 0 0 1-2.83-2.83l8.49-8.48",key:"1u3ebp"}]],Y=e=>a(b,u(e,{name:"Paperclip",iconNode:X})),N=Y,x=m("<div>"),Z=m('<img class="size-full object-cover"height=96 width=96>'),_=m('<img class="size-full rounded object-cover"height=20 width=20>'),$=m('<video class="size-full object-cover"muted>'),ee=m('<span class="text-muted-foreground text-caption block truncate">'),te=m('<div><span class="block truncate">'),re=m("<span class=sr-only>");const ae={audio:U,document:L,image:K,source:A,unknown:N,video:V},j=e=>{if(e.type==="source-document")return"source";const r=e.mediaType??"";return r.startsWith("image/")?"image":r.startsWith("video/")?"video":r.startsWith("audio/")?"audio":r.startsWith("application/")||r.startsWith("text/")?"document":"unknown"},T=e=>{if(e.type==="source-document")return e.title||e.filename||"Source";const r=j(e);return e.filename||(r==="image"?"Image":"Attachment")},W=R(),D=R(),ne=()=>M(W)??{variant:"grid"},C=()=>{const e=M(D);if(!e)throw new Error("Attachment components must be used within <Attachment>");return e};function ie(e){const[r,i]=p(e,["variant","class","children"]),t=()=>r.variant??"grid";return a(W.Provider,{value:{get variant(){return t()}},get children(){var n=x();return f(n,u({get class(){return d("flex items-start",t()==="list"?"flex-col gap-2":"flex-wrap gap-2",t()==="grid"&&"w-fit",r.class)}},i),!1,!0),g(n,()=>r.children),n}})}function se(e){const[r,i]=p(e,["data","onRemove","class","children"]),t=ne(),n=()=>j(r.data);return a(D.Provider,{value:{get data(){return r.data},get mediaCategory(){return n()},get onRemove(){return r.onRemove},get variant(){return t.variant}},get children(){var o=x();return f(o,u({get class(){return d("group relative",t.variant==="grid"&&"size-24 overflow-hidden rounded-lg",t.variant==="inline"&&["flex h-8 cursor-pointer select-none items-center gap-1.5","rounded-md bg-muted/50 px-1.5 text-foreground","font-medium text-sm transition-all","hover:bg-muted"],t.variant==="list"&&["flex w-full items-center gap-3 rounded-lg bg-muted/30 p-3 text-foreground","hover:bg-muted/50"],r.class)}},i),!1,!0),g(o,()=>r.children),o}})}function oe(e){const[r,i]=p(e,["fallbackIcon","class"]),t=C(),n=()=>t.variant==="inline"?"size-3":"size-4",o=c=>a(c,{get class(){return d(n(),"text-muted-foreground")}}),k=()=>{if(t.mediaCategory==="image"&&t.data.type==="file"&&t.data.url)return t.variant==="grid"?(()=>{var l=Z();return z(s=>{var v=t.data.filename||"Image",h=t.data.url;return v!==s.e&&y(l,"alt",s.e=v),h!==s.t&&y(l,"src",s.t=h),s},{e:void 0,t:void 0}),l})():(()=>{var l=_();return z(s=>{var v=t.data.filename||"Image",h=t.data.url;return v!==s.e&&y(l,"alt",s.e=v),h!==s.t&&y(l,"src",s.t=h),s},{e:void 0,t:void 0}),l})();if(t.mediaCategory==="video"&&t.data.type==="file"&&t.data.url)return(()=>{var l=$();return z(()=>y(l,"src",t.data.url)),l})();const c=ae[t.mediaCategory];return r.fallbackIcon??o(c)};return(()=>{var c=x();return f(c,u({get class(){return d("flex shrink-0 items-center justify-center overflow-hidden",t.variant==="grid"&&"size-full bg-muted",t.variant==="inline"&&"size-5 rounded bg-background",t.variant==="list"&&"size-12 rounded bg-muted",r.class)}},i),!1,!0),g(c,k),c})()}function ce(e){const[r,i]=p(e,["showMediaType","class"]),t=C(),n=()=>T(t.data);return a(w,{get when(){return t.variant!=="grid"},get children(){var o=te(),k=o.firstChild;return f(o,u({get class(){return d("min-w-0 flex-1",r.class)}},i),!1,!0),g(k,n),g(o,a(w,{get when(){return I(()=>!!(r.showMediaType&&t.variant==="list"))()&&t.data.mediaType},get children(){var c=ee();return g(c,()=>t.data.mediaType),c}}),null),o}})}function le(e){const r=C(),i=t=>{var n;t.stopPropagation(),(n=r.onRemove)==null||n.call(r)};return a(w,{get when(){return r.onRemove},get children(){return a(P,{get"aria-label"(){return e.label??"Remove"},get class(){return d(r.variant==="grid"&&["absolute top-2 right-2 size-6 rounded-full p-0","bg-background/80 backdrop-blur-sm","opacity-0 transition-opacity group-hover:opacity-100","hover:bg-background","[&>svg]:size-3"],r.variant==="inline"&&["size-5 rounded p-0","opacity-0 transition-opacity group-hover:opacity-100","[&>svg]:size-2.5"],r.variant==="list"&&["size-8 shrink-0 rounded p-0","[&>svg]:size-4"],e.class)},onClick:i,type:"button",variant:"ghost",get children(){return[I(()=>e.children??a(G,{})),(()=>{var t=re();return g(t,()=>e.label??"Remove"),t})()]}})}})}function ue(e){return a(S,{get openDelay(){return e.openDelay??0},get closeDelay(){return e.closeDelay??0},get children(){return e.children}})}function de(e){return a(B,{get class(){return e.class},get children(){return e.children}})}function ge(e){return a(E,{get class(){return d("w-auto p-2",e.class)},get children(){return e.children}})}function me(e){const[r,i]=p(e,["class","children"]);return(()=>{var t=x();return f(t,u({get class(){return d("flex items-center justify-center p-4 text-muted-foreground text-sm",r.class)}},i),!1,!0),g(t,()=>r.children??"No attachments"),t})()}export{ie as A,se as a,ue as b,de as c,oe as d,ce as e,ge as f,T as g,j as h,le as i,me as j,A as k,N as p};
@@ -1 +0,0 @@
1
- import{s,f as n,m as o,j as a,i as u,t as d}from"./cn-Dogu6PbV.js";import{c}from"./index-CTBEJeo6.js";var m=d("<button>");const f=c("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:pointer-events-none disabled:opacity-50",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",ghost:"hover:bg-muted text-foreground",outline:"bg-muted/50 text-foreground hover:bg-muted",destructive:"bg-destructive text-destructive-foreground hover:bg-destructive/90"},size:{sm:"h-8 px-3 text-xs rounded-md",md:"h-9 px-4 text-sm",lg:"h-10 px-6 text-sm",icon:"h-9 w-9","icon-sm":"h-7 w-7"}},defaultVariants:{variant:"default",size:"md"}});function g(r){const[e,i]=s(r,["variant","size","class","children"]);return(()=>{var t=m();return n(t,o({get class(){return a(f({variant:e.variant,size:e.size}),e.class)}},i),!1,!0),u(t,()=>e.children),t})()}export{g as B};
@@ -1 +0,0 @@
1
- import{m as l,s as b,f as w,j as g,i as t,c as a,S as d,h as o,g as k,k as M,t as s,y as j}from"./cn-Dogu6PbV.js";import{t as y}from"./triangle-alert-Ct1zt2JL.js";var C=s('<div class="overflow-hidden rounded-lg">'),I=s('<h3 class="text-[1.0625rem] font-semibold leading-snug tracking-tight text-foreground">'),$=s('<p class="text-[0.8125rem] leading-relaxed text-muted-foreground">'),c=s("<div>"),q=s('<div role=alert class="flex items-start gap-2 rounded-lg border border-destructive/40 bg-destructive/10 p-3 text-sm text-destructive dark:bg-destructive/15 dark:text-red-400"><span>'),z=s('<div class="text-sm text-foreground">'),B=s('<div class="flex flex-wrap items-center justify-end gap-2 pt-1">');function E(u){const h=l({dense:!1},u),[e,p]=b(h,["heading","description","media","actions","errorMessage","dense","headingId","class","children"]),v=j(),f=()=>e.headingId??`kai-card-heading-${v}`,x=()=>e.errorMessage!==void 0&&e.errorMessage!=="",m=()=>!!e.heading||!!e.description;return(()=>{var i=c();return w(i,l({get class(){return g("flex flex-col rounded-xl border border-border bg-card text-card-foreground kai-elevation-sm",e.dense?"gap-2.5 p-3.5":"gap-4 p-5",e.class)}},p),!1,!0),t(i,a(d,{get when(){return e.media},get children(){var r=C();return t(r,()=>e.media),r}}),null),t(i,a(d,{get when(){return m()},get children(){var r=c();return t(r,a(d,{get when(){return e.heading},get children(){var n=I();return t(n,()=>e.heading),o(()=>k(n,"id",f())),n}}),null),t(r,a(d,{get when(){return e.description},get children(){var n=$();return t(n,()=>e.description),n}}),null),o(()=>M(r,g("flex flex-col border-b border-border",e.dense?"gap-0.5 pb-2.5":"gap-1 pb-4"))),r}}),null),t(i,a(d,{get when(){return x()},get fallback(){return[a(d,{get when(){return e.children},get children(){var r=z();return t(r,()=>e.children),r}}),a(d,{get when(){return e.actions},get children(){var r=B();return t(r,()=>e.actions),r}})]},get children(){var r=q(),n=r.firstChild;return t(r,a(y,{size:16,class:"mt-0.5 shrink-0","aria-hidden":"true"}),n),t(n,()=>e.errorMessage),r}}),null),i})()}export{E as C};
@@ -1 +0,0 @@
1
- import{a as A,p as O,s as M,c as r,u as H,f as B,m as $,j as y,i as a,t as h,v as P,w as U,x as G,S as b,r as z,F as J,h as E,k as V,C as K}from"./cn-Dogu6PbV.js";import{M as N,a as _,b as Q}from"./message-CDZwXjhL.js";import{c as W}from"./message-feedback-CYx81QiA.js";import{M as X}from"./model-switcher-O_tUhoOT.js";import{B as Y}from"./button-CKyYD9G4.js";import{c as Z}from"./chevron-down-3SBiq8HF.js";import{C as ee,a as te,b as re,c as ne,d as se,e as le,f as oe,g as ae}from"./context-18g6oi4J.js";import{D as ie}from"./default-input-CSAoYYMd.js";const ce=50;function ue(){const[e,o]=A(!0);let n,l=!0;function m(){if(!n)return;const{scrollTop:i,scrollHeight:f,clientHeight:C}=n,k=f-i-C<ce;o(k),l=k}function p(i="smooth"){n&&(n.scrollTo({top:n.scrollHeight,behavior:i}),l=!0,o(!0))}function v(){l&&requestAnimationFrame(()=>p("instant"))}function w(i){n=i,i.addEventListener("scroll",m,{passive:!0});const f=new MutationObserver(v);f.observe(i,{childList:!0,subtree:!0,characterData:!0}),O(()=>{i.removeEventListener("scroll",m),f.disconnect()})}return{ref:w,isAtBottom:e,scrollToBottom:p}}var de=h("<div role=log tabindex=0>"),ge=h("<div>"),he=h("<div aria-hidden=true>");const j=P();function me(){const e=U(j);if(!e)throw new Error("useChatContainer must be used within ChatContainer");return e}function ve(e){const[o,n]=M(e,["children","class"]),{ref:l,isAtBottom:m,scrollToBottom:p}=ue();return r(j.Provider,{value:{isAtBottom:m,scrollToBottom:p},get children(){var v=de();return H(l,v),B(v,$({get class(){return y("flex flex-col overflow-y-auto",o.class)}},n),!1,!0),a(v,()=>o.children),v}})}function fe(e){const[o,n]=M(e,["children","class"]);return(()=>{var l=ge();return B(l,$({get class(){return y("flex w-full flex-col",o.class)}},n),!1,!0),a(l,()=>o.children),l})()}function xe(e){const[o,n]=M(e,["class"]);return(()=>{var l=he();return B(l,$({get class(){return y("h-px w-full shrink-0 scroll-mt-4",o.class)}},n),!1,!1),l})()}function pe(e){const{isAtBottom:o,scrollToBottom:n}=me();return r(Y,{get variant(){return e.variant??"outline"},get size(){return e.size??"sm"},"aria-label":"Scroll to bottom",get class(){return y("h-10 w-10 rounded-full transition-all duration-150 ease-out",o()?"pointer-events-none translate-y-4 scale-95 opacity-0":"translate-y-0 scale-100 opacity-100",e.class)},onClick:()=>n(),get children(){return r(Z,{class:"h-5 w-5"})}})}var be=h('<div class="text-sm font-semibold text-foreground">'),we=h("<div class=space-y-1.5>"),Ce=h('<header class="flex h-14 shrink-0 items-center justify-between border-b border-border px-5"><div class="flex items-center gap-2"><slot name=header-start></slot></div><div class="flex items-center gap-2"><slot name=header-end>'),ke=h('<div class="absolute bottom-4 left-1/2 flex w-full max-w-3xl -translate-x-1/2 justify-center px-5">'),Se=h('<div><div class="relative flex-1 overflow-hidden"></div><div class="shrink-0 px-4 pb-4"><div class="mx-auto max-w-3xl">'),Te=h("<div>");function ye(e){const o=G(),n=()=>e.actionsReveal==="hover"?"hover":"always";let l;const m=W({emit:s=>{var c;return(c=e.onMessageAction)==null?void 0:c.call(e,s)},target:()=>l}),[p,v]=A(e.value??""),[w,i]=A([]),f=()=>e.value??p(),C=s=>{var c;v(s),(c=e.onValueChange)==null||c.call(e,s)},k=()=>{var s;(s=e.onSubmit)==null||s.call(e,{value:f(),attachments:w()}),i([])},I=s=>{var c,S;(e.suggestionMode??"submit")==="fill"?(C(s),(c=e.onSuggestionClick)==null||c.call(e,s)):((S=e.onSubmit)==null||S.call(e,{value:s,attachments:w()}),i([]))},L=()=>!!(e.chatTitle||e.models||e.context||e.headerStart||e.headerEnd),D=()=>e.persistSuggestions||e.messages.length===0?e.suggestions:void 0,R=()=>e.scrollButton!==!1;return r(K,{get proseSize(){return e.proseSize},get codeTheme(){return e.codeTheme},get codeHighlight(){return e.codeHighlight!==!1},get portalMount(){return o.portalMount()},get children(){var s=Se(),c=s.firstChild,S=c.nextSibling,q=S.firstChild;return H(t=>l=t,s),a(s,r(b,{get when(){return L()},get children(){var t=Ce(),d=t.firstChild,T=d.firstChild,g=d.nextSibling,x=g.firstChild;return T._$owner=z(),a(d,r(b,{get when(){return e.chatTitle},get children(){var u=be();return a(u,()=>e.chatTitle),u}}),null),a(g,r(b,{get when(){return e.models},get children(){return r(X,{get models(){return e.models},get currentModelId(){var u;return e.currentModel??((u=e.models[0])==null?void 0:u.id)??""},onModelChange:u=>{var F;return(F=e.onModelChange)==null?void 0:F.call(e,u)}})}}),x),a(g,r(b,{get when(){return e.context},get children(){return r(ee,{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 estimatedCost(){return e.context.estimatedCost},get children(){return[r(te,{}),r(re,{get children(){return[r(ne,{}),r(se,{get children(){var u=we();return a(u,r(le,{}),null),a(u,r(oe,{}),null),u}}),r(ae,{})]}})]}})}}),x),x._$owner=z(),t}}),c),a(c,r(ve,{class:"h-full px-4 py-3",get children(){return[r(fe,{class:"mx-auto w-full max-w-3xl space-y-4",get children(){return[r(J,{get each(){return e.messages},children:t=>{const d=r(N,{get content(){return t.content},get reasoning(){return t.reasoning},get tools(){return t.tools},get attachments(){return t.attachments},get isUser(){return t.role==="user"},get markdown(){return t.role==="assistant"},get actions(){return t.actions},get actionsReveal(){return n()},get activeFeedback(){return m.resolveFeedback(t)},get copied(){return m.isCopied(t.id)},onAction:g=>m.handleAction(t,g)}),T=n()==="hover"?"group ":"";return r(b,{get when(){return t.avatar},get fallback(){return r(_,{get class(){return`${T}${t.role==="user"?"flex-col items-end":"flex-col items-start"}`},children:d})},children:g=>r(_,{class:T,get children(){return[r(Q,{get src(){return g().src??""},get alt(){return g().alt??""},get fallback(){return g().fallback}}),(()=>{var x=Te();return a(x,d),E(()=>V(x,`flex min-w-0 flex-1 flex-col ${t.role==="user"?"items-end":"items-start"}`)),x})()]}})})}}),r(xe,{})]}}),r(b,{get when(){return R()},get children(){var t=ke();return a(t,r(pe,{class:"shadow-sm"})),t}})]}})),a(q,r(ie,{get value(){return f()},get placeholder(){return e.placeholder},get loading(){return e.loading===!0},get suggestions(){return D()},get attachments(){return w()},get search(){return e.search===!0},get voice(){return e.voice===!0},get slashCommands(){return e.slashCommands},get slashActiveIds(){return e.slashActiveIds},get slashCompact(){return e.slashCompact===!0},onValueChange:C,onSubmit:k,onSuggestionClick:I,onAttachmentsChange:i,onSearch:()=>{var t;return(t=e.onSearch)==null?void 0:t.call(e)},onVoice:()=>{var t;return(t=e.onVoice)==null?void 0:t.call(e)},onSlashSelect:t=>{var d;return(d=e.onSlashSelect)==null?void 0:d.call(e,t)}})),E(()=>V(s,`flex h-full flex-col bg-background ${e.class??""}`)),s}})}export{ye as C};
@@ -1 +0,0 @@
1
- import{I as m}from"./Icon-D_Zmwmwh.js";import{c as o,m as r}from"./cn-Dogu6PbV.js";var c=[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]],e=a=>o(m,r(a,{name:"Check",iconNode:c})),f=e;export{f as c};
@@ -1 +0,0 @@
1
- import{I as r}from"./Icon-D_Zmwmwh.js";import{c as a,m}from"./cn-Dogu6PbV.js";var e=[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]],n=o=>a(r,m(o,{name:"ChevronDown",iconNode:e})),p=n;export{p as c};
@@ -1 +0,0 @@
1
- import{I as o}from"./Icon-D_Zmwmwh.js";import{c as a,m as r}from"./cn-Dogu6PbV.js";var t=[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]],e=m=>a(o,r(m,{name:"ChevronRight",iconNode:t})),h=e;export{h as c};