@kitn.ai/ui 0.27.0 → 0.29.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 (612) hide show
  1. package/README.md +10 -2
  2. package/dist/{Icon-BnFKqqtY.js → Icon-DObhsRtm.js} +1 -1
  3. package/dist/{action-icons-CBskfBMz.js → action-icons-CcgNN2oT.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-CjRU3JgV.js +1 -0
  7. package/dist/arrow-left-Bnpb1UEW.js +1 -0
  8. package/dist/{artifact-CvXEm1lS.js → artifact-Bwt7OgcR.js} +1 -1
  9. package/dist/{attachments-C43ZegEq.js → attachments-Qr4kg-2b.js} +1 -1
  10. package/dist/{audio-visualizer-B-79y1Tj.js → audio-visualizer-DToYdfSc.js} +1 -1
  11. package/dist/{badge-BpUbq8c0.js → badge-CdEu_jn2.js} +1 -1
  12. package/dist/{bell-sn17Ip9v.js → bell-DQAAOpDz.js} +1 -1
  13. package/dist/{button-BH6rN0U-.js → button-DkuOnGLy.js} +1 -1
  14. package/dist/{card-renderer-Cb1gQmth.js → card-renderer-Jx70m6_l.js} +1 -1
  15. package/dist/{card-routing-DifQgS7n.js → card-routing-0YidER_3.js} +1 -1
  16. package/dist/check-njkVdZu2.js +1 -0
  17. package/dist/{checkbox-Dc9Yov_B.js → checkbox-D7iRB3nL.js} +1 -1
  18. package/dist/{checkbox-group-B1kDLLYk.js → checkbox-group-B2_rpoPM.js} +1 -1
  19. package/dist/chevron-down-B72s6PXR.js +1 -0
  20. package/dist/chevron-right-BatuHzUm.js +1 -0
  21. package/dist/{choice-card-BT3c1S8g.js → choice-card-m0BYqqOK.js} +1 -1
  22. package/dist/circle-check-B62pODB3.js +1 -0
  23. package/dist/{circle-x-wobWkoSx.js → circle-x-BPG0iPst.js} +1 -1
  24. package/dist/circle-zx0ByzY9.js +1 -0
  25. package/dist/code-block-ClMLKb7C.js +1 -0
  26. package/dist/{collapsible-CPJbf6FM.js → collapsible-B4DlWicL.js} +1 -1
  27. package/dist/components/chat-thread.d.ts +89 -1
  28. package/dist/components/conversation-item.d.ts +16 -0
  29. package/dist/components/conversation-panel.d.ts +29 -0
  30. package/dist/components/home-panel.d.ts +34 -0
  31. package/dist/components/widget-tab-bar.d.ts +16 -0
  32. package/dist/{composer-CjngLzal.js → composer-sQ0HcvyG.js} +3 -3
  33. package/dist/{confirm-card-DCx_A4bU.js → confirm-card-rQWDQsnC.js} +1 -1
  34. package/dist/construct-cli.es.js +185 -17
  35. package/dist/construct.d.ts +5 -0
  36. package/dist/construct.js +327 -0
  37. package/dist/{context-BY8V-Nlp.js → context-0kg4ZX1J.js} +1 -1
  38. package/dist/controllable-CnGpMF6r.js +1 -0
  39. package/dist/conversation-item-BxwQLaFJ.js +1 -0
  40. package/dist/conversation-list-BCfGN1JU.js +1 -0
  41. package/dist/{copy-B6DO4PqB.js → copy-n9u9rqpi.js} +1 -1
  42. package/dist/core-C8fzo39E.js +1 -12
  43. package/dist/{create-tween-CnMHviKB.js → create-tween-C-q-JCM-.js} +1 -1
  44. package/dist/{create-tween-D1aiGZZh.js → create-tween-CRrJXxBd.js} +1 -1
  45. package/dist/{create-tween-BPzaefTp.js → create-tween-DZ3RRDHD.js} +1 -1
  46. package/dist/{create-tween-DUSQUKpr.js → create-tween-uPkArjIG.js} +1 -1
  47. package/dist/custom-elements.json +51 -2
  48. package/dist/{default-input-CucQEOqH.js → default-input-CaMrJkgH.js} +1 -1
  49. package/dist/define-By-uL588.js +1 -0
  50. package/dist/define.js +2 -2
  51. package/dist/define.server.js +2 -2
  52. package/dist/{disclosure-CbLtajUQ.js → disclosure-WUImBbDv.js} +1 -1
  53. package/dist/{dropdown-BwhViJFd.js → dropdown-wZVeJOMd.js} +1 -1
  54. package/dist/elements/agent-card.js +1 -1
  55. package/dist/elements/artifact.js +1 -1
  56. package/dist/elements/attachments.js +1 -1
  57. package/dist/elements/audio-visualizer.js +1 -1
  58. package/dist/elements/avatar.js +1 -1
  59. package/dist/elements/badge.js +1 -1
  60. package/dist/elements/button.js +1 -1
  61. package/dist/elements/card.js +1 -1
  62. package/dist/elements/cards.js +1 -1
  63. package/dist/elements/chain-of-thought.js +1 -1
  64. package/dist/elements/chat-scope-picker.js +1 -1
  65. package/dist/elements/chat-workspace.js +1 -1
  66. package/dist/elements/chat.js +1 -1
  67. package/dist/elements/checkbox-group.js +1 -1
  68. package/dist/elements/checkbox.js +1 -1
  69. package/dist/elements/checkpoint.js +1 -1
  70. package/dist/elements/choice.js +1 -1
  71. package/dist/elements/coachmark.js +1 -1
  72. package/dist/elements/code-block.js +1 -1
  73. package/dist/elements/command.js +1 -1
  74. package/dist/elements/compare.js +1 -1
  75. package/dist/elements/composer.js +1 -1
  76. package/dist/elements/confirm-card.js +1 -1
  77. package/dist/elements/context-meter.js +1 -1
  78. package/dist/elements/conversation-item.js +1 -1
  79. package/dist/elements/conversation-list.js +1 -1
  80. package/dist/elements/dialog.js +1 -1
  81. package/dist/elements/dock.js +3 -3
  82. package/dist/elements/dropdown.js +1 -1
  83. package/dist/elements/editable-label.js +1 -1
  84. package/dist/elements/embed.js +1 -1
  85. package/dist/elements/empty.js +1 -1
  86. package/dist/elements/feedback-bar.js +1 -1
  87. package/dist/elements/file-tree.js +1 -1
  88. package/dist/elements/file-upload.js +1 -1
  89. package/dist/elements/form.js +1 -1
  90. package/dist/elements/hover-card.js +1 -1
  91. package/dist/elements/icon.js +1 -1
  92. package/dist/elements/image.js +1 -1
  93. package/dist/elements/input.js +1 -1
  94. package/dist/elements/kbd.js +1 -1
  95. package/dist/elements/link-preview.js +1 -1
  96. package/dist/elements/loader.js +1 -1
  97. package/dist/elements/markdown.js +1 -1
  98. package/dist/elements/menu.js +1 -1
  99. package/dist/elements/message-skills.js +1 -1
  100. package/dist/elements/message.js +1 -1
  101. package/dist/elements/model-switcher.js +1 -1
  102. package/dist/elements/nav.js +1 -1
  103. package/dist/elements/notice.js +1 -1
  104. package/dist/elements/pane-grid.js +1 -1
  105. package/dist/elements/pane-group.js +1 -1
  106. package/dist/elements/pane.js +1 -1
  107. package/dist/elements/popover.js +1 -1
  108. package/dist/elements/progress-bar.js +1 -1
  109. package/dist/elements/prompt-dock.js +1 -1
  110. package/dist/elements/prompt-input.js +1 -1
  111. package/dist/elements/prompt-suggestions.js +1 -1
  112. package/dist/elements/radio-group.js +1 -1
  113. package/dist/elements/reasoning.js +1 -1
  114. package/dist/elements/remote.js +1 -1
  115. package/dist/elements/resizable.js +1 -1
  116. package/dist/elements/response-stream.js +1 -1
  117. package/dist/elements/screen.js +1 -1
  118. package/dist/elements/scroll-area.js +1 -1
  119. package/dist/elements/scroll-button.js +1 -1
  120. package/dist/elements/search.js +1 -1
  121. package/dist/elements/segmented.js +1 -1
  122. package/dist/elements/select.js +1 -1
  123. package/dist/elements/separator.js +1 -1
  124. package/dist/elements/setting-item.js +1 -1
  125. package/dist/elements/settings-group.js +1 -1
  126. package/dist/elements/skeleton.js +1 -1
  127. package/dist/elements/slider.js +1 -1
  128. package/dist/elements/source.js +1 -1
  129. package/dist/elements/status.js +1 -1
  130. package/dist/elements/switch.js +1 -1
  131. package/dist/elements/tabs.js +1 -1
  132. package/dist/elements/tasks.js +1 -1
  133. package/dist/elements/text-shimmer.js +1 -1
  134. package/dist/elements/thinking-bar.js +1 -1
  135. package/dist/elements/thread.js +1 -1
  136. package/dist/elements/toast.js +1 -1
  137. package/dist/elements/tool.js +1 -1
  138. package/dist/elements/tooltip.js +1 -1
  139. package/dist/elements/voice-input.js +1 -1
  140. package/dist/elements/voice-output.js +1 -1
  141. package/dist/elements.d.ts +20 -4
  142. package/dist/{ellipsis-DFr4Vqr3.js → ellipsis-CbOpJnU3.js} +1 -1
  143. package/dist/{embed-5s_vU4J0.js → embed-CrfjkbUG.js} +1 -1
  144. package/dist/engine-javascript-C1x7zo1_.js +1 -141
  145. package/dist/{external-link-u9d85ORQ.js → external-link-ByXAwBBQ.js} +1 -1
  146. package/dist/{file-text-CX7_x42o.js → file-text-DMib2qwt.js} +1 -1
  147. package/dist/{file-tree-D3kBjXI5.js → file-tree-CJqM2aP7.js} +1 -1
  148. package/dist/{folder-V-YdIL8f.js → folder-_BAb929C.js} +1 -1
  149. package/dist/{form-BRNUMCN2.js → form-DSZgZQZk.js} +1 -1
  150. package/dist/{hover-card-DaeiYrTA.js → hover-card-BQbul9eq.js} +1 -1
  151. package/dist/{icon-BpixdZNq.js → icon-CdcfRhYI.js} +1 -1
  152. package/dist/index.d.ts +3 -1
  153. package/dist/index.js +2842 -2703
  154. package/dist/index.server.js +2820 -2681
  155. package/dist/{info-8mFsIjS3.js → info-DsFjGuI_.js} +1 -1
  156. package/dist/{input-d1Yuu-hz.js → input-DKbmkMos.js} +1 -1
  157. package/dist/kai.es.js +1 -1
  158. package/dist/{kbd-961zMPFB.js → kbd-PvdGhX4s.js} +1 -1
  159. package/dist/{link-preview-DIIbV2Sd.js → link-preview-DbM1866N.js} +1 -1
  160. package/dist/{link-DlZZBGaR.js → link-zF8PzWfF.js} +1 -1
  161. package/dist/{loader-YQszHFaW.js → loader-BM4CEz4G.js} +1 -1
  162. package/dist/{markdown-CVk1MPsj.js → markdown-LMvmAyBk.js} +7 -7
  163. package/dist/mcp.es.js +79 -5
  164. package/dist/{message-CwKVEdZg.js → message-BSsgvHvf.js} +1 -1
  165. package/dist/{message-DS8lzHc1.js → message-BYZECyek.js} +1 -1
  166. package/dist/message-circle-DruwObfX.js +1 -0
  167. package/dist/message-square-BG6q6mlm.js +1 -0
  168. package/dist/{minimize-2-UEZmP2QT.js → minimize-2-BQRoBV1V.js} +1 -1
  169. package/dist/{model-switcher-Kk1jEQ5t.js → model-switcher-CMpCOYcB.js} +1 -1
  170. package/dist/{overlay-C1od6LOz.js → overlay-Cb-MkyDa.js} +1 -1
  171. package/dist/{panel-right-ryET0yyn.js → panel-right-i8warFxT.js} +1 -1
  172. package/dist/{paperclip-BDNoZFJP.js → paperclip-ByY3UVO6.js} +1 -1
  173. package/dist/play-BvKKq3fX.js +1 -0
  174. package/dist/primitives/conversation-store.d.ts +54 -0
  175. package/dist/{progress-bar-BvYX0aoy.js → progress-bar-jVAHvMUf.js} +1 -1
  176. package/dist/{prompt-suggestion-BRFu2lcu.js → prompt-suggestion-CD-qtNgC.js} +1 -1
  177. package/dist/{radio-DcL23cNJ.js → radio-BsoBMhkF.js} +1 -1
  178. package/dist/react/index.d.ts +393 -0
  179. package/dist/react.js +20 -20
  180. package/dist/{reasoning-Cackq4Rh.js → reasoning-4kBPtlTx.js} +1 -1
  181. package/dist/register-impl-B1hLkrI8.js +424 -0
  182. package/dist/{resizable-Cp9HUYih.js → resizable-uPmY9VY-.js} +1 -1
  183. package/dist/{rotate-ccw-0DLRDHH5.js → rotate-ccw-B2xn93py.js} +1 -1
  184. package/dist/{rotate-cw-DOB9IGcU.js → rotate-cw-CMVLoCyH.js} +1 -1
  185. package/dist/{scroll-area-emVmWP4K.js → scroll-area-BqLUo8ZZ.js} +1 -1
  186. package/dist/{scroll-button-CeP_gv1x.js → scroll-button-DslXiJyL.js} +1 -1
  187. package/dist/{select-CWmu00tS.js → select-2cLRtPGT.js} +1 -1
  188. package/dist/{separator-CE6vly6z.js → separator-BWQtNJcM.js} +1 -1
  189. package/dist/{settings-CE-78SvZ.js → settings-BBR63jLg.js} +1 -1
  190. package/dist/{settings-group-ZFWNxFQR.js → settings-group-B2ciy-Iw.js} +1 -1
  191. package/dist/{skeleton-BebdP4mf.js → skeleton-CkHI-HgC.js} +1 -1
  192. package/dist/{slider-BAKRYUlz.js → slider-DDR9U-i0.js} +1 -1
  193. package/dist/{solid-BE5ui6sy.js → solid-BzCFdL25.js} +7720 -7058
  194. package/dist/{solid-DFhsce3O.js → solid-DruVOXnf.js} +5864 -5283
  195. package/dist/solid.d.ts +6 -2
  196. package/dist/solid.js +217 -210
  197. package/dist/solid.server.js +217 -210
  198. package/dist/{source-B0FlguSx.js → source-GEnFF528.js} +1 -1
  199. package/dist/{star-CBMZvLuN.js → star-CilHq8GP.js} +1 -1
  200. package/dist/store-Ciyk6eZG.js +1 -0
  201. package/dist/{switch-CViARZCy.js → switch-KkeQIbuH.js} +1 -1
  202. package/dist/{tasks-card-MjCcOhR_.js → tasks-card-BrN4bggJ.js} +1 -1
  203. package/dist/{text-shimmer-DKlwRF2G.js → text-shimmer-Dcj1MHuq.js} +1 -1
  204. package/dist/{textarea-3ay2Me2-.js → textarea-Dpvbngbg.js} +1 -1
  205. package/dist/theme.tokens.css +28 -0
  206. package/dist/{thumbs-up-DQcu2HMO.js → thumbs-up-CsT9Wzb9.js} +1 -1
  207. package/dist/{toast-store-C6yKOhbk.js → toast-store-tgK6MuMv.js} +1 -1
  208. package/dist/{tool-BCYNlfKy.js → tool-DzUjIBT8.js} +1 -1
  209. package/dist/{tooltip-05zI4hjs.js → tooltip-Bkkg_4t0.js} +1 -1
  210. package/dist/{trash-2-BR1RxGky.js → trash-2-jBKxjGGQ.js} +1 -1
  211. package/dist/{triangle-alert-DHohDOCy.js → triangle-alert-DlQ68ppf.js} +1 -1
  212. package/dist/types.d.ts +48 -3
  213. package/dist/ui/dock.d.ts +29 -0
  214. package/dist/{upload-BbGW6A_u.js → upload-TcAHXv9W.js} +1 -1
  215. package/dist/{url-scheme-policy-DHpoTJwB.js → url-scheme-policy-DR5DgvkM.js} +1 -1
  216. package/dist/{use-card-resolution-CJW4grFa.js → use-card-resolution-DaZqAdWf.js} +1 -1
  217. package/dist/{variant-aurora-xiMPty8f.js → variant-aurora-BhLuYxJR.js} +1 -1
  218. package/dist/{variant-aurora-BUOVgPOB.js → variant-aurora-CNmfHhcx.js} +2 -2
  219. package/dist/{variant-aurora-CUsUJvFI.js → variant-aurora-D6GsdTPA.js} +2 -2
  220. package/dist/{variant-aurora-CW2i4bfr.js → variant-aurora-DbW_OWL2.js} +1 -1
  221. package/dist/{variant-custom-D91HjAKz.js → variant-custom-BRvaNHSi.js} +1 -1
  222. package/dist/{variant-custom-BQtOnmeO.js → variant-custom-BvYHR62b.js} +1 -1
  223. package/dist/{variant-custom-CAnzzppW.js → variant-custom-DMTrEO5w.js} +2 -2
  224. package/dist/{variant-custom-CAm9L-E5.js → variant-custom-DV2x254s.js} +2 -2
  225. package/dist/{variant-wave-Ca1Ls4_y.js → variant-wave-BNMGrDfj.js} +2 -2
  226. package/dist/{variant-wave-uY5crU_K.js → variant-wave-BpDd8t3Z.js} +1 -1
  227. package/dist/{variant-wave-CxX39DKd.js → variant-wave-CyBueXj9.js} +2 -2
  228. package/dist/{variant-wave-DYyzIIZv.js → variant-wave-sp-qwsdI.js} +1 -1
  229. package/dist/x-Z5UntkIJ.js +1 -0
  230. package/frameworks/react/index.tsx +14 -4
  231. package/llms-full.txt +7 -2
  232. package/package.json +16 -16
  233. package/src/elements/element-meta.json +49 -6
  234. package/theme.css +28 -0
  235. package/bin/route.test.js +0 -58
  236. package/dist/arrow-down-Br0qtpsz.js +0 -1
  237. package/dist/arrow-left-Dj7xgE12.js +0 -1
  238. package/dist/check-DPeeMUYx.js +0 -1
  239. package/dist/chevron-down-CHSWk7ZT.js +0 -1
  240. package/dist/chevron-right-B7l_fMgx.js +0 -1
  241. package/dist/circle-Bb0yOpqM.js +0 -1
  242. package/dist/circle-check-BGZpCiz7.js +0 -1
  243. package/dist/code-block-CUQ5mtv0.js +0 -1
  244. package/dist/controllable-D43BKmtX.js +0 -1
  245. package/dist/conversation-list-D4lLU_yS.js +0 -1
  246. package/dist/define-CGGX-7Vg.js +0 -1
  247. package/dist/message-circle-Xf8Q-vZp.js +0 -1
  248. package/dist/message-square-Cxnwgkns.js +0 -1
  249. package/dist/play-OFIvYXUQ.js +0 -1
  250. package/dist/register-impl-C7rENvPK.js +0 -424
  251. package/dist/store-7eoadydQ.js +0 -1
  252. package/dist/x-C5m1JFgi.js +0 -1
  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 -131
  263. package/src/agent-tooling/construct/codegen.ts +0 -1353
  264. package/src/agent-tooling/construct/construct.v1.schema.json +0 -250
  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 -23
  269. package/src/agent-tooling/construct/schema.ts +0 -371
  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 -518
  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 -218
  336. package/src/components/conversation-list.tsx +0 -429
  337. package/src/components/dismissed-stub.tsx +0 -80
  338. package/src/components/embed.tsx +0 -200
  339. package/src/components/empty.tsx +0 -177
  340. package/src/components/feedback-bar.tsx +0 -166
  341. package/src/components/file-tree.tsx +0 -530
  342. package/src/components/file-upload.tsx +0 -167
  343. package/src/components/form-widgets.tsx +0 -525
  344. package/src/components/form.tsx +0 -1296
  345. package/src/components/image.tsx +0 -65
  346. package/src/components/link-preview.tsx +0 -195
  347. package/src/components/loader.tsx +0 -367
  348. package/src/components/markdown.tsx +0 -162
  349. package/src/components/message-skills.tsx +0 -40
  350. package/src/components/message.tsx +0 -765
  351. package/src/components/model-switcher.tsx +0 -132
  352. package/src/components/prompt-input.tsx +0 -188
  353. package/src/components/prompt-suggestion.tsx +0 -150
  354. package/src/components/reasoning.tsx +0 -293
  355. package/src/components/response-compare-types.ts +0 -152
  356. package/src/components/response-compare.tsx +0 -455
  357. package/src/components/response-stream.tsx +0 -109
  358. package/src/components/screen.tsx +0 -181
  359. package/src/components/scroll-button.tsx +0 -93
  360. package/src/components/source.tsx +0 -192
  361. package/src/components/tasks-card.tsx +0 -801
  362. package/src/components/text-shimmer.tsx +0 -37
  363. package/src/components/thinking-bar.tsx +0 -50
  364. package/src/components/thread.tsx +0 -228
  365. package/src/components/toast.tsx +0 -503
  366. package/src/components/tool-classify.ts +0 -26
  367. package/src/components/tool-types.ts +0 -49
  368. package/src/components/tool.tsx +0 -190
  369. package/src/components/use-card-resolution.ts +0 -44
  370. package/src/components/voice-input.tsx +0 -222
  371. package/src/components/voice-output.tsx +0 -242
  372. package/src/components/workspace-shell.tsx +0 -285
  373. package/src/diagnostics/hook.ts +0 -352
  374. package/src/diagnostics/index.ts +0 -82
  375. package/src/diagnostics/report-request.ts +0 -296
  376. package/src/elements/agent-card.tsx +0 -67
  377. package/src/elements/artifact.tsx +0 -194
  378. package/src/elements/attachments.tsx +0 -140
  379. package/src/elements/audio-visualizer.tsx +0 -227
  380. package/src/elements/autoloader.ts +0 -89
  381. package/src/elements/avatar.tsx +0 -33
  382. package/src/elements/badge.tsx +0 -32
  383. package/src/elements/button.tsx +0 -149
  384. package/src/elements/card.tsx +0 -133
  385. package/src/elements/cards.tsx +0 -266
  386. package/src/elements/chain-of-thought.tsx +0 -141
  387. package/src/elements/chat-scope-picker.tsx +0 -65
  388. package/src/elements/chat-types.ts +0 -102
  389. package/src/elements/chat-workspace.tsx +0 -188
  390. package/src/elements/chat.tsx +0 -212
  391. package/src/elements/checkbox-group.tsx +0 -164
  392. package/src/elements/checkbox.tsx +0 -134
  393. package/src/elements/checkpoint.tsx +0 -47
  394. package/src/elements/choice.tsx +0 -100
  395. package/src/elements/coachmark.tsx +0 -90
  396. package/src/elements/code-block.tsx +0 -60
  397. package/src/elements/command.tsx +0 -197
  398. package/src/elements/compare.tsx +0 -111
  399. package/src/elements/compiled.css +0 -2
  400. package/src/elements/composer.tsx +0 -162
  401. package/src/elements/confirm-card.tsx +0 -76
  402. package/src/elements/context-meter.tsx +0 -107
  403. package/src/elements/conversation-item.tsx +0 -120
  404. package/src/elements/conversation-list.tsx +0 -203
  405. package/src/elements/css.ts +0 -5
  406. package/src/elements/default-input.tsx +0 -392
  407. package/src/elements/define-entry.ts +0 -12
  408. package/src/elements/define.tsx +0 -563
  409. package/src/elements/diagnostic-events.ts +0 -114
  410. package/src/elements/dialog.tsx +0 -145
  411. package/src/elements/disclosure.ts +0 -95
  412. package/src/elements/dock.tsx +0 -215
  413. package/src/elements/dropdown.tsx +0 -123
  414. package/src/elements/editable-label.tsx +0 -140
  415. package/src/elements/element-data-types.ts +0 -152
  416. package/src/elements/element-diagnostics.ts +0 -392
  417. package/src/elements/element-manifest.json +0 -354
  418. package/src/elements/element-nonscalar.json +0 -185
  419. package/src/elements/element-types.d.ts +0 -4337
  420. package/src/elements/embed.tsx +0 -35
  421. package/src/elements/empty.tsx +0 -29
  422. package/src/elements/feedback-bar.tsx +0 -66
  423. package/src/elements/file-tree.tsx +0 -62
  424. package/src/elements/file-upload.tsx +0 -44
  425. package/src/elements/form.tsx +0 -94
  426. package/src/elements/hover-card.tsx +0 -80
  427. package/src/elements/icon.tsx +0 -41
  428. package/src/elements/image.tsx +0 -32
  429. package/src/elements/input.tsx +0 -492
  430. package/src/elements/kbd.tsx +0 -45
  431. package/src/elements/link-preview.tsx +0 -34
  432. package/src/elements/loader.tsx +0 -25
  433. package/src/elements/markdown.tsx +0 -38
  434. package/src/elements/menu.tsx +0 -241
  435. package/src/elements/message-skills.tsx +0 -83
  436. package/src/elements/message.tsx +0 -361
  437. package/src/elements/model-switcher.tsx +0 -121
  438. package/src/elements/nav.tsx +0 -87
  439. package/src/elements/notice.tsx +0 -53
  440. package/src/elements/pane-grid.tsx +0 -111
  441. package/src/elements/pane-group.tsx +0 -119
  442. package/src/elements/pane.tsx +0 -129
  443. package/src/elements/popover.tsx +0 -81
  444. package/src/elements/progress-bar.tsx +0 -39
  445. package/src/elements/prompt-dock.tsx +0 -82
  446. package/src/elements/prompt-input.tsx +0 -240
  447. package/src/elements/prompt-suggestions.tsx +0 -113
  448. package/src/elements/radio-group.tsx +0 -129
  449. package/src/elements/reasoning.tsx +0 -71
  450. package/src/elements/register-impl.ts +0 -148
  451. package/src/elements/register.ts +0 -76
  452. package/src/elements/remote.tsx +0 -225
  453. package/src/elements/resizable.globals.d.ts +0 -36
  454. package/src/elements/resizable.tsx +0 -704
  455. package/src/elements/response-stream.tsx +0 -40
  456. package/src/elements/screen.tsx +0 -90
  457. package/src/elements/scroll-area.tsx +0 -33
  458. package/src/elements/scroll-button.tsx +0 -179
  459. package/src/elements/search.tsx +0 -185
  460. package/src/elements/segmented.tsx +0 -129
  461. package/src/elements/select.tsx +0 -165
  462. package/src/elements/separator.tsx +0 -36
  463. package/src/elements/setting-item.tsx +0 -50
  464. package/src/elements/settings-group.tsx +0 -37
  465. package/src/elements/skeleton.tsx +0 -45
  466. package/src/elements/slider.tsx +0 -171
  467. package/src/elements/slot-text.ts +0 -73
  468. package/src/elements/slots.ts +0 -787
  469. package/src/elements/source.tsx +0 -126
  470. package/src/elements/status.tsx +0 -42
  471. package/src/elements/styles.css +0 -328
  472. package/src/elements/switch.tsx +0 -118
  473. package/src/elements/tabs.tsx +0 -95
  474. package/src/elements/tasks.tsx +0 -103
  475. package/src/elements/text-shimmer.tsx +0 -28
  476. package/src/elements/thinking-bar.tsx +0 -43
  477. package/src/elements/thread.tsx +0 -139
  478. package/src/elements/toast.tsx +0 -106
  479. package/src/elements/tool.tsx +0 -78
  480. package/src/elements/tooltip.tsx +0 -85
  481. package/src/elements/validate-messages.ts +0 -76
  482. package/src/elements/voice-input.tsx +0 -100
  483. package/src/elements/voice-output.tsx +0 -82
  484. package/src/index.ts +0 -428
  485. package/src/primitives/audio-bands.ts +0 -174
  486. package/src/primitives/card-component-types.ts +0 -63
  487. package/src/primitives/card-contract.ts +0 -80
  488. package/src/primitives/card-data-types.ts +0 -361
  489. package/src/primitives/card-host.tsx +0 -37
  490. package/src/primitives/card-recovery.ts +0 -160
  491. package/src/primitives/card-registry.tsx +0 -78
  492. package/src/primitives/card-resolution.ts +0 -36
  493. package/src/primitives/card-routing.ts +0 -85
  494. package/src/primitives/card-schemas/artifact.schema.json +0 -92
  495. package/src/primitives/card-schemas/card-envelope.schema.json +0 -14
  496. package/src/primitives/card-schemas/card-event.schema.json +0 -12
  497. package/src/primitives/card-schemas/choice.schema.json +0 -75
  498. package/src/primitives/card-schemas/confirm.schema.json +0 -65
  499. package/src/primitives/card-schemas/embed.schema.json +0 -63
  500. package/src/primitives/card-schemas/form.result.schema.json +0 -7
  501. package/src/primitives/card-schemas/form.schema.json +0 -53
  502. package/src/primitives/card-schemas/link.schema.json +0 -54
  503. package/src/primitives/card-schemas/tasks.result.schema.json +0 -16
  504. package/src/primitives/card-schemas/tasks.schema.json +0 -83
  505. package/src/primitives/card-tags.ts +0 -61
  506. package/src/primitives/card-validate-cards.ts +0 -255
  507. package/src/primitives/card-validate-schemas.ts +0 -58
  508. package/src/primitives/card-validate.ts +0 -131
  509. package/src/primitives/chat-config.tsx +0 -103
  510. package/src/primitives/composer-model.ts +0 -49
  511. package/src/primitives/composer-triggers.ts +0 -35
  512. package/src/primitives/controllable.ts +0 -21
  513. package/src/primitives/create-kai-chat.ts +0 -66
  514. package/src/primitives/create-tween.ts +0 -266
  515. package/src/primitives/embed-providers.ts +0 -254
  516. package/src/primitives/field-mask.ts +0 -256
  517. package/src/primitives/field-semantics.ts +0 -115
  518. package/src/primitives/highlighter.ts +0 -157
  519. package/src/primitives/input-mask.ts +0 -853
  520. package/src/primitives/link-preview.ts +0 -87
  521. package/src/primitives/message-feedback.ts +0 -124
  522. package/src/primitives/pdf-preview.ts +0 -121
  523. package/src/primitives/toast-store.ts +0 -338
  524. package/src/primitives/url-scheme-policy.ts +0 -70
  525. package/src/primitives/use-audio-analysis.ts +0 -340
  526. package/src/primitives/use-auto-resize.ts +0 -31
  527. package/src/primitives/use-resize-observer.ts +0 -45
  528. package/src/primitives/use-sequencer.ts +0 -72
  529. package/src/primitives/use-speech-recognition.ts +0 -146
  530. package/src/primitives/use-stick-to-bottom.ts +0 -75
  531. package/src/primitives/use-text-stream.ts +0 -143
  532. package/src/primitives/use-voice-recorder.ts +0 -62
  533. package/src/primitives/visualizer-sequences.ts +0 -350
  534. package/src/remote/host-embed.ts +0 -345
  535. package/src/remote/index.ts +0 -2
  536. package/src/remote/origin.ts +0 -30
  537. package/src/remote/provider-runtime.ts +0 -262
  538. package/src/remote/provider.ts +0 -2
  539. package/src/remote/validate.ts +0 -22
  540. package/src/remote/version.ts +0 -12
  541. package/src/remote/wire.ts +0 -48
  542. package/src/schemas/from-tool-call.ts +0 -151
  543. package/src/schemas/index.ts +0 -341
  544. package/src/schemas/provider-subsets.ts +0 -538
  545. package/src/schemas/registry.ts +0 -355
  546. package/src/schemas/tool-defs.ts +0 -793
  547. package/src/solid.ts +0 -165
  548. package/src/state/index.ts +0 -44
  549. package/src/state/messages.ts +0 -53
  550. package/src/state/mock.ts +0 -297
  551. package/src/state/parts.ts +0 -295
  552. package/src/state/persistence.ts +0 -180
  553. package/src/state/stream.ts +0 -246
  554. package/src/state/suggestions.ts +0 -9
  555. package/src/state/threads.ts +0 -142
  556. package/src/test-utils/fake-clock.ts +0 -88
  557. package/src/types.ts +0 -53
  558. package/src/ui/action-icons.ts +0 -53
  559. package/src/ui/agent-card.tsx +0 -218
  560. package/src/ui/avatar.tsx +0 -23
  561. package/src/ui/badge.tsx +0 -21
  562. package/src/ui/button.tsx +0 -49
  563. package/src/ui/card.tsx +0 -245
  564. package/src/ui/checkbox-group.tsx +0 -153
  565. package/src/ui/checkbox.tsx +0 -63
  566. package/src/ui/collapsible.tsx +0 -163
  567. package/src/ui/command.tsx +0 -103
  568. package/src/ui/dialog.tsx +0 -223
  569. package/src/ui/dock.tsx +0 -584
  570. package/src/ui/dropdown.tsx +0 -636
  571. package/src/ui/editable-label.tsx +0 -112
  572. package/src/ui/hover-card.tsx +0 -345
  573. package/src/ui/icon.tsx +0 -167
  574. package/src/ui/input.tsx +0 -391
  575. package/src/ui/kbd.tsx +0 -118
  576. package/src/ui/nav.tsx +0 -282
  577. package/src/ui/notice.tsx +0 -84
  578. package/src/ui/overlay.tsx +0 -277
  579. package/src/ui/pane-grid.tsx +0 -117
  580. package/src/ui/pane-group.tsx +0 -291
  581. package/src/ui/pane.tsx +0 -193
  582. package/src/ui/popover.tsx +0 -106
  583. package/src/ui/progress-bar.tsx +0 -83
  584. package/src/ui/prompt-dock.tsx +0 -145
  585. package/src/ui/radio.tsx +0 -150
  586. package/src/ui/resizable.tsx +0 -693
  587. package/src/ui/scroll-area.tsx +0 -26
  588. package/src/ui/segmented.tsx +0 -109
  589. package/src/ui/select.tsx +0 -168
  590. package/src/ui/separator.tsx +0 -10
  591. package/src/ui/settings-group.tsx +0 -67
  592. package/src/ui/skeleton.tsx +0 -73
  593. package/src/ui/slider.tsx +0 -178
  594. package/src/ui/status.tsx +0 -48
  595. package/src/ui/switch.tsx +0 -119
  596. package/src/ui/tabs.tsx +0 -168
  597. package/src/ui/textarea.tsx +0 -21
  598. package/src/ui/tooltip.tsx +0 -118
  599. package/src/utils/cn.ts +0 -30
  600. package/src/wire/chunk.ts +0 -248
  601. package/src/wire/consume.ts +0 -599
  602. package/src/wire/diagnostics.ts +0 -727
  603. package/src/wire/encode-probe.ts +0 -214
  604. package/src/wire/encode.ts +0 -947
  605. package/src/wire/files.ts +0 -342
  606. package/src/wire/formats/anthropic.ts +0 -274
  607. package/src/wire/formats/openai.ts +0 -228
  608. package/src/wire/index.ts +0 -95
  609. package/src/wire/media-types.ts +0 -344
  610. package/src/wire/read.ts +0 -396
  611. package/src/wire/sink-helpers.ts +0 -50
  612. package/src/wire/sse.ts +0 -153
package/src/index.ts DELETED
@@ -1,428 +0,0 @@
1
- // The package root entry (".").
2
- //
3
- // SCOPE — read before adding an export here.
4
- // -----------------------------------------
5
- // Every consumer of `@kitn.ai/ui` pays for this barrel, INCLUDING React/Vue/
6
- // Svelte consumers who never render a Solid component. It is therefore frozen at
7
- // the surface that shipped: adding a Solid component here taxes four frameworks
8
- // to serve one. Closing the element coverage gaps on this file grew it
9
- // 591,359 -> 705,031 bytes (+19.2%), which is what motivated the split. (That
10
- // measurement was taken at the then-79 elements; the catalog grows, the bytes
11
- // quoted do not — they are a record of the split, not a current reading.)
12
- //
13
- // The COMPLETE SolidJS surface — a component for EVERY registered element plus a
14
- // `<Name>Props` type for every public component — lives on `@kitn.ai/ui/solid`
15
- // (src/solid.ts), which is its own build target so only Solid consumers pay for
16
- // it. `npm run verify:solid-coverage` prints the element count and proves that
17
- // surface n/n on every run, which is why no count is restated here. `./solid`
18
- // re-exports this file, so it is a strict superset: anything here is reachable
19
- // there too, and a Solid consumer only ever needs the one import.
20
- //
21
- // Rule of thumb: a NEW Solid component export belongs in src/solid.ts.
22
- // Type-only exports are free (fully erased by the build) and may live in either.
23
-
24
- // Shared types (folded in from @tab-zen/shared)
25
- export type { ModelOption, SearchFilters, ConversationScope, ConversationSummary, ConversationGroup } from './types';
26
-
27
- // Utilities
28
- export { cn } from './utils/cn';
29
-
30
- // Layer 1: Headless Primitives
31
- export { createKaiChat } from './primitives/create-kai-chat';
32
- export type { CreateKaiChatOptions, KaiChatStore } from './primitives/create-kai-chat';
33
- export { useAutoResize } from './primitives/use-auto-resize';
34
- export { useStickToBottom } from './primitives/use-stick-to-bottom';
35
- export { useTextStream } from './primitives/use-text-stream';
36
- export type { UseTextStreamOptions, TextStreamSegment } from './primitives/use-text-stream';
37
- export { useVoiceRecorder } from './primitives/use-voice-recorder';
38
- export type { UseVoiceRecorderOptions } from './primitives/use-voice-recorder';
39
- export { ChatConfig, useChatConfig, proseClass, textClass } from './primitives/chat-config';
40
- export type { ChatConfigValue, ProseSize, ChatConfigProps } from './primitives/chat-config';
41
- export { configureCodeHighlighting, isCodeHighlightingEnabled } from './primitives/highlighter';
42
- export type { CodeHighlightingOptions } from './primitives/highlighter';
43
- export { configurePdfPreview, isPdfPreviewEnabled } from './primitives/pdf-preview';
44
- export type { PdfPreviewOptions } from './primitives/pdf-preview';
45
-
46
- // Toasts: imperative `toast()` API + the reactive store behind <kai-toast-region>
47
- export { toast, configureToasts, ensureMounted as ensureToastRegion, getToasts } from './primitives/toast-store';
48
- export type {
49
- ToastItem, ToastVariant, ToastAction, ToastOptions, ToastHandle, ToastFn, ToastConfig,
50
- } from './primitives/toast-store';
51
- export { Toast, ToastRegion } from './components/toast';
52
- export type {
53
- ToastProps, ToastRegionProps, ToastDismissReason, ToastPosition,
54
- } from './components/toast';
55
-
56
- // Card Contract (generative-UI foundation)
57
- export { CARD_CONTRACT_VERSION } from './primitives/card-contract';
58
- export type {
59
- CardEnvelope, CardContext, CardEvent, CardEventKind, CardResolution, CardHost, CardPolicy,
60
- } from './primitives/card-contract';
61
- export { applyResolution, resolutionFromEvent } from './primitives/card-resolution';
62
- export { CardProvider, useCardHost } from './primitives/card-host';
63
- export type { CardProviderProps } from './primitives/card-host';
64
- export { CARD_EVENT_NAME, emitCardEvent, routeCardEvent, listenForCardEvents } from './primitives/card-routing';
65
- export { dismissRecovery, defaultIsReopenable } from './primitives/card-recovery';
66
- export type {
67
- RecoveryToast, ReopenEnv, DismissRecoveryOptions,
68
- } from './primitives/card-recovery';
69
- export { validateAgainstSchema } from './primitives/card-validate';
70
- export type { JsonSchema, ValidationResult } from './primitives/card-validate';
71
-
72
- // Remote host SDK (iframe transport — host side only; provider runtime ships via ./provider subpath)
73
- export { mountRemoteCard } from './remote/host-embed';
74
- export type { MountRemoteCardOptions, RemoteCardHandle } from './remote/host-embed';
75
-
76
- // Card dispatcher (generative-UI host glue)
77
- export { CardRenderer, renderCard } from './components/card-renderer';
78
- export type { CardRendererProps } from './components/card-renderer';
79
- export { CardFallback } from './components/card-fallback';
80
- export type { CardFallbackProps } from './components/card-fallback';
81
- export {
82
- BUILTIN_CARD_TAGS, BUILTIN_CARD_COMPONENTS, mergeCardTags, mergeCardComponents,
83
- } from './primitives/card-registry';
84
- export type { CardComponent, CardComponentMap, CardTagMap } from './primitives/card-registry';
85
-
86
- // Card: kai-card (base shell) + kai-form (JSON-Schema form renderer)
87
- export { Card } from './components/card';
88
- export type { CardProps } from './components/card';
89
- export { DismissedStub, stubIntent } from './components/dismissed-stub';
90
- export type { DismissedStubProps, DismissedCardType } from './components/dismissed-stub';
91
- export { Form, validateForm, buildResult, widgetFor, orderedKeys, coerceValue } from './components/form';
92
- export type {
93
- FormProps,
94
- FormField,
95
- FormDefinition,
96
- FormCardEnvelope,
97
- FormValidation,
98
- WidgetKind,
99
- } from './components/form';
100
-
101
- // Card: kai-confirm (approval) + kai-tasks (selectable plan)
102
- export {
103
- ConfirmCard,
104
- CONFIRM_CARD_TYPE,
105
- buttonVariantForStyle,
106
- normalizeActions,
107
- defaultActionId,
108
- } from './components/confirm-card';
109
- export type {
110
- ConfirmCardProps,
111
- ConfirmAction,
112
- ConfirmActionStyle,
113
- ConfirmTone,
114
- ConfirmCardData,
115
- ConfirmCardEnvelope,
116
- } from './components/confirm-card';
117
- export {
118
- TasksCard,
119
- TASKS_CARD_TYPE,
120
- normalizeTasks,
121
- initialSelected,
122
- selectedInOrder,
123
- toggleableIds,
124
- selectAllState,
125
- showSelectAll,
126
- canConfirm,
127
- isMaxReached,
128
- confirmReason,
129
- } from './components/tasks-card';
130
- export type {
131
- TasksCardProps,
132
- TasksTask,
133
- TasksCardData,
134
- TasksCardResult,
135
- TasksCardEnvelope,
136
- SelectAllState,
137
- } from './components/tasks-card';
138
-
139
- // Card: kai-choice (single-select option card)
140
- export {
141
- ChoiceCard,
142
- CHOICE_CARD_TYPE,
143
- OTHER_ACTION,
144
- normalizeOptions,
145
- resolveOtherConfig,
146
- nextEnabledIndex,
147
- firstEnabledIndex,
148
- } from './components/choice-card';
149
- export type {
150
- ChoiceCardProps,
151
- ChoiceOption,
152
- ChoiceOptionMedia,
153
- ChoiceAllowOther,
154
- ChoiceCardData,
155
- ChoiceCardEnvelope,
156
- } from './components/choice-card';
157
-
158
- // Card: kai-link-preview (OG/link preview) + kai-embed (lazy media embed)
159
- export { LinkPreview } from './components/link-preview';
160
- export type { LinkPreviewProps } from './components/link-preview';
161
- export { Embed } from './components/embed';
162
- export type { EmbedProps } from './components/embed';
163
- export {
164
- configureLinkPreview,
165
- resolveLinkMetadata,
166
- hasLinkPreviewFetcher,
167
- LINK_PREVIEW_TYPE,
168
- } from './primitives/link-preview';
169
- export type { LinkPreviewData, LinkPreviewEnvelope, LinkMetadataFetcher } from './primitives/link-preview';
170
- export {
171
- resolveEmbed,
172
- parseYouTubeId,
173
- parseVimeoId,
174
- configureEmbedAllowlist,
175
- isGenericOriginAllowed,
176
- EMBED_CARD_TYPE,
177
- } from './primitives/embed-providers';
178
- export type { EmbedCardData, EmbedCardEnvelope, EmbedProvider, ResolvedEmbed } from './primitives/embed-providers';
179
-
180
- // Layer 2: UI Primitives
181
- export { Button, buttonVariants } from './ui/button';
182
- export type { ButtonProps } from './ui/button';
183
- export { Avatar } from './ui/avatar';
184
- export type { AvatarProps } from './ui/avatar';
185
- export { Tooltip } from './ui/tooltip';
186
- export type { TooltipProps, TooltipController } from './ui/tooltip';
187
- export { HoverCard } from './ui/hover-card';
188
- export type { HoverCardProps, HoverCardController } from './ui/hover-card';
189
- export { Collapsible, CollapsibleTrigger, CollapsibleContent } from './ui/collapsible';
190
- export type {
191
- CollapsibleProps, CollapsibleTriggerProps, CollapsibleContentProps, CollapsibleController,
192
- } from './ui/collapsible';
193
- export { ScrollArea } from './ui/scroll-area';
194
- export type { ScrollAreaProps, ScrollOrientation } from './ui/scroll-area';
195
- export { Dropdown, DropdownTrigger, DropdownContent, DropdownItem } from './ui/dropdown';
196
- export type {
197
- DropdownProps, DropdownTriggerProps, DropdownContentProps, DropdownItemProps, DropdownController,
198
- } from './ui/dropdown';
199
- export { Textarea } from './ui/textarea';
200
- export type { TextareaProps } from './ui/textarea';
201
- export { Badge } from './ui/badge';
202
- export type { BadgeProps } from './ui/badge';
203
- export { Separator } from './ui/separator';
204
- export type { SeparatorProps } from './ui/separator';
205
- export { ResizablePanelGroup, ResizablePanel, ResizableHandle, Resizable, normalizeSize, resolveToPx } from './ui/resizable';
206
- export type { ResizablePanelGroupProps, ResizablePanelProps, ResizableHandleProps, ResizableProps, SizeValue } from './ui/resizable';
207
- export { Skeleton } from './ui/skeleton';
208
- export type { SkeletonProps, SkeletonVariant } from './ui/skeleton';
209
- export { FileTree, buildFileTree } from './components/file-tree';
210
- export type {
211
- FileTreeProps, FileTreeFile, FileTreeNode, FileTreeFolderNode, FileTreeFileNode,
212
- } from './components/file-tree';
213
- export { Artifact } from './components/artifact';
214
- export type { ArtifactProps, ArtifactFile, ArtifactTab } from './components/artifact';
215
- export { ArtifactCard, DEFAULT_ARTIFACT_CARD_HEIGHT } from './components/artifact-card';
216
- // `ArtifactCardFile` is the SAME declaration `FileTreeFile` and `ArtifactFile`
217
- // alias, authored in primitives/card-data-types.ts because `ArtifactCardData.files`
218
- // reaches it and that module has to stay resolvable from a Node/no-DOM project.
219
- // It is exported here under its authored name because that is the name the
220
- // generated element metadata records for `kai-artifact.files` / `kai-file-tree.files`,
221
- // and tests/elements/prop-types-exported.ts requires every named prop type to be
222
- // importable from this entry. The two aliases stay exported above, unchanged.
223
- export type {
224
- ArtifactCardProps,
225
- ArtifactCardData,
226
- ArtifactCardEnvelope,
227
- ArtifactCardFile,
228
- ArtifactCardTab,
229
- } from './components/artifact-card';
230
-
231
- // Layer 3: AI/Feature Components
232
- export {
233
- ChatContainer, ChatContainerRoot, ChatContainerContent, ChatContainerScrollAnchor,
234
- useChatContainer,
235
- } from './components/chat-container';
236
- export type {
237
- ChatContainerProps, ChatContainerRootProps, ChatContainerContentProps, ChatContainerScrollAnchorProps,
238
- } from './components/chat-container';
239
- export { Message, MessageAvatar, MessageContent, MessageActions, MessageAction, MessageCopyButton, MessageBody } from './components/message';
240
- export type {
241
- MessageProps, MessageAvatarProps, MessageContentProps, MessageActionsProps,
242
- MessageActionProps, MessageCopyButtonProps, MessageBodyProps,
243
- } from './components/message';
244
- export { ResponseCompare, useResolved } from './components/response-compare';
245
- export type { ResponseCompareProps, CompareLayout, ResolvedController } from './components/response-compare';
246
- export {
247
- normalizeCandidates,
248
- buildSelection,
249
- isAnyStreaming,
250
- } from './components/response-compare';
251
- export type {
252
- CompareCandidate,
253
- ComparePair,
254
- CompareCollapse,
255
- ResponseCompareData,
256
- CompareSelection,
257
- } from './components/response-compare';
258
- export { MessageSkills } from './components/message-skills';
259
- export type { MessageSkillsProps, Skill as MessageSkill } from './components/message-skills';
260
- export {
261
- PromptInput, PromptInputTextarea, PromptInputActions, PromptInputAction,
262
- usePromptInput,
263
- } from './components/prompt-input';
264
- export type {
265
- PromptInputProps, PromptInputTextareaProps, PromptInputActionsProps, PromptInputActionProps,
266
- } from './components/prompt-input';
267
- export { ResponseStream } from './components/response-stream';
268
- export type { ResponseStreamProps } from './components/response-stream';
269
- export { Markdown } from './components/markdown';
270
- export type { MarkdownProps } from './components/markdown';
271
- export { CodeBlock, CodeBlockCode, CodeBlockGroup } from './components/code-block';
272
- export type { CodeBlockProps, CodeBlockCodeProps, CodeBlockGroupProps } from './components/code-block';
273
- export { Loader } from './components/loader';
274
- export type { LoaderVariant, LoaderSize, LoaderProps } from './components/loader';
275
- export {
276
- CircularLoader, ClassicLoader, PulseLoader, PulseDotLoader,
277
- DotsLoader, TypingLoader, WaveLoader, BarsLoader,
278
- TerminalLoader, TextBlinkLoader, TextShimmerLoader, TextDotsLoader,
279
- } from './components/loader';
280
- export type {
281
- LoaderShapeProps, LoaderTextProps,
282
- CircularLoaderProps, ClassicLoaderProps, PulseLoaderProps, PulseDotLoaderProps,
283
- DotsLoaderProps, TypingLoaderProps, WaveLoaderProps, BarsLoaderProps,
284
- TerminalLoaderProps, TextBlinkLoaderProps, TextShimmerLoaderProps, TextDotsLoaderProps,
285
- } from './components/loader';
286
- export { FeedbackBar, type FeedbackValue, type FeedbackDetail, type FeedbackBarProps } from './components/feedback-bar';
287
- export {
288
- ChainOfThought, ChainOfThoughtStep, ChainOfThoughtTrigger,
289
- ChainOfThoughtContent, ChainOfThoughtItem,
290
- } from './components/chain-of-thought';
291
- export type {
292
- ChainOfThoughtProps, ChainOfThoughtStepProps, ChainOfThoughtTriggerProps,
293
- ChainOfThoughtContentProps, ChainOfThoughtItemProps,
294
- ChainOfThoughtType, ChainOfThoughtStepData, ChainOfThoughtController,
295
- } from './components/chain-of-thought';
296
- export { Source, SourceTrigger, SourceContent, SourceList } from './components/source';
297
- export type { SourceProps, SourceTriggerProps, SourceContentProps, SourceListProps } from './components/source';
298
- export { PromptSuggestion } from './components/prompt-suggestion';
299
- export type { PromptSuggestionProps } from './components/prompt-suggestion';
300
- export {
301
- Empty, EmptyHeader, EmptyMedia, EmptyTitle, EmptyDescription, EmptyContent, emptyMediaVariants,
302
- } from './components/empty';
303
- export type {
304
- EmptyProps, EmptyHeaderProps, EmptyMediaProps, EmptyTitleProps, EmptyDescriptionProps, EmptyContentProps,
305
- } from './components/empty';
306
- export { ScrollButton } from './components/scroll-button';
307
- export type { ScrollButtonProps } from './components/scroll-button';
308
- export { TextShimmer } from './components/text-shimmer';
309
- export type { TextShimmerProps } from './components/text-shimmer';
310
- export { Checkpoint, CheckpointIcon, CheckpointTrigger } from './components/checkpoint';
311
- export type { CheckpointProps, CheckpointIconProps, CheckpointTriggerProps } from './components/checkpoint';
312
- export {
313
- Context,
314
- ContextTrigger,
315
- ContextContent,
316
- ContextContentHeader,
317
- ContextContentBody,
318
- ContextContentFooter,
319
- ContextInputUsage,
320
- ContextOutputUsage,
321
- ContextReasoningUsage,
322
- ContextCacheUsage,
323
- } from './components/context';
324
- export type {
325
- ContextProps,
326
- ContextTriggerProps,
327
- ContextContentProps,
328
- ContextContentHeaderProps,
329
- ContextContentBodyProps,
330
- ContextContentFooterProps,
331
- ContextUsageRowProps,
332
- ContextInputUsageProps,
333
- ContextOutputUsageProps,
334
- ContextReasoningUsageProps,
335
- ContextCacheUsageProps,
336
- } from './components/context';
337
- export { VoiceInput } from './components/voice-input';
338
- export type { VoiceInputProps, VoiceInputController } from './components/voice-input';
339
- export { ConversationList } from './components/conversation-list';
340
- export type { ConversationListProps, ConversationListController } from './components/conversation-list';
341
- export { ConversationItem } from './components/conversation-item';
342
- export { SlottedConversationItem } from './components/conversation-item';
343
- export type { SlottedConversationItemProps } from './components/conversation-item';
344
- export type { ConversationItemProps } from './components/conversation-item';
345
- export { ModelSwitcher } from './components/model-switcher';
346
- export type { ModelSwitcherProps } from './components/model-switcher';
347
- export { ChatScopePicker } from './components/chat-scope-picker';
348
- export type { ChatScopePickerProps } from './components/chat-scope-picker';
349
- export { Tool } from './components/tool';
350
- export type { ToolPart, ToolProps } from './components/tool';
351
- // ToolPart.kind's doc comment says "Derive with `classifyTool(type)`", so the
352
- // function has to be reachable from every entry that surfaces ToolPart. It is
353
- // total, deterministic and terminates in 'generic', so it is safe public API and
354
- // genuinely useful to anyone rendering tool calls themselves.
355
- export { classifyTool } from './components/tool-classify';
356
- export type { ToolKind } from './components/tool-classify';
357
- export { ThinkingBar } from './components/thinking-bar';
358
- export type { ThinkingBarProps } from './components/thinking-bar';
359
- export { Reasoning, ReasoningTrigger, ReasoningContent } from './components/reasoning';
360
- export type { ReasoningProps, ReasoningTriggerProps, ReasoningContentProps } from './components/reasoning';
361
- export { Image } from './components/image';
362
- export type { ImageProps, GeneratedImageLike } from './components/image';
363
- export { FileUpload, FileUploadTrigger, FileUploadContent } from './components/file-upload';
364
- export type { FileUploadProps, FileUploadTriggerProps, FileUploadContentProps } from './components/file-upload';
365
- export {
366
- Attachments, Attachment, AttachmentPreview, AttachmentInfo, AttachmentRemove,
367
- AttachmentHoverCard, AttachmentHoverCardTrigger, AttachmentHoverCardContent,
368
- AttachmentEmpty, getMediaCategory, getAttachmentLabel,
369
- useAttachmentsContext, useAttachmentContext,
370
- } from './components/attachments';
371
- export type {
372
- AttachmentData, AttachmentMediaCategory, AttachmentVariant,
373
- AttachmentsProps, AttachmentProps, AttachmentPreviewProps,
374
- AttachmentInfoProps, AttachmentRemoveProps, AttachmentEmptyProps,
375
- AttachmentHoverCardProps, AttachmentHoverCardTriggerProps, AttachmentHoverCardContentProps,
376
- } from './components/attachments';
377
-
378
- // Chat message types — public API for consumers who need to type their own message arrays.
379
- // NOTE: chat-types.ts also exports an unrelated `Source` interface (a citation), and
380
- // `Source` is already a public component export (./components/source, a citation
381
- // chip/trigger), so re-exporting both under that name is a duplicate-identifier error.
382
- // The citation type therefore ships under its alias `MessageSource`, which is also the
383
- // argument type of the public `AssistantStream.addSource(source)`.
384
- export type {
385
- ChatMessage, ChatMessageAction, CustomAction, AvatarData, FeedbackVote, MessagePart,
386
- MessageSource, RawOrigin,
387
- } from './elements/chat-types';
388
-
389
- // Composer document model. This belongs on "." rather than "./solid" because it
390
- // is part of the ELEMENT contract, not the Solid-only surface: `ComposerDoc` is
391
- // the non-string half of `kai-prompt-input` / `kai-composer` / `kai-default-input`'s
392
- // `value` property, and `doc` + `entities` on their `kai-submit` /
393
- // `kai-value-change` details. The shipped prop docs name `ComposerDoc` by name,
394
- // so a React or Vue consumer reading them has to be able to import it. Type-only,
395
- // so it is erased by the build and costs the root barrel nothing.
396
- export type { ComposerDoc, Segment, EntityRef } from './primitives/composer-model';
397
-
398
- // ---------------------------------------------------------------------------
399
- // Named types for the remaining kai-* array/object PROPERTIES.
400
- //
401
- // Same rationale as `ComposerDoc` above, applied to the whole class instead of
402
- // one instance: the generated `./elements` declarations and React wrappers expand
403
- // every prop type structurally (deliberately — see the `IMPORTS = {}` note in
404
- // scripts/gen-element-api.mjs), so a consumer who wants to NAME the shape had to
405
- // write `NonNullable<KaiPromptInputElementProps['triggers']>`. Every element-prop
406
- // type that has a name in source is now reachable from "." — the entry a React /
407
- // Vue / Svelte / vanilla consumer imports — not only from "./solid".
408
- //
409
- // Type-only, so the root barrel pays nothing at runtime.
410
- // Guarded by tests/elements/prop-types-exported.test.ts, which re-derives the
411
- // list from the facades with the TS checker and fails on a new unexported one.
412
- // ---------------------------------------------------------------------------
413
- export type { TriggerDef, TriggerItem } from './components/composer';
414
- export type { ChatThreadContextUsage } from './components/chat-thread';
415
- export type { Skill } from './components/message-skills';
416
- export type { AgentStatus } from './ui/agent-card';
417
- export type { KaiNavItem } from './ui/nav';
418
- export type { KaiTabItem } from './ui/tabs';
419
- export type { PaneStatus } from './ui/pane';
420
- export type { PaneTab } from './ui/pane-group';
421
- export type {
422
- KaiCheckboxOption, KaiCommandItem, KaiContextUsage, KaiMenuItem, KaiRadioOption, KaiSegmentedOption, KaiSelectOption,
423
- KaiSourceItem,
424
- } from './elements/element-data-types';
425
- // `kai-audio-visualizer.shader` takes a ShaderSpec. The element arrived from main
426
- // after this block was written, and prop-types-exported.test.ts caught it, which
427
- // is the point of deriving that list from the facades rather than maintaining it.
428
- export type { ShaderSpec } from './components/audio-visualizer';
@@ -1,174 +0,0 @@
1
- /**
2
- * Pure reductions from AnalyserNode output to the numbers a visualizer draws.
3
- *
4
- * Ported from livekit/components-js `packages/react/src/hooks/useTrackVolume.ts`
5
- * (Apache License 2.0). Both the dB normalization curve AND the band split
6
- * are carried over so our output matches theirs frame for frame: the split
7
- * is upstream's linear-proportional chunking (their PR #1265). An interim
8
- * revision here spaced the buckets geometrically to serve a wide raw-mic
9
- * window; both reverted together -- see `reduceToBands` below and the
10
- * DEFAULTS docstring in use-audio-analysis.ts for the full story.
11
- */
12
-
13
- /** dB floor of the normalization curve. Below this reads as silence. */
14
- const MIN_DB = -100;
15
- /** dB ceiling. Above this saturates. */
16
- const MAX_DB = -10;
17
-
18
- /**
19
- * Map one `getFloatFrequencyData` decibel value to 0..1.
20
- *
21
- * The `sqrt` at the end is a perceptual curve, not a normalization step: it
22
- * lifts quiet detail so low-level audio still moves the bars visibly.
23
- */
24
- export function normalizeDb(value: number): number {
25
- if (value === -Infinity) return 0;
26
- const clamped = Math.max(MIN_DB, Math.min(MAX_DB, value));
27
- return Math.sqrt(1 - (clamped * -1) / 100);
28
- }
29
-
30
- /**
31
- * Average a slice of the frequency spectrum into `bands` buckets.
32
- *
33
- * `loPass` / `hiPass` are BIN INDICES relative to `fftSize`, not frequencies.
34
- * Upstream's naming is misleading; the behavior is a plain array slice.
35
- *
36
- * Bucket edges are LINEAR-PROPORTIONAL across `[loPass, hiPass]` -- upstream
37
- * LiveKit's own distribution (`useMultibandTrackVolume`, useTrackVolume.ts
38
- * lines 141-153, rewritten to proportional chunking by their PR #1265): each
39
- * band averages an equal consecutive run of bins, `floor(i * total / bands)`
40
- * to `floor((i + 1) * total / bands)`, and a run that comes out empty reads
41
- * 0 (their `chunkLength === 0` branch). With the default window's 100 bins
42
- * and 5 bands, that is 20 bins averaged per band -- the averaging itself is
43
- * part of upstream's idle stillness, diluting any single flickering bin
44
- * 20:1 (noise-floor diagnosis, table B).
45
- *
46
- * An interim revision spaced these buckets geometrically so that a wide
47
- * raw-microphone window (bins 4-120) kept its upper buckets alive. That
48
- * concentrated the noisiest few low bins into band 0 undiluted, which the
49
- * centre-out mirror below then promoted to the CENTRE element -- the
50
- * measured core of the "white noise when the mic is on" defect (diagnosis
51
- * table B: geometric band 0 idled at 0.52 on real room tone where this
52
- * split reads 0.32 over the same wide window, and exactly 0 over the
53
- * default one). Reverted to upstream's split when the default window
54
- * reverted; the mirror stays, it is orthogonal.
55
- */
56
- export function reduceToBands(
57
- freq: Float32Array,
58
- bands: number,
59
- loPass: number,
60
- hiPass: number,
61
- ): number[] {
62
- // `slice` clamps both ends into the buffer and yields an empty window when
63
- // hiPass <= loPass -- every bucket then reads 0 below, no special case.
64
- const window = freq.slice(Math.max(0, loPass), Math.max(0, hiPass));
65
- const total = window.length;
66
- const out: number[] = [];
67
-
68
- for (let i = 0; i < bands; i++) {
69
- const start = Math.floor((i * total) / bands);
70
- const end = Math.floor(((i + 1) * total) / bands);
71
- if (end <= start) {
72
- out.push(0);
73
- continue;
74
- }
75
- let sum = 0;
76
- for (let j = start; j < end; j++) sum += normalizeDb(window[j] as number);
77
- out.push(sum / (end - start));
78
- }
79
-
80
- return out;
81
- }
82
-
83
- /** Root-mean-square of `getByteFrequencyData`, scaled to 0..1. */
84
- export function reduceToVolume(bytes: Uint8Array): number {
85
- if (bytes.length === 0) return 0;
86
- let sum = 0;
87
- for (let i = 0; i < bytes.length; i++) {
88
- const a = bytes[i] as number;
89
- sum += a * a;
90
- }
91
- return Math.sqrt(sum / bytes.length) / 255;
92
- }
93
-
94
- /**
95
- * Resize a caller-supplied band array to exactly `count` entries. Extra values
96
- * are dropped; a short array repeats its last value (0 when empty) so a
97
- * consumer passing the wrong length gets a sane picture instead of holes.
98
- */
99
- export function normalizeVolumeBands(bands: number[], count: number): number[] {
100
- if (bands.length === count) return bands;
101
- if (bands.length > count) return bands.slice(0, count);
102
- const last = bands[bands.length - 1] ?? 0;
103
- return [...bands, ...new Array(count - bands.length).fill(last)];
104
- }
105
-
106
- /**
107
- * Maps a smaller, ordered set of "half" band values (index 0 = loudest,
108
- * typically lowest frequency) onto `count` positions laid out in a straight
109
- * line -- a row of bars, or a row of grid columns -- centre-outward and
110
- * mirrored: band 0 lands on the centre (an odd `count`) or the centre PAIR
111
- * (an even one, both positions sharing band 0), band 1 on the pair either
112
- * side of that, and so on outward to the two ends.
113
- *
114
- * Every scripted state in this component is already centre-oriented
115
- * (`listening` blinks the centre bar, `connecting` sweeps inward from both
116
- * ends, `thinking` sweeps the middle row) -- `speaking` ramping left to
117
- * right, because it fed the analyser's raw band order straight across, was
118
- * the one state inconsistent with that. This closes that gap.
119
- *
120
- * `halfBands` should have exactly `Math.ceil(count / 2)` entries -- the
121
- * caller is responsible for requesting that many bands from
122
- * `useAudioAnalysis`, matching counts exactly rather than leaning on
123
- * `normalizeVolumeBands`'s pad-by-repeating-the-last-value, which would
124
- * produce a subtly wrong (not obviously broken) shape here. A shorter
125
- * `halfBands` still degrades sanely: the outermost positions repeat the last
126
- * value available rather than reading `undefined`.
127
- */
128
- export function mirrorBandsCenterOut(halfBands: number[], count: number): number[] {
129
- const center = (count - 1) / 2;
130
- const out: number[] = new Array(count);
131
- for (let i = 0; i < count; i++) {
132
- const ring = Math.floor(Math.abs(i - center));
133
- out[i] = halfBands[Math.min(ring, halfBands.length - 1)] ?? 0;
134
- }
135
- return out;
136
- }
137
-
138
- /**
139
- * Maps a smaller, ordered set of "half" band values onto `count` positions
140
- * arranged around a RING (radial's spokes), mirrored left-right across a
141
- * single vertical axis rather than fanned from a linear centre: index 0 and
142
- * index `count / 2` (for an even `count`; radial warns when `count` is not
143
- * divisible by 4, so this is the common case) are each their own fixed
144
- * point of the reflection and both land band 0, and every other index pairs
145
- * with its mirror partner at `count - i`, sharing a band.
146
- *
147
- * Radial's own geometry (`variant-radial.tsx`) places index 0 at the
148
- * BOTTOM of the ring (`rotate(0) translateY(radius)`, and CSS rotation is
149
- * clockwise for a positive angle), so band 0 (usually the loudest) reads at
150
- * the bottom, fading toward the top -- not band 0 at both the top AND the
151
- * bottom, which would need a second, horizontal mirror axis on top of this
152
- * one. Chosen over that fuller symmetry because it reuses the exact same
153
- * `Math.ceil(count / 2)` band request as the linear mirror above (one rule
154
- * for every variant, not a radial-specific band count), and because the
155
- * task's request was "spikes vary in length, not moving as one" -- this
156
- * already delivers that. If bottom-loud/top-quiet reads wrong in practice,
157
- * swapping to true 4-fold symmetry is a self-contained change here, not
158
- * elsewhere.
159
- *
160
- * For an even `count`, the antipodal index (`count / 2`) needs one more
161
- * distinct band than the linear mirror does (rings run 0..`count / 2`, not
162
- * 0..`count / 2 - 1`) -- with only `Math.ceil(count / 2)` bands available,
163
- * that one index clamps to the same value as its nearest neighbour rather
164
- * than getting a unique band. A minor, deliberate simplification for the
165
- * same one-rule-for-every-variant reason above.
166
- */
167
- export function mirrorBandsAroundRing(halfBands: number[], count: number): number[] {
168
- const out: number[] = new Array(count);
169
- for (let i = 0; i < count; i++) {
170
- const ring = Math.min(i, count - i);
171
- out[i] = halfBands[Math.min(ring, halfBands.length - 1)] ?? 0;
172
- }
173
- return out;
174
- }
@@ -1,63 +0,0 @@
1
- // src/primitives/card-component-types.ts
2
- // `CardEnvelope.type` -> the Solid component that renders it, as a TYPE.
3
- //
4
- // TYPES ONLY, AND THAT IS THE WHOLE FILE. `BUILTIN_CARD_COMPONENTS` and
5
- // `mergeCardComponents` stay in card-registry.tsx and cannot follow them here: they
6
- // ARE JSX. So this is not the same split card-tags.ts made — that one moved data and
7
- // its type; this one moves only the type, because the value half has nowhere else to
8
- // go. Do not try to "finish" the symmetry by dragging the component map over.
9
- //
10
- // WHY THE TYPES ARE ALONE IN A `.ts`
11
- // ----------------------------------
12
- // The same reason, one layer along, that card-tags.ts exists — read that file's header
13
- // first; this is the second instance of its problem, not a new one.
14
- //
15
- // `@kitn.ai/ui/schemas` is the server-safe entry, and src/schemas/registry.ts declares
16
- // `CustomCardSpec.component` and `CardRegistry.components` in terms of
17
- // `CardComponentMap`. That is a TYPE import and erases at runtime, but a type import
18
- // still has to RESOLVE, and while these two types lived in card-registry.tsx it
19
- // resolved to a `.tsx`. tsconfig.mcp.json has no `jsx` on purpose, so the `kai` MCP's
20
- // typecheck pass reported, on any tree that had not been built:
21
- //
22
- // src/schemas/registry.ts(61,51): error TS6142: Module '../primitives/card-registry'
23
- // was resolved to '.../card-registry.tsx', but '--jsx' is not set.
24
- //
25
- // Exactly one error, and the last one standing on an unbuilt tree. Moving the two type
26
- // aliases into this file takes that pass to 0. Measured on this tree, both directions.
27
- //
28
- // Relaxing tsconfig.mcp.json instead is not an option, and that is measured too, not
29
- // recalled: giving that project `jsx: "preserve"` + `jsxImportSource: "solid-js"` —
30
- // the settings the main tsconfig.json actually uses — takes it from 1 error to 130,
31
- // almost all `TS2304: Cannot find name 'HTMLDivElement' / 'window'`, because a `jsx`
32
- // setting drags the whole Solid component tree into a Node-only, `lib: ["ESNext"]`
33
- // pass. (`jsx: "preserve"` with no import source is worse still: 838.) card-tags.ts
34
- // records 1364 for the broader case. The figures differ because the reachable set
35
- // differs; the conclusion does not. The Node/no-DOM boundary is load-bearing.
36
- //
37
- // `import type { Component } from 'solid-js'` below does NOT reintroduce the problem
38
- // it just solved. Type-importing from solid-js resolves to a `.d.ts`, and a
39
- // declaration file needs no `jsx` to be read; `skipLibCheck` covers what is inside it.
40
- // It is resolving a `.tsx` SOURCE file that TS6142 objects to, and this file resolves
41
- // none.
42
- //
43
- // WHAT THIS SPLIT DOES NOT DO
44
- // ---------------------------
45
- // It changes nothing at runtime, and must not be sold as if it did. This module is
46
- // types only, so it compiles to nothing and there is no emitted module to compare:
47
- // `verify:ssr` and `verify:schemas` read the BUILT entry and cannot tell the two
48
- // arrangements apart even in principle. card-tags.ts records the same finding for its
49
- // own case from the harder direction, where there WAS a bundle to diff and it came out
50
- // byte-identical. The boundary this file defends is a compile-time one. The
51
- // discriminating check is `tsc --noEmit -p tsconfig.mcp.json` on an UNBUILT tree, and
52
- // nothing else is evidence for it.
53
-
54
- import type { Component } from 'solid-js';
55
- import type { CardEnvelope, CardHost } from './card-contract';
56
-
57
- /** Solid renderer for one envelope. `host` is the resolved CardHost so each wrapper
58
- * can bridge its card's emit convention (form/confirm/tasks take `host`;
59
- * link/embed take `onEmit`). */
60
- export type CardComponent = Component<{ envelope: CardEnvelope; host?: CardHost }>;
61
-
62
- /** Solid layer: envelope type → the component that draws it. */
63
- export type CardComponentMap = Record<string, CardComponent>;