@kitn.ai/ui 0.28.0 → 0.30.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (615) hide show
  1. package/README.md +11 -7
  2. package/dist/{Icon-DObhsRtm.js → Icon-BzBET3E-.js} +1 -1
  3. package/dist/{action-icons-CcgNN2oT.js → action-icons-DaW2pU6m.js} +1 -1
  4. package/dist/agent-tooling/construct/public.d.ts +15 -0
  5. package/dist/agent-tooling/construct/schema.d.ts +111 -0
  6. package/dist/arrow-down-D783iMJj.js +1 -0
  7. package/dist/arrow-left-0VLM5kyg.js +1 -0
  8. package/dist/artifact-DGjzHYUT.js +1 -0
  9. package/dist/{attachments-Qr4kg-2b.js → attachments-YvXHlg88.js} +1 -1
  10. package/dist/{audio-visualizer-DToYdfSc.js → audio-visualizer-9lz5IHsL.js} +1 -1
  11. package/dist/{badge-CdEu_jn2.js → badge-Dh_vp8A5.js} +1 -1
  12. package/dist/{bell-DQAAOpDz.js → bell-CT7_WUwS.js} +1 -1
  13. package/dist/{button-DkuOnGLy.js → button-C_3te6fm.js} +1 -1
  14. package/dist/{card-renderer-Jx70m6_l.js → card-renderer-DZVaGH2e.js} +1 -1
  15. package/dist/check-CiEOVnEN.js +1 -0
  16. package/dist/{checkbox-D7iRB3nL.js → checkbox-Bu2T2e0U.js} +1 -1
  17. package/dist/{checkbox-group-B2_rpoPM.js → checkbox-group-BiryEXPQ.js} +1 -1
  18. package/dist/chevron-down-CSobuZRG.js +1 -0
  19. package/dist/chevron-right-DR9ZAP-2.js +1 -0
  20. package/dist/{choice-card-m0BYqqOK.js → choice-card-CM6IjkmL.js} +1 -1
  21. package/dist/circle-BC66EYF7.js +1 -0
  22. package/dist/circle-check-BqmahW0O.js +1 -0
  23. package/dist/{circle-x-BPG0iPst.js → circle-x-Bk-dA5Wf.js} +1 -1
  24. package/dist/{code-block-ClMLKb7C.js → code-block-B26t-Q7q.js} +1 -1
  25. package/dist/{collapsible-B4DlWicL.js → collapsible-Bhc636Cf.js} +1 -1
  26. package/dist/components/builder-composer-triggers.d.ts +62 -0
  27. package/dist/components/builder-layout.d.ts +54 -0
  28. package/dist/components/builder-message-actions.d.ts +72 -0
  29. package/dist/components/builder-panel.d.ts +189 -0
  30. package/dist/components/builder-preview.d.ts +11 -0
  31. package/dist/components/builder-shell-controls.d.ts +69 -0
  32. package/dist/components/builder-skeleton.d.ts +58 -0
  33. package/dist/components/builder-start.d.ts +75 -0
  34. package/dist/components/builder-workspace-variants.d.ts +23 -0
  35. package/dist/components/captions.d.ts +66 -0
  36. package/dist/{composer-sQ0HcvyG.js → composer-DMI85B6j.js} +1 -1
  37. package/dist/{confirm-card-rQWDQsnC.js → confirm-card-B0YIAwXp.js} +1 -1
  38. package/dist/construct-cli.es.js +3 -3
  39. package/dist/construct.d.ts +5 -0
  40. package/dist/construct.js +327 -0
  41. package/dist/{context-0kg4ZX1J.js → context-DWgfhqWp.js} +1 -1
  42. package/dist/controllable-BagRpyHv.js +1 -0
  43. package/dist/{conversation-item-BxwQLaFJ.js → conversation-item-BsOsVGmT.js} +1 -1
  44. package/dist/{conversation-list-BCfGN1JU.js → conversation-list-aX3Vtc7L.js} +1 -1
  45. package/dist/{copy-n9u9rqpi.js → copy-BmEwsNhJ.js} +1 -1
  46. package/dist/core-C8fzo39E.js +1 -12
  47. package/dist/{create-tween-uPkArjIG.js → create-tween-CNOAU3Fx.js} +1 -1
  48. package/dist/{create-tween-C-q-JCM-.js → create-tween-WfqiENls.js} +1 -1
  49. package/dist/{create-tween-CRrJXxBd.js → create-tween-wlFtW9Kh.js} +1 -1
  50. package/dist/{create-tween-DZ3RRDHD.js → create-tween-zt79ba32.js} +1 -1
  51. package/dist/{default-input-CaMrJkgH.js → default-input-DMV5Eaze.js} +1 -1
  52. package/dist/define-CI0y3eE4.js +1 -0
  53. package/dist/define.js +40 -40
  54. package/dist/define.server.js +45 -45
  55. package/dist/{disclosure-WUImBbDv.js → disclosure-NnACBxsC.js} +1 -1
  56. package/dist/{dropdown-wZVeJOMd.js → dropdown-DT7G0RGR.js} +1 -1
  57. package/dist/elements/agent-card.js +1 -1
  58. package/dist/elements/artifact.js +1 -1
  59. package/dist/elements/attachments.js +1 -1
  60. package/dist/elements/audio-visualizer.js +1 -1
  61. package/dist/elements/avatar.js +1 -1
  62. package/dist/elements/badge.js +1 -1
  63. package/dist/elements/button.js +1 -1
  64. package/dist/elements/card.js +1 -1
  65. package/dist/elements/cards.js +1 -1
  66. package/dist/elements/chain-of-thought.js +1 -1
  67. package/dist/elements/chat-scope-picker.js +1 -1
  68. package/dist/elements/chat-workspace.js +1 -1
  69. package/dist/elements/chat.js +1 -1
  70. package/dist/elements/checkbox-group.js +1 -1
  71. package/dist/elements/checkbox.js +1 -1
  72. package/dist/elements/checkpoint.js +1 -1
  73. package/dist/elements/choice.js +1 -1
  74. package/dist/elements/coachmark.js +1 -1
  75. package/dist/elements/code-block.js +1 -1
  76. package/dist/elements/command.js +1 -1
  77. package/dist/elements/compare.js +1 -1
  78. package/dist/elements/composer.js +1 -1
  79. package/dist/elements/confirm-card.js +1 -1
  80. package/dist/elements/context-meter.js +1 -1
  81. package/dist/elements/conversation-item.js +1 -1
  82. package/dist/elements/conversation-list.js +1 -1
  83. package/dist/elements/dialog.js +1 -1
  84. package/dist/elements/dock.js +1 -1
  85. package/dist/elements/dropdown.js +1 -1
  86. package/dist/elements/editable-label.js +1 -1
  87. package/dist/elements/embed.js +1 -1
  88. package/dist/elements/empty.js +1 -1
  89. package/dist/elements/feedback-bar.js +1 -1
  90. package/dist/elements/file-tree.js +1 -1
  91. package/dist/elements/file-upload.js +1 -1
  92. package/dist/elements/form.js +1 -1
  93. package/dist/elements/hover-card.js +1 -1
  94. package/dist/elements/icon.js +1 -1
  95. package/dist/elements/image.js +1 -1
  96. package/dist/elements/input.js +1 -1
  97. package/dist/elements/kbd.js +1 -1
  98. package/dist/elements/link-preview.js +1 -1
  99. package/dist/elements/loader.js +1 -1
  100. package/dist/elements/markdown.js +1 -1
  101. package/dist/elements/menu.js +1 -1
  102. package/dist/elements/message-skills.js +1 -1
  103. package/dist/elements/message.js +1 -1
  104. package/dist/elements/model-switcher.js +1 -1
  105. package/dist/elements/nav.js +1 -1
  106. package/dist/elements/notice.js +1 -1
  107. package/dist/elements/pane-grid.js +1 -1
  108. package/dist/elements/pane-group.js +1 -1
  109. package/dist/elements/pane.js +1 -1
  110. package/dist/elements/popover.js +1 -1
  111. package/dist/elements/progress-bar.js +1 -1
  112. package/dist/elements/prompt-dock.js +1 -1
  113. package/dist/elements/prompt-input.js +1 -1
  114. package/dist/elements/prompt-suggestions.js +1 -1
  115. package/dist/elements/radio-group.js +1 -1
  116. package/dist/elements/reasoning.js +1 -1
  117. package/dist/elements/remote.js +1 -1
  118. package/dist/elements/resizable.js +1 -1
  119. package/dist/elements/response-stream.js +1 -1
  120. package/dist/elements/screen.js +1 -1
  121. package/dist/elements/scroll-area.js +1 -1
  122. package/dist/elements/scroll-button.js +1 -1
  123. package/dist/elements/search.js +1 -1
  124. package/dist/elements/segmented.js +1 -1
  125. package/dist/elements/select.js +1 -1
  126. package/dist/elements/separator.js +1 -1
  127. package/dist/elements/setting-item.js +1 -1
  128. package/dist/elements/settings-group.js +1 -1
  129. package/dist/elements/skeleton.js +1 -1
  130. package/dist/elements/slider.js +1 -1
  131. package/dist/elements/source.js +1 -1
  132. package/dist/elements/status.js +1 -1
  133. package/dist/elements/switch.js +1 -1
  134. package/dist/elements/tabs.js +1 -1
  135. package/dist/elements/tasks.js +1 -1
  136. package/dist/elements/text-shimmer.js +1 -1
  137. package/dist/elements/thinking-bar.js +1 -1
  138. package/dist/elements/thread.js +1 -1
  139. package/dist/elements/toast.js +1 -1
  140. package/dist/elements/tool.js +1 -1
  141. package/dist/elements/tooltip.js +1 -1
  142. package/dist/elements/voice-input.js +1 -1
  143. package/dist/elements/voice-output.js +1 -1
  144. package/dist/{ellipsis-CbOpJnU3.js → ellipsis-6pJ7SxYT.js} +1 -1
  145. package/dist/{embed-CrfjkbUG.js → embed-BMje-nxj.js} +1 -1
  146. package/dist/engine-javascript-C1x7zo1_.js +1 -141
  147. package/dist/{external-link-ByXAwBBQ.js → external-link-Beh9DKeR.js} +1 -1
  148. package/dist/{file-text-DMib2qwt.js → file-text-D1GPfZ8Q.js} +1 -1
  149. package/dist/{file-tree-CJqM2aP7.js → file-tree-Dwj2lqg-.js} +1 -1
  150. package/dist/{folder-_BAb929C.js → folder-b6D8x1DY.js} +1 -1
  151. package/dist/{form-DSZgZQZk.js → form-DWgdxDXu.js} +1 -1
  152. package/dist/{hover-card-BQbul9eq.js → hover-card-CWRkqm40.js} +1 -1
  153. package/dist/{icon-CdcfRhYI.js → icon-CL0jdhsf.js} +1 -1
  154. package/dist/index.js +1741 -1725
  155. package/dist/index.server.js +1582 -1566
  156. package/dist/{info-DsFjGuI_.js → info-0cOUherQ.js} +1 -1
  157. package/dist/{input-DKbmkMos.js → input-BH6Ru91Q.js} +1 -1
  158. package/dist/kai.es.js +1 -1
  159. package/dist/{kbd-PvdGhX4s.js → kbd-DRAnVtNX.js} +1 -1
  160. package/dist/{link-zF8PzWfF.js → link-Dlr0vssB.js} +1 -1
  161. package/dist/{link-preview-DbM1866N.js → link-preview-DODgRyV9.js} +1 -1
  162. package/dist/loader-KvJB6NrT.js +1 -0
  163. package/dist/{markdown-LMvmAyBk.js → markdown-DX9tuJVj.js} +1 -1
  164. package/dist/mcp.es.js +9 -5
  165. package/dist/{message-BYZECyek.js → message-BqQ7Ot5q.js} +1 -1
  166. package/dist/{message-BSsgvHvf.js → message-DkaGfBd8.js} +1 -1
  167. package/dist/message-circle-BPpp5QKv.js +1 -0
  168. package/dist/message-square-BLbsd9BJ.js +1 -0
  169. package/dist/{minimize-2-BQRoBV1V.js → minimize-2-CyOHJwcN.js} +1 -1
  170. package/dist/{model-switcher-CMpCOYcB.js → model-switcher-0hrKDiK2.js} +1 -1
  171. package/dist/{overlay-Cb-MkyDa.js → overlay-DBMFXie6.js} +1 -1
  172. package/dist/{panel-right-i8warFxT.js → panel-right-t8SWJL6e.js} +1 -1
  173. package/dist/{paperclip-ByY3UVO6.js → paperclip-CdzuOjbU.js} +1 -1
  174. package/dist/play-BXy1u7rW.js +1 -0
  175. package/dist/primitives/use-auto-resize.d.ts +11 -0
  176. package/dist/{progress-bar-jVAHvMUf.js → progress-bar-CiBtxMWT.js} +1 -1
  177. package/dist/{prompt-suggestion-CD-qtNgC.js → prompt-suggestion-I_DHP21i.js} +1 -1
  178. package/dist/{radio-BsoBMhkF.js → radio-C_p3n39l.js} +1 -1
  179. package/dist/{reasoning-4kBPtlTx.js → reasoning-BDwy_tIe.js} +1 -1
  180. package/dist/register-impl-DvEnhIxx.js +424 -0
  181. package/dist/{resizable-uPmY9VY-.js → resizable-SYC-fStM.js} +1 -1
  182. package/dist/{rotate-ccw-B2xn93py.js → rotate-ccw-B1nwmwuY.js} +1 -1
  183. package/dist/{rotate-cw-CMVLoCyH.js → rotate-cw-CLAnBcm1.js} +1 -1
  184. package/dist/{scroll-area-BqLUo8ZZ.js → scroll-area-zRyXoLhI.js} +1 -1
  185. package/dist/{scroll-button-DslXiJyL.js → scroll-button-jzrbYCG9.js} +1 -1
  186. package/dist/{select-2cLRtPGT.js → select-DM-0nEe0.js} +1 -1
  187. package/dist/{separator-BWQtNJcM.js → separator-BToOOoOt.js} +1 -1
  188. package/dist/{settings-BBR63jLg.js → settings-PaGo_S4U.js} +1 -1
  189. package/dist/{settings-group-B2ciy-Iw.js → settings-group-BFXGIfXq.js} +1 -1
  190. package/dist/{skeleton-CkHI-HgC.js → skeleton-DYpmFnnm.js} +1 -1
  191. package/dist/{slider-DDR9U-i0.js → slider-ebutAmkQ.js} +1 -1
  192. package/dist/{solid-DruVOXnf.js → solid-15v_3WVL.js} +3563 -3412
  193. package/dist/{solid-BzCFdL25.js → solid-5P-otgdi.js} +4502 -4296
  194. package/dist/solid.d.ts +6 -0
  195. package/dist/solid.js +259 -254
  196. package/dist/solid.server.js +259 -254
  197. package/dist/{source-GEnFF528.js → source-c1gpRl9h.js} +1 -1
  198. package/dist/{star-CilHq8GP.js → star-pcV_3LqF.js} +1 -1
  199. package/dist/{store-Ciyk6eZG.js → store-CSgbFFCg.js} +1 -1
  200. package/dist/{switch-KkeQIbuH.js → switch-Bh2OdLV2.js} +1 -1
  201. package/dist/{tasks-card-BrN4bggJ.js → tasks-card-CbqQAn2S.js} +1 -1
  202. package/dist/text-shimmer-BSzgEnDH.js +1 -0
  203. package/dist/textarea-DrYNt_0z.js +1 -0
  204. package/dist/theme.tokens.css +22 -21
  205. package/dist/{thumbs-up-CsT9Wzb9.js → thumbs-up-BL3-NenK.js} +1 -1
  206. package/dist/{toast-store-tgK6MuMv.js → toast-store-DkOlYczt.js} +1 -1
  207. package/dist/{tool-DzUjIBT8.js → tool-CeIWUVUe.js} +1 -1
  208. package/dist/{tooltip-Bkkg_4t0.js → tooltip-GA-nmg06.js} +1 -1
  209. package/dist/{trash-2-jBKxjGGQ.js → trash-2-CT66QWlm.js} +1 -1
  210. package/dist/{triangle-alert-DlQ68ppf.js → triangle-alert-CeHLWxhD.js} +1 -1
  211. package/dist/ui/color-field.d.ts +48 -0
  212. package/dist/ui/textarea.d.ts +4 -0
  213. package/dist/ui/toggle-chip.d.ts +40 -0
  214. package/dist/{upload-TcAHXv9W.js → upload-9Csb0F0J.js} +1 -1
  215. package/dist/{use-card-resolution-DaZqAdWf.js → use-card-resolution-Zg0a08Z-.js} +1 -1
  216. package/dist/{variant-aurora-DbW_OWL2.js → variant-aurora-4VBQHIKV.js} +1 -1
  217. package/dist/{variant-aurora-CNmfHhcx.js → variant-aurora-DBeCAQNk.js} +2 -2
  218. package/dist/{variant-aurora-D6GsdTPA.js → variant-aurora-FzHVXHby.js} +2 -2
  219. package/dist/{variant-aurora-BhLuYxJR.js → variant-aurora-LE3fqxgw.js} +1 -1
  220. package/dist/{variant-custom-BvYHR62b.js → variant-custom-AFRGcOBS.js} +1 -1
  221. package/dist/{variant-custom-DV2x254s.js → variant-custom-BQkNuPpE.js} +2 -2
  222. package/dist/{variant-custom-BRvaNHSi.js → variant-custom-DI5R0rln.js} +1 -1
  223. package/dist/{variant-custom-DMTrEO5w.js → variant-custom-WWnrrRHS.js} +2 -2
  224. package/dist/{variant-wave-CyBueXj9.js → variant-wave-DUCbH5oI.js} +2 -2
  225. package/dist/{variant-wave-BNMGrDfj.js → variant-wave-DuQV7DhQ.js} +2 -2
  226. package/dist/{variant-wave-BpDd8t3Z.js → variant-wave-nSI2sfII.js} +1 -1
  227. package/dist/{variant-wave-sp-qwsdI.js → variant-wave-wTP5v_jU.js} +1 -1
  228. package/dist/x-eiO9V6J6.js +1 -0
  229. package/{src/elements/styles.css → kit-base.css} +27 -44
  230. package/package.json +32 -17
  231. package/solid.css +33 -0
  232. package/theme.css +39 -23
  233. package/bin/route.test.js +0 -58
  234. package/dist/arrow-down-CjRU3JgV.js +0 -1
  235. package/dist/arrow-left-Bnpb1UEW.js +0 -1
  236. package/dist/artifact-Bwt7OgcR.js +0 -1
  237. package/dist/check-njkVdZu2.js +0 -1
  238. package/dist/chevron-down-B72s6PXR.js +0 -1
  239. package/dist/chevron-right-BatuHzUm.js +0 -1
  240. package/dist/circle-check-B62pODB3.js +0 -1
  241. package/dist/circle-zx0ByzY9.js +0 -1
  242. package/dist/controllable-CnGpMF6r.js +0 -1
  243. package/dist/define-By-uL588.js +0 -1
  244. package/dist/loader-BM4CEz4G.js +0 -1
  245. package/dist/message-circle-DruwObfX.js +0 -1
  246. package/dist/message-square-BG6q6mlm.js +0 -1
  247. package/dist/play-BvKKq3fX.js +0 -1
  248. package/dist/register-impl-B1hLkrI8.js +0 -424
  249. package/dist/text-shimmer-Dcj1MHuq.js +0 -1
  250. package/dist/textarea-Dpvbngbg.js +0 -1
  251. package/dist/x-Z5UntkIJ.js +0 -1
  252. package/src/agent-tooling/README.md +0 -192
  253. package/src/agent-tooling/archetypes.ts +0 -205
  254. package/src/agent-tooling/catalog/README.md +0 -676
  255. package/src/agent-tooling/catalog/catalog-types.ts +0 -231
  256. package/src/agent-tooling/catalog/fabrications.ts +0 -96
  257. package/src/agent-tooling/catalog/invariants.ts +0 -284
  258. package/src/agent-tooling/catalog/labs-titles.ts +0 -114
  259. package/src/agent-tooling/catalog/scenarios.ts +0 -87
  260. package/src/agent-tooling/catalog/surfaces.ts +0 -347
  261. package/src/agent-tooling/construct/cli-entry.ts +0 -8
  262. package/src/agent-tooling/construct/cli.ts +0 -147
  263. package/src/agent-tooling/construct/codegen.ts +0 -1635
  264. package/src/agent-tooling/construct/construct.v1.schema.json +0 -319
  265. package/src/agent-tooling/construct/dev.ts +0 -148
  266. package/src/agent-tooling/construct/fixtures/demo-widget.construct.json +0 -7
  267. package/src/agent-tooling/construct/fixtures/ops-console.construct.json +0 -44
  268. package/src/agent-tooling/construct/fixtures/owner-widget.construct.json +0 -32
  269. package/src/agent-tooling/construct/schema.ts +0 -452
  270. package/src/agent-tooling/integrations/anthropic.ts +0 -442
  271. package/src/agent-tooling/integrations/cloudflare.ts +0 -218
  272. package/src/agent-tooling/integrations/langgraph.ts +0 -133
  273. package/src/agent-tooling/integrations/mastra.ts +0 -182
  274. package/src/agent-tooling/integrations/mock.ts +0 -148
  275. package/src/agent-tooling/integrations/ollama.ts +0 -97
  276. package/src/agent-tooling/integrations/openai.ts +0 -95
  277. package/src/agent-tooling/integrations/openrouter.ts +0 -82
  278. package/src/agent-tooling/integrations/pi.ts +0 -176
  279. package/src/agent-tooling/integrations/pydantic-ai.ts +0 -108
  280. package/src/agent-tooling/integrations/vercel-ai-sdk.ts +0 -398
  281. package/src/agent-tooling/mcp/css-raw.d.ts +0 -12
  282. package/src/agent-tooling/mcp/manifest.ts +0 -422
  283. package/src/agent-tooling/mcp/server.ts +0 -116
  284. package/src/agent-tooling/mcp/stdio.ts +0 -18
  285. package/src/agent-tooling/mcp/tools/construct.ts +0 -130
  286. package/src/agent-tooling/mcp/tools/debug.ts +0 -621
  287. package/src/agent-tooling/mcp/tools/reference.ts +0 -980
  288. package/src/agent-tooling/mcp/tools/scaffold.ts +0 -6708
  289. package/src/agent-tooling/mcp/tools/theme.ts +0 -456
  290. package/src/agent-tooling/mcp/tools/types.ts +0 -14
  291. package/src/agent-tooling/mcp/validate-args.ts +0 -141
  292. package/src/agent-tooling/recipes/composed-thread.ts +0 -714
  293. package/src/agent-tooling/recipes/index.ts +0 -22
  294. package/src/agent-tooling/recipes/types.ts +0 -32
  295. package/src/agent-tooling/registry.ts +0 -132
  296. package/src/agent-tooling/route-emit.ts +0 -305
  297. package/src/agent-tooling/types.ts +0 -390
  298. package/src/components/artifact-card.tsx +0 -120
  299. package/src/components/artifact.tsx +0 -914
  300. package/src/components/attachment-types.ts +0 -66
  301. package/src/components/attachments.tsx +0 -536
  302. package/src/components/audio-visualizer/audio-visualizer.voice-fixture.ts +0 -257
  303. package/src/components/audio-visualizer/aurora.glsl.ts +0 -330
  304. package/src/components/audio-visualizer/fit-scale.ts +0 -112
  305. package/src/components/audio-visualizer/index.tsx +0 -528
  306. package/src/components/audio-visualizer/labs/lab-choreography.ts +0 -187
  307. package/src/components/audio-visualizer/labs/lab-shaders.ts +0 -363
  308. package/src/components/audio-visualizer/labs/lab-visualizer.tsx +0 -102
  309. package/src/components/audio-visualizer/shader-canvas.tsx +0 -876
  310. package/src/components/audio-visualizer/sizes.ts +0 -54
  311. package/src/components/audio-visualizer/variant-aurora.tsx +0 -305
  312. package/src/components/audio-visualizer/variant-bar.tsx +0 -175
  313. package/src/components/audio-visualizer/variant-custom.tsx +0 -344
  314. package/src/components/audio-visualizer/variant-grid.tsx +0 -175
  315. package/src/components/audio-visualizer/variant-radial.tsx +0 -163
  316. package/src/components/audio-visualizer/variant-wave.tsx +0 -130
  317. package/src/components/audio-visualizer/wave.glsl.ts +0 -130
  318. package/src/components/card-fallback.tsx +0 -60
  319. package/src/components/card-renderer.tsx +0 -220
  320. package/src/components/card.tsx +0 -212
  321. package/src/components/chain-of-thought.tsx +0 -348
  322. package/src/components/chat-container.tsx +0 -89
  323. package/src/components/chat-scope-picker.tsx +0 -57
  324. package/src/components/chat-thread.tsx +0 -1014
  325. package/src/components/checkpoint.tsx +0 -88
  326. package/src/components/choice-card.tsx +0 -743
  327. package/src/components/coachmark.tsx +0 -249
  328. package/src/components/code-block.tsx +0 -181
  329. package/src/components/composer-dom.ts +0 -159
  330. package/src/components/composer-highlight.ts +0 -242
  331. package/src/components/composer-history.ts +0 -82
  332. package/src/components/composer.tsx +0 -1075
  333. package/src/components/confirm-card.tsx +0 -402
  334. package/src/components/context.tsx +0 -377
  335. package/src/components/conversation-item.tsx +0 -241
  336. package/src/components/conversation-list.tsx +0 -429
  337. package/src/components/conversation-panel.tsx +0 -118
  338. package/src/components/dismissed-stub.tsx +0 -80
  339. package/src/components/embed.tsx +0 -200
  340. package/src/components/empty.tsx +0 -177
  341. package/src/components/feedback-bar.tsx +0 -166
  342. package/src/components/file-tree.tsx +0 -530
  343. package/src/components/file-upload.tsx +0 -167
  344. package/src/components/form-widgets.tsx +0 -525
  345. package/src/components/form.tsx +0 -1296
  346. package/src/components/home-panel.tsx +0 -159
  347. package/src/components/image.tsx +0 -65
  348. package/src/components/link-preview.tsx +0 -195
  349. package/src/components/loader.tsx +0 -367
  350. package/src/components/markdown.tsx +0 -162
  351. package/src/components/message-skills.tsx +0 -40
  352. package/src/components/message.tsx +0 -765
  353. package/src/components/model-switcher.tsx +0 -132
  354. package/src/components/prompt-input.tsx +0 -188
  355. package/src/components/prompt-suggestion.tsx +0 -150
  356. package/src/components/reasoning.tsx +0 -293
  357. package/src/components/response-compare-types.ts +0 -152
  358. package/src/components/response-compare.tsx +0 -455
  359. package/src/components/response-stream.tsx +0 -109
  360. package/src/components/screen.tsx +0 -181
  361. package/src/components/scroll-button.tsx +0 -93
  362. package/src/components/source.tsx +0 -192
  363. package/src/components/tasks-card.tsx +0 -801
  364. package/src/components/text-shimmer.tsx +0 -37
  365. package/src/components/thinking-bar.tsx +0 -50
  366. package/src/components/thread.tsx +0 -228
  367. package/src/components/toast.tsx +0 -503
  368. package/src/components/tool-classify.ts +0 -26
  369. package/src/components/tool-types.ts +0 -49
  370. package/src/components/tool.tsx +0 -190
  371. package/src/components/use-card-resolution.ts +0 -44
  372. package/src/components/voice-input.tsx +0 -222
  373. package/src/components/voice-output.tsx +0 -242
  374. package/src/components/widget-tab-bar.tsx +0 -73
  375. package/src/components/workspace-shell.tsx +0 -285
  376. package/src/diagnostics/hook.ts +0 -352
  377. package/src/diagnostics/index.ts +0 -82
  378. package/src/diagnostics/report-request.ts +0 -296
  379. package/src/elements/agent-card.tsx +0 -67
  380. package/src/elements/artifact.tsx +0 -194
  381. package/src/elements/attachments.tsx +0 -140
  382. package/src/elements/audio-visualizer.tsx +0 -227
  383. package/src/elements/autoloader.ts +0 -89
  384. package/src/elements/avatar.tsx +0 -33
  385. package/src/elements/badge.tsx +0 -32
  386. package/src/elements/button.tsx +0 -149
  387. package/src/elements/card.tsx +0 -133
  388. package/src/elements/cards.tsx +0 -266
  389. package/src/elements/chain-of-thought.tsx +0 -141
  390. package/src/elements/chat-scope-picker.tsx +0 -65
  391. package/src/elements/chat-types.ts +0 -102
  392. package/src/elements/chat-workspace.tsx +0 -188
  393. package/src/elements/chat.tsx +0 -304
  394. package/src/elements/checkbox-group.tsx +0 -164
  395. package/src/elements/checkbox.tsx +0 -134
  396. package/src/elements/checkpoint.tsx +0 -47
  397. package/src/elements/choice.tsx +0 -100
  398. package/src/elements/coachmark.tsx +0 -90
  399. package/src/elements/code-block.tsx +0 -60
  400. package/src/elements/command.tsx +0 -197
  401. package/src/elements/compare.tsx +0 -111
  402. package/src/elements/compiled.css +0 -2
  403. package/src/elements/composer.tsx +0 -162
  404. package/src/elements/confirm-card.tsx +0 -76
  405. package/src/elements/context-meter.tsx +0 -107
  406. package/src/elements/conversation-item.tsx +0 -120
  407. package/src/elements/conversation-list.tsx +0 -203
  408. package/src/elements/css.ts +0 -5
  409. package/src/elements/default-input.tsx +0 -392
  410. package/src/elements/define-entry.ts +0 -12
  411. package/src/elements/define.tsx +0 -563
  412. package/src/elements/diagnostic-events.ts +0 -114
  413. package/src/elements/dialog.tsx +0 -145
  414. package/src/elements/disclosure.ts +0 -95
  415. package/src/elements/dock.tsx +0 -215
  416. package/src/elements/dropdown.tsx +0 -123
  417. package/src/elements/editable-label.tsx +0 -140
  418. package/src/elements/element-data-types.ts +0 -152
  419. package/src/elements/element-diagnostics.ts +0 -392
  420. package/src/elements/element-manifest.json +0 -354
  421. package/src/elements/element-nonscalar.json +0 -187
  422. package/src/elements/element-types.d.ts +0 -4353
  423. package/src/elements/embed.tsx +0 -35
  424. package/src/elements/empty.tsx +0 -29
  425. package/src/elements/feedback-bar.tsx +0 -66
  426. package/src/elements/file-tree.tsx +0 -62
  427. package/src/elements/file-upload.tsx +0 -44
  428. package/src/elements/form.tsx +0 -94
  429. package/src/elements/hover-card.tsx +0 -80
  430. package/src/elements/icon.tsx +0 -41
  431. package/src/elements/image.tsx +0 -32
  432. package/src/elements/input.tsx +0 -492
  433. package/src/elements/kbd.tsx +0 -45
  434. package/src/elements/link-preview.tsx +0 -34
  435. package/src/elements/loader.tsx +0 -25
  436. package/src/elements/markdown.tsx +0 -38
  437. package/src/elements/menu.tsx +0 -241
  438. package/src/elements/message-skills.tsx +0 -83
  439. package/src/elements/message.tsx +0 -361
  440. package/src/elements/model-switcher.tsx +0 -121
  441. package/src/elements/nav.tsx +0 -87
  442. package/src/elements/notice.tsx +0 -53
  443. package/src/elements/pane-grid.tsx +0 -111
  444. package/src/elements/pane-group.tsx +0 -119
  445. package/src/elements/pane.tsx +0 -129
  446. package/src/elements/popover.tsx +0 -81
  447. package/src/elements/progress-bar.tsx +0 -39
  448. package/src/elements/prompt-dock.tsx +0 -82
  449. package/src/elements/prompt-input.tsx +0 -240
  450. package/src/elements/prompt-suggestions.tsx +0 -113
  451. package/src/elements/radio-group.tsx +0 -129
  452. package/src/elements/reasoning.tsx +0 -71
  453. package/src/elements/register-impl.ts +0 -148
  454. package/src/elements/register.ts +0 -76
  455. package/src/elements/remote.tsx +0 -225
  456. package/src/elements/resizable.globals.d.ts +0 -36
  457. package/src/elements/resizable.tsx +0 -704
  458. package/src/elements/response-stream.tsx +0 -40
  459. package/src/elements/screen.tsx +0 -90
  460. package/src/elements/scroll-area.tsx +0 -33
  461. package/src/elements/scroll-button.tsx +0 -179
  462. package/src/elements/search.tsx +0 -185
  463. package/src/elements/segmented.tsx +0 -129
  464. package/src/elements/select.tsx +0 -165
  465. package/src/elements/separator.tsx +0 -36
  466. package/src/elements/setting-item.tsx +0 -50
  467. package/src/elements/settings-group.tsx +0 -37
  468. package/src/elements/skeleton.tsx +0 -45
  469. package/src/elements/slider.tsx +0 -171
  470. package/src/elements/slot-text.ts +0 -73
  471. package/src/elements/slots.ts +0 -787
  472. package/src/elements/source.tsx +0 -126
  473. package/src/elements/status.tsx +0 -42
  474. package/src/elements/switch.tsx +0 -118
  475. package/src/elements/tabs.tsx +0 -95
  476. package/src/elements/tasks.tsx +0 -103
  477. package/src/elements/text-shimmer.tsx +0 -28
  478. package/src/elements/thinking-bar.tsx +0 -43
  479. package/src/elements/thread.tsx +0 -139
  480. package/src/elements/toast.tsx +0 -106
  481. package/src/elements/tool.tsx +0 -78
  482. package/src/elements/tooltip.tsx +0 -85
  483. package/src/elements/validate-messages.ts +0 -76
  484. package/src/elements/voice-input.tsx +0 -100
  485. package/src/elements/voice-output.tsx +0 -82
  486. package/src/index.ts +0 -430
  487. package/src/primitives/audio-bands.ts +0 -174
  488. package/src/primitives/card-component-types.ts +0 -63
  489. package/src/primitives/card-contract.ts +0 -80
  490. package/src/primitives/card-data-types.ts +0 -361
  491. package/src/primitives/card-host.tsx +0 -37
  492. package/src/primitives/card-recovery.ts +0 -160
  493. package/src/primitives/card-registry.tsx +0 -78
  494. package/src/primitives/card-resolution.ts +0 -36
  495. package/src/primitives/card-routing.ts +0 -85
  496. package/src/primitives/card-schemas/artifact.schema.json +0 -92
  497. package/src/primitives/card-schemas/card-envelope.schema.json +0 -14
  498. package/src/primitives/card-schemas/card-event.schema.json +0 -12
  499. package/src/primitives/card-schemas/choice.schema.json +0 -75
  500. package/src/primitives/card-schemas/confirm.schema.json +0 -65
  501. package/src/primitives/card-schemas/embed.schema.json +0 -63
  502. package/src/primitives/card-schemas/form.result.schema.json +0 -7
  503. package/src/primitives/card-schemas/form.schema.json +0 -53
  504. package/src/primitives/card-schemas/link.schema.json +0 -54
  505. package/src/primitives/card-schemas/tasks.result.schema.json +0 -16
  506. package/src/primitives/card-schemas/tasks.schema.json +0 -83
  507. package/src/primitives/card-tags.ts +0 -61
  508. package/src/primitives/card-validate-cards.ts +0 -255
  509. package/src/primitives/card-validate-schemas.ts +0 -58
  510. package/src/primitives/card-validate.ts +0 -131
  511. package/src/primitives/chat-config.tsx +0 -103
  512. package/src/primitives/composer-model.ts +0 -49
  513. package/src/primitives/composer-triggers.ts +0 -35
  514. package/src/primitives/controllable.ts +0 -21
  515. package/src/primitives/conversation-store.ts +0 -248
  516. package/src/primitives/create-kai-chat.ts +0 -66
  517. package/src/primitives/create-tween.ts +0 -266
  518. package/src/primitives/embed-providers.ts +0 -254
  519. package/src/primitives/field-mask.ts +0 -256
  520. package/src/primitives/field-semantics.ts +0 -115
  521. package/src/primitives/highlighter.ts +0 -157
  522. package/src/primitives/input-mask.ts +0 -853
  523. package/src/primitives/link-preview.ts +0 -87
  524. package/src/primitives/message-feedback.ts +0 -124
  525. package/src/primitives/pdf-preview.ts +0 -121
  526. package/src/primitives/toast-store.ts +0 -338
  527. package/src/primitives/url-scheme-policy.ts +0 -70
  528. package/src/primitives/use-audio-analysis.ts +0 -340
  529. package/src/primitives/use-auto-resize.ts +0 -31
  530. package/src/primitives/use-resize-observer.ts +0 -45
  531. package/src/primitives/use-sequencer.ts +0 -72
  532. package/src/primitives/use-speech-recognition.ts +0 -146
  533. package/src/primitives/use-stick-to-bottom.ts +0 -75
  534. package/src/primitives/use-text-stream.ts +0 -143
  535. package/src/primitives/use-voice-recorder.ts +0 -62
  536. package/src/primitives/visualizer-sequences.ts +0 -350
  537. package/src/remote/host-embed.ts +0 -345
  538. package/src/remote/index.ts +0 -2
  539. package/src/remote/origin.ts +0 -30
  540. package/src/remote/provider-runtime.ts +0 -262
  541. package/src/remote/provider.ts +0 -2
  542. package/src/remote/validate.ts +0 -22
  543. package/src/remote/version.ts +0 -12
  544. package/src/remote/wire.ts +0 -48
  545. package/src/schemas/from-tool-call.ts +0 -151
  546. package/src/schemas/index.ts +0 -341
  547. package/src/schemas/provider-subsets.ts +0 -538
  548. package/src/schemas/registry.ts +0 -355
  549. package/src/schemas/tool-defs.ts +0 -793
  550. package/src/solid.ts +0 -173
  551. package/src/state/index.ts +0 -44
  552. package/src/state/messages.ts +0 -53
  553. package/src/state/mock.ts +0 -297
  554. package/src/state/parts.ts +0 -295
  555. package/src/state/persistence.ts +0 -180
  556. package/src/state/stream.ts +0 -246
  557. package/src/state/suggestions.ts +0 -9
  558. package/src/state/threads.ts +0 -142
  559. package/src/test-utils/fake-clock.ts +0 -88
  560. package/src/types.ts +0 -95
  561. package/src/ui/action-icons.ts +0 -53
  562. package/src/ui/agent-card.tsx +0 -218
  563. package/src/ui/avatar.tsx +0 -23
  564. package/src/ui/badge.tsx +0 -21
  565. package/src/ui/button.tsx +0 -49
  566. package/src/ui/card.tsx +0 -245
  567. package/src/ui/checkbox-group.tsx +0 -153
  568. package/src/ui/checkbox.tsx +0 -63
  569. package/src/ui/collapsible.tsx +0 -163
  570. package/src/ui/command.tsx +0 -103
  571. package/src/ui/dialog.tsx +0 -223
  572. package/src/ui/dock.tsx +0 -630
  573. package/src/ui/dropdown.tsx +0 -636
  574. package/src/ui/editable-label.tsx +0 -112
  575. package/src/ui/hover-card.tsx +0 -345
  576. package/src/ui/icon.tsx +0 -167
  577. package/src/ui/input.tsx +0 -391
  578. package/src/ui/kbd.tsx +0 -118
  579. package/src/ui/nav.tsx +0 -282
  580. package/src/ui/notice.tsx +0 -84
  581. package/src/ui/overlay.tsx +0 -277
  582. package/src/ui/pane-grid.tsx +0 -117
  583. package/src/ui/pane-group.tsx +0 -291
  584. package/src/ui/pane.tsx +0 -193
  585. package/src/ui/popover.tsx +0 -106
  586. package/src/ui/progress-bar.tsx +0 -83
  587. package/src/ui/prompt-dock.tsx +0 -145
  588. package/src/ui/radio.tsx +0 -150
  589. package/src/ui/resizable.tsx +0 -693
  590. package/src/ui/scroll-area.tsx +0 -26
  591. package/src/ui/segmented.tsx +0 -109
  592. package/src/ui/select.tsx +0 -168
  593. package/src/ui/separator.tsx +0 -10
  594. package/src/ui/settings-group.tsx +0 -67
  595. package/src/ui/skeleton.tsx +0 -73
  596. package/src/ui/slider.tsx +0 -178
  597. package/src/ui/status.tsx +0 -48
  598. package/src/ui/switch.tsx +0 -119
  599. package/src/ui/tabs.tsx +0 -168
  600. package/src/ui/textarea.tsx +0 -21
  601. package/src/ui/tooltip.tsx +0 -118
  602. package/src/utils/cn.ts +0 -30
  603. package/src/wire/chunk.ts +0 -248
  604. package/src/wire/consume.ts +0 -599
  605. package/src/wire/diagnostics.ts +0 -727
  606. package/src/wire/encode-probe.ts +0 -214
  607. package/src/wire/encode.ts +0 -947
  608. package/src/wire/files.ts +0 -342
  609. package/src/wire/formats/anthropic.ts +0 -274
  610. package/src/wire/formats/openai.ts +0 -228
  611. package/src/wire/index.ts +0 -95
  612. package/src/wire/media-types.ts +0 -344
  613. package/src/wire/read.ts +0 -396
  614. package/src/wire/sink-helpers.ts +0 -50
  615. package/src/wire/sse.ts +0 -153
