@kitn.ai/ui 0.14.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 (370) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +394 -0
  3. package/dist/bash-InADTalH.js +1 -0
  4. package/dist/core-AYMC6_lb.js +12 -0
  5. package/dist/css-M7EaDHN_.js +1 -0
  6. package/dist/custom-elements.json +4739 -0
  7. package/dist/engine-javascript-vq0WuIJl.js +141 -0
  8. package/dist/github-dark-dimmed-DUshB20C.js +1 -0
  9. package/dist/github-light-JYsPkUQd.js +1 -0
  10. package/dist/host-embed.d.ts +33 -0
  11. package/dist/html-CPZ3oZQ7.js +1 -0
  12. package/dist/index.d.ts +2 -0
  13. package/dist/javascript-C25yR2R2.js +1 -0
  14. package/dist/json-DxJze_jm.js +1 -0
  15. package/dist/kitn-chat-provider.d.ts +2 -0
  16. package/dist/kitn-chat-provider.es.js +240 -0
  17. package/dist/kitn-chat.es.js +77 -0
  18. package/dist/llms/llms-full.txt +1018 -0
  19. package/dist/llms/llms.txt +104 -0
  20. package/dist/origin.d.ts +5 -0
  21. package/dist/provider-runtime.d.ts +27 -0
  22. package/dist/schemas/card-envelope.schema.json +14 -0
  23. package/dist/schemas/card-event.schema.json +12 -0
  24. package/dist/schemas/choice.schema.json +70 -0
  25. package/dist/schemas/confirm.schema.json +65 -0
  26. package/dist/schemas/embed.schema.json +65 -0
  27. package/dist/schemas/form.result.schema.json +7 -0
  28. package/dist/schemas/form.schema.json +33 -0
  29. package/dist/schemas/link.schema.json +56 -0
  30. package/dist/schemas/tasks.result.schema.json +16 -0
  31. package/dist/schemas/tasks.schema.json +78 -0
  32. package/dist/svelte--5p79yCD.js +1 -0
  33. package/dist/theme.tokens.css +176 -0
  34. package/dist/tsx-B8rCNbgL.js +1 -0
  35. package/dist/typescript-RycA9KXf.js +1 -0
  36. package/dist/validate.d.ts +4 -0
  37. package/dist/version.d.ts +4 -0
  38. package/dist/vue-BmIZj4XD.js +1 -0
  39. package/dist/wire.d.ts +53 -0
  40. package/frameworks/react/index.tsx +948 -0
  41. package/frameworks/react/runtime.tsx +94 -0
  42. package/llms-full.txt +1018 -0
  43. package/llms.txt +104 -0
  44. package/package.json +141 -0
  45. package/src/components/artifact.stories.tsx +138 -0
  46. package/src/components/artifact.tsx +743 -0
  47. package/src/components/attachments.stories.tsx +303 -0
  48. package/src/components/attachments.test.tsx +64 -0
  49. package/src/components/attachments.tsx +399 -0
  50. package/src/components/card-fallback.tsx +28 -0
  51. package/src/components/card-renderer.tsx +52 -0
  52. package/src/components/card.tsx +110 -0
  53. package/src/components/chain-of-thought.stories.tsx +211 -0
  54. package/src/components/chain-of-thought.tsx +139 -0
  55. package/src/components/chat-container.stories.tsx +187 -0
  56. package/src/components/chat-container.tsx +82 -0
  57. package/src/components/chat-scope-picker.tsx +47 -0
  58. package/src/components/chat-thread.test.tsx +58 -0
  59. package/src/components/chat-thread.tsx +249 -0
  60. package/src/components/checkpoint.stories.tsx +102 -0
  61. package/src/components/checkpoint.tsx +88 -0
  62. package/src/components/choice-card.tsx +569 -0
  63. package/src/components/code-block.stories.tsx +150 -0
  64. package/src/components/code-block.tsx +105 -0
  65. package/src/components/component-meta.json +3735 -0
  66. package/src/components/confirm-card.stories.tsx +74 -0
  67. package/src/components/confirm-card.tsx +315 -0
  68. package/src/components/context.stories.tsx +229 -0
  69. package/src/components/context.test.tsx +133 -0
  70. package/src/components/context.tsx +363 -0
  71. package/src/components/conversation-item.stories.tsx +125 -0
  72. package/src/components/conversation-item.tsx +16 -0
  73. package/src/components/conversation-list.stories.tsx +133 -0
  74. package/src/components/conversation-list.tsx +101 -0
  75. package/src/components/default-input.test.tsx +111 -0
  76. package/src/components/embed.tsx +196 -0
  77. package/src/components/empty.stories.tsx +434 -0
  78. package/src/components/empty.tsx +166 -0
  79. package/src/components/feedback-bar.stories.tsx +138 -0
  80. package/src/components/feedback-bar.test.tsx +103 -0
  81. package/src/components/feedback-bar.tsx +166 -0
  82. package/src/components/file-tree.stories.tsx +73 -0
  83. package/src/components/file-tree.tsx +383 -0
  84. package/src/components/file-upload.stories.tsx +156 -0
  85. package/src/components/file-upload.tsx +161 -0
  86. package/src/components/form-widgets.tsx +461 -0
  87. package/src/components/form.tsx +873 -0
  88. package/src/components/image.stories.tsx +89 -0
  89. package/src/components/image.tsx +67 -0
  90. package/src/components/link-preview.tsx +194 -0
  91. package/src/components/loader.stories.tsx +181 -0
  92. package/src/components/loader.tsx +333 -0
  93. package/src/components/markdown.stories.tsx +180 -0
  94. package/src/components/markdown.tsx +81 -0
  95. package/src/components/message-action-bar.test.tsx +128 -0
  96. package/src/components/message-narrow.stories.tsx +329 -0
  97. package/src/components/message-skills.stories.tsx +211 -0
  98. package/src/components/message-skills.tsx +36 -0
  99. package/src/components/message.stories.tsx +281 -0
  100. package/src/components/message.tsx +227 -0
  101. package/src/components/model-switcher.stories.tsx +123 -0
  102. package/src/components/model-switcher.test.tsx +65 -0
  103. package/src/components/model-switcher.tsx +87 -0
  104. package/src/components/prompt-input.stories.tsx +222 -0
  105. package/src/components/prompt-input.tsx +211 -0
  106. package/src/components/prompt-suggestion.stories.tsx +142 -0
  107. package/src/components/prompt-suggestion.tsx +115 -0
  108. package/src/components/reasoning.stories.tsx +140 -0
  109. package/src/components/reasoning.tsx +156 -0
  110. package/src/components/resizable.test.tsx +226 -0
  111. package/src/components/response-stream.tsx +103 -0
  112. package/src/components/scroll-button.stories.tsx +100 -0
  113. package/src/components/scroll-button.tsx +34 -0
  114. package/src/components/slash-command.stories.tsx +163 -0
  115. package/src/components/slash-command.tsx +232 -0
  116. package/src/components/source-list.test.tsx +152 -0
  117. package/src/components/source.stories.tsx +124 -0
  118. package/src/components/source.tsx +129 -0
  119. package/src/components/tasks-card.stories.tsx +78 -0
  120. package/src/components/tasks-card.tsx +432 -0
  121. package/src/components/text-shimmer.stories.tsx +87 -0
  122. package/src/components/text-shimmer.tsx +37 -0
  123. package/src/components/thinking-bar.stories.tsx +87 -0
  124. package/src/components/thinking-bar.tsx +50 -0
  125. package/src/components/tool.stories.tsx +153 -0
  126. package/src/components/tool.tsx +184 -0
  127. package/src/components/use-card-resolution.ts +28 -0
  128. package/src/components/voice-input.stories.tsx +83 -0
  129. package/src/components/voice-input.tsx +107 -0
  130. package/src/elements/artifact.stories.tsx +506 -0
  131. package/src/elements/artifact.tsx +137 -0
  132. package/src/elements/attachments.stories.tsx +190 -0
  133. package/src/elements/attachments.tsx +136 -0
  134. package/src/elements/card.stories.tsx +113 -0
  135. package/src/elements/card.tsx +40 -0
  136. package/src/elements/cards.stories.tsx +59 -0
  137. package/src/elements/cards.tsx +97 -0
  138. package/src/elements/catalog.stories.tsx +491 -0
  139. package/src/elements/chain-of-thought.declarative.test.tsx +153 -0
  140. package/src/elements/chain-of-thought.stories.tsx +113 -0
  141. package/src/elements/chain-of-thought.tsx +92 -0
  142. package/src/elements/chat-scope-picker.stories.tsx +73 -0
  143. package/src/elements/chat-scope-picker.tsx +36 -0
  144. package/src/elements/chat-types.ts +42 -0
  145. package/src/elements/chat-workspace.stories.tsx +288 -0
  146. package/src/elements/chat-workspace.tsx +161 -0
  147. package/src/elements/chat.stories.tsx +151 -0
  148. package/src/elements/chat.tsx +80 -0
  149. package/src/elements/checkpoint.stories.tsx +72 -0
  150. package/src/elements/checkpoint.tsx +47 -0
  151. package/src/elements/choice.stories.tsx +240 -0
  152. package/src/elements/choice.tsx +48 -0
  153. package/src/elements/code-block.stories.tsx +83 -0
  154. package/src/elements/code-block.tsx +42 -0
  155. package/src/elements/compiled.css +2 -0
  156. package/src/elements/composed-shell.stories.tsx +316 -0
  157. package/src/elements/confirm-card.stories.tsx +227 -0
  158. package/src/elements/confirm-card.tsx +51 -0
  159. package/src/elements/context-meter.stories.tsx +151 -0
  160. package/src/elements/context-meter.tsx +121 -0
  161. package/src/elements/conversation-list.declarative.test.tsx +137 -0
  162. package/src/elements/conversation-list.stories.tsx +243 -0
  163. package/src/elements/conversation-list.tsx +80 -0
  164. package/src/elements/css.ts +5 -0
  165. package/src/elements/default-input.tsx +247 -0
  166. package/src/elements/define.tsx +171 -0
  167. package/src/elements/element-meta.json +3314 -0
  168. package/src/elements/element-types.d.ts +710 -0
  169. package/src/elements/embed.stories.tsx +213 -0
  170. package/src/elements/embed.tsx +35 -0
  171. package/src/elements/empty.stories.tsx +111 -0
  172. package/src/elements/empty.tsx +29 -0
  173. package/src/elements/feedback-bar.stories.tsx +114 -0
  174. package/src/elements/feedback-bar.tsx +61 -0
  175. package/src/elements/file-tree.stories.tsx +134 -0
  176. package/src/elements/file-tree.tsx +52 -0
  177. package/src/elements/file-upload.stories.tsx +82 -0
  178. package/src/elements/file-upload.tsx +44 -0
  179. package/src/elements/form.stories.tsx +248 -0
  180. package/src/elements/form.tsx +43 -0
  181. package/src/elements/framework-usage.json +563 -0
  182. package/src/elements/image.stories.tsx +71 -0
  183. package/src/elements/image.tsx +32 -0
  184. package/src/elements/link-preview.stories.tsx +209 -0
  185. package/src/elements/link-preview.tsx +34 -0
  186. package/src/elements/loader.stories.tsx +88 -0
  187. package/src/elements/loader.tsx +25 -0
  188. package/src/elements/markdown.stories.tsx +76 -0
  189. package/src/elements/markdown.tsx +38 -0
  190. package/src/elements/message-skills.declarative.test.tsx +104 -0
  191. package/src/elements/message-skills.stories.tsx +114 -0
  192. package/src/elements/message-skills.tsx +85 -0
  193. package/src/elements/message.stories.tsx +218 -0
  194. package/src/elements/message.tsx +162 -0
  195. package/src/elements/model-switcher.declarative.test.tsx +130 -0
  196. package/src/elements/model-switcher.stories.tsx +198 -0
  197. package/src/elements/model-switcher.tsx +93 -0
  198. package/src/elements/popover.stories.tsx +80 -0
  199. package/src/elements/popover.tsx +59 -0
  200. package/src/elements/prompt-input-slash-command.test.tsx +128 -0
  201. package/src/elements/prompt-input-stoppable.test.tsx +88 -0
  202. package/src/elements/prompt-input-toolbar-actions.test.tsx +120 -0
  203. package/src/elements/prompt-input.stories.tsx +331 -0
  204. package/src/elements/prompt-input.tsx +185 -0
  205. package/src/elements/prompt-suggestions.declarative.test.tsx +164 -0
  206. package/src/elements/prompt-suggestions.stories.tsx +213 -0
  207. package/src/elements/prompt-suggestions.tsx +94 -0
  208. package/src/elements/reasoning.stories.tsx +77 -0
  209. package/src/elements/reasoning.tsx +50 -0
  210. package/src/elements/register.ts +56 -0
  211. package/src/elements/remote.stories.tsx +314 -0
  212. package/src/elements/remote.tsx +221 -0
  213. package/src/elements/resizable.d.ts +27 -0
  214. package/src/elements/resizable.stories.tsx +426 -0
  215. package/src/elements/resizable.tsx +553 -0
  216. package/src/elements/response-stream.stories.tsx +79 -0
  217. package/src/elements/response-stream.tsx +40 -0
  218. package/src/elements/scroll-button.stories.tsx +202 -0
  219. package/src/elements/scroll-button.test.tsx +148 -0
  220. package/src/elements/scroll-button.tsx +126 -0
  221. package/src/elements/source-list.stories.tsx +143 -0
  222. package/src/elements/source.stories.tsx +88 -0
  223. package/src/elements/source.tsx +120 -0
  224. package/src/elements/styles.css +199 -0
  225. package/src/elements/switch.stories.tsx +56 -0
  226. package/src/elements/switch.tsx +43 -0
  227. package/src/elements/tasks.stories.tsx +237 -0
  228. package/src/elements/tasks.tsx +46 -0
  229. package/src/elements/text-shimmer.stories.tsx +64 -0
  230. package/src/elements/text-shimmer.tsx +28 -0
  231. package/src/elements/thinking-bar.stories.tsx +72 -0
  232. package/src/elements/thinking-bar.tsx +34 -0
  233. package/src/elements/tool.stories.tsx +89 -0
  234. package/src/elements/tool.tsx +23 -0
  235. package/src/elements/voice-input.stories.tsx +88 -0
  236. package/src/elements/voice-input.tsx +41 -0
  237. package/src/index.ts +253 -0
  238. package/src/primitives/card-contract.ts +71 -0
  239. package/src/primitives/card-host.tsx +35 -0
  240. package/src/primitives/card-registry.tsx +67 -0
  241. package/src/primitives/card-resolution.ts +36 -0
  242. package/src/primitives/card-routing.ts +79 -0
  243. package/src/primitives/card-schemas/card-envelope.schema.json +14 -0
  244. package/src/primitives/card-schemas/card-event.schema.json +12 -0
  245. package/src/primitives/card-schemas/choice.schema.json +70 -0
  246. package/src/primitives/card-schemas/confirm.schema.json +65 -0
  247. package/src/primitives/card-schemas/embed.schema.json +65 -0
  248. package/src/primitives/card-schemas/form.result.schema.json +7 -0
  249. package/src/primitives/card-schemas/form.schema.json +33 -0
  250. package/src/primitives/card-schemas/link.schema.json +56 -0
  251. package/src/primitives/card-schemas/tasks.result.schema.json +16 -0
  252. package/src/primitives/card-schemas/tasks.schema.json +78 -0
  253. package/src/primitives/card-validate.ts +95 -0
  254. package/src/primitives/chat-config.tsx +76 -0
  255. package/src/primitives/controllable.test.ts +47 -0
  256. package/src/primitives/controllable.ts +21 -0
  257. package/src/primitives/embed-providers.ts +254 -0
  258. package/src/primitives/highlighter.ts +157 -0
  259. package/src/primitives/link-preview.ts +87 -0
  260. package/src/primitives/pdf-preview.ts +121 -0
  261. package/src/primitives/use-auto-resize.ts +31 -0
  262. package/src/primitives/use-resize-observer.ts +12 -0
  263. package/src/primitives/use-stick-to-bottom.ts +43 -0
  264. package/src/primitives/use-text-stream.ts +112 -0
  265. package/src/primitives/use-voice-recorder.ts +50 -0
  266. package/src/remote/host-embed.ts +345 -0
  267. package/src/remote/index.ts +2 -0
  268. package/src/remote/origin.ts +30 -0
  269. package/src/remote/provider-runtime.ts +259 -0
  270. package/src/remote/provider.ts +2 -0
  271. package/src/remote/validate.ts +22 -0
  272. package/src/remote/version.ts +12 -0
  273. package/src/remote/wire.ts +48 -0
  274. package/src/stories/chat-panel-layout.stories.tsx +145 -0
  275. package/src/stories/chat-scene.tsx +571 -0
  276. package/src/stories/checkpoint-restore.stories.tsx +256 -0
  277. package/src/stories/context-usage.stories.tsx +212 -0
  278. package/src/stories/conversation-with-reasoning.stories.tsx +182 -0
  279. package/src/stories/conversation-with-sources.stories.tsx +471 -0
  280. package/src/stories/docs/Accessibility.mdx +119 -0
  281. package/src/stories/docs/ChildElements.mdx +269 -0
  282. package/src/stories/docs/ForAIAgents.mdx +162 -0
  283. package/src/stories/docs/GettingStarted.mdx +65 -0
  284. package/src/stories/docs/Installation.mdx +83 -0
  285. package/src/stories/docs/Introduction.mdx +50 -0
  286. package/src/stories/docs/SolidJsAdvanced.mdx +17 -0
  287. package/src/stories/docs/Theming.mdx +85 -0
  288. package/src/stories/docs/element-controls.ts +121 -0
  289. package/src/stories/docs/frameworks/Angular.mdx +245 -0
  290. package/src/stories/docs/frameworks/Html.mdx +227 -0
  291. package/src/stories/docs/frameworks/Overview.mdx +47 -0
  292. package/src/stories/docs/frameworks/React.mdx +227 -0
  293. package/src/stories/docs/frameworks/Solid.mdx +173 -0
  294. package/src/stories/docs/frameworks/Svelte.mdx +194 -0
  295. package/src/stories/docs/frameworks/Vue.mdx +238 -0
  296. package/src/stories/docs/generative-ui-overview.mdx +186 -0
  297. package/src/stories/docs/recipes/SpeechToText.mdx +7 -0
  298. package/src/stories/docs/recipes/Streaming.mdx +68 -0
  299. package/src/stories/docs/recipes/TextToSpeech.mdx +35 -0
  300. package/src/stories/docs/theme-editor/canvas.tsx +32 -0
  301. package/src/stories/docs/theme-editor/inspector.tsx +66 -0
  302. package/src/stories/docs/theme-editor/presets.test.ts +32 -0
  303. package/src/stories/docs/theme-editor/presets.ts +64 -0
  304. package/src/stories/docs/theme-editor/theme-css.test.ts +19 -0
  305. package/src/stories/docs/theme-editor/theme-css.ts +15 -0
  306. package/src/stories/docs/theme-editor/theme-editor.tsx +146 -0
  307. package/src/stories/docs/theme-tokens.tsx +174 -0
  308. package/src/stories/examples/ChoosingComponents.mdx +106 -0
  309. package/src/stories/examples/sample-data.ts +79 -0
  310. package/src/stories/examples/usage/checkpoint-restore.ts +156 -0
  311. package/src/stories/examples/usage/context-usage.ts +591 -0
  312. package/src/stories/examples/usage/conversation-with-reasoning.ts +224 -0
  313. package/src/stories/examples/usage/conversation-with-sources.ts +589 -0
  314. package/src/stories/examples/usage/empty-state.ts +144 -0
  315. package/src/stories/examples/usage/full-chat-app.ts +277 -0
  316. package/src/stories/examples/usage/index.ts +63 -0
  317. package/src/stories/examples/usage/message-actions.ts +704 -0
  318. package/src/stories/examples/usage/pattern-centered-conversation.ts +446 -0
  319. package/src/stories/examples/usage/pattern-chat-panel-layout.ts +442 -0
  320. package/src/stories/examples/usage/pattern-docked-widget.ts +479 -0
  321. package/src/stories/examples/usage/prompt-input-variants.ts +1356 -0
  322. package/src/stories/examples/usage/streaming-response.ts +687 -0
  323. package/src/stories/examples/usage/types.ts +33 -0
  324. package/src/stories/full-chat.stories.tsx +18 -0
  325. package/src/stories/message-actions.stories.tsx +230 -0
  326. package/src/stories/pattern-centered-conversation.stories.tsx +93 -0
  327. package/src/stories/pattern-docked-widget.stories.tsx +93 -0
  328. package/src/stories/pattern-empty-state.stories.tsx +76 -0
  329. package/src/stories/prompt-input-variants.stories.tsx +456 -0
  330. package/src/stories/streaming-response.stories.tsx +438 -0
  331. package/src/stories/theme-editor.stories.tsx +16 -0
  332. package/src/stories/token-reference.stories.tsx +18 -0
  333. package/src/stories/typography.stories.tsx +78 -0
  334. package/src/types.ts +47 -0
  335. package/src/ui/action-icons.ts +52 -0
  336. package/src/ui/avatar.stories.tsx +103 -0
  337. package/src/ui/avatar.tsx +23 -0
  338. package/src/ui/badge.stories.tsx +86 -0
  339. package/src/ui/badge.tsx +21 -0
  340. package/src/ui/button.stories.tsx +145 -0
  341. package/src/ui/button.tsx +38 -0
  342. package/src/ui/collapsible.stories.tsx +69 -0
  343. package/src/ui/collapsible.tsx +125 -0
  344. package/src/ui/dropdown.stories.tsx +59 -0
  345. package/src/ui/dropdown.tsx +196 -0
  346. package/src/ui/hover-card.stories.tsx +77 -0
  347. package/src/ui/hover-card.test.tsx +30 -0
  348. package/src/ui/hover-card.tsx +172 -0
  349. package/src/ui/overlay.stories.tsx +115 -0
  350. package/src/ui/overlay.tsx +158 -0
  351. package/src/ui/popover.stories.tsx +81 -0
  352. package/src/ui/popover.test.tsx +99 -0
  353. package/src/ui/popover.tsx +92 -0
  354. package/src/ui/resizable.stories.tsx +236 -0
  355. package/src/ui/resizable.tsx +576 -0
  356. package/src/ui/scroll-area.stories.tsx +50 -0
  357. package/src/ui/scroll-area.tsx +15 -0
  358. package/src/ui/separator.stories.tsx +81 -0
  359. package/src/ui/separator.tsx +10 -0
  360. package/src/ui/skeleton.stories.tsx +337 -0
  361. package/src/ui/skeleton.tsx +16 -0
  362. package/src/ui/switch.stories.tsx +51 -0
  363. package/src/ui/switch.test.tsx +59 -0
  364. package/src/ui/switch.tsx +62 -0
  365. package/src/ui/textarea.stories.tsx +76 -0
  366. package/src/ui/textarea.tsx +21 -0
  367. package/src/ui/tooltip.stories.tsx +74 -0
  368. package/src/ui/tooltip.tsx +68 -0
  369. package/src/utils/cn.ts +24 -0
  370. package/theme.css +187 -0