@@ -1,164 +0,0 @@
1
- import { createEffect, createSignal, untrack } from 'solid-js';
2
- import { defineWebComponent } from './define';
3
- import { CheckboxGroup } from '../ui/checkbox-group';
4
- // Public shape of the `options` prop; lives in ./element-data-types so the ROOT
5
- // entry can re-export it (see that file's header).
6
- import type { KaiCheckboxOption } from './element-data-types';
7
-
8
- interface Props extends Record<string, unknown> {
9
- /** The choices, top to bottom. Set as a JS PROPERTY (array), never an attribute.
10
- * Rendered in full: the kit never truncates, re-orders or de-duplicates them. */
11
- options: KaiCheckboxOption[];
12
- /** The FIRST selected value. Settable and reflected to the `value` attribute, so
13
- * `:host([value])` and `el.value` see live state, and a seed can be written in
14
- * markup. Writing it makes that the whole selection; to read or drive the rest,
15
- * use `el.values`. */
16
- value?: string;
17
- /**
18
- * The shared form-control name every box carries, so `FormData.getAll(name)` reads
19
- * the whole selection back under one key.
20
- *
21
- * NO DEFAULT, unlike `<kai-radio-group>`. A radio set needs a shared `name` for the
22
- * browser to make it exclusive and arrow-navigable, so one is generated when none is
23
- * given; checkboxes are independent controls and behave correctly with no name at
24
- * all. Generating one here would submit the selection under a random key, which is
25
- * worse than submitting nothing.
26
- *
27
- * The element is NOT form-associated (no `ElementInternals`, no `setFormValue()`),
28
- * the same known gap `<kai-input>` records: the boxes live in a shadow root, so a
29
- * surrounding `<form>` collects nothing from them whether or not `name` is set. Read
30
- * `el.values`. The name still lands on every inner input, so it is right the day form
31
- * association arrives.
32
- */
33
- name?: string;
34
- /** Disable every row. Individual rows carry their own `disabled`. */
35
- disabled?: boolean;
36
- /** Accessible name for the group. */
37
- label?: string;
38
- }
39
-
40
- /** Events fired by `<kai-checkbox-group>`. */
41
- interface Events {
42
- /** A row was ticked or unticked. `values` is the whole selection after the change,
43
- * which is what a multi-select control needs; `value` is the first of them (empty
44
- * when nothing is selected). Both are always present, so neither shape silently
45
- * loses the other. This is `<kai-select>`'s detail, deliberately. */
46
- 'kai-change': { value: string; values: string[] };
47
- }
48
-
49
- /**
50
- * `<kai-checkbox-group>` — the kit's "pick any number" control, and
51
- * `<kai-radio-group>`'s sibling: the same options shape and the same divided row
52
- * chrome over real `<input type="checkbox">`es, multi-value instead of exclusive. A
53
- * box per tab stop, Space to toggle and correct announcement are the browser's, not a
54
- * reimplementation.
55
- *
56
- * Feed it `options` (a JS-property array of `{ value, label, description?, disabled? }`),
57
- * drive and read the selection with the `values` property, and listen for `kai-change`.
58
- * `value` is the first selected option and is reflected to the `value` attribute.
59
- *
60
- * Re-rendering follows the kit's reactivity contract: hand it a NEW array reference,
61
- * and a new object for any option whose content changed — the rows are a
62
- * reference-keyed list, so mutating an option in place changes nothing on screen.
63
- *
64
- * No validation and no limits: "at least one", "at most three" and anything else that
65
- * lands in a policy document is the application's rule, not the kit's.
66
- *
67
- * ```html
68
- * <kai-checkbox-group label="Environments" name="env"></kai-checkbox-group>
69
- * <script type="module">
70
- * import '@kitn.ai/ui/elements';
71
- * const group = document.querySelector('kai-checkbox-group');
72
- * // ARRAY prop — a JS property, never an attribute.
73
- * group.options = [
74
- * { value: 'prod', label: 'Production', description: 'Pages the on-call' },
75
- * { value: 'staging', label: 'Staging' },
76
- * { value: 'dev', label: 'Development' },
77
- * ];
78
- * group.addEventListener('kai-change', (e) => console.log(e.detail.values));
79
- * group.values = ['prod', 'dev']; // drive it (no kai-change — the host already knows)
80
- * </script>
81
- * ```
82
- */
83
- defineWebComponent<Props, Events>('kai-checkbox-group', {
84
- options: [],
85
- value: undefined,
86
- name: undefined,
87
- disabled: undefined,
88
- label: undefined,
89
- }, (props, ctx) => {
90
- const { element, dispatch, flag, expose } = ctx;
91
-
92
- // Lift the selection into the facade and drive CheckboxGroup CONTROLLED so the host
93
- // can read it (`el.values` / `:host([value])`) and set it after mount. Seed from the
94
- // `value` property/attribute present on mount; nothing is auto-selected, because
95
- // `options` normally arrives as a property AFTER upgrade (kai-select's structure).
96
- const seed = (props.value as string | undefined) ?? element.getAttribute('value') ?? '';
97
- const [values, setValues] = createSignal<string[]>(seed ? [seed] : []);
98
- const first = () => values()[0] ?? '';
99
-
100
- // Coerce anything arriving through the `value` setter (a JS assignment, or the
101
- // attributeChangedCallback write-back the reflect effect below triggers) to a string,
102
- // falling back to the live attribute when nullish so the write-back equals the signal
103
- // and the guard absorbs it — no attr⇄prop feedback loop.
104
- const coerce = (v: unknown): string =>
105
- v == null ? (element.getAttribute('value') ?? '') : String(v);
106
-
107
- // Apply a new selection and fire kai-change once (the user-toggle path).
108
- const apply = (next: string[]) => {
109
- const prev = untrack(values);
110
- if (prev.length === next.length && prev.every((v, i) => v === next[i])) return;
111
- setValues(next);
112
- dispatch('kai-change', { value: next[0] ?? '', values: next });
113
- };
114
-
115
- Object.defineProperty(element, 'value', {
116
- get: () => first(),
117
- set: (v: unknown) => {
118
- const next = coerce(v);
119
- if (untrack(first) !== next) setValues(next ? [next] : []);
120
- },
121
- configurable: true,
122
- enumerable: true,
123
- });
124
-
125
- // The multi-selection read/write side, spelled exactly as `<kai-select multiple>`
126
- // spells it. `value` alone cannot represent a checkbox group's selection, and
127
- // returning only the first ticked box would be a silent drop.
128
- Object.defineProperty(element, 'values', {
129
- get: () => values(),
130
- set: (v: unknown) => setValues(Array.isArray(v) ? v.map(String) : []),
131
- configurable: true,
132
- enumerable: true,
133
- });
134
-
135
- // Reflect the first value → the `[value]` host attribute (for `:host([value])`).
136
- createEffect(() => {
137
- const v = first();
138
- if (v) {
139
- if (element.getAttribute('value') !== v) element.setAttribute('value', v);
140
- } else if (element.hasAttribute('value')) {
141
- element.removeAttribute('value');
142
- }
143
- });
144
-
145
- expose({
146
- /** Focus the group's first box. Not "the first ticked one", which is
147
- * `<kai-radio-group>`'s rule: a radio group is ONE tab stop that lands on the
148
- * selection, while every checkbox here is its own tab stop, so the entry point is
149
- * simply the top of the list. */
150
- focus: (options?: FocusOptions) =>
151
- element.shadowRoot?.querySelector<HTMLInputElement>('input[type="checkbox"]')?.focus(options),
152
- });
153
-
154
- return (
155
- <CheckboxGroup
156
- options={(props.options ?? []) as KaiCheckboxOption[]}
157
- value={values()}
158
- name={props.name as string | undefined}
159
- disabled={flag('disabled')}
160
- label={props.label as string | undefined}
161
- onChange={(next) => apply(next)}
162
- />
163
- );
164
- });
@@ -1,134 +0,0 @@
1
- import { createEffect, createSignal, untrack } from 'solid-js';
2
- import { defineWebComponent } from './define';
3
- import { Checkbox } from '../ui/checkbox';
4
-
5
- interface Props extends Record<string, unknown> {
6
- /** Controlled checked state. Settable and reflected to the `checked` attribute.
7
- * `el.checked = true` (or `<kai-checkbox checked>`) drives it; ticking the box
8
- * updates it and fires `kai-change`. Read `el.checked` for live state. */
9
- checked?: boolean;
10
- /** Initial checked state on mount (uncontrolled seed). Bare attribute
11
- * (`<kai-checkbox default-checked>`) turns it on. */
12
- defaultChecked?: boolean;
13
- /** The mixed state, for a parent box whose children are partly ticked. Visual
14
- * plus an accessibility hint: the box still reports `checked === false`. */
15
- indeterminate?: boolean;
16
- /** Disable interaction. */
17
- disabled?: boolean;
18
- /** Set the native `required` attribute, and nothing more. Whether an unticked box
19
- * is an error is the application's rule, not the kit's. */
20
- required?: boolean;
21
- /** Accessible label. The visible text beside the box is the consumer's to render. */
22
- label?: string;
23
- /** Form-control name (paired with `value`). */
24
- name?: string;
25
- /** Submitted value when checked (paired with `name`). Defaults to `'on'`. */
26
- value?: string;
27
- }
28
-
29
- /** Events fired by `<kai-checkbox>`. */
30
- interface Events {
31
- /** The box was ticked or unticked. */
32
- 'kai-change': { checked: boolean };
33
- }
34
-
35
- /**
36
- * `<kai-checkbox>` — a checkbox over a real `<input type="checkbox">`. Drive/read
37
- * its state with the `checked` property (settable + reflected to the `checked`
38
- * attribute, so `:host([checked])` and `el.checked` see live state); seed the
39
- * initial state with `default-checked` and read changes from `kai-change`.
40
- *
41
- * ```html
42
- * <label>
43
- * <kai-checkbox default-checked label="Stream responses"></kai-checkbox>
44
- * Stream responses
45
- * </label>
46
- * <script type="module">
47
- * import '@kitn.ai/ui/elements';
48
- * const box = document.querySelector('kai-checkbox');
49
- * box.addEventListener('kai-change', (e) => console.log(e.detail.checked));
50
- * box.checked = false; // drive it (no kai-change — the host already knows)
51
- * box.indeterminate = true;
52
- * box.toggle(); // flip it (fires kai-change)
53
- * </script>
54
- * ```
55
- */
56
- defineWebComponent<Props, Events>('kai-checkbox', {
57
- checked: undefined,
58
- defaultChecked: undefined,
59
- indeterminate: undefined,
60
- disabled: undefined,
61
- required: undefined,
62
- label: undefined,
63
- name: undefined,
64
- value: undefined,
65
- }, (props, ctx) => {
66
- const { element, dispatch, flag, expose } = ctx;
67
-
68
- // Lift the on/off state into the facade and drive Checkbox CONTROLLED so the host
69
- // can read it (`el.checked` / `:host([checked])`) and set it after mount. Seed from
70
- // `defaultChecked` (or a bare `checked` attribute present on mount). This is
71
- // kai-switch's structure, deliberately — same contract, same failure modes.
72
- const [checked, setChecked] = createSignal(flag('defaultChecked') || flag('checked'));
73
-
74
- // Coerce anything arriving through the `checked` setter (a JS assignment, or the
75
- // write-back `attributeChangedCallback` fires when the attribute changes) to a
76
- // boolean, falling back to attribute presence to match `flag`'s semantics. The
77
- // `undefined` write-back `toggleAttribute` triggers thus resolves to the attribute
78
- // just written, equals the signal, and is absorbed by the guard below — no attr⇄prop
79
- // feedback loop.
80
- const coerce = (v: unknown): boolean =>
81
- v === true ? true
82
- : v === false ? false
83
- : element.hasAttribute('checked') && element.getAttribute('checked') !== 'false';
84
-
85
- // Apply a new checked state and fire kai-change once (the user path). No-op while
86
- // disabled.
87
- const apply = (next: boolean) => {
88
- if (flag('disabled')) return;
89
- if (untrack(checked) === next) return;
90
- setChecked(next);
91
- dispatch('kai-change', { checked: next });
92
- };
93
-
94
- // Reads return LIVE state; host writes drive it WITHOUT firing kai-change — the
95
- // host already knows what it set. The equality guard kills the reflect write-back.
96
- Object.defineProperty(element, 'checked', {
97
- get: () => checked(),
98
- set: (v: unknown) => { const next = coerce(v); if (untrack(checked) !== next) setChecked(next); },
99
- configurable: true,
100
- enumerable: true,
101
- });
102
-
103
- // Reflect internal checked → the `[checked]` host attribute (for `:host([checked])`).
104
- createEffect(() => {
105
- const c = checked();
106
- if (c !== element.hasAttribute('checked')) element.toggleAttribute('checked', c);
107
- });
108
-
109
- expose({
110
- /** Flip the box and fire `kai-change` (no-op while disabled). */
111
- toggle: () => apply(!untrack(checked)),
112
- /** Focus the inner input (the host element can't reach it). */
113
- focus: (options?: FocusOptions) =>
114
- element.shadowRoot?.querySelector<HTMLInputElement>('input[type="checkbox"]')?.focus(options),
115
- });
116
-
117
- return (
118
- <>
119
- {/* Base sets `:host{display:block}`; a checkbox flows inline beside its text. */}
120
- <style>{':host{display:inline-flex}'}</style>
121
- <Checkbox
122
- checked={checked()}
123
- indeterminate={flag('indeterminate')}
124
- disabled={flag('disabled')}
125
- required={flag('required')}
126
- aria-label={props.label as string | undefined}
127
- aria-checked={flag('indeterminate') ? 'mixed' : undefined}
128
- name={props.name as string | undefined}
129
- value={(props.value as string | undefined) ?? 'on'}
130
- onChange={(e) => apply(e.currentTarget.checked)}
131
- />
132
- </>
133
- );
134
- });
@@ -1,47 +0,0 @@
1
- import { Show } from 'solid-js';
2
- import { defineWebComponent } from './define';
3
- import { Checkpoint, CheckpointIcon, CheckpointTrigger } from '../components/checkpoint';
4
-
5
- interface Props extends Record<string, unknown> {
6
- /** Optional text beside the icon. */
7
- label?: string;
8
- /** Tooltip on hover. */
9
- tooltip?: string;
10
- /** Visual button style. */
11
- variant?: 'ghost' | 'default' | 'outline';
12
- /** Button size (use an `icon*` size for an icon-only checkpoint). */
13
- size?: 'sm' | 'md' | 'lg' | 'icon' | 'icon-sm';
14
- }
15
-
16
- /** Events fired by `<kai-checkpoint>`. */
17
- interface Events {
18
- /** The checkpoint was clicked. */
19
- 'kai-select': void;
20
- }
21
-
22
- /**
23
- * `<kai-checkpoint>` — a bookmark/checkpoint button (optional tooltip + label).
24
- * Emits `select`.
25
- */
26
- defineWebComponent<Props, Events>('kai-checkpoint', {
27
- label: undefined,
28
- tooltip: undefined,
29
- variant: 'ghost',
30
- size: 'sm',
31
- }, (props, { dispatch }) => (
32
- <Checkpoint>
33
- <CheckpointTrigger
34
- tooltip={props.tooltip}
35
- // Icon-only (no visible label) needs an accessible name: prefer the
36
- // tooltip text, else a sensible default. With a visible label, the text
37
- // is the name — leave aria-label unset so it isn't duplicated.
38
- aria-label={props.label ? undefined : (props.tooltip ?? 'Checkpoint')}
39
- variant={props.variant}
40
- size={props.size}
41
- onClick={() => dispatch('kai-select')}
42
- >
43
- <CheckpointIcon />
44
- <Show when={props.label}><span class="ml-1.5">{props.label}</span></Show>
45
- </CheckpointTrigger>
46
- </Checkpoint>
47
- ));
@@ -1,100 +0,0 @@
1
- import { defineWebComponent } from './define';
2
- import { ChoiceCard, type ChoiceCardData, type ChoiceController } from '../components/choice-card';
3
- import type { CardResolution } from '../primitives/card-contract';
4
-
5
- interface Props extends Record<string, unknown> {
6
- /** The choice definition (the CardEnvelope.data). Set as a JS PROPERTY:
7
- * `el.data = { prompt, options:[…], allowOther?, submitLabel? }`. Import
8
- * `ChoiceCardData` from `@kitn.ai/ui` for the full shape. */
9
- data?: ChoiceCardData;
10
- /** Stable card id correlating every emitted CardEvent. Attribute: `card-id`. */
11
- cardId?: string;
12
- /** Heading rendered in the card chrome (= CardEnvelope.title). Attribute: `heading`. */
13
- heading?: string;
14
- /** Set when the user resolved this card; renders the read-only view. Property:
15
- * `el.resolution = { kind:'action', action:'…' }`. */
16
- resolution?: Record<string, unknown>;
17
- /** Controlled selection: the selected option id. When set, the consumer owns
18
- * the current pick (RadioGroup `value`). Attribute: `value`. */
19
- value?: string;
20
- /** Option id to pre-select on mount (uncontrolled seed). Attribute: `default-value`. */
21
- defaultValue?: string;
22
- /** Disable the whole radiogroup + Submit (e.g. while the agent is busy).
23
- * Attribute: `disabled`. */
24
- disabled?: boolean;
25
- }
26
-
27
- /** Events fired by `<kai-choice>`. (The terminal submit/dismiss/reopen flow is
28
- * emitted via the bubbling `kai-card` contract event — listen for `kai-card`.) */
29
- interface Events {
30
- /** The selection changed BEFORE submit (a row click or the `select()` method).
31
- * Distinct from the terminal `action` verb on the `kai-card` contract event. */
32
- 'kai-value-change': { value: string };
33
- }
34
-
35
- /**
36
- * `<kai-choice>` — a single-select **"pick one of N rich options"** card (set via the
37
- * `data` property): a prompt + a radiogroup of list rows. Clicking a row **selects** it
38
- * (no emit, fires `kai-value-change`); the **Submit** button below then emits the Card
39
- * contract's **`action`** verb up a bubbling **`kai-card`** CustomEvent (`{ kind:'action',
40
- * cardId, action: option.id, payload? }`) and resolves the card so the same pick can't
41
- * double-fire. An optional `allowOther` free-text escape appends a selectable "Other…" row
42
- * that reveals an inline input; the same Submit emits `action:'__other__'` with `{ text }`.
43
- * Also emits `ready` on mount and `error` for a malformed definition (inline error). Routes
44
- * through a `CardProvider` when present, else the bubbling `kai-card` event. Isolated in
45
- * Shadow DOM; theme-aware via the shared tokens.
46
- *
47
- * Supports controlled selection (`value`), an uncontrolled seed (`defaultValue`), a
48
- * group-level `disabled`, and instance methods `focus()`/`select(id)`/`send()`/
49
- * `dismiss()`/`reopen()`.
50
- */
51
- defineWebComponent<Props, Events>(
52
- 'kai-choice',
53
- {
54
- data: undefined,
55
- cardId: undefined,
56
- heading: undefined,
57
- resolution: undefined,
58
- value: undefined,
59
- defaultValue: undefined,
60
- disabled: undefined,
61
- },
62
- (props, { element, dispatch, flag, expose }) => {
63
- // Pattern C: the ChoiceCard owns selection/submit/dismiss state and hands up a
64
- // controller; the facade captures it and exposes delegating methods. The card's
65
- // own paths still fire (select → kai-value-change; send → kai-card `action`;
66
- // dismiss/reopen → kai-card `dismiss`/`reopen`).
67
- let controller: ChoiceController | undefined;
68
- expose({
69
- /** Focus the radiogroup roving tab stop (or the Other input when selected). */
70
- focus: (options?: FocusOptions) => controller?.focus(options),
71
- /** Select an option by id locally: no emit, fires kai-value-change (same as a
72
- * row click). Lets a consumer pre-highlight or drive selection externally. */
73
- select: (optionId: string) => controller?.select(optionId),
74
- /** Submit the current selection: emits the `action` verb on kai-card and
75
- * resolves the card (single-shot). Named `send`, not `submit`, per the shared
76
- * vocabulary. */
77
- send: () => controller?.send(),
78
- /** Trigger the dismiss path: emits `dismiss` on kai-card and optimistically
79
- * collapses the card to its re-openable stub. */
80
- dismiss: () => controller?.dismiss(),
81
- /** Re-open a dismissed card from its stub: emits `reopen` on kai-card. */
82
- reopen: () => controller?.reopen(),
83
- });
84
-
85
- return (
86
- <ChoiceCard
87
- data={props.data}
88
- cardId={props.cardId ?? (element.id || 'kai-choice')}
89
- heading={props.heading}
90
- resolution={props.resolution as CardResolution | undefined}
91
- value={props.value}
92
- defaultValue={props.defaultValue}
93
- disabled={flag('disabled')}
94
- onValueChange={(value) => dispatch('kai-value-change', { value })}
95
- controllerRef={(c) => (controller = c)}
96
- hostElement={element}
97
- />
98
- );
99
- },
100
- );
@@ -1,90 +0,0 @@
1
- import { defineWebComponent } from './define';
2
- import { Coachmark, type CoachmarkController } from '../components/coachmark';
3
- import { wireDisclosure } from './disclosure';
4
-
5
- interface Props extends Record<string, unknown> {
6
- /** Drive/observe open state (Shoelace-style: settable + reflected to the `open`
7
- * attribute; the element still self-manages). Set `el.open = true`, or
8
- * `<kai-coachmark open>`; listen for `kai-open-change`. */
9
- open?: boolean;
10
- /** Initial open state on mount (uncontrolled seed). */
11
- defaultOpen?: boolean;
12
- /** The bold title. Named `headline` because `title` collides with the global
13
- * `HTMLElement.title` attribute (it throws at registration). */
14
- headline?: string;
15
- /** A small badge pill beside the headline (e.g. "New"). */
16
- badge?: string;
17
- /** Floating placement relative to the anchor (default `bottom`). */
18
- placement?: string;
19
- /** Color tone: `primary` (default, theme accent), `info` (blue), `success`
20
- * (green), `warning` (amber), or `error` (red), reusing the kit's tool hues. */
21
- tone?: 'primary' | 'info' | 'success' | 'warning' | 'error';
22
- /** Render the arrow that points at the anchor (default `true`). Set
23
- * `arrow="false"` for a plain bubble with no pointer. */
24
- arrow?: boolean;
25
- }
26
-
27
- /** Events fired by `<kai-coachmark>`. */
28
- interface Events {
29
- /** The × dismiss button was pressed. The consumer records that this hint was
30
- * seen so it won't show again. */
31
- 'kai-dismiss': Record<string, never>;
32
- /** The coachmark opened or closed (a method, the ×, or a driven `open`). */
33
- 'kai-open-change': { open: boolean };
34
- }
35
-
36
- /**
37
- * `<kai-coachmark>` — an anchored onboarding hint bubble with an arrow. It WRAPS
38
- * a trigger (the default slot) and points a primary-colored bubble at it: a small
39
- * `badge` pill, a bold `headline`, the `content` slot body, and a dismiss ×.
40
- *
41
- * ```html
42
- * <kai-coachmark default-open headline="Cowork has a new home" badge="New">
43
- * <button>Cowork</button>
44
- * <span slot="content">Chat with Claude or switch to Cowork from here.</span>
45
- * </kai-coachmark>
46
- * <script type="module">
47
- * document.querySelector('kai-coachmark')
48
- * .addEventListener('kai-dismiss', () => localStorage.setItem('cowork-hint', 'seen'));
49
- * </script>
50
- * ```
51
- *
52
- * Open state is the standard disclosure surface: settable+reflecting `open`,
53
- * `kai-open-change`, and `show()`/`hide()`/`toggle()`; seed with `default-open`.
54
- * Parts: `bubble` · `arrow` · `badge` · `title` · `dismiss`.
55
- */
56
- defineWebComponent<Props, Events>('kai-coachmark', {
57
- open: undefined,
58
- defaultOpen: undefined,
59
- headline: undefined,
60
- badge: undefined,
61
- placement: undefined,
62
- tone: undefined,
63
- arrow: true,
64
- }, (props, ctx) => {
65
- const { flag, dispatch } = ctx;
66
- let api: CoachmarkController | undefined;
67
-
68
- // The standard disclosure surface: settable+reflecting `open`, kai-open-change,
69
- // show/hide/toggle. See ./disclosure. This is the SOLE emitter of kai-open-change.
70
- wireDisclosure(ctx, () => api, () => props.open);
71
-
72
- // headline/badge are scalar string props (NOT slots) — pass through directly so
73
- // the component's own `Show when={…}` gating drives whether each region renders.
74
- // The body is the `content` slot; an empty `<slot>` renders nothing.
75
- return (
76
- <Coachmark
77
- defaultOpen={flag('defaultOpen')}
78
- arrow={flag('arrow')}
79
- placement={props.placement as never}
80
- tone={props.tone as 'primary' | 'info' | 'success' | 'warning' | 'error' | undefined}
81
- headline={props.headline as string | undefined}
82
- badge={props.badge as string | undefined}
83
- content={<slot name="content" />}
84
- controllerRef={(a) => (api = a)}
85
- onDismiss={() => dispatch('kai-dismiss', {})}
86
- >
87
- <slot />
88
- </Coachmark>
89
- );
90
- });
@@ -1,60 +0,0 @@
1
- import { defineWebComponent } from './define';
2
- import { CodeBlock, CodeBlockCode } from '../components/code-block';
3
- import { ChatConfig, useChatConfig, type ProseSize } from '../primitives/chat-config';
4
-
5
- interface Props extends Record<string, unknown> {
6
- /** The source code to render. */
7
- code: string;
8
- /** Language grammar (e.g. `js`, `python`). Defaults to `tsx`. */
9
- language?: string;
10
- /** Shiki theme name. */
11
- codeTheme?: string;
12
- /** Disable syntax highlighting (renders plain text, no Shiki). */
13
- codeHighlight?: boolean;
14
- /**
15
- * Show the copy button. **Defaults to ON**, because this element is documented
16
- * as shipping one. Opt out with `copy="false"` or `el.copy = false`.
17
- */
18
- copy?: boolean;
19
- /** Code text sizing. */
20
- proseSize?: ProseSize;
21
- }
22
-
23
- /**
24
- * `<kai-code-block>` — one syntax-highlighted code block (with a copy button).
25
- * Code via the `code` property; `language`/`code-theme` via attributes.
26
- *
27
- * The copy button is ON by default and writes the raw `code` property, never the
28
- * highlighted markup. Turn it off with `copy="false"`. Style it via
29
- * `kai-code-block::part(copy)`.
30
- */
31
- defineWebComponent<Props>('kai-code-block', {
32
- code: '',
33
- language: undefined,
34
- codeTheme: 'github-dark-dimmed',
35
- codeHighlight: true,
36
- copy: true,
37
- proseSize: 'sm',
38
- }, (props, { flag }) => {
39
- const outer = useChatConfig();
40
- return (
41
- <ChatConfig
42
- proseSize={props.proseSize}
43
- codeTheme={props.codeTheme}
44
- codeHighlight={flag('codeHighlight')}
45
- portalMount={outer.portalMount()}
46
- >
47
- {/* The ELEMENT opts in; the Solid `CodeBlock` default stays OFF so markdown and
48
- artifact are untouched. `copyText` is the raw property — the button must
49
- never copy what Shiki produced. `copy` is NOT reflected, matching
50
- `codeHighlight` beside it: reflecting a default-ON flag would stamp `copy=""`
51
- on every instance for no benefit, and the runtime-attribute hazard that
52
- earned `reflectFlag` elsewhere needs a BARE attribute, which is a no-op on a
53
- flag that is already on. The meaningful spelling, `copy="false"`, is a real
54
- prop change and is pinned as one. */}
55
- <CodeBlock copy={flag('copy')} copyText={props.code}>
56
- <CodeBlockCode code={props.code} language={props.language} />
57
- </CodeBlock>
58
- </ChatConfig>
59
- );
60
- });