@@ -0,0 +1,563 @@
1
+ [
2
+ {
3
+ "tag": "kai-artifact",
4
+ "displayName": "Artifact",
5
+ "hasSolid": true,
6
+ "snippets": {
7
+ "html": "<script type=\"module\" src=\"https://cdn.jsdelivr.net/npm/@kitn.ai/ui/dist/kitn-chat.es.js\"></script>\n\n<kai-artifact></kai-artifact>\n<script type=\"module\">\n const el = document.querySelector('kai-artifact');\n el.files = /* … */;\n el.addEventListener('kai-file-select', (e) => console.log(e.detail));\n el.addEventListener('kai-maximize-change', (e) => console.log(e.detail));\n el.addEventListener('kai-navigate', (e) => console.log(e.detail));\n el.addEventListener('kai-tab-change', (e) => console.log(e.detail));\n</script>",
8
+ "react": "import { Artifact } from '@kitn.ai/ui/react';\n\n<Artifact\n files={files}\n onFileSelect={(e) => console.log(e.detail)}\n onMaximizeChange={(e) => console.log(e.detail)}\n onNavigate={(e) => console.log(e.detail)}\n onTabChange={(e) => console.log(e.detail)}\n/>",
9
+ "vue": "<kai-artifact\n :files.prop=\"files\"\n @kai-file-select=\"onFileSelect\"\n @kai-maximize-change=\"onMaximizeChange\"\n @kai-navigate=\"onNavigate\"\n @kai-tab-change=\"onTabChange\"\n/>",
10
+ "svelte": "<script>\n import '@kitn.ai/ui/elements';\n</script>\n\n<kai-artifact\n {files}\n on:kai-file-select={onFileSelect}\n on:kai-maximize-change={onMaximizeChange}\n on:kai-navigate={onNavigate}\n on:kai-tab-change={onTabChange}\n></kai-artifact>",
11
+ "angular": "<kai-artifact\n [files]=\"files\"\n (kai-file-select)=\"onFileSelect($event)\"\n (kai-maximize-change)=\"onMaximizeChange($event)\"\n (kai-navigate)=\"onNavigate($event)\"\n (kai-tab-change)=\"onTabChange($event)\"\n></kai-artifact>",
12
+ "solid": "import { Artifact } from '@kitn.ai/ui';\n\n<Artifact\n files={files}\n onFileSelect={(e) => console.log(e.detail)}\n onMaximizeChange={(e) => console.log(e.detail)}\n onNavigate={(e) => console.log(e.detail)}\n onTabChange={(e) => console.log(e.detail)}\n/>"
13
+ }
14
+ },
15
+ {
16
+ "tag": "kai-attachments",
17
+ "displayName": "Attachments",
18
+ "hasSolid": true,
19
+ "snippets": {
20
+ "html": "<script type=\"module\" src=\"https://cdn.jsdelivr.net/npm/@kitn.ai/ui/dist/kitn-chat.es.js\"></script>\n\n<kai-attachments></kai-attachments>\n<script type=\"module\">\n const el = document.querySelector('kai-attachments');\n el.items = /* … */;\n el.addEventListener('kai-remove', (e) => console.log(e.detail));\n</script>",
21
+ "react": "import { Attachments } from '@kitn.ai/ui/react';\n\n<Attachments\n items={items}\n onRemove={(e) => console.log(e.detail)}\n/>",
22
+ "vue": "<kai-attachments\n :items.prop=\"items\"\n @kai-remove=\"onRemove\"\n/>",
23
+ "svelte": "<script>\n import '@kitn.ai/ui/elements';\n</script>\n\n<kai-attachments\n {items}\n on:kai-remove={onRemove}\n></kai-attachments>",
24
+ "angular": "<kai-attachments\n [items]=\"items\"\n (kai-remove)=\"onRemove($event)\"\n></kai-attachments>",
25
+ "solid": "import { Attachments } from '@kitn.ai/ui';\n\n<Attachments\n items={items}\n onRemove={(e) => console.log(e.detail)}\n/>"
26
+ }
27
+ },
28
+ {
29
+ "tag": "kai-card",
30
+ "displayName": "Card",
31
+ "hasSolid": true,
32
+ "snippets": {
33
+ "html": "<script type=\"module\" src=\"https://cdn.jsdelivr.net/npm/@kitn.ai/ui/dist/kitn-chat.es.js\"></script>\n\n<kai-card></kai-card>",
34
+ "react": "import { Card } from '@kitn.ai/ui/react';\n\n<Card />",
35
+ "vue": "<kai-card />",
36
+ "svelte": "<script>\n import '@kitn.ai/ui/elements';\n</script>\n\n<kai-card></kai-card>",
37
+ "angular": "<kai-card></kai-card>",
38
+ "solid": "import { Card } from '@kitn.ai/ui';\n\n<Card />"
39
+ }
40
+ },
41
+ {
42
+ "tag": "kai-cards",
43
+ "displayName": "Cards",
44
+ "hasSolid": false,
45
+ "snippets": {
46
+ "html": "<script type=\"module\" src=\"https://cdn.jsdelivr.net/npm/@kitn.ai/ui/dist/kitn-chat.es.js\"></script>\n\n<kai-cards></kai-cards>",
47
+ "react": "import { Cards } from '@kitn.ai/ui/react';\n\n<Cards />",
48
+ "vue": "<kai-cards />",
49
+ "svelte": "<script>\n import '@kitn.ai/ui/elements';\n</script>\n\n<kai-cards></kai-cards>",
50
+ "angular": "<kai-cards></kai-cards>"
51
+ }
52
+ },
53
+ {
54
+ "tag": "kai-chain-of-thought",
55
+ "displayName": "ChainOfThought",
56
+ "hasSolid": true,
57
+ "snippets": {
58
+ "html": "<script type=\"module\" src=\"https://cdn.jsdelivr.net/npm/@kitn.ai/ui/dist/kitn-chat.es.js\"></script>\n\n<kai-chain-of-thought></kai-chain-of-thought>\n<script type=\"module\">\n const el = document.querySelector('kai-chain-of-thought');\n el.steps = /* … */;\n</script>",
59
+ "react": "import { ChainOfThought } from '@kitn.ai/ui/react';\n\n<ChainOfThought\n steps={steps}\n/>",
60
+ "vue": "<kai-chain-of-thought\n :steps.prop=\"steps\"\n/>",
61
+ "svelte": "<script>\n import '@kitn.ai/ui/elements';\n</script>\n\n<kai-chain-of-thought\n {steps}\n></kai-chain-of-thought>",
62
+ "angular": "<kai-chain-of-thought\n [steps]=\"steps\"\n></kai-chain-of-thought>",
63
+ "solid": "import { ChainOfThought } from '@kitn.ai/ui';\n\n<ChainOfThought\n steps={steps}\n/>"
64
+ }
65
+ },
66
+ {
67
+ "tag": "kai-chat",
68
+ "displayName": "Chat",
69
+ "hasSolid": false,
70
+ "snippets": {
71
+ "html": "<script type=\"module\" src=\"https://cdn.jsdelivr.net/npm/@kitn.ai/ui/dist/kitn-chat.es.js\"></script>\n\n<kai-chat></kai-chat>\n<script type=\"module\">\n const el = document.querySelector('kai-chat');\n el.messages = /* … */;\n el.addEventListener('kai-message-action', (e) => console.log(e.detail));\n el.addEventListener('kai-model-change', (e) => console.log(e.detail));\n el.addEventListener('kai-search', (e) => console.log(e.detail));\n el.addEventListener('kai-slash-select', (e) => console.log(e.detail));\n el.addEventListener('kai-submit', (e) => console.log(e.detail));\n el.addEventListener('kai-suggestion-click', (e) => console.log(e.detail));\n el.addEventListener('kai-value-change', (e) => console.log(e.detail));\n el.addEventListener('kai-voice', (e) => console.log(e.detail));\n</script>",
72
+ "react": "import { Chat } from '@kitn.ai/ui/react';\n\n<Chat\n messages={messages}\n onMessageAction={(e) => console.log(e.detail)}\n onModelChange={(e) => console.log(e.detail)}\n onSearch={(e) => console.log(e.detail)}\n onSlashSelect={(e) => console.log(e.detail)}\n onSubmit={(e) => console.log(e.detail)}\n onSuggestionClick={(e) => console.log(e.detail)}\n onValueChange={(e) => console.log(e.detail)}\n onVoice={(e) => console.log(e.detail)}\n/>",
73
+ "vue": "<kai-chat\n :messages.prop=\"messages\"\n @kai-message-action=\"onMessageAction\"\n @kai-model-change=\"onModelChange\"\n @kai-search=\"onSearch\"\n @kai-slash-select=\"onSlashSelect\"\n @kai-submit=\"onSubmit\"\n @kai-suggestion-click=\"onSuggestionClick\"\n @kai-value-change=\"onValueChange\"\n @kai-voice=\"onVoice\"\n/>",
74
+ "svelte": "<script>\n import '@kitn.ai/ui/elements';\n</script>\n\n<kai-chat\n {messages}\n on:kai-message-action={onMessageAction}\n on:kai-model-change={onModelChange}\n on:kai-search={onSearch}\n on:kai-slash-select={onSlashSelect}\n on:kai-submit={onSubmit}\n on:kai-suggestion-click={onSuggestionClick}\n on:kai-value-change={onValueChange}\n on:kai-voice={onVoice}\n></kai-chat>",
75
+ "angular": "<kai-chat\n [messages]=\"messages\"\n (kai-message-action)=\"onMessageAction($event)\"\n (kai-model-change)=\"onModelChange($event)\"\n (kai-search)=\"onSearch($event)\"\n (kai-slash-select)=\"onSlashSelect($event)\"\n (kai-submit)=\"onSubmit($event)\"\n (kai-suggestion-click)=\"onSuggestionClick($event)\"\n (kai-value-change)=\"onValueChange($event)\"\n (kai-voice)=\"onVoice($event)\"\n></kai-chat>"
76
+ }
77
+ },
78
+ {
79
+ "tag": "kai-checkpoint",
80
+ "displayName": "Checkpoint",
81
+ "hasSolid": true,
82
+ "snippets": {
83
+ "html": "<script type=\"module\" src=\"https://cdn.jsdelivr.net/npm/@kitn.ai/ui/dist/kitn-chat.es.js\"></script>\n\n<kai-checkpoint></kai-checkpoint>\n<script type=\"module\">\n const el = document.querySelector('kai-checkpoint');\n el.addEventListener('kai-select', (e) => console.log(e.detail));\n</script>",
84
+ "react": "import { Checkpoint } from '@kitn.ai/ui/react';\n\n<Checkpoint\n onSelect={(e) => console.log(e.detail)}\n/>",
85
+ "vue": "<kai-checkpoint\n @kai-select=\"onSelect\"\n/>",
86
+ "svelte": "<script>\n import '@kitn.ai/ui/elements';\n</script>\n\n<kai-checkpoint\n on:kai-select={onSelect}\n></kai-checkpoint>",
87
+ "angular": "<kai-checkpoint\n (kai-select)=\"onSelect($event)\"\n></kai-checkpoint>",
88
+ "solid": "import { Checkpoint } from '@kitn.ai/ui';\n\n<Checkpoint\n onSelect={(e) => console.log(e.detail)}\n/>"
89
+ }
90
+ },
91
+ {
92
+ "tag": "kai-choice",
93
+ "displayName": "Choice",
94
+ "hasSolid": false,
95
+ "snippets": {
96
+ "html": "<script type=\"module\" src=\"https://cdn.jsdelivr.net/npm/@kitn.ai/ui/dist/kitn-chat.es.js\"></script>\n\n<kai-choice></kai-choice>",
97
+ "react": "import { Choice } from '@kitn.ai/ui/react';\n\n<Choice />",
98
+ "vue": "<kai-choice />",
99
+ "svelte": "<script>\n import '@kitn.ai/ui/elements';\n</script>\n\n<kai-choice></kai-choice>",
100
+ "angular": "<kai-choice></kai-choice>"
101
+ }
102
+ },
103
+ {
104
+ "tag": "kai-code-block",
105
+ "displayName": "CodeBlock",
106
+ "hasSolid": true,
107
+ "snippets": {
108
+ "html": "<script type=\"module\" src=\"https://cdn.jsdelivr.net/npm/@kitn.ai/ui/dist/kitn-chat.es.js\"></script>\n\n<kai-code-block code=\"…\"></kai-code-block>",
109
+ "react": "import { CodeBlock } from '@kitn.ai/ui/react';\n\n<CodeBlock\n code={code}\n/>",
110
+ "vue": "<kai-code-block\n :code=\"code\"\n/>",
111
+ "svelte": "<script>\n import '@kitn.ai/ui/elements';\n</script>\n\n<kai-code-block\n {code}\n></kai-code-block>",
112
+ "angular": "<kai-code-block\n [code]=\"code\"\n></kai-code-block>",
113
+ "solid": "import { CodeBlock } from '@kitn.ai/ui';\n\n<CodeBlock\n code={code}\n/>"
114
+ }
115
+ },
116
+ {
117
+ "tag": "kai-confirm",
118
+ "displayName": "Confirm",
119
+ "hasSolid": false,
120
+ "snippets": {
121
+ "html": "<script type=\"module\" src=\"https://cdn.jsdelivr.net/npm/@kitn.ai/ui/dist/kitn-chat.es.js\"></script>\n\n<kai-confirm></kai-confirm>",
122
+ "react": "import { Confirm } from '@kitn.ai/ui/react';\n\n<Confirm />",
123
+ "vue": "<kai-confirm />",
124
+ "svelte": "<script>\n import '@kitn.ai/ui/elements';\n</script>\n\n<kai-confirm></kai-confirm>",
125
+ "angular": "<kai-confirm></kai-confirm>"
126
+ }
127
+ },
128
+ {
129
+ "tag": "kai-context",
130
+ "displayName": "Context",
131
+ "hasSolid": true,
132
+ "snippets": {
133
+ "html": "<script type=\"module\" src=\"https://cdn.jsdelivr.net/npm/@kitn.ai/ui/dist/kitn-chat.es.js\"></script>\n\n<kai-context></kai-context>\n<script type=\"module\">\n const el = document.querySelector('kai-context');\n el.addEventListener('kai-threshold-change', (e) => console.log(e.detail));\n</script>",
134
+ "react": "import { Context } from '@kitn.ai/ui/react';\n\n<Context\n onThresholdChange={(e) => console.log(e.detail)}\n/>",
135
+ "vue": "<kai-context\n @kai-threshold-change=\"onThresholdChange\"\n/>",
136
+ "svelte": "<script>\n import '@kitn.ai/ui/elements';\n</script>\n\n<kai-context\n on:kai-threshold-change={onThresholdChange}\n></kai-context>",
137
+ "angular": "<kai-context\n (kai-threshold-change)=\"onThresholdChange($event)\"\n></kai-context>",
138
+ "solid": "import { Context } from '@kitn.ai/ui';\n\n<Context\n onThresholdChange={(e) => console.log(e.detail)}\n/>"
139
+ }
140
+ },
141
+ {
142
+ "tag": "kai-conversations",
143
+ "displayName": "Conversations",
144
+ "hasSolid": true,
145
+ "snippets": {
146
+ "html": "<script type=\"module\" src=\"https://cdn.jsdelivr.net/npm/@kitn.ai/ui/dist/kitn-chat.es.js\"></script>\n\n<kai-conversations></kai-conversations>\n<script type=\"module\">\n const el = document.querySelector('kai-conversations');\n el.groups = /* … */;\n el.conversations = /* … */;\n el.addEventListener('kai-conversation-select', (e) => console.log(e.detail));\n el.addEventListener('kai-new-chat', (e) => console.log(e.detail));\n el.addEventListener('kai-toggle-sidebar', (e) => console.log(e.detail));\n</script>",
147
+ "react": "import { Conversations } from '@kitn.ai/ui/react';\n\n<Conversations\n groups={groups}\n conversations={conversations}\n onConversationSelect={(e) => console.log(e.detail)}\n onNewChat={(e) => console.log(e.detail)}\n onToggleSidebar={(e) => console.log(e.detail)}\n/>",
148
+ "vue": "<kai-conversations\n :groups.prop=\"groups\"\n :conversations.prop=\"conversations\"\n @kai-conversation-select=\"onConversationSelect\"\n @kai-new-chat=\"onNewChat\"\n @kai-toggle-sidebar=\"onToggleSidebar\"\n/>",
149
+ "svelte": "<script>\n import '@kitn.ai/ui/elements';\n</script>\n\n<kai-conversations\n {groups}\n {conversations}\n on:kai-conversation-select={onConversationSelect}\n on:kai-new-chat={onNewChat}\n on:kai-toggle-sidebar={onToggleSidebar}\n></kai-conversations>",
150
+ "angular": "<kai-conversations\n [groups]=\"groups\"\n [conversations]=\"conversations\"\n (kai-conversation-select)=\"onConversationSelect($event)\"\n (kai-new-chat)=\"onNewChat($event)\"\n (kai-toggle-sidebar)=\"onToggleSidebar($event)\"\n></kai-conversations>",
151
+ "solid": "import { ConversationList } from '@kitn.ai/ui';\n\n<ConversationList\n groups={groups}\n conversations={conversations}\n onConversationSelect={(e) => console.log(e.detail)}\n onNewChat={(e) => console.log(e.detail)}\n onToggleSidebar={(e) => console.log(e.detail)}\n/>"
152
+ }
153
+ },
154
+ {
155
+ "tag": "kai-embed",
156
+ "displayName": "Embed",
157
+ "hasSolid": true,
158
+ "snippets": {
159
+ "html": "<script type=\"module\" src=\"https://cdn.jsdelivr.net/npm/@kitn.ai/ui/dist/kitn-chat.es.js\"></script>\n\n<kai-embed></kai-embed>",
160
+ "react": "import { Embed } from '@kitn.ai/ui/react';\n\n<Embed />",
161
+ "vue": "<kai-embed />",
162
+ "svelte": "<script>\n import '@kitn.ai/ui/elements';\n</script>\n\n<kai-embed></kai-embed>",
163
+ "angular": "<kai-embed></kai-embed>",
164
+ "solid": "import { Embed } from '@kitn.ai/ui';\n\n<Embed />"
165
+ }
166
+ },
167
+ {
168
+ "tag": "kai-empty",
169
+ "displayName": "Empty",
170
+ "hasSolid": true,
171
+ "snippets": {
172
+ "html": "<script type=\"module\" src=\"https://cdn.jsdelivr.net/npm/@kitn.ai/ui/dist/kitn-chat.es.js\"></script>\n\n<kai-empty></kai-empty>",
173
+ "react": "import { Empty } from '@kitn.ai/ui/react';\n\n<Empty />",
174
+ "vue": "<kai-empty />",
175
+ "svelte": "<script>\n import '@kitn.ai/ui/elements';\n</script>\n\n<kai-empty></kai-empty>",
176
+ "angular": "<kai-empty></kai-empty>",
177
+ "solid": "import { Empty } from '@kitn.ai/ui';\n\n<Empty />"
178
+ }
179
+ },
180
+ {
181
+ "tag": "kai-feedback-bar",
182
+ "displayName": "FeedbackBar",
183
+ "hasSolid": true,
184
+ "snippets": {
185
+ "html": "<script type=\"module\" src=\"https://cdn.jsdelivr.net/npm/@kitn.ai/ui/dist/kitn-chat.es.js\"></script>\n\n<kai-feedback-bar></kai-feedback-bar>\n<script type=\"module\">\n const el = document.querySelector('kai-feedback-bar');\n el.addEventListener('kai-close', (e) => console.log(e.detail));\n el.addEventListener('kai-feedback', (e) => console.log(e.detail));\n el.addEventListener('kai-feedback-detail', (e) => console.log(e.detail));\n</script>",
186
+ "react": "import { FeedbackBar } from '@kitn.ai/ui/react';\n\n<FeedbackBar\n onClose={(e) => console.log(e.detail)}\n onFeedback={(e) => console.log(e.detail)}\n onFeedbackDetail={(e) => console.log(e.detail)}\n/>",
187
+ "vue": "<kai-feedback-bar\n @kai-close=\"onClose\"\n @kai-feedback=\"onFeedback\"\n @kai-feedback-detail=\"onFeedbackDetail\"\n/>",
188
+ "svelte": "<script>\n import '@kitn.ai/ui/elements';\n</script>\n\n<kai-feedback-bar\n on:kai-close={onClose}\n on:kai-feedback={onFeedback}\n on:kai-feedback-detail={onFeedbackDetail}\n></kai-feedback-bar>",
189
+ "angular": "<kai-feedback-bar\n (kai-close)=\"onClose($event)\"\n (kai-feedback)=\"onFeedback($event)\"\n (kai-feedback-detail)=\"onFeedbackDetail($event)\"\n></kai-feedback-bar>",
190
+ "solid": "import { FeedbackBar } from '@kitn.ai/ui';\n\n<FeedbackBar\n onClose={(e) => console.log(e.detail)}\n onFeedback={(e) => console.log(e.detail)}\n onFeedbackDetail={(e) => console.log(e.detail)}\n/>"
191
+ }
192
+ },
193
+ {
194
+ "tag": "kai-file-tree",
195
+ "displayName": "FileTree",
196
+ "hasSolid": true,
197
+ "snippets": {
198
+ "html": "<script type=\"module\" src=\"https://cdn.jsdelivr.net/npm/@kitn.ai/ui/dist/kitn-chat.es.js\"></script>\n\n<kai-file-tree></kai-file-tree>\n<script type=\"module\">\n const el = document.querySelector('kai-file-tree');\n el.files = /* … */;\n el.addEventListener('kai-select', (e) => console.log(e.detail));\n</script>",
199
+ "react": "import { FileTree } from '@kitn.ai/ui/react';\n\n<FileTree\n files={files}\n onSelect={(e) => console.log(e.detail)}\n/>",
200
+ "vue": "<kai-file-tree\n :files.prop=\"files\"\n @kai-select=\"onSelect\"\n/>",
201
+ "svelte": "<script>\n import '@kitn.ai/ui/elements';\n</script>\n\n<kai-file-tree\n {files}\n on:kai-select={onSelect}\n></kai-file-tree>",
202
+ "angular": "<kai-file-tree\n [files]=\"files\"\n (kai-select)=\"onSelect($event)\"\n></kai-file-tree>",
203
+ "solid": "import { FileTree } from '@kitn.ai/ui';\n\n<FileTree\n files={files}\n onSelect={(e) => console.log(e.detail)}\n/>"
204
+ }
205
+ },
206
+ {
207
+ "tag": "kai-file-upload",
208
+ "displayName": "FileUpload",
209
+ "hasSolid": true,
210
+ "snippets": {
211
+ "html": "<script type=\"module\" src=\"https://cdn.jsdelivr.net/npm/@kitn.ai/ui/dist/kitn-chat.es.js\"></script>\n\n<kai-file-upload></kai-file-upload>\n<script type=\"module\">\n const el = document.querySelector('kai-file-upload');\n el.addEventListener('kai-files-added', (e) => console.log(e.detail));\n</script>",
212
+ "react": "import { FileUpload } from '@kitn.ai/ui/react';\n\n<FileUpload\n onFilesAdded={(e) => console.log(e.detail)}\n/>",
213
+ "vue": "<kai-file-upload\n @kai-files-added=\"onFilesAdded\"\n/>",
214
+ "svelte": "<script>\n import '@kitn.ai/ui/elements';\n</script>\n\n<kai-file-upload\n on:kai-files-added={onFilesAdded}\n></kai-file-upload>",
215
+ "angular": "<kai-file-upload\n (kai-files-added)=\"onFilesAdded($event)\"\n></kai-file-upload>",
216
+ "solid": "import { FileUpload } from '@kitn.ai/ui';\n\n<FileUpload\n onFilesAdded={(e) => console.log(e.detail)}\n/>"
217
+ }
218
+ },
219
+ {
220
+ "tag": "kai-form",
221
+ "displayName": "Form",
222
+ "hasSolid": true,
223
+ "snippets": {
224
+ "html": "<script type=\"module\" src=\"https://cdn.jsdelivr.net/npm/@kitn.ai/ui/dist/kitn-chat.es.js\"></script>\n\n<kai-form></kai-form>",
225
+ "react": "import { Form } from '@kitn.ai/ui/react';\n\n<Form />",
226
+ "vue": "<kai-form />",
227
+ "svelte": "<script>\n import '@kitn.ai/ui/elements';\n</script>\n\n<kai-form></kai-form>",
228
+ "angular": "<kai-form></kai-form>",
229
+ "solid": "import { Form } from '@kitn.ai/ui';\n\n<Form />"
230
+ }
231
+ },
232
+ {
233
+ "tag": "kai-image",
234
+ "displayName": "Image",
235
+ "hasSolid": true,
236
+ "snippets": {
237
+ "html": "<script type=\"module\" src=\"https://cdn.jsdelivr.net/npm/@kitn.ai/ui/dist/kitn-chat.es.js\"></script>\n\n<kai-image></kai-image>",
238
+ "react": "import { Image } from '@kitn.ai/ui/react';\n\n<Image />",
239
+ "vue": "<kai-image />",
240
+ "svelte": "<script>\n import '@kitn.ai/ui/elements';\n</script>\n\n<kai-image></kai-image>",
241
+ "angular": "<kai-image></kai-image>",
242
+ "solid": "import { Image } from '@kitn.ai/ui';\n\n<Image />"
243
+ }
244
+ },
245
+ {
246
+ "tag": "kai-link-preview",
247
+ "displayName": "LinkPreview",
248
+ "hasSolid": true,
249
+ "snippets": {
250
+ "html": "<script type=\"module\" src=\"https://cdn.jsdelivr.net/npm/@kitn.ai/ui/dist/kitn-chat.es.js\"></script>\n\n<kai-link-preview></kai-link-preview>",
251
+ "react": "import { LinkPreview } from '@kitn.ai/ui/react';\n\n<LinkPreview />",
252
+ "vue": "<kai-link-preview />",
253
+ "svelte": "<script>\n import '@kitn.ai/ui/elements';\n</script>\n\n<kai-link-preview></kai-link-preview>",
254
+ "angular": "<kai-link-preview></kai-link-preview>",
255
+ "solid": "import { LinkPreview } from '@kitn.ai/ui';\n\n<LinkPreview />"
256
+ }
257
+ },
258
+ {
259
+ "tag": "kai-loader",
260
+ "displayName": "Loader",
261
+ "hasSolid": true,
262
+ "snippets": {
263
+ "html": "<script type=\"module\" src=\"https://cdn.jsdelivr.net/npm/@kitn.ai/ui/dist/kitn-chat.es.js\"></script>\n\n<kai-loader></kai-loader>",
264
+ "react": "import { Loader } from '@kitn.ai/ui/react';\n\n<Loader />",
265
+ "vue": "<kai-loader />",
266
+ "svelte": "<script>\n import '@kitn.ai/ui/elements';\n</script>\n\n<kai-loader></kai-loader>",
267
+ "angular": "<kai-loader></kai-loader>",
268
+ "solid": "import { Loader } from '@kitn.ai/ui';\n\n<Loader />"
269
+ }
270
+ },
271
+ {
272
+ "tag": "kai-markdown",
273
+ "displayName": "Markdown",
274
+ "hasSolid": true,
275
+ "snippets": {
276
+ "html": "<script type=\"module\" src=\"https://cdn.jsdelivr.net/npm/@kitn.ai/ui/dist/kitn-chat.es.js\"></script>\n\n<kai-markdown content=\"…\"></kai-markdown>",
277
+ "react": "import { Markdown } from '@kitn.ai/ui/react';\n\n<Markdown\n content={content}\n/>",
278
+ "vue": "<kai-markdown\n :content=\"content\"\n/>",
279
+ "svelte": "<script>\n import '@kitn.ai/ui/elements';\n</script>\n\n<kai-markdown\n {content}\n></kai-markdown>",
280
+ "angular": "<kai-markdown\n [content]=\"content\"\n></kai-markdown>",
281
+ "solid": "import { Markdown } from '@kitn.ai/ui';\n\n<Markdown\n content={content}\n/>"
282
+ }
283
+ },
284
+ {
285
+ "tag": "kai-message",
286
+ "displayName": "Message",
287
+ "hasSolid": true,
288
+ "snippets": {
289
+ "html": "<script type=\"module\" src=\"https://cdn.jsdelivr.net/npm/@kitn.ai/ui/dist/kitn-chat.es.js\"></script>\n\n<kai-message></kai-message>\n<script type=\"module\">\n const el = document.querySelector('kai-message');\n el.addEventListener('kai-message-action', (e) => console.log(e.detail));\n</script>",
290
+ "react": "import { Message } from '@kitn.ai/ui/react';\n\n<Message\n onMessageAction={(e) => console.log(e.detail)}\n/>",
291
+ "vue": "<kai-message\n @kai-message-action=\"onMessageAction\"\n/>",
292
+ "svelte": "<script>\n import '@kitn.ai/ui/elements';\n</script>\n\n<kai-message\n on:kai-message-action={onMessageAction}\n></kai-message>",
293
+ "angular": "<kai-message\n (kai-message-action)=\"onMessageAction($event)\"\n></kai-message>",
294
+ "solid": "import { Message } from '@kitn.ai/ui';\n\n<Message\n onMessageAction={(e) => console.log(e.detail)}\n/>"
295
+ }
296
+ },
297
+ {
298
+ "tag": "kai-model-switcher",
299
+ "displayName": "ModelSwitcher",
300
+ "hasSolid": true,
301
+ "snippets": {
302
+ "html": "<script type=\"module\" src=\"https://cdn.jsdelivr.net/npm/@kitn.ai/ui/dist/kitn-chat.es.js\"></script>\n\n<kai-model-switcher></kai-model-switcher>\n<script type=\"module\">\n const el = document.querySelector('kai-model-switcher');\n el.models = /* … */;\n el.addEventListener('kai-model-change', (e) => console.log(e.detail));\n</script>",
303
+ "react": "import { ModelSwitcher } from '@kitn.ai/ui/react';\n\n<ModelSwitcher\n models={models}\n onModelChange={(e) => console.log(e.detail)}\n/>",
304
+ "vue": "<kai-model-switcher\n :models.prop=\"models\"\n @kai-model-change=\"onModelChange\"\n/>",
305
+ "svelte": "<script>\n import '@kitn.ai/ui/elements';\n</script>\n\n<kai-model-switcher\n {models}\n on:kai-model-change={onModelChange}\n></kai-model-switcher>",
306
+ "angular": "<kai-model-switcher\n [models]=\"models\"\n (kai-model-change)=\"onModelChange($event)\"\n></kai-model-switcher>",
307
+ "solid": "import { ModelSwitcher } from '@kitn.ai/ui';\n\n<ModelSwitcher\n models={models}\n onModelChange={(e) => console.log(e.detail)}\n/>"
308
+ }
309
+ },
310
+ {
311
+ "tag": "kai-popover",
312
+ "displayName": "Popover",
313
+ "hasSolid": false,
314
+ "snippets": {
315
+ "html": "<script type=\"module\" src=\"https://cdn.jsdelivr.net/npm/@kitn.ai/ui/dist/kitn-chat.es.js\"></script>\n\n<kai-popover></kai-popover>\n<script type=\"module\">\n const el = document.querySelector('kai-popover');\n el.addEventListener('kai-open-change', (e) => console.log(e.detail));\n</script>",
316
+ "react": "import { Popover } from '@kitn.ai/ui/react';\n\n<Popover\n onOpenChange={(e) => console.log(e.detail)}\n/>",
317
+ "vue": "<kai-popover\n @kai-open-change=\"onOpenChange\"\n/>",
318
+ "svelte": "<script>\n import '@kitn.ai/ui/elements';\n</script>\n\n<kai-popover\n on:kai-open-change={onOpenChange}\n></kai-popover>",
319
+ "angular": "<kai-popover\n (kai-open-change)=\"onOpenChange($event)\"\n></kai-popover>"
320
+ }
321
+ },
322
+ {
323
+ "tag": "kai-prompt-input",
324
+ "displayName": "PromptInput",
325
+ "hasSolid": true,
326
+ "snippets": {
327
+ "html": "<script type=\"module\" src=\"https://cdn.jsdelivr.net/npm/@kitn.ai/ui/dist/kitn-chat.es.js\"></script>\n\n<kai-prompt-input></kai-prompt-input>\n<script type=\"module\">\n const el = document.querySelector('kai-prompt-input');\n el.addEventListener('kai-search', (e) => console.log(e.detail));\n el.addEventListener('kai-slash-select', (e) => console.log(e.detail));\n el.addEventListener('kai-stop', (e) => console.log(e.detail));\n el.addEventListener('kai-submit', (e) => console.log(e.detail));\n el.addEventListener('kai-suggestion-click', (e) => console.log(e.detail));\n el.addEventListener('kai-toolbar-action', (e) => console.log(e.detail));\n el.addEventListener('kai-value-change', (e) => console.log(e.detail));\n el.addEventListener('kai-voice', (e) => console.log(e.detail));\n</script>",
328
+ "react": "import { PromptInput } from '@kitn.ai/ui/react';\n\n<PromptInput\n onSearch={(e) => console.log(e.detail)}\n onSlashSelect={(e) => console.log(e.detail)}\n onStop={(e) => console.log(e.detail)}\n onSubmit={(e) => console.log(e.detail)}\n onSuggestionClick={(e) => console.log(e.detail)}\n onToolbarAction={(e) => console.log(e.detail)}\n onValueChange={(e) => console.log(e.detail)}\n onVoice={(e) => console.log(e.detail)}\n/>",
329
+ "vue": "<kai-prompt-input\n @kai-search=\"onSearch\"\n @kai-slash-select=\"onSlashSelect\"\n @kai-stop=\"onStop\"\n @kai-submit=\"onSubmit\"\n @kai-suggestion-click=\"onSuggestionClick\"\n @kai-toolbar-action=\"onToolbarAction\"\n @kai-value-change=\"onValueChange\"\n @kai-voice=\"onVoice\"\n/>",
330
+ "svelte": "<script>\n import '@kitn.ai/ui/elements';\n</script>\n\n<kai-prompt-input\n on:kai-search={onSearch}\n on:kai-slash-select={onSlashSelect}\n on:kai-stop={onStop}\n on:kai-submit={onSubmit}\n on:kai-suggestion-click={onSuggestionClick}\n on:kai-toolbar-action={onToolbarAction}\n on:kai-value-change={onValueChange}\n on:kai-voice={onVoice}\n></kai-prompt-input>",
331
+ "angular": "<kai-prompt-input\n (kai-search)=\"onSearch($event)\"\n (kai-slash-select)=\"onSlashSelect($event)\"\n (kai-stop)=\"onStop($event)\"\n (kai-submit)=\"onSubmit($event)\"\n (kai-suggestion-click)=\"onSuggestionClick($event)\"\n (kai-toolbar-action)=\"onToolbarAction($event)\"\n (kai-value-change)=\"onValueChange($event)\"\n (kai-voice)=\"onVoice($event)\"\n></kai-prompt-input>",
332
+ "solid": "import { PromptInput } from '@kitn.ai/ui';\n\n<PromptInput\n onSearch={(e) => console.log(e.detail)}\n onSlashSelect={(e) => console.log(e.detail)}\n onStop={(e) => console.log(e.detail)}\n onSubmit={(e) => console.log(e.detail)}\n onSuggestionClick={(e) => console.log(e.detail)}\n onToolbarAction={(e) => console.log(e.detail)}\n onValueChange={(e) => console.log(e.detail)}\n onVoice={(e) => console.log(e.detail)}\n/>"
333
+ }
334
+ },
335
+ {
336
+ "tag": "kai-reasoning",
337
+ "displayName": "Reasoning",
338
+ "hasSolid": true,
339
+ "snippets": {
340
+ "html": "<script type=\"module\" src=\"https://cdn.jsdelivr.net/npm/@kitn.ai/ui/dist/kitn-chat.es.js\"></script>\n\n<kai-reasoning text=\"…\"></kai-reasoning>\n<script type=\"module\">\n const el = document.querySelector('kai-reasoning');\n el.addEventListener('kai-open-change', (e) => console.log(e.detail));\n</script>",
341
+ "react": "import { Reasoning } from '@kitn.ai/ui/react';\n\n<Reasoning\n text={text}\n onOpenChange={(e) => console.log(e.detail)}\n/>",
342
+ "vue": "<kai-reasoning\n :text=\"text\"\n @kai-open-change=\"onOpenChange\"\n/>",
343
+ "svelte": "<script>\n import '@kitn.ai/ui/elements';\n</script>\n\n<kai-reasoning\n {text}\n on:kai-open-change={onOpenChange}\n></kai-reasoning>",
344
+ "angular": "<kai-reasoning\n [text]=\"text\"\n (kai-open-change)=\"onOpenChange($event)\"\n></kai-reasoning>",
345
+ "solid": "import { Reasoning } from '@kitn.ai/ui';\n\n<Reasoning\n text={text}\n onOpenChange={(e) => console.log(e.detail)}\n/>"
346
+ }
347
+ },
348
+ {
349
+ "tag": "kai-remote",
350
+ "displayName": "Remote",
351
+ "hasSolid": false,
352
+ "snippets": {
353
+ "html": "<script type=\"module\" src=\"https://cdn.jsdelivr.net/npm/@kitn.ai/ui/dist/kitn-chat.es.js\"></script>\n\n<kai-remote></kai-remote>",
354
+ "react": "import { Remote } from '@kitn.ai/ui/react';\n\n<Remote />",
355
+ "vue": "<kai-remote />",
356
+ "svelte": "<script>\n import '@kitn.ai/ui/elements';\n</script>\n\n<kai-remote></kai-remote>",
357
+ "angular": "<kai-remote></kai-remote>"
358
+ }
359
+ },
360
+ {
361
+ "tag": "kai-resizable",
362
+ "displayName": "Resizable",
363
+ "hasSolid": true,
364
+ "snippets": {
365
+ "html": "<script type=\"module\" src=\"https://cdn.jsdelivr.net/npm/@kitn.ai/ui/dist/kitn-chat.es.js\"></script>\n\n<kai-resizable></kai-resizable>\n<script type=\"module\">\n const el = document.querySelector('kai-resizable');\n el.addEventListener('kai-change', (e) => console.log(e.detail));\n el.addEventListener('kai-maximize-change', (e) => console.log(e.detail));\n</script>",
366
+ "react": "import { Resizable } from '@kitn.ai/ui/react';\n\n<Resizable\n onChange={(e) => console.log(e.detail)}\n onMaximizeChange={(e) => console.log(e.detail)}\n/>",
367
+ "vue": "<kai-resizable\n @kai-change=\"onChange\"\n @kai-maximize-change=\"onMaximizeChange\"\n/>",
368
+ "svelte": "<script>\n import '@kitn.ai/ui/elements';\n</script>\n\n<kai-resizable\n on:kai-change={onChange}\n on:kai-maximize-change={onMaximizeChange}\n></kai-resizable>",
369
+ "angular": "<kai-resizable\n (kai-change)=\"onChange($event)\"\n (kai-maximize-change)=\"onMaximizeChange($event)\"\n></kai-resizable>",
370
+ "solid": "import { Resizable } from '@kitn.ai/ui';\n\n<Resizable\n onChange={(e) => console.log(e.detail)}\n onMaximizeChange={(e) => console.log(e.detail)}\n/>"
371
+ }
372
+ },
373
+ {
374
+ "tag": "kai-resizable-item",
375
+ "displayName": "ResizableItem",
376
+ "hasSolid": false,
377
+ "snippets": {
378
+ "html": "<script type=\"module\" src=\"https://cdn.jsdelivr.net/npm/@kitn.ai/ui/dist/kitn-chat.es.js\"></script>\n\n<kai-resizable-item></kai-resizable-item>\n<script type=\"module\">\n const el = document.querySelector('kai-resizable-item');\n el.addEventListener('kai-change', (e) => console.log(e.detail));\n el.addEventListener('kai-maximize-change', (e) => console.log(e.detail));\n</script>",
379
+ "react": "import { ResizableItem } from '@kitn.ai/ui/react';\n\n<ResizableItem\n onChange={(e) => console.log(e.detail)}\n onMaximizeChange={(e) => console.log(e.detail)}\n/>",
380
+ "vue": "<kai-resizable-item\n @kai-change=\"onChange\"\n @kai-maximize-change=\"onMaximizeChange\"\n/>",
381
+ "svelte": "<script>\n import '@kitn.ai/ui/elements';\n</script>\n\n<kai-resizable-item\n on:kai-change={onChange}\n on:kai-maximize-change={onMaximizeChange}\n></kai-resizable-item>",
382
+ "angular": "<kai-resizable-item\n (kai-change)=\"onChange($event)\"\n (kai-maximize-change)=\"onMaximizeChange($event)\"\n></kai-resizable-item>"
383
+ }
384
+ },
385
+ {
386
+ "tag": "kai-response-stream",
387
+ "displayName": "ResponseStream",
388
+ "hasSolid": true,
389
+ "snippets": {
390
+ "html": "<script type=\"module\" src=\"https://cdn.jsdelivr.net/npm/@kitn.ai/ui/dist/kitn-chat.es.js\"></script>\n\n<kai-response-stream></kai-response-stream>\n<script type=\"module\">\n const el = document.querySelector('kai-response-stream');\n el.addEventListener('kai-complete', (e) => console.log(e.detail));\n</script>",
391
+ "react": "import { ResponseStream } from '@kitn.ai/ui/react';\n\n<ResponseStream\n onComplete={(e) => console.log(e.detail)}\n/>",
392
+ "vue": "<kai-response-stream\n @kai-complete=\"onComplete\"\n/>",
393
+ "svelte": "<script>\n import '@kitn.ai/ui/elements';\n</script>\n\n<kai-response-stream\n on:kai-complete={onComplete}\n></kai-response-stream>",
394
+ "angular": "<kai-response-stream\n (kai-complete)=\"onComplete($event)\"\n></kai-response-stream>",
395
+ "solid": "import { ResponseStream } from '@kitn.ai/ui';\n\n<ResponseStream\n onComplete={(e) => console.log(e.detail)}\n/>"
396
+ }
397
+ },
398
+ {
399
+ "tag": "kai-scope-picker",
400
+ "displayName": "ScopePicker",
401
+ "hasSolid": true,
402
+ "snippets": {
403
+ "html": "<script type=\"module\" src=\"https://cdn.jsdelivr.net/npm/@kitn.ai/ui/dist/kitn-chat.es.js\"></script>\n\n<kai-scope-picker></kai-scope-picker>\n<script type=\"module\">\n const el = document.querySelector('kai-scope-picker');\n el.availableAuthors = /* … */;\n el.availableTags = /* … */;\n el.addEventListener('kai-scope-change', (e) => console.log(e.detail));\n</script>",
404
+ "react": "import { ScopePicker } from '@kitn.ai/ui/react';\n\n<ScopePicker\n availableAuthors={availableAuthors}\n availableTags={availableTags}\n onScopeChange={(e) => console.log(e.detail)}\n/>",
405
+ "vue": "<kai-scope-picker\n :availableAuthors.prop=\"availableAuthors\"\n :availableTags.prop=\"availableTags\"\n @kai-scope-change=\"onScopeChange\"\n/>",
406
+ "svelte": "<script>\n import '@kitn.ai/ui/elements';\n</script>\n\n<kai-scope-picker\n {availableAuthors}\n {availableTags}\n on:kai-scope-change={onScopeChange}\n></kai-scope-picker>",
407
+ "angular": "<kai-scope-picker\n [availableAuthors]=\"availableAuthors\"\n [availableTags]=\"availableTags\"\n (kai-scope-change)=\"onScopeChange($event)\"\n></kai-scope-picker>",
408
+ "solid": "import { ChatScopePicker } from '@kitn.ai/ui';\n\n<ChatScopePicker\n availableAuthors={availableAuthors}\n availableTags={availableTags}\n onScopeChange={(e) => console.log(e.detail)}\n/>"
409
+ }
410
+ },
411
+ {
412
+ "tag": "kai-scroll-button",
413
+ "displayName": "ScrollButton",
414
+ "hasSolid": true,
415
+ "snippets": {
416
+ "html": "<script type=\"module\" src=\"https://cdn.jsdelivr.net/npm/@kitn.ai/ui/dist/kitn-chat.es.js\"></script>\n\n<kai-scroll-button></kai-scroll-button>\n<script type=\"module\">\n const el = document.querySelector('kai-scroll-button');\n el.addEventListener('kai-scroll', (e) => console.log(e.detail));\n</script>",
417
+ "react": "import { ScrollButton } from '@kitn.ai/ui/react';\n\n<ScrollButton\n onScroll={(e) => console.log(e.detail)}\n/>",
418
+ "vue": "<kai-scroll-button\n @kai-scroll=\"onScroll\"\n/>",
419
+ "svelte": "<script>\n import '@kitn.ai/ui/elements';\n</script>\n\n<kai-scroll-button\n on:kai-scroll={onScroll}\n></kai-scroll-button>",
420
+ "angular": "<kai-scroll-button\n (kai-scroll)=\"onScroll($event)\"\n></kai-scroll-button>",
421
+ "solid": "import { ScrollButton } from '@kitn.ai/ui';\n\n<ScrollButton\n onScroll={(e) => console.log(e.detail)}\n/>"
422
+ }
423
+ },
424
+ {
425
+ "tag": "kai-skills",
426
+ "displayName": "Skills",
427
+ "hasSolid": true,
428
+ "snippets": {
429
+ "html": "<script type=\"module\" src=\"https://cdn.jsdelivr.net/npm/@kitn.ai/ui/dist/kitn-chat.es.js\"></script>\n\n<kai-skills></kai-skills>\n<script type=\"module\">\n const el = document.querySelector('kai-skills');\n el.skills = /* … */;\n</script>",
430
+ "react": "import { Skills } from '@kitn.ai/ui/react';\n\n<Skills\n skills={skills}\n/>",
431
+ "vue": "<kai-skills\n :skills.prop=\"skills\"\n/>",
432
+ "svelte": "<script>\n import '@kitn.ai/ui/elements';\n</script>\n\n<kai-skills\n {skills}\n></kai-skills>",
433
+ "angular": "<kai-skills\n [skills]=\"skills\"\n></kai-skills>",
434
+ "solid": "import { MessageSkills } from '@kitn.ai/ui';\n\n<MessageSkills\n skills={skills}\n/>"
435
+ }
436
+ },
437
+ {
438
+ "tag": "kai-source",
439
+ "displayName": "Source",
440
+ "hasSolid": true,
441
+ "snippets": {
442
+ "html": "<script type=\"module\" src=\"https://cdn.jsdelivr.net/npm/@kitn.ai/ui/dist/kitn-chat.es.js\"></script>\n\n<kai-source></kai-source>",
443
+ "react": "import { Source } from '@kitn.ai/ui/react';\n\n<Source />",
444
+ "vue": "<kai-source />",
445
+ "svelte": "<script>\n import '@kitn.ai/ui/elements';\n</script>\n\n<kai-source></kai-source>",
446
+ "angular": "<kai-source></kai-source>",
447
+ "solid": "import { Source } from '@kitn.ai/ui';\n\n<Source />"
448
+ }
449
+ },
450
+ {
451
+ "tag": "kai-sources",
452
+ "displayName": "Sources",
453
+ "hasSolid": true,
454
+ "snippets": {
455
+ "html": "<script type=\"module\" src=\"https://cdn.jsdelivr.net/npm/@kitn.ai/ui/dist/kitn-chat.es.js\"></script>\n\n<kai-sources></kai-sources>\n<script type=\"module\">\n const el = document.querySelector('kai-sources');\n el.sources = /* … */;\n</script>",
456
+ "react": "import { Sources } from '@kitn.ai/ui/react';\n\n<Sources\n sources={sources}\n/>",
457
+ "vue": "<kai-sources\n :sources.prop=\"sources\"\n/>",
458
+ "svelte": "<script>\n import '@kitn.ai/ui/elements';\n</script>\n\n<kai-sources\n {sources}\n></kai-sources>",
459
+ "angular": "<kai-sources\n [sources]=\"sources\"\n></kai-sources>",
460
+ "solid": "import { SourceList } from '@kitn.ai/ui';\n\n<SourceList\n sources={sources}\n/>"
461
+ }
462
+ },
463
+ {
464
+ "tag": "kai-suggestions",
465
+ "displayName": "Suggestions",
466
+ "hasSolid": false,
467
+ "snippets": {
468
+ "html": "<script type=\"module\" src=\"https://cdn.jsdelivr.net/npm/@kitn.ai/ui/dist/kitn-chat.es.js\"></script>\n\n<kai-suggestions></kai-suggestions>\n<script type=\"module\">\n const el = document.querySelector('kai-suggestions');\n el.suggestions = /* … */;\n el.addEventListener('kai-select', (e) => console.log(e.detail));\n</script>",
469
+ "react": "import { Suggestions } from '@kitn.ai/ui/react';\n\n<Suggestions\n suggestions={suggestions}\n onSelect={(e) => console.log(e.detail)}\n/>",
470
+ "vue": "<kai-suggestions\n :suggestions.prop=\"suggestions\"\n @kai-select=\"onSelect\"\n/>",
471
+ "svelte": "<script>\n import '@kitn.ai/ui/elements';\n</script>\n\n<kai-suggestions\n {suggestions}\n on:kai-select={onSelect}\n></kai-suggestions>",
472
+ "angular": "<kai-suggestions\n [suggestions]=\"suggestions\"\n (kai-select)=\"onSelect($event)\"\n></kai-suggestions>"
473
+ }
474
+ },
475
+ {
476
+ "tag": "kai-switch",
477
+ "displayName": "Switch",
478
+ "hasSolid": false,
479
+ "snippets": {
480
+ "html": "<script type=\"module\" src=\"https://cdn.jsdelivr.net/npm/@kitn.ai/ui/dist/kitn-chat.es.js\"></script>\n\n<kai-switch></kai-switch>\n<script type=\"module\">\n const el = document.querySelector('kai-switch');\n el.addEventListener('kai-change', (e) => console.log(e.detail));\n</script>",
481
+ "react": "import { Switch } from '@kitn.ai/ui/react';\n\n<Switch\n onChange={(e) => console.log(e.detail)}\n/>",
482
+ "vue": "<kai-switch\n @kai-change=\"onChange\"\n/>",
483
+ "svelte": "<script>\n import '@kitn.ai/ui/elements';\n</script>\n\n<kai-switch\n on:kai-change={onChange}\n></kai-switch>",
484
+ "angular": "<kai-switch\n (kai-change)=\"onChange($event)\"\n></kai-switch>"
485
+ }
486
+ },
487
+ {
488
+ "tag": "kai-tasks",
489
+ "displayName": "Tasks",
490
+ "hasSolid": false,
491
+ "snippets": {
492
+ "html": "<script type=\"module\" src=\"https://cdn.jsdelivr.net/npm/@kitn.ai/ui/dist/kitn-chat.es.js\"></script>\n\n<kai-tasks></kai-tasks>",
493
+ "react": "import { Tasks } from '@kitn.ai/ui/react';\n\n<Tasks />",
494
+ "vue": "<kai-tasks />",
495
+ "svelte": "<script>\n import '@kitn.ai/ui/elements';\n</script>\n\n<kai-tasks></kai-tasks>",
496
+ "angular": "<kai-tasks></kai-tasks>"
497
+ }
498
+ },
499
+ {
500
+ "tag": "kai-text-shimmer",
501
+ "displayName": "TextShimmer",
502
+ "hasSolid": true,
503
+ "snippets": {
504
+ "html": "<script type=\"module\" src=\"https://cdn.jsdelivr.net/npm/@kitn.ai/ui/dist/kitn-chat.es.js\"></script>\n\n<kai-text-shimmer></kai-text-shimmer>",
505
+ "react": "import { TextShimmer } from '@kitn.ai/ui/react';\n\n<TextShimmer />",
506
+ "vue": "<kai-text-shimmer />",
507
+ "svelte": "<script>\n import '@kitn.ai/ui/elements';\n</script>\n\n<kai-text-shimmer></kai-text-shimmer>",
508
+ "angular": "<kai-text-shimmer></kai-text-shimmer>",
509
+ "solid": "import { TextShimmer } from '@kitn.ai/ui';\n\n<TextShimmer />"
510
+ }
511
+ },
512
+ {
513
+ "tag": "kai-thinking-bar",
514
+ "displayName": "ThinkingBar",
515
+ "hasSolid": true,
516
+ "snippets": {
517
+ "html": "<script type=\"module\" src=\"https://cdn.jsdelivr.net/npm/@kitn.ai/ui/dist/kitn-chat.es.js\"></script>\n\n<kai-thinking-bar></kai-thinking-bar>\n<script type=\"module\">\n const el = document.querySelector('kai-thinking-bar');\n el.addEventListener('kai-stop', (e) => console.log(e.detail));\n</script>",
518
+ "react": "import { ThinkingBar } from '@kitn.ai/ui/react';\n\n<ThinkingBar\n onStop={(e) => console.log(e.detail)}\n/>",
519
+ "vue": "<kai-thinking-bar\n @kai-stop=\"onStop\"\n/>",
520
+ "svelte": "<script>\n import '@kitn.ai/ui/elements';\n</script>\n\n<kai-thinking-bar\n on:kai-stop={onStop}\n></kai-thinking-bar>",
521
+ "angular": "<kai-thinking-bar\n (kai-stop)=\"onStop($event)\"\n></kai-thinking-bar>",
522
+ "solid": "import { ThinkingBar } from '@kitn.ai/ui';\n\n<ThinkingBar\n onStop={(e) => console.log(e.detail)}\n/>"
523
+ }
524
+ },
525
+ {
526
+ "tag": "kai-tool",
527
+ "displayName": "Tool",
528
+ "hasSolid": true,
529
+ "snippets": {
530
+ "html": "<script type=\"module\" src=\"https://cdn.jsdelivr.net/npm/@kitn.ai/ui/dist/kitn-chat.es.js\"></script>\n\n<kai-tool></kai-tool>",
531
+ "react": "import { Tool } from '@kitn.ai/ui/react';\n\n<Tool />",
532
+ "vue": "<kai-tool />",
533
+ "svelte": "<script>\n import '@kitn.ai/ui/elements';\n</script>\n\n<kai-tool></kai-tool>",
534
+ "angular": "<kai-tool></kai-tool>",
535
+ "solid": "import { Tool } from '@kitn.ai/ui';\n\n<Tool />"
536
+ }
537
+ },
538
+ {
539
+ "tag": "kai-voice-input",
540
+ "displayName": "VoiceInput",
541
+ "hasSolid": true,
542
+ "snippets": {
543
+ "html": "<script type=\"module\" src=\"https://cdn.jsdelivr.net/npm/@kitn.ai/ui/dist/kitn-chat.es.js\"></script>\n\n<kai-voice-input></kai-voice-input>\n<script type=\"module\">\n const el = document.querySelector('kai-voice-input');\n el.addEventListener('kai-audio-captured', (e) => console.log(e.detail));\n el.addEventListener('kai-transcription', (e) => console.log(e.detail));\n</script>",
544
+ "react": "import { VoiceInput } from '@kitn.ai/ui/react';\n\n<VoiceInput\n onAudioCaptured={(e) => console.log(e.detail)}\n onTranscription={(e) => console.log(e.detail)}\n/>",
545
+ "vue": "<kai-voice-input\n @kai-audio-captured=\"onAudioCaptured\"\n @kai-transcription=\"onTranscription\"\n/>",
546
+ "svelte": "<script>\n import '@kitn.ai/ui/elements';\n</script>\n\n<kai-voice-input\n on:kai-audio-captured={onAudioCaptured}\n on:kai-transcription={onTranscription}\n></kai-voice-input>",
547
+ "angular": "<kai-voice-input\n (kai-audio-captured)=\"onAudioCaptured($event)\"\n (kai-transcription)=\"onTranscription($event)\"\n></kai-voice-input>",
548
+ "solid": "import { VoiceInput } from '@kitn.ai/ui';\n\n<VoiceInput\n onAudioCaptured={(e) => console.log(e.detail)}\n onTranscription={(e) => console.log(e.detail)}\n/>"
549
+ }
550
+ },
551
+ {
552
+ "tag": "kai-workspace",
553
+ "displayName": "Workspace",
554
+ "hasSolid": false,
555
+ "snippets": {
556
+ "html": "<script type=\"module\" src=\"https://cdn.jsdelivr.net/npm/@kitn.ai/ui/dist/kitn-chat.es.js\"></script>\n\n<kai-workspace></kai-workspace>\n<script type=\"module\">\n const el = document.querySelector('kai-workspace');\n el.groups = /* … */;\n el.conversations = /* … */;\n el.messages = /* … */;\n el.addEventListener('kai-conversation-select', (e) => console.log(e.detail));\n el.addEventListener('kai-message-action', (e) => console.log(e.detail));\n el.addEventListener('kai-model-change', (e) => console.log(e.detail));\n el.addEventListener('kai-new-chat', (e) => console.log(e.detail));\n el.addEventListener('kai-search', (e) => console.log(e.detail));\n el.addEventListener('kai-sidebar-toggle', (e) => console.log(e.detail));\n el.addEventListener('kai-slash-select', (e) => console.log(e.detail));\n el.addEventListener('kai-submit', (e) => console.log(e.detail));\n el.addEventListener('kai-suggestion-click', (e) => console.log(e.detail));\n el.addEventListener('kai-value-change', (e) => console.log(e.detail));\n el.addEventListener('kai-voice', (e) => console.log(e.detail));\n</script>",
557
+ "react": "import { Workspace } from '@kitn.ai/ui/react';\n\n<Workspace\n groups={groups}\n conversations={conversations}\n messages={messages}\n onConversationSelect={(e) => console.log(e.detail)}\n onMessageAction={(e) => console.log(e.detail)}\n onModelChange={(e) => console.log(e.detail)}\n onNewChat={(e) => console.log(e.detail)}\n onSearch={(e) => console.log(e.detail)}\n onSidebarToggle={(e) => console.log(e.detail)}\n onSlashSelect={(e) => console.log(e.detail)}\n onSubmit={(e) => console.log(e.detail)}\n onSuggestionClick={(e) => console.log(e.detail)}\n onValueChange={(e) => console.log(e.detail)}\n onVoice={(e) => console.log(e.detail)}\n/>",
558
+ "vue": "<kai-workspace\n :groups.prop=\"groups\"\n :conversations.prop=\"conversations\"\n :messages.prop=\"messages\"\n @kai-conversation-select=\"onConversationSelect\"\n @kai-message-action=\"onMessageAction\"\n @kai-model-change=\"onModelChange\"\n @kai-new-chat=\"onNewChat\"\n @kai-search=\"onSearch\"\n @kai-sidebar-toggle=\"onSidebarToggle\"\n @kai-slash-select=\"onSlashSelect\"\n @kai-submit=\"onSubmit\"\n @kai-suggestion-click=\"onSuggestionClick\"\n @kai-value-change=\"onValueChange\"\n @kai-voice=\"onVoice\"\n/>",
559
+ "svelte": "<script>\n import '@kitn.ai/ui/elements';\n</script>\n\n<kai-workspace\n {groups}\n {conversations}\n {messages}\n on:kai-conversation-select={onConversationSelect}\n on:kai-message-action={onMessageAction}\n on:kai-model-change={onModelChange}\n on:kai-new-chat={onNewChat}\n on:kai-search={onSearch}\n on:kai-sidebar-toggle={onSidebarToggle}\n on:kai-slash-select={onSlashSelect}\n on:kai-submit={onSubmit}\n on:kai-suggestion-click={onSuggestionClick}\n on:kai-value-change={onValueChange}\n on:kai-voice={onVoice}\n></kai-workspace>",
560
+ "angular": "<kai-workspace\n [groups]=\"groups\"\n [conversations]=\"conversations\"\n [messages]=\"messages\"\n (kai-conversation-select)=\"onConversationSelect($event)\"\n (kai-message-action)=\"onMessageAction($event)\"\n (kai-model-change)=\"onModelChange($event)\"\n (kai-new-chat)=\"onNewChat($event)\"\n (kai-search)=\"onSearch($event)\"\n (kai-sidebar-toggle)=\"onSidebarToggle($event)\"\n (kai-slash-select)=\"onSlashSelect($event)\"\n (kai-submit)=\"onSubmit($event)\"\n (kai-suggestion-click)=\"onSuggestionClick($event)\"\n (kai-value-change)=\"onValueChange($event)\"\n (kai-voice)=\"onVoice($event)\"\n></kai-workspace>"
561
+ }
562
+ }
563
+ ]