@kitn.ai/ui 0.20.1 → 0.21.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 (500) hide show
  1. package/README.md +44 -45
  2. package/dist/components/artifact-card.d.ts +51 -0
  3. package/dist/components/artifact.d.ts +1 -1
  4. package/dist/components/attachments.d.ts +2 -2
  5. package/dist/components/audio-visualizer/index.d.ts +3 -3
  6. package/dist/components/audio-visualizer/labs/lab-choreography.d.ts +59 -0
  7. package/dist/components/audio-visualizer/labs/lab-shaders.d.ts +22 -0
  8. package/dist/components/audio-visualizer/labs/lab-visualizer.d.ts +18 -0
  9. package/dist/components/audio-visualizer/variant-aurora.d.ts +2 -2
  10. package/dist/components/audio-visualizer/variant-bar.d.ts +2 -2
  11. package/dist/components/audio-visualizer/variant-custom.d.ts +2 -2
  12. package/dist/components/audio-visualizer/variant-grid.d.ts +1 -1
  13. package/dist/components/audio-visualizer/variant-radial.d.ts +1 -1
  14. package/dist/components/audio-visualizer/variant-wave.d.ts +1 -1
  15. package/dist/components/card-fallback.d.ts +12 -2
  16. package/dist/components/card-renderer.d.ts +63 -2
  17. package/dist/components/chat-container.d.ts +3 -0
  18. package/dist/components/chat-scope-picker.d.ts +2 -2
  19. package/dist/components/chat-thread.d.ts +68 -18
  20. package/dist/components/choice-card.d.ts +3 -28
  21. package/dist/components/composer-dom.d.ts +1 -1
  22. package/dist/components/composer-highlight.d.ts +1 -1
  23. package/dist/components/composer-history.d.ts +1 -1
  24. package/dist/components/composer.d.ts +1 -1
  25. package/dist/components/confirm-card.d.ts +3 -18
  26. package/dist/components/context.d.ts +8 -4
  27. package/dist/components/conversation-item.d.ts +1 -1
  28. package/dist/components/conversation-list.d.ts +4 -3
  29. package/dist/components/embed.d.ts +3 -3
  30. package/dist/components/file-tree.d.ts +11 -22
  31. package/dist/components/form-widgets.d.ts +1 -1
  32. package/dist/components/form.d.ts +3 -44
  33. package/dist/components/link-preview.d.ts +3 -3
  34. package/dist/components/loader.d.ts +30 -48
  35. package/dist/components/message-skills.d.ts +4 -0
  36. package/dist/components/message.d.ts +84 -21
  37. package/dist/components/model-switcher.d.ts +2 -2
  38. package/dist/components/prompt-input.d.ts +2 -2
  39. package/dist/components/response-compare-types.d.ts +11 -2
  40. package/dist/components/response-compare.d.ts +3 -3
  41. package/dist/components/source.d.ts +12 -3
  42. package/dist/components/tasks-card.d.ts +3 -31
  43. package/dist/components/thread.d.ts +17 -5
  44. package/dist/components/toast.d.ts +2 -2
  45. package/dist/components/tool-classify.d.ts +8 -0
  46. package/dist/components/tool-types.d.ts +29 -1
  47. package/dist/components/tool.d.ts +3 -3
  48. package/dist/components/use-card-resolution.d.ts +1 -1
  49. package/dist/create-tween-D3Y5qiij.js +338 -0
  50. package/dist/create-tween-DGKY1FDY.js +341 -0
  51. package/dist/create-tween-paho5Rh-.js +7 -0
  52. package/dist/custom-elements.json +1681 -454
  53. package/dist/elements/agent-card.js +1 -1
  54. package/dist/elements/artifact.js +1 -1
  55. package/dist/elements/attachments.js +1 -1
  56. package/dist/elements/audio-visualizer.js +1 -1
  57. package/dist/elements/avatar.js +1 -1
  58. package/dist/elements/badge.js +1 -1
  59. package/dist/elements/button.js +1 -1
  60. package/dist/elements/card.js +1 -1
  61. package/dist/elements/cards.js +1 -1
  62. package/dist/elements/chain-of-thought.js +1 -1
  63. package/dist/elements/chat-scope-picker.js +1 -1
  64. package/dist/elements/chat-types.d.ts +70 -10
  65. package/dist/elements/chat-workspace.js +1 -1
  66. package/dist/elements/chat.js +1 -1
  67. package/dist/elements/checkpoint.js +1 -1
  68. package/dist/elements/choice.js +1 -1
  69. package/dist/elements/chunks/{Icon-Tj58ES_d.js → Icon-C-2LvGDG.js} +1 -1
  70. package/dist/elements/chunks/{action-icons-ns1Fnedj.js → action-icons-CaYoImEk.js} +1 -1
  71. package/dist/elements/chunks/arrow-left-Bb46H7w9.js +1 -0
  72. package/dist/elements/chunks/artifact-BBIscOxJ.js +1 -0
  73. package/dist/elements/chunks/{attachments-mCB5F1Fq.js → attachments-BB56zoji.js} +1 -1
  74. package/dist/elements/chunks/audio-visualizer-BxOx4THz.js +1 -0
  75. package/dist/elements/chunks/{badge-B4Zuajl2.js → badge-SxLSZ19R.js} +1 -1
  76. package/dist/elements/chunks/{button-ZWNif3--.js → button-CmkUkz6c.js} +1 -1
  77. package/dist/elements/chunks/card-renderer-Db4ffkWv.js +1 -0
  78. package/dist/elements/chunks/card-tags-D8lZ-C_U.js +1 -0
  79. package/dist/elements/chunks/chat-thread-B3Ks-cKr.js +1 -0
  80. package/dist/elements/chunks/check-C8desc_h.js +1 -0
  81. package/dist/elements/chunks/chevron-down-DKtc2HNB.js +1 -0
  82. package/dist/elements/chunks/chevron-right-Dw4GPhwL.js +1 -0
  83. package/dist/elements/chunks/choice-card-Q9cYYDyM.js +1 -0
  84. package/dist/elements/chunks/circle-BeokBsvB.js +1 -0
  85. package/dist/elements/chunks/circle-check-wJSqt859.js +1 -0
  86. package/dist/elements/chunks/{circle-x-B7faJFlY.js → circle-x-D0MEfxOM.js} +1 -1
  87. package/dist/elements/chunks/code-block-C8VzAraE.js +1 -0
  88. package/dist/elements/chunks/{collapsible-DM1Ckd4e.js → collapsible-Cvj61obE.js} +1 -1
  89. package/dist/elements/chunks/{composer-BguS0QL_.js → composer-D86ztyL0.js} +2 -2
  90. package/dist/elements/chunks/confirm-card-BdyDAGLw.js +1 -0
  91. package/dist/elements/chunks/context-WHDl-xSx.js +1 -0
  92. package/dist/elements/chunks/conversation-list-CdR14_Y4.js +1 -0
  93. package/dist/elements/chunks/create-tween-C_A_B638.js +7 -0
  94. package/dist/elements/chunks/{default-input-Cqqilg9t.js → default-input-CSZqUM81.js} +1 -1
  95. package/dist/elements/chunks/define-BzPnNsXg.js +1 -0
  96. package/dist/elements/chunks/{disclosure-CIZ5c8nO.js → disclosure-DVKsoc1F.js} +1 -1
  97. package/dist/elements/chunks/{download-Dsbg3ste.js → download-BjA54IMJ.js} +1 -1
  98. package/dist/elements/chunks/{dropdown-BDd1-Zgi.js → dropdown-BjVVHWXH.js} +1 -1
  99. package/dist/elements/chunks/{ellipsis-Dw6qrss-.js → ellipsis-BNedmqfi.js} +1 -1
  100. package/dist/elements/chunks/embed-DQsl4XEq.js +1 -0
  101. package/dist/elements/chunks/{external-link-Vt74zAoL.js → external-link-Di-dw2CU.js} +1 -1
  102. package/dist/elements/chunks/{file-text-CZrZF6_v.js → file-text-B3sAODCV.js} +1 -1
  103. package/dist/elements/chunks/{file-tree-DF4okKyo.js → file-tree-Dgto-bMn.js} +1 -1
  104. package/dist/elements/chunks/{folder-glP5rha4.js → folder-D6rMadFV.js} +1 -1
  105. package/dist/elements/chunks/form-CILxvhQ7.js +1 -0
  106. package/dist/elements/chunks/hover-card-BtiF4XiU.js +1 -0
  107. package/dist/elements/chunks/{icon-BLb8beoi.js → icon-DKkmze3y.js} +1 -1
  108. package/dist/elements/chunks/{info-CIsv92JK.js → info-CWRjZkuy.js} +1 -1
  109. package/dist/elements/chunks/{input-Dds1kFyt.js → input--QJBK6BA.js} +1 -1
  110. package/dist/elements/chunks/{kbd-De_xbgi9.js → kbd-C3zuKh8R.js} +1 -1
  111. package/dist/elements/chunks/{link-i4r_k7z4.js → link-BL5JA7Q0.js} +1 -1
  112. package/dist/elements/chunks/link-preview-CU37bbXh.js +1 -0
  113. package/dist/elements/chunks/{loader-BmQH4s3V.js → loader-XmpyxyRH.js} +1 -1
  114. package/dist/elements/chunks/{markdown-Zi21WhUz.js → markdown-3Gv5UZ_o.js} +1 -1
  115. package/dist/elements/chunks/message-CnBA2OUt.js +1 -0
  116. package/dist/elements/chunks/message-X5NZbq-W.js +1 -0
  117. package/dist/elements/chunks/message-square-CnpAm_P0.js +1 -0
  118. package/dist/elements/chunks/{minimize-2--ifeCGrl.js → minimize-2-DwyrUTcM.js} +1 -1
  119. package/dist/elements/chunks/{model-switcher-B94YAKsM.js → model-switcher-CclaJEHt.js} +1 -1
  120. package/dist/elements/chunks/{overlay-kD8dwRv_.js → overlay-Cepd-KcS.js} +1 -1
  121. package/dist/elements/chunks/{paperclip-q21dYOSK.js → paperclip-CdwKjrlu.js} +1 -1
  122. package/dist/elements/chunks/{progress-bar-BrAIIaaJ.js → progress-bar-DMVXBD3b.js} +1 -1
  123. package/dist/elements/chunks/{prompt-suggestion-Bjn2K-fR.js → prompt-suggestion-Di_WZE_5.js} +1 -1
  124. package/dist/elements/chunks/reasoning-D0jMch5u.js +1 -0
  125. package/dist/elements/chunks/{resizable-Dp4JExql.js → resizable-1znbL1Gv.js} +1 -1
  126. package/dist/elements/chunks/{rotate-cw-CFWWkpj2.js → rotate-cw-DVhhgx8n.js} +1 -1
  127. package/dist/elements/chunks/{scroll-area-Bb0kHH1j.js → scroll-area-Bs4bFS1P.js} +1 -1
  128. package/dist/elements/chunks/scroll-button-Bet5NLc4.js +1 -0
  129. package/dist/elements/chunks/{separator-9kRgr1X9.js → separator-C5Gh8qGC.js} +1 -1
  130. package/dist/elements/chunks/{settings-B8lmec4D.js → settings-5vmEFg0K.js} +1 -1
  131. package/dist/elements/chunks/{settings-group-I0hEuXiN.js → settings-group-BWLB38kz.js} +1 -1
  132. package/dist/elements/chunks/{share-C3lTiYGt.js → share-BZ3G_DaB.js} +1 -1
  133. package/dist/elements/chunks/skeleton-DafPJQTp.js +1 -0
  134. package/dist/elements/chunks/slots-CIw9RlAe.js +1 -0
  135. package/dist/elements/chunks/source-D_qj_6uJ.js +1 -0
  136. package/dist/elements/chunks/{star-CSJtGxgv.js → star-Cuv7j2IE.js} +1 -1
  137. package/dist/elements/chunks/{store-CHyW95TP.js → store-C1StPHfW.js} +1 -1
  138. package/dist/elements/chunks/tasks-card-EyoBZfpA.js +1 -0
  139. package/dist/elements/chunks/{text-shimmer-Cn9TmNpI.js → text-shimmer-D9gRSh34.js} +1 -1
  140. package/dist/elements/chunks/textarea-DuhtHfcm.js +1 -0
  141. package/dist/elements/chunks/{thumbs-up-PNVVThEF.js → thumbs-up-B9hwv43w.js} +1 -1
  142. package/dist/elements/chunks/{toast-store-DKbQn3Wn.js → toast-store-Bm3DUEDe.js} +1 -1
  143. package/dist/elements/chunks/{tool-DjTRpIpl.js → tool-CDtW7L0z.js} +1 -1
  144. package/dist/elements/chunks/tooltip-eB226mGK.js +1 -0
  145. package/dist/elements/chunks/{triangle-alert-DsHTHCPm.js → triangle-alert-C1SNzTqK.js} +1 -1
  146. package/dist/elements/chunks/use-card-resolution-YZh2MvI5.js +1 -0
  147. package/dist/elements/chunks/{variant-aurora-Dc4nQUia.js → variant-aurora-Cj1F7D0l.js} +2 -2
  148. package/dist/elements/chunks/{variant-custom-y_3kVQhS.js → variant-custom-T9gpt7QE.js} +1 -1
  149. package/dist/elements/chunks/{variant-wave-D5OR1-9Z.js → variant-wave-CxU9z-TE.js} +2 -2
  150. package/dist/elements/chunks/{video-B7vmenoC.js → video-CK4R7Rus.js} +1 -1
  151. package/dist/elements/chunks/x-D1qx0aLd.js +1 -0
  152. package/dist/elements/coachmark.js +1 -1
  153. package/dist/elements/code-block.js +1 -1
  154. package/dist/elements/command.js +1 -1
  155. package/dist/elements/compare.js +1 -1
  156. package/dist/elements/composer.js +1 -1
  157. package/dist/elements/confirm-card.js +1 -1
  158. package/dist/elements/context-meter.js +1 -1
  159. package/dist/elements/conversation-list.js +1 -1
  160. package/dist/elements/default-input.d.ts +7 -7
  161. package/dist/elements/define.d.ts +1 -0
  162. package/dist/elements/dialog.js +1 -1
  163. package/dist/elements/disclosure.d.ts +1 -1
  164. package/dist/elements/editable-label.js +1 -1
  165. package/dist/elements/element-data-types.d.ts +107 -0
  166. package/dist/elements/embed.js +1 -1
  167. package/dist/elements/empty.js +1 -1
  168. package/dist/elements/feedback-bar.js +1 -1
  169. package/dist/elements/file-tree.js +1 -1
  170. package/dist/elements/file-upload.js +1 -1
  171. package/dist/elements/form.js +1 -1
  172. package/dist/elements/hover-card.js +1 -1
  173. package/dist/elements/icon.js +1 -1
  174. package/dist/elements/image.js +1 -1
  175. package/dist/elements/input.js +1 -1
  176. package/dist/elements/kbd.js +1 -1
  177. package/dist/elements/link-preview.js +1 -1
  178. package/dist/elements/loader.js +1 -1
  179. package/dist/elements/markdown.js +1 -1
  180. package/dist/elements/menu.js +1 -1
  181. package/dist/elements/message-skills.js +1 -1
  182. package/dist/elements/message.js +1 -1
  183. package/dist/elements/model-switcher.js +1 -1
  184. package/dist/elements/nav.js +1 -1
  185. package/dist/elements/notice.js +1 -1
  186. package/dist/elements/pane-group.js +1 -1
  187. package/dist/elements/pane.js +1 -1
  188. package/dist/elements/popover.js +1 -1
  189. package/dist/elements/progress-bar.js +1 -1
  190. package/dist/elements/prompt-dock.js +1 -1
  191. package/dist/elements/prompt-input.js +1 -1
  192. package/dist/elements/prompt-suggestions.js +1 -1
  193. package/dist/elements/reasoning.js +1 -1
  194. package/dist/elements/register.d.ts +8 -6
  195. package/dist/elements/remote.js +1 -1
  196. package/dist/elements/resizable.js +1 -1
  197. package/dist/elements/response-stream.js +2 -2
  198. package/dist/elements/screen.js +1 -1
  199. package/dist/elements/scroll-area.js +1 -1
  200. package/dist/elements/scroll-button.js +1 -1
  201. package/dist/elements/search.js +1 -1
  202. package/dist/elements/segmented.js +1 -1
  203. package/dist/elements/separator.js +1 -1
  204. package/dist/elements/setting-item.js +1 -1
  205. package/dist/elements/settings-group.js +1 -1
  206. package/dist/elements/skeleton.js +1 -1
  207. package/dist/elements/slots.d.ts +16 -0
  208. package/dist/elements/source.js +1 -1
  209. package/dist/elements/status.js +1 -1
  210. package/dist/elements/switch.js +1 -1
  211. package/dist/elements/tabs.js +1 -1
  212. package/dist/elements/tasks.js +1 -1
  213. package/dist/elements/text-shimmer.js +1 -1
  214. package/dist/elements/thinking-bar.js +1 -1
  215. package/dist/elements/thread.js +1 -1
  216. package/dist/elements/toast.js +1 -1
  217. package/dist/elements/tool.js +1 -1
  218. package/dist/elements/tooltip.js +1 -1
  219. package/dist/elements/validate-messages.d.ts +25 -0
  220. package/dist/elements/voice-input.js +1 -1
  221. package/dist/elements/voice-output.js +1 -1
  222. package/dist/elements.d.ts +2725 -214
  223. package/dist/index.d.ts +163 -125
  224. package/dist/index.js +6336 -5802
  225. package/dist/index.server.d.ts +5 -0
  226. package/dist/index.server.js +5446 -4937
  227. package/dist/kai-provider.es.d.ts +5 -0
  228. package/dist/kai-provider.es.js +79 -77
  229. package/dist/kai.es.d.ts +5 -0
  230. package/dist/kai.es.js +1 -1
  231. package/dist/llms/llms-full.txt +762 -148
  232. package/dist/llms/llms.txt +57 -5
  233. package/dist/mcp.es.js +4010 -770
  234. package/dist/primitives/card-component-types.d.ts +11 -0
  235. package/dist/primitives/card-data-types.d.ts +196 -0
  236. package/dist/primitives/card-host.d.ts +1 -1
  237. package/dist/primitives/card-recovery.d.ts +3 -3
  238. package/dist/primitives/card-registry.d.ts +4 -14
  239. package/dist/primitives/card-resolution.d.ts +1 -1
  240. package/dist/primitives/card-routing.d.ts +1 -1
  241. package/dist/primitives/card-tags.d.ts +11 -0
  242. package/dist/primitives/card-validate-cards.d.ts +57 -0
  243. package/dist/primitives/card-validate-generator.testlib.d.ts +20 -0
  244. package/dist/primitives/card-validate-schemas.d.ts +17 -0
  245. package/dist/primitives/card-validate.d.ts +24 -0
  246. package/dist/primitives/create-kai-chat.d.ts +3 -3
  247. package/dist/primitives/embed-providers.d.ts +1 -1
  248. package/dist/primitives/link-preview.d.ts +1 -1
  249. package/dist/primitives/message-feedback.d.ts +2 -2
  250. package/dist/primitives/toast-store.d.ts +1 -1
  251. package/dist/react/index.d.ts +717 -299
  252. package/dist/react/use-kai-chat.d.ts +8 -4
  253. package/dist/react.d.ts +5 -0
  254. package/dist/react.js +417 -316
  255. package/dist/register-impl-bzrZ44ft.js +145 -0
  256. package/dist/remote/host-embed.d.ts +1 -1
  257. package/dist/remote/index.d.ts +2 -2
  258. package/dist/remote/provider-runtime.d.ts +2 -2
  259. package/dist/remote/provider.d.ts +2 -2
  260. package/dist/remote/validate.d.ts +1 -1
  261. package/dist/remote/wire.d.ts +1 -1
  262. package/dist/schemas/artifact.schema.json +92 -0
  263. package/dist/schemas/embed.schema.json +0 -2
  264. package/dist/schemas/from-tool-call.d.ts +48 -0
  265. package/dist/schemas/index.d.ts +48 -0
  266. package/dist/schemas/link.schema.json +0 -2
  267. package/dist/schemas/provider-subsets.d.ts +136 -0
  268. package/dist/schemas/registry.d.ts +140 -0
  269. package/dist/schemas/tool-defs.d.ts +121 -0
  270. package/dist/schemas.d.ts +5 -0
  271. package/dist/schemas.js +717 -0
  272. package/dist/solid-BCJUQqwS.js +22750 -0
  273. package/dist/solid-BdENBcEq.js +20108 -0
  274. package/dist/solid.d.ts +66 -0
  275. package/dist/solid.js +261 -0
  276. package/dist/solid.server.d.ts +5 -0
  277. package/dist/solid.server.js +261 -0
  278. package/dist/state/index.d.ts +14 -4
  279. package/dist/state/messages.d.ts +8 -3
  280. package/dist/state/mock.d.ts +46 -0
  281. package/dist/state/parts.d.ts +85 -0
  282. package/dist/state/stream.d.ts +15 -9
  283. package/dist/state.d.ts +5 -0
  284. package/dist/state.js +253 -84
  285. package/dist/ui/action-icons.d.ts +1 -1
  286. package/dist/ui/collapsible.d.ts +11 -6
  287. package/dist/ui/dropdown.d.ts +47 -42
  288. package/dist/ui/pane-group.d.ts +1 -1
  289. package/dist/variant-aurora-1wMcXRUS.js +381 -0
  290. package/dist/variant-aurora-BKHHiOgL.js +391 -0
  291. package/dist/{variant-aurora-DVtGqVH6.js → variant-aurora-DOb_o4pC.js} +1 -1
  292. package/dist/{variant-custom-Dif-IV4u.js → variant-custom-CJGB0Kbw.js} +1 -1
  293. package/dist/variant-custom-Co0CkXJF.js +200 -0
  294. package/dist/variant-custom-DWSSgmd2.js +170 -0
  295. package/dist/variant-wave-C3-45cL6.js +218 -0
  296. package/dist/{variant-wave-DbfNdvSi.js → variant-wave-CEODq-9q.js} +1 -1
  297. package/dist/variant-wave-jdXBnCUZ.js +208 -0
  298. package/dist/wire/chunk.d.ts +171 -0
  299. package/dist/wire/consume.d.ts +26 -0
  300. package/dist/wire/encode.d.ts +148 -0
  301. package/dist/wire/formats/anthropic.d.ts +2 -0
  302. package/dist/wire/formats/openai.d.ts +5 -0
  303. package/dist/wire/index.d.ts +14 -0
  304. package/dist/wire/read.d.ts +26 -0
  305. package/dist/wire/sink-helpers.d.ts +21 -0
  306. package/dist/wire/sse.d.ts +33 -0
  307. package/dist/wire.d.ts +5 -53
  308. package/dist/wire.js +898 -0
  309. package/frameworks/react/index.tsx +183 -154
  310. package/frameworks/react/runtime.tsx +21 -1
  311. package/frameworks/react/use-kai-chat.tsx +11 -1
  312. package/llms-full.txt +762 -148
  313. package/llms.txt +57 -5
  314. package/package.json +61 -8
  315. package/src/agent-tooling/archetypes.ts +96 -0
  316. package/src/agent-tooling/integrations/anthropic.ts +412 -0
  317. package/src/agent-tooling/integrations/cloudflare.ts +136 -52
  318. package/src/agent-tooling/integrations/langgraph.ts +67 -13
  319. package/src/agent-tooling/integrations/mastra.ts +120 -12
  320. package/src/agent-tooling/integrations/mock.ts +43 -8
  321. package/src/agent-tooling/integrations/ollama.ts +61 -24
  322. package/src/agent-tooling/integrations/openai.ts +87 -0
  323. package/src/agent-tooling/integrations/openrouter.ts +56 -8
  324. package/src/agent-tooling/integrations/pi.ts +79 -23
  325. package/src/agent-tooling/integrations/pydantic-ai.ts +24 -2
  326. package/src/agent-tooling/integrations/vercel-ai-sdk.ts +84 -13
  327. package/src/agent-tooling/mcp/manifest.ts +206 -25
  328. package/src/agent-tooling/mcp/tools/debug.ts +13 -7
  329. package/src/agent-tooling/mcp/tools/reference.ts +285 -6
  330. package/src/agent-tooling/mcp/tools/scaffold.ts +3345 -675
  331. package/src/agent-tooling/registry.ts +17 -0
  332. package/src/agent-tooling/types.ts +229 -1
  333. package/src/components/artifact-card.tsx +120 -0
  334. package/src/components/audio-visualizer/index.tsx +9 -0
  335. package/src/components/audio-visualizer/labs/lab-choreography.ts +187 -0
  336. package/src/components/audio-visualizer/labs/lab-shaders.ts +363 -0
  337. package/src/components/audio-visualizer/labs/lab-visualizer.tsx +102 -0
  338. package/src/components/audio-visualizer/shader-canvas.tsx +31 -1
  339. package/src/components/card-fallback.tsx +42 -10
  340. package/src/components/card-renderer.tsx +146 -9
  341. package/src/components/chat-container.tsx +4 -0
  342. package/src/components/chat-thread.tsx +118 -51
  343. package/src/components/choice-card.tsx +17 -29
  344. package/src/components/composer.tsx +12 -2
  345. package/src/components/confirm-card.tsx +24 -20
  346. package/src/components/context.tsx +12 -4
  347. package/src/components/conversation-list.tsx +18 -2
  348. package/src/components/file-tree.tsx +11 -22
  349. package/src/components/file-upload.tsx +14 -8
  350. package/src/components/form.tsx +14 -47
  351. package/src/components/loader.tsx +39 -12
  352. package/src/components/message-skills.tsx +4 -0
  353. package/src/components/message.tsx +294 -46
  354. package/src/components/reasoning.tsx +92 -5
  355. package/src/components/response-compare-types.ts +25 -0
  356. package/src/components/response-compare.tsx +4 -9
  357. package/src/components/source.tsx +50 -24
  358. package/src/components/tasks-card.tsx +10 -33
  359. package/src/components/thread.tsx +84 -42
  360. package/src/components/toast.tsx +11 -5
  361. package/src/components/tool-classify.ts +26 -0
  362. package/src/components/tool-types.ts +31 -1
  363. package/src/elements/agent-card.tsx +11 -11
  364. package/src/elements/artifact.tsx +15 -7
  365. package/src/elements/attachments.tsx +6 -4
  366. package/src/elements/avatar.tsx +1 -1
  367. package/src/elements/button.tsx +3 -3
  368. package/src/elements/card.tsx +2 -2
  369. package/src/elements/cards.tsx +109 -14
  370. package/src/elements/chain-of-thought.tsx +14 -10
  371. package/src/elements/chat-scope-picker.tsx +9 -7
  372. package/src/elements/chat-types.ts +59 -6
  373. package/src/elements/chat-workspace.tsx +50 -9
  374. package/src/elements/chat.tsx +64 -3
  375. package/src/elements/choice.tsx +8 -8
  376. package/src/elements/coachmark.tsx +1 -1
  377. package/src/elements/command.tsx +8 -23
  378. package/src/elements/compare.tsx +7 -6
  379. package/src/elements/compiled.css +1 -1
  380. package/src/elements/composer.tsx +8 -8
  381. package/src/elements/confirm-card.tsx +9 -9
  382. package/src/elements/context-meter.tsx +4 -18
  383. package/src/elements/conversation-list.tsx +14 -9
  384. package/src/elements/default-input.tsx +3 -3
  385. package/src/elements/define.tsx +178 -43
  386. package/src/elements/editable-label.tsx +17 -2
  387. package/src/elements/element-data-types.ts +112 -0
  388. package/src/elements/element-meta.json +1596 -304
  389. package/src/elements/element-types.d.ts +2636 -211
  390. package/src/elements/feedback-bar.tsx +1 -1
  391. package/src/elements/file-tree.tsx +1 -1
  392. package/src/elements/file-upload.tsx +1 -1
  393. package/src/elements/form.tsx +14 -6
  394. package/src/elements/input.tsx +1 -1
  395. package/src/elements/kbd.tsx +1 -1
  396. package/src/elements/menu.tsx +10 -29
  397. package/src/elements/message-skills.tsx +7 -9
  398. package/src/elements/message.tsx +200 -32
  399. package/src/elements/model-switcher.tsx +5 -3
  400. package/src/elements/pane.tsx +1 -1
  401. package/src/elements/prompt-dock.tsx +8 -8
  402. package/src/elements/prompt-input.tsx +10 -10
  403. package/src/elements/prompt-suggestions.tsx +7 -4
  404. package/src/elements/reasoning.tsx +1 -1
  405. package/src/elements/register.ts +9 -0
  406. package/src/elements/resizable.globals.d.ts +36 -0
  407. package/src/elements/resizable.tsx +24 -13
  408. package/src/elements/response-stream.tsx +1 -1
  409. package/src/elements/scroll-button.tsx +1 -1
  410. package/src/elements/search.tsx +6 -1
  411. package/src/elements/segmented.tsx +5 -11
  412. package/src/elements/separator.tsx +1 -1
  413. package/src/elements/slots.ts +57 -24
  414. package/src/elements/source.tsx +21 -22
  415. package/src/elements/switch.tsx +3 -3
  416. package/src/elements/tasks.tsx +5 -4
  417. package/src/elements/thread.tsx +36 -4
  418. package/src/elements/toast.tsx +3 -2
  419. package/src/elements/tool.tsx +1 -1
  420. package/src/elements/validate-messages.ts +76 -0
  421. package/src/elements/voice-input.tsx +7 -7
  422. package/src/elements/voice-output.tsx +4 -4
  423. package/src/index.ts +141 -6
  424. package/src/primitives/card-component-types.ts +63 -0
  425. package/src/primitives/card-data-types.ts +312 -0
  426. package/src/primitives/card-recovery.ts +13 -2
  427. package/src/primitives/card-registry.tsx +34 -23
  428. package/src/primitives/card-schemas/artifact.schema.json +92 -0
  429. package/src/primitives/card-schemas/embed.schema.json +0 -2
  430. package/src/primitives/card-schemas/link.schema.json +0 -2
  431. package/src/primitives/card-tags.ts +61 -0
  432. package/src/primitives/card-validate-cards.ts +255 -0
  433. package/src/primitives/card-validate-generator.testlib.ts +38 -0
  434. package/src/primitives/card-validate-schemas.ts +58 -0
  435. package/src/primitives/card-validate.ts +48 -20
  436. package/src/primitives/create-tween.ts +54 -2
  437. package/src/primitives/message-feedback.ts +3 -2
  438. package/src/primitives/use-audio-analysis.ts +20 -1
  439. package/src/primitives/use-sequencer.ts +20 -1
  440. package/src/schemas/from-tool-call.ts +151 -0
  441. package/src/schemas/index.ts +340 -0
  442. package/src/schemas/provider-subsets.ts +538 -0
  443. package/src/schemas/registry.ts +355 -0
  444. package/src/schemas/tool-defs.ts +492 -0
  445. package/src/solid.ts +150 -0
  446. package/src/state/index.ts +27 -1
  447. package/src/state/messages.ts +21 -4
  448. package/src/state/mock.ts +211 -0
  449. package/src/state/parts.ts +295 -0
  450. package/src/state/stream.ts +56 -58
  451. package/src/ui/collapsible.tsx +17 -5
  452. package/src/ui/dropdown.tsx +46 -12
  453. package/src/ui/overlay.tsx +10 -4
  454. package/src/wire/chunk.ts +201 -0
  455. package/src/wire/consume.ts +440 -0
  456. package/src/wire/encode.ts +474 -0
  457. package/src/wire/formats/anthropic.ts +267 -0
  458. package/src/wire/formats/openai.ts +187 -0
  459. package/src/wire/index.ts +52 -0
  460. package/src/wire/read.ts +152 -0
  461. package/src/wire/sink-helpers.ts +50 -0
  462. package/src/wire/sse.ts +140 -0
  463. package/dist/create-tween-hvpmSuwW.js +0 -7
  464. package/dist/elements/chunks/arrow-left-DQocUFvy.js +0 -1
  465. package/dist/elements/chunks/audio-visualizer-BqNy7dfm.js +0 -1
  466. package/dist/elements/chunks/card-BkHbp4BA.js +0 -1
  467. package/dist/elements/chunks/chat-thread-CkRN6pZ7.js +0 -1
  468. package/dist/elements/chunks/check-B9-gn6SS.js +0 -1
  469. package/dist/elements/chunks/chevron-down-BNsxc2hk.js +0 -1
  470. package/dist/elements/chunks/chevron-right-Hv00StBO.js +0 -1
  471. package/dist/elements/chunks/circle-0e3KJTDr.js +0 -1
  472. package/dist/elements/chunks/circle-check-BNAS0JEy.js +0 -1
  473. package/dist/elements/chunks/code-block-BFUHn6Va.js +0 -1
  474. package/dist/elements/chunks/context-Cb7k4F-v.js +0 -1
  475. package/dist/elements/chunks/conversation-list-CvoAkWhN.js +0 -1
  476. package/dist/elements/chunks/create-tween-oVvAIG8r.js +0 -7
  477. package/dist/elements/chunks/define-D1din7Ld.js +0 -1
  478. package/dist/elements/chunks/hover-card-Cmm6Q53m.js +0 -1
  479. package/dist/elements/chunks/message-BqyXDN3-.js +0 -1
  480. package/dist/elements/chunks/message-feedback-Djr3z6Yb.js +0 -1
  481. package/dist/elements/chunks/message-square-vFAgbDaX.js +0 -1
  482. package/dist/elements/chunks/reasoning-DTpCGtnY.js +0 -1
  483. package/dist/elements/chunks/scroll-button-B0cH5fXf.js +0 -1
  484. package/dist/elements/chunks/skeleton-DSXW5Yya.js +0 -1
  485. package/dist/elements/chunks/slots--V19HwUb.js +0 -1
  486. package/dist/elements/chunks/textarea-CUwqAX0G.js +0 -1
  487. package/dist/elements/chunks/tooltip-CgBZCVKp.js +0 -1
  488. package/dist/elements/chunks/use-card-resolution-BSu_XHjH.js +0 -1
  489. package/dist/elements/chunks/x-GRUeeQFT.js +0 -1
  490. package/dist/host-embed.d.ts +0 -33
  491. package/dist/kai-provider.d.ts +0 -2
  492. package/dist/origin.d.ts +0 -5
  493. package/dist/provider-runtime.d.ts +0 -27
  494. package/dist/register-impl-DQyejdfb.js +0 -145
  495. package/dist/validate.d.ts +0 -4
  496. package/dist/version.d.ts +0 -4
  497. package/src/components/component-meta.json +0 -4550
  498. package/src/elements/card-media.jpg +0 -0
  499. package/src/elements/resizable.d.ts +0 -27
  500. package/src/elements/video-poster.jpg +0 -0
@@ -1,4550 +0,0 @@
1
- [
2
- {
3
- "name": "Artifact",
4
- "group": "Components",
5
- "sourceFile": "src/components/artifact.tsx",
6
- "props": [
7
- {
8
- "name": "src",
9
- "type": "undefined | string",
10
- "displayType": "undefined | string",
11
- "optional": true,
12
- "scalar": true,
13
- "description": "URL the preview iframe frames."
14
- },
15
- {
16
- "name": "files",
17
- "type": "undefined | { path: string; url?: undefined | string; code?: undefined | string; language?: undefined | string; type?: undefined | \"html\" | \"pdf\" | \"image\" | \"other\"; additions?: undefined | number; deletions?: undefined | number; status?: undefined | \"added\" | \"modified\" | \"deleted\" | \"renamed\" | \"untracked\" }[]",
18
- "displayType": "undefined | { path: string; url?: undefined | string; code?: undefined | string; language?: undefined | string; type?: undefined | \"html\" | \"pdf\" | \"image\" | \"other\"; additions?: undefined | number; deletions?: undefined | number; status?: undefined | \"added\" | \"modified\" | \"deleted\" | \"renamed\" | \"untracked\" }[]",
19
- "optional": true,
20
- "scalar": false,
21
- "description": "Files for the Code tab's tree (+ each file's preview `url`)."
22
- },
23
- {
24
- "name": "tab",
25
- "type": "undefined | \"preview\" | \"code\"",
26
- "displayType": "undefined | \"preview\" | \"code\"",
27
- "optional": true,
28
- "scalar": true,
29
- "description": "Controlled active tab — when set, the artifact follows it (re-asserted on every change). When undefined the tab is uncontrolled (see `defaultTab`)."
30
- },
31
- {
32
- "name": "defaultTab",
33
- "type": "undefined | \"preview\" | \"code\"",
34
- "displayType": "undefined | \"preview\" | \"code\"",
35
- "optional": true,
36
- "scalar": true,
37
- "description": "Uncontrolled INITIAL tab (used only when `tab` is undefined). The user can then freely switch tabs; defaults to `preview`."
38
- },
39
- {
40
- "name": "activeFile",
41
- "type": "undefined | string",
42
- "displayType": "undefined | string",
43
- "optional": true,
44
- "scalar": true,
45
- "description": "Selected file path (syncs tree highlight + Code source + preview)."
46
- },
47
- {
48
- "name": "sandbox",
49
- "type": "undefined | string",
50
- "displayType": "undefined | string",
51
- "optional": true,
52
- "scalar": true,
53
- "description": "iframe `sandbox` override. Default `allow-scripts allow-forms`."
54
- },
55
- {
56
- "name": "iframeTitle",
57
- "type": "undefined | string",
58
- "displayType": "undefined | string",
59
- "optional": true,
60
- "scalar": true,
61
- "description": "Accessible iframe title.",
62
- "default": "'Artifact preview'"
63
- },
64
- {
65
- "name": "maximized",
66
- "type": "undefined | false | true",
67
- "displayType": "undefined | false | true",
68
- "optional": true,
69
- "scalar": true,
70
- "description": "Controlled maximize view-state (drives the expand/restore button).",
71
- "default": "false"
72
- },
73
- {
74
- "name": "showNav",
75
- "type": "undefined | false | true",
76
- "displayType": "undefined | false | true",
77
- "optional": true,
78
- "scalar": true,
79
- "description": "Show the back/forward nav buttons. Default `true`."
80
- },
81
- {
82
- "name": "showReload",
83
- "type": "undefined | false | true",
84
- "displayType": "undefined | false | true",
85
- "optional": true,
86
- "scalar": true,
87
- "description": "Show the reload button. Default `true`."
88
- },
89
- {
90
- "name": "showHome",
91
- "type": "undefined | false | true",
92
- "displayType": "undefined | false | true",
93
- "optional": true,
94
- "scalar": true,
95
- "description": "Show the home button. Default `true`."
96
- },
97
- {
98
- "name": "showPathField",
99
- "type": "undefined | false | true",
100
- "displayType": "undefined | false | true",
101
- "optional": true,
102
- "scalar": true,
103
- "description": "Show the editable path/address field. Default `true`."
104
- },
105
- {
106
- "name": "showTabs",
107
- "type": "undefined | false | true",
108
- "displayType": "undefined | false | true",
109
- "optional": true,
110
- "scalar": true,
111
- "description": "Show the Preview|Code tab toggle. Default `true`."
112
- },
113
- {
114
- "name": "expandable",
115
- "type": "undefined | false | true",
116
- "displayType": "undefined | false | true",
117
- "optional": true,
118
- "scalar": true,
119
- "description": "Show the expand-to-fill button. Default `false` (opt-in)."
120
- },
121
- {
122
- "name": "openInTab",
123
- "type": "undefined | false | true",
124
- "displayType": "undefined | false | true",
125
- "optional": true,
126
- "scalar": true,
127
- "description": "Show the open-in-new-tab button. Default `false` (opt-in)."
128
- },
129
- {
130
- "name": "standalone",
131
- "type": "undefined | false | true",
132
- "displayType": "undefined | false | true",
133
- "optional": true,
134
- "scalar": true,
135
- "description": "Standalone chrome: rounded + bordered (default in-panel = square, borderless)."
136
- },
137
- {
138
- "name": "readonlyPath",
139
- "type": "undefined | false | true",
140
- "displayType": "undefined | false | true",
141
- "optional": true,
142
- "scalar": true,
143
- "description": "Make the path field read-only (visible, nav-tracking, non-editable)."
144
- },
145
- {
146
- "name": "displayUrl",
147
- "type": "undefined | string",
148
- "displayType": "undefined | string",
149
- "optional": true,
150
- "scalar": true,
151
- "description": "Friendly address shown in the path field INSTEAD of the real current url (read-only, non-navigable). Use when the framed url is not consumer-facing (e.g. a `data:` blob) so a clean address is shown instead of leaking it. Unset = show the real url (editable per `readonlyPath`)."
152
- }
153
- ],
154
- "callbacks": [
155
- {
156
- "name": "onNavigate",
157
- "type": "undefined | (url: string) => void",
158
- "displayType": "undefined | (url: string) => void",
159
- "description": "Fired when the preview navigates (back/forward/reload/path-edit/file-click)."
160
- },
161
- {
162
- "name": "onTabChange",
163
- "type": "undefined | (tab: ArtifactTab) => void",
164
- "displayType": "undefined | (tab: ArtifactTab) => void",
165
- "description": "Fired when the Preview|Code tab changes."
166
- },
167
- {
168
- "name": "onFileSelect",
169
- "type": "undefined | (path: string) => void",
170
- "displayType": "undefined | (path: string) => void",
171
- "description": "Fired when a file is selected in the tree."
172
- },
173
- {
174
- "name": "onMaximizeChange",
175
- "type": "undefined | (maximized: boolean) => void",
176
- "displayType": "undefined | (maximized: boolean) => void",
177
- "description": "Fired when the expand/restore button toggles the maximize view-state."
178
- },
179
- {
180
- "name": "controllerRef",
181
- "type": "undefined | (controller: ArtifactController) => void",
182
- "displayType": "undefined | (controller: ArtifactController) => void",
183
- "description": "Receive the imperative controller once mounted. The `<kai-artifact>` facade forwards these as element methods (back/forward/reload/home/navigate/ selectFile/openExternal/maximize/restore)."
184
- }
185
- ],
186
- "slots": [],
187
- "tokens": [],
188
- "extendsHtmlAttributes": true,
189
- "description": "`Artifact` — a framed, switchable generated-artifact viewer. A functional nav toolbar (back · forward · reload · home + editable path field + Preview|Code toggle) over a sandboxed `<iframe>` (Preview) or a file-tree + `<kai-code-block>` (Code). The component self-navigates the iframe and emits `kai-navigate` / `kai-tab-change` / `kai-file-select` so a consumer can observe/sync."
190
- },
191
- {
192
- "name": "Attachment",
193
- "group": "Components",
194
- "sourceFile": "src/components/attachments.tsx",
195
- "props": [
196
- {
197
- "name": "data",
198
- "type": "{ id: string; type: \"file\" | \"source-document\"; filename?: undefined | string; mediaType?: undefined | string; url?: undefined | string; title?: undefined | string }",
199
- "displayType": "{ id: string; type: \"file\" | \"source-document\"; filename?: undefined | string; mediaType?: undefined | string; url?: undefined | string; title?: undefined | string }",
200
- "optional": false,
201
- "scalar": false,
202
- "description": ""
203
- }
204
- ],
205
- "callbacks": [
206
- {
207
- "name": "onRemove",
208
- "type": "undefined | () => void",
209
- "displayType": "undefined | () => void",
210
- "description": ""
211
- }
212
- ],
213
- "slots": [
214
- {
215
- "name": "children",
216
- "description": ""
217
- }
218
- ],
219
- "tokens": [],
220
- "extendsHtmlAttributes": true,
221
- "description": ""
222
- },
223
- {
224
- "name": "AttachmentEmpty",
225
- "group": "Components",
226
- "sourceFile": "src/components/attachments.tsx",
227
- "props": [],
228
- "callbacks": [],
229
- "slots": [
230
- {
231
- "name": "children",
232
- "description": ""
233
- }
234
- ],
235
- "tokens": [],
236
- "extendsHtmlAttributes": true,
237
- "description": ""
238
- },
239
- {
240
- "name": "AttachmentHoverCard",
241
- "group": "Components",
242
- "sourceFile": "src/components/attachments.tsx",
243
- "props": [
244
- {
245
- "name": "openDelay",
246
- "type": "undefined | number",
247
- "displayType": "undefined | number",
248
- "optional": true,
249
- "scalar": true,
250
- "description": "",
251
- "default": "0"
252
- },
253
- {
254
- "name": "closeDelay",
255
- "type": "undefined | number",
256
- "displayType": "undefined | number",
257
- "optional": true,
258
- "scalar": true,
259
- "description": "",
260
- "default": "0"
261
- }
262
- ],
263
- "callbacks": [],
264
- "slots": [
265
- {
266
- "name": "children",
267
- "description": ""
268
- }
269
- ],
270
- "tokens": [],
271
- "extendsHtmlAttributes": false,
272
- "description": ""
273
- },
274
- {
275
- "name": "AttachmentHoverCardContent",
276
- "group": "Components",
277
- "sourceFile": "src/components/attachments.tsx",
278
- "props": [],
279
- "callbacks": [],
280
- "slots": [
281
- {
282
- "name": "children",
283
- "description": ""
284
- }
285
- ],
286
- "tokens": [],
287
- "extendsHtmlAttributes": false,
288
- "description": ""
289
- },
290
- {
291
- "name": "AttachmentHoverCardTrigger",
292
- "group": "Components",
293
- "sourceFile": "src/components/attachments.tsx",
294
- "props": [],
295
- "callbacks": [],
296
- "slots": [
297
- {
298
- "name": "children",
299
- "description": ""
300
- }
301
- ],
302
- "tokens": [],
303
- "extendsHtmlAttributes": false,
304
- "description": ""
305
- },
306
- {
307
- "name": "AttachmentInfo",
308
- "group": "Components",
309
- "sourceFile": "src/components/attachments.tsx",
310
- "props": [
311
- {
312
- "name": "showMediaType",
313
- "type": "undefined | false | true",
314
- "displayType": "undefined | false | true",
315
- "optional": true,
316
- "scalar": true,
317
- "description": ""
318
- }
319
- ],
320
- "callbacks": [],
321
- "slots": [],
322
- "tokens": [],
323
- "extendsHtmlAttributes": true,
324
- "description": ""
325
- },
326
- {
327
- "name": "AttachmentPreview",
328
- "group": "Components",
329
- "sourceFile": "src/components/attachments.tsx",
330
- "props": [],
331
- "callbacks": [
332
- {
333
- "name": "fallbackIcon",
334
- "type": "undefined | null | number | false | true | Node | { length: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; }; pop: () => JSX.Element; push: (...items: JSX.Element[]) => number; concat: { (...items: ConcatArray<JSX.Element>[]): JSX.Element[]; (...items: (JSX.Element | ConcatArray<JSX.Element>)[]): JSX.Element[]; }; join: (separator?: string) => string; reverse: () => JSX.Element[]; shift: () => JSX.Element; slice: (start?: number, end?: number) => JSX.Element[]; sort: (compareFn?: ((a: JSX.Element, b: JSX.Element) => number) | undefined) => JSX.ArrayElement; splice: { (start: number, deleteCount?: number): JSX.Element[]; (start: number, deleteCount: number, ...items: JSX.Element[]): JSX.Element[]; }; unshift: (...items: JSX.Element[]) => number; indexOf: (searchElement: JSX.Element, fromIndex?: number) => number; lastIndexOf: (searchElement: JSX.Element, fromIndex?: number) => number; every: { <S extends JSX.Element>(predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: JSX.Element, index: number, array: JSX.Element[]) => void, thisArg?: any) => void; map: <U>(callbackfn: (value: JSX.Element, index: number, array: JSX.Element[]) => U, thisArg?: any) => U[]; filter: { <S extends JSX.Element>(predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => value is S, thisArg?: any): S[]; (predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => unknown, thisArg?: any): JSX.Element[]; }; reduce: { (callbackfn: (previousValue: JSX.Element, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => JSX.Element): JSX.Element; (callbackfn: (previousValue: JSX.Element, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => JSX.Element, initialValue: JSX.Element): JSX.Element; <U>(callbackfn: (previousValue: U, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => U, initialValue: U): U; }; reduceRight: { (callbackfn: (previousValue: JSX.Element, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => JSX.Element): JSX.Element; (callbackfn: (previousValue: JSX.Element, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => JSX.Element, initialValue: JSX.Element): JSX.Element; <U>(callbackfn: (previousValue: U, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => U, initialValue: U): U; }; find: { <S extends JSX.Element>(predicate: (value: JSX.Element, index: number, obj: JSX.Element[]) => value is S, thisArg?: any): S | undefined; (predicate: (value: JSX.Element, index: number, obj: JSX.Element[]) => unknown, thisArg?: any): JSX.Element; }; findIndex: (predicate: (value: JSX.Element, index: number, obj: JSX.Element[]) => unknown, thisArg?: any) => number; fill: (value: JSX.Element, start?: number, end?: number) => JSX.ArrayElement; copyWithin: (target: number, start: number, end?: number) => JSX.ArrayElement; entries: () => ArrayIterator<[number, JSX.Element]>; keys: () => ArrayIterator<number>; values: () => ArrayIterator<JSX.Element>; includes: (searchElement: JSX.Element, fromIndex?: number) => boolean; flatMap: <U, This = undefined>(callback: (this: This, value: JSX.Element, index: number, array: JSX.Element[]) => U | readonly U[], thisArg?: This | undefined) => U[]; flat: <A, D extends number = 1>(this: A, depth?: D | undefined) => FlatArray<A, D>[]; at: (index: number) => JSX.Element; findLast: { <S extends JSX.Element>(predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => value is S, thisArg?: any): S | undefined; (predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => unknown, thisArg?: any): JSX.Element; }; findLastIndex: (predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => unknown, thisArg?: any) => number; toReversed: () => JSX.Element[]; toSorted: (compareFn?: ((a: JSX.Element, b: JSX.Element) => number) | undefined) => JSX.Element[]; toSpliced: { (start: number, deleteCount: number, ...items: JSX.Element[]): JSX.Element[]; (start: number, deleteCount?: number): JSX.Element[]; }; with: (index: number, value: JSX.Element) => JSX.Element[]; __@iterator@12772: () => ArrayIterator<JSX.Element>; __@unscopables@12774: { [x: number]: boolean | undefined; length?: boolean | undefined; toString?: boolean | undefined; toLocaleString?: boolean | undefined; pop?: boolean | undefined; push?: boolean | undefined; concat?: boolean | undefined; join?: boolean | undefined; reverse?: boolean | undefined; shift?: boolean | undefined; slice?: boolean | undefined; sort?: boolean | undefined; splice?: boolean | undefined; unshift?: boolean | undefined; indexOf?: boolean | undefined; lastIndexOf?: boolean | undefined; every?: boolean | undefined; some?: boolean | undefined; forEach?: boolean | undefined; map?: boolean | undefined; filter?: boolean | undefined; reduce?: boolean | undefined; reduceRight?: boolean | undefined; find?: boolean | undefined; findIndex?: boolean | undefined; fill?: boolean | undefined; copyWithin?: boolean | undefined; entries?: boolean | undefined; keys?: boolean | undefined; values?: boolean | undefined; includes?: boolean | undefined; flatMap?: boolean | undefined; flat?: boolean | undefined; at?: boolean | undefined; findLast?: boolean | undefined; findLastIndex?: boolean | undefined; toReversed?: boolean | undefined; toSorted?: boolean | undefined; toSpliced?: boolean | undefined; with?: boolean | undefined; [Symbol.iterator]?: boolean | undefined; readonly [Symbol.unscopables]?: boolean | undefined; } } | string & {}",
335
- "displayType": "undefined | null | number | false | true | Node | { length: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; }; pop: () => JSX.Element; push: (...items: JSX.Element[]) => number; concat: { (...items: ConcatArray<JSX.Element>[]): JSX.Element[]; (...items: (JSX.Element | ConcatArray<JSX.Element>)[]): JSX.Element[]; }; join: (separator?: string) => string; reverse: () => JSX.Element[]; shift: () => JSX.Element; slice: (start?: number, end?: number) => JSX.Element[]; sort: (compareFn?: ((a: JSX.Element, b: JSX.Element) => number) | undefined) => JSX.ArrayElement; splice: { (start: number, deleteCount?: number): JSX.Element[]; (start: number, deleteCount: number, ...items: JSX.Element[]): JSX.Element[]; }; unshift: (...items: JSX.Element[]) => number; indexOf: (searchElement: JSX.Element, fromIndex?: number) => number; lastIndexOf: (searchElement: JSX.Element, fromIndex?: number) => number; every: { <S extends JSX.Element>(predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: JSX.Element, index: number, array: JSX.Element[]) => void, thisArg?: any) => void; map: <U>(callbackfn: (value: JSX.Element, index: number, array: JSX.Element[]) => U, thisArg?: any) => U[]; filter: { <S extends JSX.Element>(predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => value is S, thisArg?: any): S[]; (predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => unknown, thisArg?: any): JSX.Element[]; }; reduce: { (callbackfn: (previousValue: JSX.Element, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => JSX.Element): JSX.Element; (callbackfn: (previousValue: JSX.Element, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => JSX.Element, initialValue: JSX.Element): JSX.Element; <U>(callbackfn: (previousValue: U, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => U, initialValue: U): U; }; reduceRight: { (callbackfn: (previousValue: JSX.Element, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => JSX.Element): JSX.Element; (callbackfn: (previousValue: JSX.Element, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => JSX.Element, initialValue: JSX.Element): JSX.Element; <U>(callbackfn: (previousValue: U, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => U, initialValue: U): U; }; find: { <S extends JSX.Element>(predicate: (value: JSX.Element, index: number, obj: JSX.Element[]) => value is S, thisArg?: any): S | undefined; (predicate: (value: JSX.Element, index: number, obj: JSX.Element[]) => unknown, thisArg?: any): JSX.Element; }; findIndex: (predicate: (value: JSX.Element, index: number, obj: JSX.Element[]) => unknown, thisArg?: any) => number; fill: (value: JSX.Element, start?: number, end?: number) => JSX.ArrayElement; copyWithin: (target: number, start: number, end?: number) => JSX.ArrayElement; entries: () => ArrayIterator<[number, JSX.Element]>; keys: () => ArrayIterator<number>; values: () => ArrayIterator<JSX.Element>; includes: (searchElement: JSX.Element, fromIndex?: number) => boolean; flatMap: <U, This = undefined>(callback: (this: This, value: JSX.Element, index: number, array: JSX.Element[]) => U | readonly U[], thisArg?: This | undefined) => U[]; flat: <A, D extends number = 1>(this: A, depth?: D | undefined) => FlatArray<A, D>[]; at: (index: number) => JSX.Element; findLast: { <S extends JSX.Element>(predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => value is S, thisArg?: any): S | undefined; (predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => unknown, thisArg?: any): JSX.Element; }; findLastIndex: (predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => unknown, thisArg?: any) => number; toReversed: () => JSX.Element[]; toSorted: (compareFn?: ((a: JSX.Element, b: JSX.Element) => number) | undefined) => JSX.Element[]; toSpliced: { (start: number, deleteCount: number, ...items: JSX.Element[]): JSX.Element[]; (start: number, deleteCount?: number): JSX.Element[]; }; with: (index: number, value: JSX.Element) => JSX.Element[]; __@iterator@12772: () => ArrayIterator<JSX.Element>; __@unscopables@12774: { [x: number]: boolean | undefined; length?: boolean | undefined; toString?: boolean | undefined; toLocaleString?: boolean | undefined; pop?: boolean | undefined; push?: boolean | undefined; concat?: boolean | undefined; join?: boolean | undefined; reverse?: boolean | undefined; shift?: boolean | undefined; slice?: boolean | undefined; sort?: boolean | undefined; splice?: boolean | undefined; unshift?: boolean | undefined; indexOf?: boolean | undefined; lastIndexOf?: boolean | undefined; every?: boolean | undefined; some?: boolean | undefined; forEach?: boolean | undefined; map?: boolean | undefined; filter?: boolean | undefined; reduce?: boolean | undefined; reduceRight?: boolean | undefined; find?: boolean | undefined; findIndex?: boolean | undefined; fill?: boolean | undefined; copyWithin?: boolean | undefined; entries?: boolean | undefined; keys?: boolean | undefined; values?: boolean | undefined; includes?: boolean | undefined; flatMap?: boolean | undefined; flat?: boolean | undefined; at?: boolean | undefined; findLast?: boolean | undefined; findLastIndex?: boolean | undefined; toReversed?: boolean | undefined; toSorted?: boolean | undefined; toSpliced?: boolean | undefined; with?: boolean | undefined; [Symbol.iterator]?: boolean | undefined; readonly [Symbol.unscopables]?: boolean | undefined; } } | string & {}",
336
- "description": ""
337
- }
338
- ],
339
- "slots": [],
340
- "tokens": [],
341
- "extendsHtmlAttributes": true,
342
- "description": ""
343
- },
344
- {
345
- "name": "AttachmentRemove",
346
- "group": "Components",
347
- "sourceFile": "src/components/attachments.tsx",
348
- "props": [
349
- {
350
- "name": "label",
351
- "type": "undefined | string",
352
- "displayType": "undefined | string",
353
- "optional": true,
354
- "scalar": true,
355
- "description": "",
356
- "default": "'Remove'"
357
- }
358
- ],
359
- "callbacks": [],
360
- "slots": [
361
- {
362
- "name": "children",
363
- "description": ""
364
- }
365
- ],
366
- "tokens": [],
367
- "extendsHtmlAttributes": false,
368
- "description": ""
369
- },
370
- {
371
- "name": "Attachments",
372
- "group": "Components",
373
- "sourceFile": "src/components/attachments.tsx",
374
- "props": [
375
- {
376
- "name": "variant",
377
- "type": "undefined | \"grid\" | \"inline\" | \"list\"",
378
- "displayType": "undefined | \"grid\" | \"inline\" | \"list\"",
379
- "optional": true,
380
- "scalar": true,
381
- "description": "",
382
- "default": "'grid'"
383
- }
384
- ],
385
- "callbacks": [],
386
- "slots": [
387
- {
388
- "name": "children",
389
- "description": ""
390
- }
391
- ],
392
- "tokens": [],
393
- "extendsHtmlAttributes": true,
394
- "description": ""
395
- },
396
- {
397
- "name": "BarsLoader",
398
- "group": "Components",
399
- "sourceFile": "src/components/loader.tsx",
400
- "props": [
401
- {
402
- "name": "size",
403
- "type": "undefined | \"sm\" | \"md\" | \"lg\"",
404
- "displayType": "undefined | \"sm\" | \"md\" | \"lg\"",
405
- "optional": true,
406
- "scalar": true,
407
- "description": "",
408
- "default": "'md'"
409
- }
410
- ],
411
- "callbacks": [],
412
- "slots": [],
413
- "tokens": [],
414
- "extendsHtmlAttributes": false,
415
- "description": ""
416
- },
417
- {
418
- "name": "Card",
419
- "group": "Components",
420
- "sourceFile": "src/components/card.tsx",
421
- "props": [
422
- {
423
- "name": "heading",
424
- "type": "undefined | string",
425
- "displayType": "undefined | string",
426
- "optional": true,
427
- "scalar": true,
428
- "description": "Heading rendered in the card chrome (the contract's CardEnvelope.title). NB: NOT `title` — `title` is a reserved IDL attr (see define.tsx RESERVED)."
429
- },
430
- {
431
- "name": "description",
432
- "type": "undefined | string",
433
- "displayType": "undefined | string",
434
- "optional": true,
435
- "scalar": true,
436
- "description": "Optional supporting text under the heading."
437
- },
438
- {
439
- "name": "errorMessage",
440
- "type": "undefined | string",
441
- "displayType": "undefined | string",
442
- "optional": true,
443
- "scalar": true,
444
- "description": "When set, the card renders its standard inline error state INSTEAD of body."
445
- },
446
- {
447
- "name": "dense",
448
- "type": "undefined | false | true",
449
- "displayType": "undefined | false | true",
450
- "optional": true,
451
- "scalar": true,
452
- "description": "Compact spacing for dense lists of cards."
453
- },
454
- {
455
- "name": "headingId",
456
- "type": "undefined | string",
457
- "displayType": "undefined | string",
458
- "optional": true,
459
- "scalar": true,
460
- "description": "Stable id for the heading (so composing cards can `aria-labelledby` it). Auto-generated when omitted."
461
- },
462
- {
463
- "name": "dismissible",
464
- "type": "undefined | false | true",
465
- "displayType": "undefined | false | true",
466
- "optional": true,
467
- "scalar": true,
468
- "description": "Render a dismiss (×) button that hides the card and calls `onDismiss`. Opt-in, OFF by default — the contract cards never set it, so they are unaffected."
469
- },
470
- {
471
- "name": "href",
472
- "type": "undefined | string",
473
- "displayType": "undefined | string",
474
- "optional": true,
475
- "scalar": true,
476
- "description": "Render the whole card as a link (`<a>`). Wins over `clickable`."
477
- },
478
- {
479
- "name": "target",
480
- "type": "undefined | string",
481
- "displayType": "undefined | string",
482
- "optional": true,
483
- "scalar": true,
484
- "description": "`target` for the `href` anchor."
485
- },
486
- {
487
- "name": "rel",
488
- "type": "undefined | string",
489
- "displayType": "undefined | string",
490
- "optional": true,
491
- "scalar": true,
492
- "description": "`rel` for the `href` anchor (default `noopener noreferrer` when `target=\"_blank\"`)."
493
- },
494
- {
495
- "name": "clickable",
496
- "type": "undefined | false | true",
497
- "displayType": "undefined | false | true",
498
- "optional": true,
499
- "scalar": true,
500
- "description": "Make the whole card behave like a button: `role=\"button\"`, a tabindex, and Enter/Space activation, firing `onCardClick`. Ignored when `href` is set. A clickable/href card must NOT also contain footer action buttons — that nests interactive elements. Use `actions` OR clickable, never both."
501
- }
502
- ],
503
- "callbacks": [
504
- {
505
- "name": "media",
506
- "type": "undefined | null | number | false | true | Node | { length: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; }; pop: () => JSX.Element; push: (...items: JSX.Element[]) => number; concat: { (...items: ConcatArray<JSX.Element>[]): JSX.Element[]; (...items: (JSX.Element | ConcatArray<JSX.Element>)[]): JSX.Element[]; }; join: (separator?: string) => string; reverse: () => JSX.Element[]; shift: () => JSX.Element; slice: (start?: number, end?: number) => JSX.Element[]; sort: (compareFn?: ((a: JSX.Element, b: JSX.Element) => number) | undefined) => JSX.ArrayElement; splice: { (start: number, deleteCount?: number): JSX.Element[]; (start: number, deleteCount: number, ...items: JSX.Element[]): JSX.Element[]; }; unshift: (...items: JSX.Element[]) => number; indexOf: (searchElement: JSX.Element, fromIndex?: number) => number; lastIndexOf: (searchElement: JSX.Element, fromIndex?: number) => number; every: { <S extends JSX.Element>(predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: JSX.Element, index: number, array: JSX.Element[]) => void, thisArg?: any) => void; map: <U>(callbackfn: (value: JSX.Element, index: number, array: JSX.Element[]) => U, thisArg?: any) => U[]; filter: { <S extends JSX.Element>(predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => value is S, thisArg?: any): S[]; (predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => unknown, thisArg?: any): JSX.Element[]; }; reduce: { (callbackfn: (previousValue: JSX.Element, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => JSX.Element): JSX.Element; (callbackfn: (previousValue: JSX.Element, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => JSX.Element, initialValue: JSX.Element): JSX.Element; <U>(callbackfn: (previousValue: U, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => U, initialValue: U): U; }; reduceRight: { (callbackfn: (previousValue: JSX.Element, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => JSX.Element): JSX.Element; (callbackfn: (previousValue: JSX.Element, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => JSX.Element, initialValue: JSX.Element): JSX.Element; <U>(callbackfn: (previousValue: U, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => U, initialValue: U): U; }; find: { <S extends JSX.Element>(predicate: (value: JSX.Element, index: number, obj: JSX.Element[]) => value is S, thisArg?: any): S | undefined; (predicate: (value: JSX.Element, index: number, obj: JSX.Element[]) => unknown, thisArg?: any): JSX.Element; }; findIndex: (predicate: (value: JSX.Element, index: number, obj: JSX.Element[]) => unknown, thisArg?: any) => number; fill: (value: JSX.Element, start?: number, end?: number) => JSX.ArrayElement; copyWithin: (target: number, start: number, end?: number) => JSX.ArrayElement; entries: () => ArrayIterator<[number, JSX.Element]>; keys: () => ArrayIterator<number>; values: () => ArrayIterator<JSX.Element>; includes: (searchElement: JSX.Element, fromIndex?: number) => boolean; flatMap: <U, This = undefined>(callback: (this: This, value: JSX.Element, index: number, array: JSX.Element[]) => U | readonly U[], thisArg?: This | undefined) => U[]; flat: <A, D extends number = 1>(this: A, depth?: D | undefined) => FlatArray<A, D>[]; at: (index: number) => JSX.Element; findLast: { <S extends JSX.Element>(predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => value is S, thisArg?: any): S | undefined; (predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => unknown, thisArg?: any): JSX.Element; }; findLastIndex: (predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => unknown, thisArg?: any) => number; toReversed: () => JSX.Element[]; toSorted: (compareFn?: ((a: JSX.Element, b: JSX.Element) => number) | undefined) => JSX.Element[]; toSpliced: { (start: number, deleteCount: number, ...items: JSX.Element[]): JSX.Element[]; (start: number, deleteCount?: number): JSX.Element[]; }; with: (index: number, value: JSX.Element) => JSX.Element[]; __@iterator@12772: () => ArrayIterator<JSX.Element>; __@unscopables@12774: { [x: number]: boolean | undefined; length?: boolean | undefined; toString?: boolean | undefined; toLocaleString?: boolean | undefined; pop?: boolean | undefined; push?: boolean | undefined; concat?: boolean | undefined; join?: boolean | undefined; reverse?: boolean | undefined; shift?: boolean | undefined; slice?: boolean | undefined; sort?: boolean | undefined; splice?: boolean | undefined; unshift?: boolean | undefined; indexOf?: boolean | undefined; lastIndexOf?: boolean | undefined; every?: boolean | undefined; some?: boolean | undefined; forEach?: boolean | undefined; map?: boolean | undefined; filter?: boolean | undefined; reduce?: boolean | undefined; reduceRight?: boolean | undefined; find?: boolean | undefined; findIndex?: boolean | undefined; fill?: boolean | undefined; copyWithin?: boolean | undefined; entries?: boolean | undefined; keys?: boolean | undefined; values?: boolean | undefined; includes?: boolean | undefined; flatMap?: boolean | undefined; flat?: boolean | undefined; at?: boolean | undefined; findLast?: boolean | undefined; findLastIndex?: boolean | undefined; toReversed?: boolean | undefined; toSorted?: boolean | undefined; toSpliced?: boolean | undefined; with?: boolean | undefined; [Symbol.iterator]?: boolean | undefined; readonly [Symbol.unscopables]?: boolean | undefined; } } | string & {}",
507
- "displayType": "undefined | null | number | false | true | Node | { length: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; }; pop: () => JSX.Element; push: (...items: JSX.Element[]) => number; concat: { (...items: ConcatArray<JSX.Element>[]): JSX.Element[]; (...items: (JSX.Element | ConcatArray<JSX.Element>)[]): JSX.Element[]; }; join: (separator?: string) => string; reverse: () => JSX.Element[]; shift: () => JSX.Element; slice: (start?: number, end?: number) => JSX.Element[]; sort: (compareFn?: ((a: JSX.Element, b: JSX.Element) => number) | undefined) => JSX.ArrayElement; splice: { (start: number, deleteCount?: number): JSX.Element[]; (start: number, deleteCount: number, ...items: JSX.Element[]): JSX.Element[]; }; unshift: (...items: JSX.Element[]) => number; indexOf: (searchElement: JSX.Element, fromIndex?: number) => number; lastIndexOf: (searchElement: JSX.Element, fromIndex?: number) => number; every: { <S extends JSX.Element>(predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: JSX.Element, index: number, array: JSX.Element[]) => void, thisArg?: any) => void; map: <U>(callbackfn: (value: JSX.Element, index: number, array: JSX.Element[]) => U, thisArg?: any) => U[]; filter: { <S extends JSX.Element>(predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => value is S, thisArg?: any): S[]; (predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => unknown, thisArg?: any): JSX.Element[]; }; reduce: { (callbackfn: (previousValue: JSX.Element, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => JSX.Element): JSX.Element; (callbackfn: (previousValue: JSX.Element, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => JSX.Element, initialValue: JSX.Element): JSX.Element; <U>(callbackfn: (previousValue: U, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => U, initialValue: U): U; }; reduceRight: { (callbackfn: (previousValue: JSX.Element, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => JSX.Element): JSX.Element; (callbackfn: (previousValue: JSX.Element, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => JSX.Element, initialValue: JSX.Element): JSX.Element; <U>(callbackfn: (previousValue: U, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => U, initialValue: U): U; }; find: { <S extends JSX.Element>(predicate: (value: JSX.Element, index: number, obj: JSX.Element[]) => value is S, thisArg?: any): S | undefined; (predicate: (value: JSX.Element, index: number, obj: JSX.Element[]) => unknown, thisArg?: any): JSX.Element; }; findIndex: (predicate: (value: JSX.Element, index: number, obj: JSX.Element[]) => unknown, thisArg?: any) => number; fill: (value: JSX.Element, start?: number, end?: number) => JSX.ArrayElement; copyWithin: (target: number, start: number, end?: number) => JSX.ArrayElement; entries: () => ArrayIterator<[number, JSX.Element]>; keys: () => ArrayIterator<number>; values: () => ArrayIterator<JSX.Element>; includes: (searchElement: JSX.Element, fromIndex?: number) => boolean; flatMap: <U, This = undefined>(callback: (this: This, value: JSX.Element, index: number, array: JSX.Element[]) => U | readonly U[], thisArg?: This | undefined) => U[]; flat: <A, D extends number = 1>(this: A, depth?: D | undefined) => FlatArray<A, D>[]; at: (index: number) => JSX.Element; findLast: { <S extends JSX.Element>(predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => value is S, thisArg?: any): S | undefined; (predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => unknown, thisArg?: any): JSX.Element; }; findLastIndex: (predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => unknown, thisArg?: any) => number; toReversed: () => JSX.Element[]; toSorted: (compareFn?: ((a: JSX.Element, b: JSX.Element) => number) | undefined) => JSX.Element[]; toSpliced: { (start: number, deleteCount: number, ...items: JSX.Element[]): JSX.Element[]; (start: number, deleteCount?: number): JSX.Element[]; }; with: (index: number, value: JSX.Element) => JSX.Element[]; __@iterator@12772: () => ArrayIterator<JSX.Element>; __@unscopables@12774: { [x: number]: boolean | undefined; length?: boolean | undefined; toString?: boolean | undefined; toLocaleString?: boolean | undefined; pop?: boolean | undefined; push?: boolean | undefined; concat?: boolean | undefined; join?: boolean | undefined; reverse?: boolean | undefined; shift?: boolean | undefined; slice?: boolean | undefined; sort?: boolean | undefined; splice?: boolean | undefined; unshift?: boolean | undefined; indexOf?: boolean | undefined; lastIndexOf?: boolean | undefined; every?: boolean | undefined; some?: boolean | undefined; forEach?: boolean | undefined; map?: boolean | undefined; filter?: boolean | undefined; reduce?: boolean | undefined; reduceRight?: boolean | undefined; find?: boolean | undefined; findIndex?: boolean | undefined; fill?: boolean | undefined; copyWithin?: boolean | undefined; entries?: boolean | undefined; keys?: boolean | undefined; values?: boolean | undefined; includes?: boolean | undefined; flatMap?: boolean | undefined; flat?: boolean | undefined; at?: boolean | undefined; findLast?: boolean | undefined; findLastIndex?: boolean | undefined; toReversed?: boolean | undefined; toSorted?: boolean | undefined; toSpliced?: boolean | undefined; with?: boolean | undefined; [Symbol.iterator]?: boolean | undefined; readonly [Symbol.unscopables]?: boolean | undefined; } } | string & {}",
508
- "description": "Media region (image/icon) rendered above the heading."
509
- },
510
- {
511
- "name": "actions",
512
- "type": "undefined | null | number | false | true | Node | { length: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; }; pop: () => JSX.Element; push: (...items: JSX.Element[]) => number; concat: { (...items: ConcatArray<JSX.Element>[]): JSX.Element[]; (...items: (JSX.Element | ConcatArray<JSX.Element>)[]): JSX.Element[]; }; join: (separator?: string) => string; reverse: () => JSX.Element[]; shift: () => JSX.Element; slice: (start?: number, end?: number) => JSX.Element[]; sort: (compareFn?: ((a: JSX.Element, b: JSX.Element) => number) | undefined) => JSX.ArrayElement; splice: { (start: number, deleteCount?: number): JSX.Element[]; (start: number, deleteCount: number, ...items: JSX.Element[]): JSX.Element[]; }; unshift: (...items: JSX.Element[]) => number; indexOf: (searchElement: JSX.Element, fromIndex?: number) => number; lastIndexOf: (searchElement: JSX.Element, fromIndex?: number) => number; every: { <S extends JSX.Element>(predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: JSX.Element, index: number, array: JSX.Element[]) => void, thisArg?: any) => void; map: <U>(callbackfn: (value: JSX.Element, index: number, array: JSX.Element[]) => U, thisArg?: any) => U[]; filter: { <S extends JSX.Element>(predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => value is S, thisArg?: any): S[]; (predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => unknown, thisArg?: any): JSX.Element[]; }; reduce: { (callbackfn: (previousValue: JSX.Element, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => JSX.Element): JSX.Element; (callbackfn: (previousValue: JSX.Element, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => JSX.Element, initialValue: JSX.Element): JSX.Element; <U>(callbackfn: (previousValue: U, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => U, initialValue: U): U; }; reduceRight: { (callbackfn: (previousValue: JSX.Element, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => JSX.Element): JSX.Element; (callbackfn: (previousValue: JSX.Element, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => JSX.Element, initialValue: JSX.Element): JSX.Element; <U>(callbackfn: (previousValue: U, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => U, initialValue: U): U; }; find: { <S extends JSX.Element>(predicate: (value: JSX.Element, index: number, obj: JSX.Element[]) => value is S, thisArg?: any): S | undefined; (predicate: (value: JSX.Element, index: number, obj: JSX.Element[]) => unknown, thisArg?: any): JSX.Element; }; findIndex: (predicate: (value: JSX.Element, index: number, obj: JSX.Element[]) => unknown, thisArg?: any) => number; fill: (value: JSX.Element, start?: number, end?: number) => JSX.ArrayElement; copyWithin: (target: number, start: number, end?: number) => JSX.ArrayElement; entries: () => ArrayIterator<[number, JSX.Element]>; keys: () => ArrayIterator<number>; values: () => ArrayIterator<JSX.Element>; includes: (searchElement: JSX.Element, fromIndex?: number) => boolean; flatMap: <U, This = undefined>(callback: (this: This, value: JSX.Element, index: number, array: JSX.Element[]) => U | readonly U[], thisArg?: This | undefined) => U[]; flat: <A, D extends number = 1>(this: A, depth?: D | undefined) => FlatArray<A, D>[]; at: (index: number) => JSX.Element; findLast: { <S extends JSX.Element>(predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => value is S, thisArg?: any): S | undefined; (predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => unknown, thisArg?: any): JSX.Element; }; findLastIndex: (predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => unknown, thisArg?: any) => number; toReversed: () => JSX.Element[]; toSorted: (compareFn?: ((a: JSX.Element, b: JSX.Element) => number) | undefined) => JSX.Element[]; toSpliced: { (start: number, deleteCount: number, ...items: JSX.Element[]): JSX.Element[]; (start: number, deleteCount?: number): JSX.Element[]; }; with: (index: number, value: JSX.Element) => JSX.Element[]; __@iterator@12772: () => ArrayIterator<JSX.Element>; __@unscopables@12774: { [x: number]: boolean | undefined; length?: boolean | undefined; toString?: boolean | undefined; toLocaleString?: boolean | undefined; pop?: boolean | undefined; push?: boolean | undefined; concat?: boolean | undefined; join?: boolean | undefined; reverse?: boolean | undefined; shift?: boolean | undefined; slice?: boolean | undefined; sort?: boolean | undefined; splice?: boolean | undefined; unshift?: boolean | undefined; indexOf?: boolean | undefined; lastIndexOf?: boolean | undefined; every?: boolean | undefined; some?: boolean | undefined; forEach?: boolean | undefined; map?: boolean | undefined; filter?: boolean | undefined; reduce?: boolean | undefined; reduceRight?: boolean | undefined; find?: boolean | undefined; findIndex?: boolean | undefined; fill?: boolean | undefined; copyWithin?: boolean | undefined; entries?: boolean | undefined; keys?: boolean | undefined; values?: boolean | undefined; includes?: boolean | undefined; flatMap?: boolean | undefined; flat?: boolean | undefined; at?: boolean | undefined; findLast?: boolean | undefined; findLastIndex?: boolean | undefined; toReversed?: boolean | undefined; toSorted?: boolean | undefined; toSpliced?: boolean | undefined; with?: boolean | undefined; [Symbol.iterator]?: boolean | undefined; readonly [Symbol.unscopables]?: boolean | undefined; } } | string & {}",
513
- "displayType": "undefined | null | number | false | true | Node | { length: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; }; pop: () => JSX.Element; push: (...items: JSX.Element[]) => number; concat: { (...items: ConcatArray<JSX.Element>[]): JSX.Element[]; (...items: (JSX.Element | ConcatArray<JSX.Element>)[]): JSX.Element[]; }; join: (separator?: string) => string; reverse: () => JSX.Element[]; shift: () => JSX.Element; slice: (start?: number, end?: number) => JSX.Element[]; sort: (compareFn?: ((a: JSX.Element, b: JSX.Element) => number) | undefined) => JSX.ArrayElement; splice: { (start: number, deleteCount?: number): JSX.Element[]; (start: number, deleteCount: number, ...items: JSX.Element[]): JSX.Element[]; }; unshift: (...items: JSX.Element[]) => number; indexOf: (searchElement: JSX.Element, fromIndex?: number) => number; lastIndexOf: (searchElement: JSX.Element, fromIndex?: number) => number; every: { <S extends JSX.Element>(predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: JSX.Element, index: number, array: JSX.Element[]) => void, thisArg?: any) => void; map: <U>(callbackfn: (value: JSX.Element, index: number, array: JSX.Element[]) => U, thisArg?: any) => U[]; filter: { <S extends JSX.Element>(predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => value is S, thisArg?: any): S[]; (predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => unknown, thisArg?: any): JSX.Element[]; }; reduce: { (callbackfn: (previousValue: JSX.Element, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => JSX.Element): JSX.Element; (callbackfn: (previousValue: JSX.Element, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => JSX.Element, initialValue: JSX.Element): JSX.Element; <U>(callbackfn: (previousValue: U, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => U, initialValue: U): U; }; reduceRight: { (callbackfn: (previousValue: JSX.Element, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => JSX.Element): JSX.Element; (callbackfn: (previousValue: JSX.Element, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => JSX.Element, initialValue: JSX.Element): JSX.Element; <U>(callbackfn: (previousValue: U, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => U, initialValue: U): U; }; find: { <S extends JSX.Element>(predicate: (value: JSX.Element, index: number, obj: JSX.Element[]) => value is S, thisArg?: any): S | undefined; (predicate: (value: JSX.Element, index: number, obj: JSX.Element[]) => unknown, thisArg?: any): JSX.Element; }; findIndex: (predicate: (value: JSX.Element, index: number, obj: JSX.Element[]) => unknown, thisArg?: any) => number; fill: (value: JSX.Element, start?: number, end?: number) => JSX.ArrayElement; copyWithin: (target: number, start: number, end?: number) => JSX.ArrayElement; entries: () => ArrayIterator<[number, JSX.Element]>; keys: () => ArrayIterator<number>; values: () => ArrayIterator<JSX.Element>; includes: (searchElement: JSX.Element, fromIndex?: number) => boolean; flatMap: <U, This = undefined>(callback: (this: This, value: JSX.Element, index: number, array: JSX.Element[]) => U | readonly U[], thisArg?: This | undefined) => U[]; flat: <A, D extends number = 1>(this: A, depth?: D | undefined) => FlatArray<A, D>[]; at: (index: number) => JSX.Element; findLast: { <S extends JSX.Element>(predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => value is S, thisArg?: any): S | undefined; (predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => unknown, thisArg?: any): JSX.Element; }; findLastIndex: (predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => unknown, thisArg?: any) => number; toReversed: () => JSX.Element[]; toSorted: (compareFn?: ((a: JSX.Element, b: JSX.Element) => number) | undefined) => JSX.Element[]; toSpliced: { (start: number, deleteCount: number, ...items: JSX.Element[]): JSX.Element[]; (start: number, deleteCount?: number): JSX.Element[]; }; with: (index: number, value: JSX.Element) => JSX.Element[]; __@iterator@12772: () => ArrayIterator<JSX.Element>; __@unscopables@12774: { [x: number]: boolean | undefined; length?: boolean | undefined; toString?: boolean | undefined; toLocaleString?: boolean | undefined; pop?: boolean | undefined; push?: boolean | undefined; concat?: boolean | undefined; join?: boolean | undefined; reverse?: boolean | undefined; shift?: boolean | undefined; slice?: boolean | undefined; sort?: boolean | undefined; splice?: boolean | undefined; unshift?: boolean | undefined; indexOf?: boolean | undefined; lastIndexOf?: boolean | undefined; every?: boolean | undefined; some?: boolean | undefined; forEach?: boolean | undefined; map?: boolean | undefined; filter?: boolean | undefined; reduce?: boolean | undefined; reduceRight?: boolean | undefined; find?: boolean | undefined; findIndex?: boolean | undefined; fill?: boolean | undefined; copyWithin?: boolean | undefined; entries?: boolean | undefined; keys?: boolean | undefined; values?: boolean | undefined; includes?: boolean | undefined; flatMap?: boolean | undefined; flat?: boolean | undefined; at?: boolean | undefined; findLast?: boolean | undefined; findLastIndex?: boolean | undefined; toReversed?: boolean | undefined; toSorted?: boolean | undefined; toSpliced?: boolean | undefined; with?: boolean | undefined; [Symbol.iterator]?: boolean | undefined; readonly [Symbol.unscopables]?: boolean | undefined; } } | string & {}",
514
- "description": "Footer action region (buttons)."
515
- },
516
- {
517
- "name": "onDismiss",
518
- "type": "undefined | () => void",
519
- "displayType": "undefined | () => void",
520
- "description": "Called after the card is dismissed via its ×."
521
- },
522
- {
523
- "name": "onCardClick",
524
- "type": "undefined | (event: MouseEvent | KeyboardEvent) => void",
525
- "displayType": "undefined | (event: MouseEvent | KeyboardEvent) => void",
526
- "description": "Called when a `clickable` (or `href`) card is activated (click, or Enter/Space)."
527
- }
528
- ],
529
- "slots": [],
530
- "tokens": [],
531
- "extendsHtmlAttributes": true,
532
- "description": "`Card` — the shared presentational chrome every native card composes from: an optional media region, a heading + description, a body (default slot), an actions footer, and one consistent inline **error** state (the contract's \"never a broken/partial card\" rule). It is intentionally chrome-only: it reads no `CardContext` and emits no `CardEvent` — the cards that compose it (e.g. `kai-form`) own the contract interaction. The optional `dismissible` / `href` / `clickable` behaviors are all OFF by default, so the contract cards (which set none of them) keep their original presentational behavior unchanged. a11y: a `clickable` or `href` card MUST NOT also contain footer action buttons — that nests interactive controls inside a button/link. Use `actions` OR make the card clickable, never both."
533
- },
534
- {
535
- "name": "CardFallback",
536
- "group": "Components",
537
- "sourceFile": "src/components/card-fallback.tsx",
538
- "props": [
539
- {
540
- "name": "type",
541
- "type": "string",
542
- "displayType": "string",
543
- "optional": false,
544
- "scalar": true,
545
- "description": "The unrecognized envelope type, shown to aid debugging."
546
- },
547
- {
548
- "name": "cardId",
549
- "type": "undefined | string",
550
- "displayType": "undefined | string",
551
- "optional": true,
552
- "scalar": true,
553
- "description": "The envelope id (for parity with cards; not displayed)."
554
- }
555
- ],
556
- "callbacks": [],
557
- "slots": [],
558
- "tokens": [],
559
- "extendsHtmlAttributes": false,
560
- "description": "Inert, themed fallback for an unsupported card type. Emits nothing itself — the dispatcher emits the contract `error` event alongside rendering this."
561
- },
562
- {
563
- "name": "CardRenderer",
564
- "group": "Components",
565
- "sourceFile": "src/components/card-renderer.tsx",
566
- "props": [
567
- {
568
- "name": "envelope",
569
- "type": "{ type: string; id: string; data: unknown; title?: undefined | string; resolution?: undefined | { kind: \"action\"; action: string; payload?: unknown; at?: undefined | string } | { kind: \"submit\"; data: unknown; at?: undefined | string } | { kind: \"dismissed\"; at?: undefined | string } | { kind: \"expired\"; reason?: undefined | string; at?: undefined | string } }",
570
- "displayType": "{ type: string; id: string; data: unknown; title?: undefined | string; resolution?: undefined | { kind: \"action\"; action: string; payload?: unknown; at?: undefined | string } | { kind: \"submit\"; data: unknown; at?: undefined | string } | { kind: \"dismissed\"; at?: undefined | string } | { kind: \"expired\"; reason?: undefined | string; at?: undefined | string } }",
571
- "optional": false,
572
- "scalar": false,
573
- "description": ""
574
- },
575
- {
576
- "name": "types",
577
- "type": "undefined | Record<string, import(\"/home/runner/work/ui/ui/packages/ui/src/index\").CardComponent>",
578
- "displayType": "undefined | Record<string, import(\"/home/runner/work/ui/ui/packages/ui/src/index\").CardComponent>",
579
- "optional": true,
580
- "scalar": false,
581
- "description": "Add/override type→component entries (merged over the built-ins)."
582
- }
583
- ],
584
- "callbacks": [],
585
- "slots": [],
586
- "tokens": [],
587
- "extendsHtmlAttributes": false,
588
- "description": ""
589
- },
590
- {
591
- "name": "ChainOfThought",
592
- "group": "Components",
593
- "sourceFile": "src/components/chain-of-thought.tsx",
594
- "props": [],
595
- "callbacks": [],
596
- "slots": [
597
- {
598
- "name": "children",
599
- "description": ""
600
- }
601
- ],
602
- "tokens": [],
603
- "extendsHtmlAttributes": false,
604
- "description": ""
605
- },
606
- {
607
- "name": "ChainOfThoughtContent",
608
- "group": "Components",
609
- "sourceFile": "src/components/chain-of-thought.tsx",
610
- "props": [],
611
- "callbacks": [],
612
- "slots": [
613
- {
614
- "name": "children",
615
- "description": ""
616
- }
617
- ],
618
- "tokens": [],
619
- "extendsHtmlAttributes": false,
620
- "description": ""
621
- },
622
- {
623
- "name": "ChainOfThoughtItem",
624
- "group": "Components",
625
- "sourceFile": "src/components/chain-of-thought.tsx",
626
- "props": [],
627
- "callbacks": [],
628
- "slots": [
629
- {
630
- "name": "children",
631
- "description": ""
632
- }
633
- ],
634
- "tokens": [],
635
- "extendsHtmlAttributes": true,
636
- "description": ""
637
- },
638
- {
639
- "name": "ChainOfThoughtStep",
640
- "group": "Components",
641
- "sourceFile": "src/components/chain-of-thought.tsx",
642
- "props": [
643
- {
644
- "name": "isLast",
645
- "type": "undefined | false | true",
646
- "displayType": "undefined | false | true",
647
- "optional": true,
648
- "scalar": true,
649
- "description": "",
650
- "default": "false"
651
- },
652
- {
653
- "name": "open",
654
- "type": "undefined | false | true",
655
- "displayType": "undefined | false | true",
656
- "optional": true,
657
- "scalar": true,
658
- "description": "Controlled open state. When provided, the step's Collapsible is driven by this value (the parent owns it — used by the Accordion model below). When OMITTED the step stays uncontrolled, preserving the original behaviour (every step independently toggleable, starting closed)."
659
- }
660
- ],
661
- "callbacks": [
662
- {
663
- "name": "onOpenChange",
664
- "type": "undefined | (open: boolean) => void",
665
- "displayType": "undefined | (open: boolean) => void",
666
- "description": "Called with the desired next open state when the user clicks the trigger. Only meaningful when `open` is also provided (controlled mode); the parent Accordion routes this through its open-set handler."
667
- }
668
- ],
669
- "slots": [
670
- {
671
- "name": "children",
672
- "description": ""
673
- }
674
- ],
675
- "tokens": [],
676
- "extendsHtmlAttributes": false,
677
- "description": ""
678
- },
679
- {
680
- "name": "ChainOfThoughtTrigger",
681
- "group": "Components",
682
- "sourceFile": "src/components/chain-of-thought.tsx",
683
- "props": [
684
- {
685
- "name": "swapIconOnHover",
686
- "type": "undefined | false | true",
687
- "displayType": "undefined | false | true",
688
- "optional": true,
689
- "scalar": true,
690
- "description": "",
691
- "default": "true"
692
- }
693
- ],
694
- "callbacks": [
695
- {
696
- "name": "leftIcon",
697
- "type": "undefined | null | number | false | true | Node | { length: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; }; pop: () => JSX.Element; push: (...items: JSX.Element[]) => number; concat: { (...items: ConcatArray<JSX.Element>[]): JSX.Element[]; (...items: (JSX.Element | ConcatArray<JSX.Element>)[]): JSX.Element[]; }; join: (separator?: string) => string; reverse: () => JSX.Element[]; shift: () => JSX.Element; slice: (start?: number, end?: number) => JSX.Element[]; sort: (compareFn?: ((a: JSX.Element, b: JSX.Element) => number) | undefined) => JSX.ArrayElement; splice: { (start: number, deleteCount?: number): JSX.Element[]; (start: number, deleteCount: number, ...items: JSX.Element[]): JSX.Element[]; }; unshift: (...items: JSX.Element[]) => number; indexOf: (searchElement: JSX.Element, fromIndex?: number) => number; lastIndexOf: (searchElement: JSX.Element, fromIndex?: number) => number; every: { <S extends JSX.Element>(predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: JSX.Element, index: number, array: JSX.Element[]) => void, thisArg?: any) => void; map: <U>(callbackfn: (value: JSX.Element, index: number, array: JSX.Element[]) => U, thisArg?: any) => U[]; filter: { <S extends JSX.Element>(predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => value is S, thisArg?: any): S[]; (predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => unknown, thisArg?: any): JSX.Element[]; }; reduce: { (callbackfn: (previousValue: JSX.Element, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => JSX.Element): JSX.Element; (callbackfn: (previousValue: JSX.Element, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => JSX.Element, initialValue: JSX.Element): JSX.Element; <U>(callbackfn: (previousValue: U, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => U, initialValue: U): U; }; reduceRight: { (callbackfn: (previousValue: JSX.Element, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => JSX.Element): JSX.Element; (callbackfn: (previousValue: JSX.Element, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => JSX.Element, initialValue: JSX.Element): JSX.Element; <U>(callbackfn: (previousValue: U, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => U, initialValue: U): U; }; find: { <S extends JSX.Element>(predicate: (value: JSX.Element, index: number, obj: JSX.Element[]) => value is S, thisArg?: any): S | undefined; (predicate: (value: JSX.Element, index: number, obj: JSX.Element[]) => unknown, thisArg?: any): JSX.Element; }; findIndex: (predicate: (value: JSX.Element, index: number, obj: JSX.Element[]) => unknown, thisArg?: any) => number; fill: (value: JSX.Element, start?: number, end?: number) => JSX.ArrayElement; copyWithin: (target: number, start: number, end?: number) => JSX.ArrayElement; entries: () => ArrayIterator<[number, JSX.Element]>; keys: () => ArrayIterator<number>; values: () => ArrayIterator<JSX.Element>; includes: (searchElement: JSX.Element, fromIndex?: number) => boolean; flatMap: <U, This = undefined>(callback: (this: This, value: JSX.Element, index: number, array: JSX.Element[]) => U | readonly U[], thisArg?: This | undefined) => U[]; flat: <A, D extends number = 1>(this: A, depth?: D | undefined) => FlatArray<A, D>[]; at: (index: number) => JSX.Element; findLast: { <S extends JSX.Element>(predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => value is S, thisArg?: any): S | undefined; (predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => unknown, thisArg?: any): JSX.Element; }; findLastIndex: (predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => unknown, thisArg?: any) => number; toReversed: () => JSX.Element[]; toSorted: (compareFn?: ((a: JSX.Element, b: JSX.Element) => number) | undefined) => JSX.Element[]; toSpliced: { (start: number, deleteCount: number, ...items: JSX.Element[]): JSX.Element[]; (start: number, deleteCount?: number): JSX.Element[]; }; with: (index: number, value: JSX.Element) => JSX.Element[]; __@iterator@12772: () => ArrayIterator<JSX.Element>; __@unscopables@12774: { [x: number]: boolean | undefined; length?: boolean | undefined; toString?: boolean | undefined; toLocaleString?: boolean | undefined; pop?: boolean | undefined; push?: boolean | undefined; concat?: boolean | undefined; join?: boolean | undefined; reverse?: boolean | undefined; shift?: boolean | undefined; slice?: boolean | undefined; sort?: boolean | undefined; splice?: boolean | undefined; unshift?: boolean | undefined; indexOf?: boolean | undefined; lastIndexOf?: boolean | undefined; every?: boolean | undefined; some?: boolean | undefined; forEach?: boolean | undefined; map?: boolean | undefined; filter?: boolean | undefined; reduce?: boolean | undefined; reduceRight?: boolean | undefined; find?: boolean | undefined; findIndex?: boolean | undefined; fill?: boolean | undefined; copyWithin?: boolean | undefined; entries?: boolean | undefined; keys?: boolean | undefined; values?: boolean | undefined; includes?: boolean | undefined; flatMap?: boolean | undefined; flat?: boolean | undefined; at?: boolean | undefined; findLast?: boolean | undefined; findLastIndex?: boolean | undefined; toReversed?: boolean | undefined; toSorted?: boolean | undefined; toSpliced?: boolean | undefined; with?: boolean | undefined; [Symbol.iterator]?: boolean | undefined; readonly [Symbol.unscopables]?: boolean | undefined; } } | string & {}",
698
- "displayType": "undefined | null | number | false | true | Node | { length: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; }; pop: () => JSX.Element; push: (...items: JSX.Element[]) => number; concat: { (...items: ConcatArray<JSX.Element>[]): JSX.Element[]; (...items: (JSX.Element | ConcatArray<JSX.Element>)[]): JSX.Element[]; }; join: (separator?: string) => string; reverse: () => JSX.Element[]; shift: () => JSX.Element; slice: (start?: number, end?: number) => JSX.Element[]; sort: (compareFn?: ((a: JSX.Element, b: JSX.Element) => number) | undefined) => JSX.ArrayElement; splice: { (start: number, deleteCount?: number): JSX.Element[]; (start: number, deleteCount: number, ...items: JSX.Element[]): JSX.Element[]; }; unshift: (...items: JSX.Element[]) => number; indexOf: (searchElement: JSX.Element, fromIndex?: number) => number; lastIndexOf: (searchElement: JSX.Element, fromIndex?: number) => number; every: { <S extends JSX.Element>(predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: JSX.Element, index: number, array: JSX.Element[]) => void, thisArg?: any) => void; map: <U>(callbackfn: (value: JSX.Element, index: number, array: JSX.Element[]) => U, thisArg?: any) => U[]; filter: { <S extends JSX.Element>(predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => value is S, thisArg?: any): S[]; (predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => unknown, thisArg?: any): JSX.Element[]; }; reduce: { (callbackfn: (previousValue: JSX.Element, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => JSX.Element): JSX.Element; (callbackfn: (previousValue: JSX.Element, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => JSX.Element, initialValue: JSX.Element): JSX.Element; <U>(callbackfn: (previousValue: U, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => U, initialValue: U): U; }; reduceRight: { (callbackfn: (previousValue: JSX.Element, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => JSX.Element): JSX.Element; (callbackfn: (previousValue: JSX.Element, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => JSX.Element, initialValue: JSX.Element): JSX.Element; <U>(callbackfn: (previousValue: U, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => U, initialValue: U): U; }; find: { <S extends JSX.Element>(predicate: (value: JSX.Element, index: number, obj: JSX.Element[]) => value is S, thisArg?: any): S | undefined; (predicate: (value: JSX.Element, index: number, obj: JSX.Element[]) => unknown, thisArg?: any): JSX.Element; }; findIndex: (predicate: (value: JSX.Element, index: number, obj: JSX.Element[]) => unknown, thisArg?: any) => number; fill: (value: JSX.Element, start?: number, end?: number) => JSX.ArrayElement; copyWithin: (target: number, start: number, end?: number) => JSX.ArrayElement; entries: () => ArrayIterator<[number, JSX.Element]>; keys: () => ArrayIterator<number>; values: () => ArrayIterator<JSX.Element>; includes: (searchElement: JSX.Element, fromIndex?: number) => boolean; flatMap: <U, This = undefined>(callback: (this: This, value: JSX.Element, index: number, array: JSX.Element[]) => U | readonly U[], thisArg?: This | undefined) => U[]; flat: <A, D extends number = 1>(this: A, depth?: D | undefined) => FlatArray<A, D>[]; at: (index: number) => JSX.Element; findLast: { <S extends JSX.Element>(predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => value is S, thisArg?: any): S | undefined; (predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => unknown, thisArg?: any): JSX.Element; }; findLastIndex: (predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => unknown, thisArg?: any) => number; toReversed: () => JSX.Element[]; toSorted: (compareFn?: ((a: JSX.Element, b: JSX.Element) => number) | undefined) => JSX.Element[]; toSpliced: { (start: number, deleteCount: number, ...items: JSX.Element[]): JSX.Element[]; (start: number, deleteCount?: number): JSX.Element[]; }; with: (index: number, value: JSX.Element) => JSX.Element[]; __@iterator@12772: () => ArrayIterator<JSX.Element>; __@unscopables@12774: { [x: number]: boolean | undefined; length?: boolean | undefined; toString?: boolean | undefined; toLocaleString?: boolean | undefined; pop?: boolean | undefined; push?: boolean | undefined; concat?: boolean | undefined; join?: boolean | undefined; reverse?: boolean | undefined; shift?: boolean | undefined; slice?: boolean | undefined; sort?: boolean | undefined; splice?: boolean | undefined; unshift?: boolean | undefined; indexOf?: boolean | undefined; lastIndexOf?: boolean | undefined; every?: boolean | undefined; some?: boolean | undefined; forEach?: boolean | undefined; map?: boolean | undefined; filter?: boolean | undefined; reduce?: boolean | undefined; reduceRight?: boolean | undefined; find?: boolean | undefined; findIndex?: boolean | undefined; fill?: boolean | undefined; copyWithin?: boolean | undefined; entries?: boolean | undefined; keys?: boolean | undefined; values?: boolean | undefined; includes?: boolean | undefined; flatMap?: boolean | undefined; flat?: boolean | undefined; at?: boolean | undefined; findLast?: boolean | undefined; findLastIndex?: boolean | undefined; toReversed?: boolean | undefined; toSorted?: boolean | undefined; toSpliced?: boolean | undefined; with?: boolean | undefined; [Symbol.iterator]?: boolean | undefined; readonly [Symbol.unscopables]?: boolean | undefined; } } | string & {}",
699
- "description": ""
700
- }
701
- ],
702
- "slots": [
703
- {
704
- "name": "children",
705
- "description": ""
706
- }
707
- ],
708
- "tokens": [],
709
- "extendsHtmlAttributes": false,
710
- "description": ""
711
- },
712
- {
713
- "name": "ChatContainer",
714
- "group": "Components",
715
- "sourceFile": "src/components/chat-container.tsx",
716
- "props": [],
717
- "callbacks": [],
718
- "slots": [
719
- {
720
- "name": "children",
721
- "description": ""
722
- }
723
- ],
724
- "tokens": [],
725
- "extendsHtmlAttributes": true,
726
- "description": ""
727
- },
728
- {
729
- "name": "ChatContainerContent",
730
- "group": "Components",
731
- "sourceFile": "src/components/chat-container.tsx",
732
- "props": [],
733
- "callbacks": [],
734
- "slots": [
735
- {
736
- "name": "children",
737
- "description": ""
738
- }
739
- ],
740
- "tokens": [],
741
- "extendsHtmlAttributes": true,
742
- "description": ""
743
- },
744
- {
745
- "name": "ChatContainerRoot",
746
- "group": "Components",
747
- "sourceFile": "src/components/chat-container.tsx",
748
- "props": [],
749
- "callbacks": [],
750
- "slots": [
751
- {
752
- "name": "children",
753
- "description": ""
754
- }
755
- ],
756
- "tokens": [],
757
- "extendsHtmlAttributes": true,
758
- "description": ""
759
- },
760
- {
761
- "name": "ChatContainerScrollAnchor",
762
- "group": "Components",
763
- "sourceFile": "src/components/chat-container.tsx",
764
- "props": [],
765
- "callbacks": [
766
- {
767
- "name": "ref",
768
- "type": "undefined | HTMLDivElement | (el: HTMLDivElement) => void",
769
- "displayType": "undefined | HTMLDivElement | (el: HTMLDivElement) => void",
770
- "description": ""
771
- }
772
- ],
773
- "slots": [],
774
- "tokens": [],
775
- "extendsHtmlAttributes": true,
776
- "description": ""
777
- },
778
- {
779
- "name": "ChatScopePicker",
780
- "group": "Components",
781
- "sourceFile": "src/components/chat-scope-picker.tsx",
782
- "props": [
783
- {
784
- "name": "currentLabel",
785
- "type": "string",
786
- "displayType": "string",
787
- "optional": false,
788
- "scalar": true,
789
- "description": ""
790
- },
791
- {
792
- "name": "availableAuthors",
793
- "type": "undefined | string[]",
794
- "displayType": "undefined | string[]",
795
- "optional": true,
796
- "scalar": false,
797
- "description": ""
798
- },
799
- {
800
- "name": "availableTags",
801
- "type": "undefined | string[]",
802
- "displayType": "undefined | string[]",
803
- "optional": true,
804
- "scalar": false,
805
- "description": ""
806
- },
807
- {
808
- "name": "defaultOpen",
809
- "type": "undefined | false | true",
810
- "displayType": "undefined | false | true",
811
- "optional": true,
812
- "scalar": true,
813
- "description": "Initial open state of the dropdown (uncontrolled seed)."
814
- },
815
- {
816
- "name": "disabled",
817
- "type": "undefined | false | true",
818
- "displayType": "undefined | false | true",
819
- "optional": true,
820
- "scalar": true,
821
- "description": "Disable the trigger — click/keyboard no longer open the dropdown."
822
- }
823
- ],
824
- "callbacks": [
825
- {
826
- "name": "onScopeChange",
827
- "type": "(filters: SearchFilters | undefined) => void",
828
- "displayType": "(filters: SearchFilters | undefined) => void",
829
- "description": ""
830
- },
831
- {
832
- "name": "controllerRef",
833
- "type": "undefined | (api: DropdownController) => void",
834
- "displayType": "undefined | (api: DropdownController) => void",
835
- "description": "Receive the dropdown's open controller (forwarded from the inner Dropdown)."
836
- }
837
- ],
838
- "slots": [],
839
- "tokens": [],
840
- "extendsHtmlAttributes": false,
841
- "description": ""
842
- },
843
- {
844
- "name": "Checkpoint",
845
- "group": "Components",
846
- "sourceFile": "src/components/checkpoint.tsx",
847
- "props": [],
848
- "callbacks": [],
849
- "slots": [
850
- {
851
- "name": "children",
852
- "description": ""
853
- }
854
- ],
855
- "tokens": [],
856
- "extendsHtmlAttributes": true,
857
- "description": ""
858
- },
859
- {
860
- "name": "CheckpointIcon",
861
- "group": "Components",
862
- "sourceFile": "src/components/checkpoint.tsx",
863
- "props": [],
864
- "callbacks": [],
865
- "slots": [
866
- {
867
- "name": "children",
868
- "description": ""
869
- }
870
- ],
871
- "tokens": [],
872
- "extendsHtmlAttributes": false,
873
- "description": ""
874
- },
875
- {
876
- "name": "CheckpointTrigger",
877
- "group": "Components",
878
- "sourceFile": "src/components/checkpoint.tsx",
879
- "props": [
880
- {
881
- "name": "tooltip",
882
- "type": "undefined | string",
883
- "displayType": "undefined | string",
884
- "optional": true,
885
- "scalar": true,
886
- "description": ""
887
- },
888
- {
889
- "name": "aria-label",
890
- "type": "undefined | string",
891
- "displayType": "undefined | string",
892
- "optional": true,
893
- "scalar": true,
894
- "description": "Accessible name for the button — required when it has no visible text (icon-only)."
895
- },
896
- {
897
- "name": "variant",
898
- "type": "undefined | \"default\" | \"ghost\" | \"outline\"",
899
- "displayType": "undefined | \"default\" | \"ghost\" | \"outline\"",
900
- "optional": true,
901
- "scalar": true,
902
- "description": "",
903
- "default": "'ghost'"
904
- },
905
- {
906
- "name": "size",
907
- "type": "undefined | \"sm\" | \"md\" | \"lg\" | \"icon\" | \"icon-sm\"",
908
- "displayType": "undefined | \"sm\" | \"md\" | \"lg\" | \"icon\" | \"icon-sm\"",
909
- "optional": true,
910
- "scalar": true,
911
- "description": "",
912
- "default": "'sm'"
913
- }
914
- ],
915
- "callbacks": [
916
- {
917
- "name": "onClick",
918
- "type": "undefined | () => void",
919
- "displayType": "undefined | () => void",
920
- "description": ""
921
- }
922
- ],
923
- "slots": [
924
- {
925
- "name": "children",
926
- "description": ""
927
- }
928
- ],
929
- "tokens": [],
930
- "extendsHtmlAttributes": false,
931
- "description": ""
932
- },
933
- {
934
- "name": "ChoiceCard",
935
- "group": "Components",
936
- "sourceFile": "src/components/choice-card.tsx",
937
- "props": [
938
- {
939
- "name": "data",
940
- "type": "undefined | { prompt?: undefined | string; options: { id: string; label: string; description?: undefined | string; media?: undefined | { image?: undefined | string; imageAlt?: undefined | string; icon?: undefined | string }; meta?: undefined | string; recommended?: undefined | false | true; disabled?: undefined | false | true; payload?: unknown }[]; allowOther?: undefined | false | true | { label?: undefined | string; placeholder?: undefined | string }; submitLabel?: undefined | string; dismissible?: undefined | false | true }",
941
- "displayType": "undefined | { prompt?: undefined | string; options: { id: string; label: string; description?: undefined | string; media?: undefined | { image?: undefined | string; imageAlt?: undefined | string; icon?: undefined | string }; meta?: undefined | string; recommended?: undefined | false | true; disabled?: undefined | false | true; payload?: unknown }[]; allowOther?: undefined | false | true | { label?: undefined | string; placeholder?: undefined | string }; submitLabel?: undefined | string; dismissible?: undefined | false | true }",
942
- "optional": true,
943
- "scalar": false,
944
- "description": "The choice definition (CardEnvelope.data)."
945
- },
946
- {
947
- "name": "cardId",
948
- "type": "undefined | string",
949
- "displayType": "undefined | string",
950
- "optional": true,
951
- "scalar": true,
952
- "description": "The card id used to correlate every emitted CardEvent."
953
- },
954
- {
955
- "name": "heading",
956
- "type": "undefined | string",
957
- "displayType": "undefined | string",
958
- "optional": true,
959
- "scalar": true,
960
- "description": "The envelope title rendered in the card chrome."
961
- },
962
- {
963
- "name": "hostElement",
964
- "type": "undefined | HTMLElement",
965
- "displayType": "undefined | HTMLElement",
966
- "optional": true,
967
- "scalar": false,
968
- "description": "The custom-element host node, for the bubbling `kai-card` fallback emit."
969
- },
970
- {
971
- "name": "resolution",
972
- "type": "undefined | { kind: \"action\"; action: string; payload?: unknown; at?: undefined | string } | { kind: \"submit\"; data: unknown; at?: undefined | string } | { kind: \"dismissed\"; at?: undefined | string } | { kind: \"expired\"; reason?: undefined | string; at?: undefined | string }",
973
- "displayType": "undefined | { kind: \"action\"; action: string; payload?: unknown; at?: undefined | string } | { kind: \"submit\"; data: unknown; at?: undefined | string } | { kind: \"dismissed\"; at?: undefined | string } | { kind: \"expired\"; reason?: undefined | string; at?: undefined | string }",
974
- "optional": true,
975
- "scalar": false,
976
- "description": "When set, render the chromed read-only view instead of the interactive radiogroup."
977
- },
978
- {
979
- "name": "value",
980
- "type": "undefined | string",
981
- "displayType": "undefined | string",
982
- "optional": true,
983
- "scalar": true,
984
- "description": "Controlled selection (option id). When set, the consumer owns the current pick."
985
- },
986
- {
987
- "name": "defaultValue",
988
- "type": "undefined | string",
989
- "displayType": "undefined | string",
990
- "optional": true,
991
- "scalar": true,
992
- "description": "Option id to pre-select on mount (uncontrolled seed)."
993
- },
994
- {
995
- "name": "disabled",
996
- "type": "undefined | false | true",
997
- "displayType": "undefined | false | true",
998
- "optional": true,
999
- "scalar": true,
1000
- "description": "Disable the whole radiogroup + Submit (e.g. while the agent is busy)."
1001
- }
1002
- ],
1003
- "callbacks": [
1004
- {
1005
- "name": "host",
1006
- "type": "undefined | { context: () => import(\"/home/runner/work/ui/ui/packages/ui/src/index\").CardContext; emit: (event: CardEvent) => void }",
1007
- "displayType": "undefined | { context: () => import(\"/home/runner/work/ui/ui/packages/ui/src/index\").CardContext; emit: (event: CardEvent) => void }",
1008
- "description": "Optional explicit CardHost (otherwise read from a CardProvider, otherwise the bubbling `kai-card` CustomEvent off `hostElement`)."
1009
- },
1010
- {
1011
- "name": "onValueChange",
1012
- "type": "undefined | (value: string) => void",
1013
- "displayType": "undefined | (value: string) => void",
1014
- "description": "Fires when the selection changes BEFORE submit (row click or select())."
1015
- },
1016
- {
1017
- "name": "controllerRef",
1018
- "type": "undefined | (controller: ChoiceController) => void",
1019
- "displayType": "undefined | (controller: ChoiceController) => void",
1020
- "description": "Receive the imperative controller once mounted. The `<kai-choice>` facade forwards these as element methods (focus/select/send/dismiss/reopen)."
1021
- }
1022
- ],
1023
- "slots": [],
1024
- "tokens": [],
1025
- "extendsHtmlAttributes": false,
1026
- "description": "`ChoiceCard` — a single-select \"pick one of N rich options\" card (plans, products, flights, quick replies) inside `Card` chrome. The options are a WAI-ARIA radiogroup (list rows) with roving tabindex: clicking a row (or Space/Enter on the focused row) **selects** it locally without emitting; a **Submit** button below the list then emits the Card contract's **`action`** verb (`{ kind:'action', cardId, action: option.id, payload }`) and resolves the card (chosen option shown read-only) so the same pick can't double-fire. An optional `allowOther` free-text escape appends a selectable \"Other…\" row; selecting it reveals an inline text input, and the same Submit emits `action:'__other__'` with `{ text }`. Emits `ready` on mount and `error` for an unusable definition (inline error state)."
1027
- },
1028
- {
1029
- "name": "CircularLoader",
1030
- "group": "Components",
1031
- "sourceFile": "src/components/loader.tsx",
1032
- "props": [
1033
- {
1034
- "name": "size",
1035
- "type": "undefined | \"sm\" | \"md\" | \"lg\"",
1036
- "displayType": "undefined | \"sm\" | \"md\" | \"lg\"",
1037
- "optional": true,
1038
- "scalar": true,
1039
- "description": "",
1040
- "default": "'md'"
1041
- }
1042
- ],
1043
- "callbacks": [],
1044
- "slots": [],
1045
- "tokens": [],
1046
- "extendsHtmlAttributes": false,
1047
- "description": ""
1048
- },
1049
- {
1050
- "name": "ClassicLoader",
1051
- "group": "Components",
1052
- "sourceFile": "src/components/loader.tsx",
1053
- "props": [
1054
- {
1055
- "name": "size",
1056
- "type": "undefined | \"sm\" | \"md\" | \"lg\"",
1057
- "displayType": "undefined | \"sm\" | \"md\" | \"lg\"",
1058
- "optional": true,
1059
- "scalar": true,
1060
- "description": "",
1061
- "default": "'md'"
1062
- }
1063
- ],
1064
- "callbacks": [],
1065
- "slots": [],
1066
- "tokens": [],
1067
- "extendsHtmlAttributes": false,
1068
- "description": ""
1069
- },
1070
- {
1071
- "name": "CodeBlock",
1072
- "group": "Components",
1073
- "sourceFile": "src/components/code-block.tsx",
1074
- "props": [],
1075
- "callbacks": [],
1076
- "slots": [
1077
- {
1078
- "name": "children",
1079
- "description": ""
1080
- }
1081
- ],
1082
- "tokens": [
1083
- "--color-code-foreground"
1084
- ],
1085
- "extendsHtmlAttributes": true,
1086
- "description": ""
1087
- },
1088
- {
1089
- "name": "CodeBlockCode",
1090
- "group": "Components",
1091
- "sourceFile": "src/components/code-block.tsx",
1092
- "props": [
1093
- {
1094
- "name": "code",
1095
- "type": "string",
1096
- "displayType": "string",
1097
- "optional": false,
1098
- "scalar": true,
1099
- "description": ""
1100
- },
1101
- {
1102
- "name": "language",
1103
- "type": "undefined | string",
1104
- "displayType": "undefined | string",
1105
- "optional": true,
1106
- "scalar": true,
1107
- "description": "",
1108
- "default": "'tsx'"
1109
- },
1110
- {
1111
- "name": "theme",
1112
- "type": "undefined | string",
1113
- "displayType": "undefined | string",
1114
- "optional": true,
1115
- "scalar": true,
1116
- "description": ""
1117
- }
1118
- ],
1119
- "callbacks": [],
1120
- "slots": [],
1121
- "tokens": [
1122
- "--color-code-foreground"
1123
- ],
1124
- "extendsHtmlAttributes": true,
1125
- "description": ""
1126
- },
1127
- {
1128
- "name": "CodeBlockGroup",
1129
- "group": "Components",
1130
- "sourceFile": "src/components/code-block.tsx",
1131
- "props": [],
1132
- "callbacks": [],
1133
- "slots": [
1134
- {
1135
- "name": "children",
1136
- "description": ""
1137
- }
1138
- ],
1139
- "tokens": [],
1140
- "extendsHtmlAttributes": true,
1141
- "description": ""
1142
- },
1143
- {
1144
- "name": "ConfirmCard",
1145
- "group": "Components",
1146
- "sourceFile": "src/components/confirm-card.tsx",
1147
- "props": [
1148
- {
1149
- "name": "data",
1150
- "type": "undefined | { heading?: undefined | string; body?: undefined | string; tone?: undefined | \"warning\" | \"default\" | \"danger\"; actions: { id: string; label: string; style?: undefined | \"default\" | \"primary\" | \"destructive\"; payload?: unknown; default?: undefined | false | true }[]; dismissible?: undefined | false | true }",
1151
- "displayType": "undefined | { heading?: undefined | string; body?: undefined | string; tone?: undefined | \"warning\" | \"default\" | \"danger\"; actions: { id: string; label: string; style?: undefined | \"default\" | \"primary\" | \"destructive\"; payload?: unknown; default?: undefined | false | true }[]; dismissible?: undefined | false | true }",
1152
- "optional": true,
1153
- "scalar": false,
1154
- "description": "The confirm definition (CardEnvelope.data)."
1155
- },
1156
- {
1157
- "name": "cardId",
1158
- "type": "undefined | string",
1159
- "displayType": "undefined | string",
1160
- "optional": true,
1161
- "scalar": true,
1162
- "description": "The card id used to correlate every emitted CardEvent."
1163
- },
1164
- {
1165
- "name": "heading",
1166
- "type": "undefined | string",
1167
- "displayType": "undefined | string",
1168
- "optional": true,
1169
- "scalar": true,
1170
- "description": "The envelope title rendered in the card chrome."
1171
- },
1172
- {
1173
- "name": "hostElement",
1174
- "type": "undefined | HTMLElement",
1175
- "displayType": "undefined | HTMLElement",
1176
- "optional": true,
1177
- "scalar": false,
1178
- "description": "The custom-element host node, for the bubbling `kai-card` fallback emit."
1179
- },
1180
- {
1181
- "name": "autofocus",
1182
- "type": "undefined | false | true",
1183
- "displayType": "undefined | false | true",
1184
- "optional": true,
1185
- "scalar": true,
1186
- "description": "Focus the default action on mount. Default OFF (no focus-stealing mid-stream)."
1187
- },
1188
- {
1189
- "name": "resolution",
1190
- "type": "undefined | { kind: \"action\"; action: string; payload?: unknown; at?: undefined | string } | { kind: \"submit\"; data: unknown; at?: undefined | string } | { kind: \"dismissed\"; at?: undefined | string } | { kind: \"expired\"; reason?: undefined | string; at?: undefined | string }",
1191
- "displayType": "undefined | { kind: \"action\"; action: string; payload?: unknown; at?: undefined | string } | { kind: \"submit\"; data: unknown; at?: undefined | string } | { kind: \"dismissed\"; at?: undefined | string } | { kind: \"expired\"; reason?: undefined | string; at?: undefined | string }",
1192
- "optional": true,
1193
- "scalar": false,
1194
- "description": "When set, render the chromed read-only view instead of the buttons."
1195
- }
1196
- ],
1197
- "callbacks": [
1198
- {
1199
- "name": "host",
1200
- "type": "undefined | { context: () => import(\"/home/runner/work/ui/ui/packages/ui/src/index\").CardContext; emit: (event: CardEvent) => void }",
1201
- "displayType": "undefined | { context: () => import(\"/home/runner/work/ui/ui/packages/ui/src/index\").CardContext; emit: (event: CardEvent) => void }",
1202
- "description": "Optional explicit CardHost (otherwise read from a CardProvider, otherwise the bubbling `kai-card` CustomEvent off `hostElement`)."
1203
- },
1204
- {
1205
- "name": "controllerRef",
1206
- "type": "undefined | (controller: ConfirmController) => void",
1207
- "displayType": "undefined | (controller: ConfirmController) => void",
1208
- "description": "Receive the imperative controller once mounted. The `<kai-confirm>` facade forwards these as element methods (focus/confirm/dismiss/reopen)."
1209
- }
1210
- ],
1211
- "slots": [],
1212
- "tokens": [],
1213
- "extendsHtmlAttributes": false,
1214
- "description": "`ConfirmCard` — a named-intent approval card. Renders a title + body + a small set of action buttons inside `Card` chrome. Activating an action emits the Card contract's `action` verb (`{ kind:'action', cardId, action, payload }`) and resolves the card (other actions disabled, the chosen one marked) so the same approval can't double-fire. Emits `ready` on mount, `dismiss` for the optional close affordance, and `error` for an unusable definition (inline error state)."
1215
- },
1216
- {
1217
- "name": "Context",
1218
- "group": "Components",
1219
- "sourceFile": "src/components/context.tsx",
1220
- "props": [
1221
- {
1222
- "name": "usedTokens",
1223
- "type": "number",
1224
- "displayType": "number",
1225
- "optional": false,
1226
- "scalar": true,
1227
- "description": ""
1228
- },
1229
- {
1230
- "name": "maxTokens",
1231
- "type": "number",
1232
- "displayType": "number",
1233
- "optional": false,
1234
- "scalar": true,
1235
- "description": ""
1236
- },
1237
- {
1238
- "name": "inputTokens",
1239
- "type": "undefined | number",
1240
- "displayType": "undefined | number",
1241
- "optional": true,
1242
- "scalar": true,
1243
- "description": ""
1244
- },
1245
- {
1246
- "name": "outputTokens",
1247
- "type": "undefined | number",
1248
- "displayType": "undefined | number",
1249
- "optional": true,
1250
- "scalar": true,
1251
- "description": ""
1252
- },
1253
- {
1254
- "name": "reasoningTokens",
1255
- "type": "undefined | number",
1256
- "displayType": "undefined | number",
1257
- "optional": true,
1258
- "scalar": true,
1259
- "description": ""
1260
- },
1261
- {
1262
- "name": "cacheTokens",
1263
- "type": "undefined | number",
1264
- "displayType": "undefined | number",
1265
- "optional": true,
1266
- "scalar": true,
1267
- "description": ""
1268
- },
1269
- {
1270
- "name": "estimatedCost",
1271
- "type": "undefined | number",
1272
- "displayType": "undefined | number",
1273
- "optional": true,
1274
- "scalar": true,
1275
- "description": ""
1276
- },
1277
- {
1278
- "name": "warnThreshold",
1279
- "type": "undefined | number",
1280
- "displayType": "undefined | number",
1281
- "optional": true,
1282
- "scalar": true,
1283
- "description": "Fraction (0–1) above which the progress bar turns yellow. Defaults to `0.7` (70%)."
1284
- },
1285
- {
1286
- "name": "dangerThreshold",
1287
- "type": "undefined | number",
1288
- "displayType": "undefined | number",
1289
- "optional": true,
1290
- "scalar": true,
1291
- "description": "Fraction (0–1) above which the progress bar turns red. Defaults to `0.9` (90%)."
1292
- }
1293
- ],
1294
- "callbacks": [],
1295
- "slots": [
1296
- {
1297
- "name": "children",
1298
- "description": ""
1299
- }
1300
- ],
1301
- "tokens": [],
1302
- "extendsHtmlAttributes": false,
1303
- "description": ""
1304
- },
1305
- {
1306
- "name": "ContextCacheUsage",
1307
- "group": "Components",
1308
- "sourceFile": "src/components/context.tsx",
1309
- "props": [],
1310
- "callbacks": [],
1311
- "slots": [
1312
- {
1313
- "name": "children",
1314
- "description": ""
1315
- }
1316
- ],
1317
- "tokens": [],
1318
- "extendsHtmlAttributes": false,
1319
- "description": ""
1320
- },
1321
- {
1322
- "name": "ContextContent",
1323
- "group": "Components",
1324
- "sourceFile": "src/components/context.tsx",
1325
- "props": [],
1326
- "callbacks": [],
1327
- "slots": [
1328
- {
1329
- "name": "children",
1330
- "description": ""
1331
- }
1332
- ],
1333
- "tokens": [],
1334
- "extendsHtmlAttributes": false,
1335
- "description": ""
1336
- },
1337
- {
1338
- "name": "ContextContentBody",
1339
- "group": "Components",
1340
- "sourceFile": "src/components/context.tsx",
1341
- "props": [],
1342
- "callbacks": [],
1343
- "slots": [
1344
- {
1345
- "name": "children",
1346
- "description": ""
1347
- }
1348
- ],
1349
- "tokens": [],
1350
- "extendsHtmlAttributes": false,
1351
- "description": ""
1352
- },
1353
- {
1354
- "name": "ContextContentFooter",
1355
- "group": "Components",
1356
- "sourceFile": "src/components/context.tsx",
1357
- "props": [],
1358
- "callbacks": [],
1359
- "slots": [
1360
- {
1361
- "name": "children",
1362
- "description": ""
1363
- }
1364
- ],
1365
- "tokens": [],
1366
- "extendsHtmlAttributes": false,
1367
- "description": ""
1368
- },
1369
- {
1370
- "name": "ContextContentHeader",
1371
- "group": "Components",
1372
- "sourceFile": "src/components/context.tsx",
1373
- "props": [],
1374
- "callbacks": [],
1375
- "slots": [
1376
- {
1377
- "name": "children",
1378
- "description": ""
1379
- }
1380
- ],
1381
- "tokens": [],
1382
- "extendsHtmlAttributes": false,
1383
- "description": ""
1384
- },
1385
- {
1386
- "name": "ContextInputUsage",
1387
- "group": "Components",
1388
- "sourceFile": "src/components/context.tsx",
1389
- "props": [],
1390
- "callbacks": [],
1391
- "slots": [
1392
- {
1393
- "name": "children",
1394
- "description": ""
1395
- }
1396
- ],
1397
- "tokens": [],
1398
- "extendsHtmlAttributes": false,
1399
- "description": ""
1400
- },
1401
- {
1402
- "name": "ContextOutputUsage",
1403
- "group": "Components",
1404
- "sourceFile": "src/components/context.tsx",
1405
- "props": [],
1406
- "callbacks": [],
1407
- "slots": [
1408
- {
1409
- "name": "children",
1410
- "description": ""
1411
- }
1412
- ],
1413
- "tokens": [],
1414
- "extendsHtmlAttributes": false,
1415
- "description": ""
1416
- },
1417
- {
1418
- "name": "ContextReasoningUsage",
1419
- "group": "Components",
1420
- "sourceFile": "src/components/context.tsx",
1421
- "props": [],
1422
- "callbacks": [],
1423
- "slots": [
1424
- {
1425
- "name": "children",
1426
- "description": ""
1427
- }
1428
- ],
1429
- "tokens": [],
1430
- "extendsHtmlAttributes": false,
1431
- "description": ""
1432
- },
1433
- {
1434
- "name": "ContextTrigger",
1435
- "group": "Components",
1436
- "sourceFile": "src/components/context.tsx",
1437
- "props": [],
1438
- "callbacks": [],
1439
- "slots": [
1440
- {
1441
- "name": "children",
1442
- "description": ""
1443
- }
1444
- ],
1445
- "tokens": [],
1446
- "extendsHtmlAttributes": false,
1447
- "description": ""
1448
- },
1449
- {
1450
- "name": "ConversationItem",
1451
- "group": "Components",
1452
- "sourceFile": "src/components/conversation-item.tsx",
1453
- "props": [
1454
- {
1455
- "name": "conversation",
1456
- "type": "{ id: string; title: string; groupId?: undefined | string; scope: { type: \"document\" | \"collection\"; documentId?: undefined | string; filters?: undefined | { tags?: undefined | string[]; authors?: undefined | string[]; contentType?: undefined | \"transcript\" | \"markdown\"; dateRange?: undefined | { from: string; to: string } } }; messageCount: number; lastMessageAt: string; updatedAt: string; trailing?: undefined | string }",
1457
- "displayType": "{ id: string; title: string; groupId?: undefined | string; scope: { type: \"document\" | \"collection\"; documentId?: undefined | string; filters?: undefined | { tags?: undefined | string[]; authors?: undefined | string[]; contentType?: undefined | \"transcript\" | \"markdown\"; dateRange?: undefined | { from: string; to: string } } }; messageCount: number; lastMessageAt: string; updatedAt: string; trailing?: undefined | string }",
1458
- "optional": false,
1459
- "scalar": false,
1460
- "description": ""
1461
- },
1462
- {
1463
- "name": "isActive",
1464
- "type": "false | true",
1465
- "displayType": "false | true",
1466
- "optional": false,
1467
- "scalar": true,
1468
- "description": ""
1469
- },
1470
- {
1471
- "name": "compact",
1472
- "type": "undefined | false | true",
1473
- "displayType": "undefined | false | true",
1474
- "optional": true,
1475
- "scalar": true,
1476
- "description": "Dense single-line row: a leading dot + title, no message count."
1477
- }
1478
- ],
1479
- "callbacks": [
1480
- {
1481
- "name": "onSelect",
1482
- "type": "(id: string) => void",
1483
- "displayType": "(id: string) => void",
1484
- "description": ""
1485
- }
1486
- ],
1487
- "slots": [],
1488
- "tokens": [
1489
- "--color-sidebar"
1490
- ],
1491
- "extendsHtmlAttributes": false,
1492
- "description": ""
1493
- },
1494
- {
1495
- "name": "ConversationList",
1496
- "group": "Components",
1497
- "sourceFile": "src/components/conversation-list.tsx",
1498
- "props": [
1499
- {
1500
- "name": "groups",
1501
- "type": "{ id: string; userId?: undefined | string; teamId?: undefined | string; name: string; sortOrder: number; createdAt: string }[]",
1502
- "displayType": "ConversationGroup[]",
1503
- "optional": false,
1504
- "scalar": false,
1505
- "description": ""
1506
- },
1507
- {
1508
- "name": "conversations",
1509
- "type": "{ id: string; title: string; groupId?: undefined | string; scope: { type: \"document\" | \"collection\"; documentId?: undefined | string; filters?: undefined | { tags?: undefined | string[]; authors?: undefined | string[]; contentType?: undefined | \"transcript\" | \"markdown\"; dateRange?: undefined | { from: string; to: string } } }; messageCount: number; lastMessageAt: string; updatedAt: string; trailing?: undefined | string }[]",
1510
- "displayType": "{ id: string; title: string; groupId?: undefined | string; scope: { type: \"document\" | \"collection\"; documentId?: undefined | string; filters?: undefined | { tags?: undefined | string[]; authors?: undefined | string[]; contentType?: undefined | \"transcript\" | \"markdown\"; dateRange?: undefined | { from: string; to: string } } }; messageCount: number; lastMessageAt: string; updatedAt: string; trailing?: undefined | string }[]",
1511
- "optional": false,
1512
- "scalar": false,
1513
- "description": ""
1514
- },
1515
- {
1516
- "name": "activeId",
1517
- "type": "undefined | string",
1518
- "displayType": "undefined | string",
1519
- "optional": true,
1520
- "scalar": true,
1521
- "description": ""
1522
- },
1523
- {
1524
- "name": "compact",
1525
- "type": "undefined | false | true",
1526
- "displayType": "undefined | false | true",
1527
- "optional": true,
1528
- "scalar": true,
1529
- "description": "Dense single-line rows (a leading dot + title, no message count)."
1530
- }
1531
- ],
1532
- "callbacks": [
1533
- {
1534
- "name": "onSelect",
1535
- "type": "(id: string) => void",
1536
- "displayType": "(id: string) => void",
1537
- "description": ""
1538
- },
1539
- {
1540
- "name": "onNewChat",
1541
- "type": "() => void",
1542
- "displayType": "() => void",
1543
- "description": ""
1544
- },
1545
- {
1546
- "name": "onToggleSidebar",
1547
- "type": "undefined | () => void",
1548
- "displayType": "undefined | () => void",
1549
- "description": ""
1550
- },
1551
- {
1552
- "name": "header",
1553
- "type": "undefined | null | number | false | true | Node | { length: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; }; pop: () => JSX.Element; push: (...items: JSX.Element[]) => number; concat: { (...items: ConcatArray<JSX.Element>[]): JSX.Element[]; (...items: (JSX.Element | ConcatArray<JSX.Element>)[]): JSX.Element[]; }; join: (separator?: string) => string; reverse: () => JSX.Element[]; shift: () => JSX.Element; slice: (start?: number, end?: number) => JSX.Element[]; sort: (compareFn?: ((a: JSX.Element, b: JSX.Element) => number) | undefined) => JSX.ArrayElement; splice: { (start: number, deleteCount?: number): JSX.Element[]; (start: number, deleteCount: number, ...items: JSX.Element[]): JSX.Element[]; }; unshift: (...items: JSX.Element[]) => number; indexOf: (searchElement: JSX.Element, fromIndex?: number) => number; lastIndexOf: (searchElement: JSX.Element, fromIndex?: number) => number; every: { <S extends JSX.Element>(predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: JSX.Element, index: number, array: JSX.Element[]) => void, thisArg?: any) => void; map: <U>(callbackfn: (value: JSX.Element, index: number, array: JSX.Element[]) => U, thisArg?: any) => U[]; filter: { <S extends JSX.Element>(predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => value is S, thisArg?: any): S[]; (predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => unknown, thisArg?: any): JSX.Element[]; }; reduce: { (callbackfn: (previousValue: JSX.Element, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => JSX.Element): JSX.Element; (callbackfn: (previousValue: JSX.Element, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => JSX.Element, initialValue: JSX.Element): JSX.Element; <U>(callbackfn: (previousValue: U, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => U, initialValue: U): U; }; reduceRight: { (callbackfn: (previousValue: JSX.Element, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => JSX.Element): JSX.Element; (callbackfn: (previousValue: JSX.Element, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => JSX.Element, initialValue: JSX.Element): JSX.Element; <U>(callbackfn: (previousValue: U, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => U, initialValue: U): U; }; find: { <S extends JSX.Element>(predicate: (value: JSX.Element, index: number, obj: JSX.Element[]) => value is S, thisArg?: any): S | undefined; (predicate: (value: JSX.Element, index: number, obj: JSX.Element[]) => unknown, thisArg?: any): JSX.Element; }; findIndex: (predicate: (value: JSX.Element, index: number, obj: JSX.Element[]) => unknown, thisArg?: any) => number; fill: (value: JSX.Element, start?: number, end?: number) => JSX.ArrayElement; copyWithin: (target: number, start: number, end?: number) => JSX.ArrayElement; entries: () => ArrayIterator<[number, JSX.Element]>; keys: () => ArrayIterator<number>; values: () => ArrayIterator<JSX.Element>; includes: (searchElement: JSX.Element, fromIndex?: number) => boolean; flatMap: <U, This = undefined>(callback: (this: This, value: JSX.Element, index: number, array: JSX.Element[]) => U | readonly U[], thisArg?: This | undefined) => U[]; flat: <A, D extends number = 1>(this: A, depth?: D | undefined) => FlatArray<A, D>[]; at: (index: number) => JSX.Element; findLast: { <S extends JSX.Element>(predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => value is S, thisArg?: any): S | undefined; (predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => unknown, thisArg?: any): JSX.Element; }; findLastIndex: (predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => unknown, thisArg?: any) => number; toReversed: () => JSX.Element[]; toSorted: (compareFn?: ((a: JSX.Element, b: JSX.Element) => number) | undefined) => JSX.Element[]; toSpliced: { (start: number, deleteCount: number, ...items: JSX.Element[]): JSX.Element[]; (start: number, deleteCount?: number): JSX.Element[]; }; with: (index: number, value: JSX.Element) => JSX.Element[]; __@iterator@12772: () => ArrayIterator<JSX.Element>; __@unscopables@12774: { [x: number]: boolean | undefined; length?: boolean | undefined; toString?: boolean | undefined; toLocaleString?: boolean | undefined; pop?: boolean | undefined; push?: boolean | undefined; concat?: boolean | undefined; join?: boolean | undefined; reverse?: boolean | undefined; shift?: boolean | undefined; slice?: boolean | undefined; sort?: boolean | undefined; splice?: boolean | undefined; unshift?: boolean | undefined; indexOf?: boolean | undefined; lastIndexOf?: boolean | undefined; every?: boolean | undefined; some?: boolean | undefined; forEach?: boolean | undefined; map?: boolean | undefined; filter?: boolean | undefined; reduce?: boolean | undefined; reduceRight?: boolean | undefined; find?: boolean | undefined; findIndex?: boolean | undefined; fill?: boolean | undefined; copyWithin?: boolean | undefined; entries?: boolean | undefined; keys?: boolean | undefined; values?: boolean | undefined; includes?: boolean | undefined; flatMap?: boolean | undefined; flat?: boolean | undefined; at?: boolean | undefined; findLast?: boolean | undefined; findLastIndex?: boolean | undefined; toReversed?: boolean | undefined; toSorted?: boolean | undefined; toSpliced?: boolean | undefined; with?: boolean | undefined; [Symbol.iterator]?: boolean | undefined; readonly [Symbol.unscopables]?: boolean | undefined; } } | string & {}",
1554
- "displayType": "undefined | null | number | false | true | Node | { length: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; }; pop: () => JSX.Element; push: (...items: JSX.Element[]) => number; concat: { (...items: ConcatArray<JSX.Element>[]): JSX.Element[]; (...items: (JSX.Element | ConcatArray<JSX.Element>)[]): JSX.Element[]; }; join: (separator?: string) => string; reverse: () => JSX.Element[]; shift: () => JSX.Element; slice: (start?: number, end?: number) => JSX.Element[]; sort: (compareFn?: ((a: JSX.Element, b: JSX.Element) => number) | undefined) => JSX.ArrayElement; splice: { (start: number, deleteCount?: number): JSX.Element[]; (start: number, deleteCount: number, ...items: JSX.Element[]): JSX.Element[]; }; unshift: (...items: JSX.Element[]) => number; indexOf: (searchElement: JSX.Element, fromIndex?: number) => number; lastIndexOf: (searchElement: JSX.Element, fromIndex?: number) => number; every: { <S extends JSX.Element>(predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: JSX.Element, index: number, array: JSX.Element[]) => void, thisArg?: any) => void; map: <U>(callbackfn: (value: JSX.Element, index: number, array: JSX.Element[]) => U, thisArg?: any) => U[]; filter: { <S extends JSX.Element>(predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => value is S, thisArg?: any): S[]; (predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => unknown, thisArg?: any): JSX.Element[]; }; reduce: { (callbackfn: (previousValue: JSX.Element, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => JSX.Element): JSX.Element; (callbackfn: (previousValue: JSX.Element, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => JSX.Element, initialValue: JSX.Element): JSX.Element; <U>(callbackfn: (previousValue: U, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => U, initialValue: U): U; }; reduceRight: { (callbackfn: (previousValue: JSX.Element, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => JSX.Element): JSX.Element; (callbackfn: (previousValue: JSX.Element, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => JSX.Element, initialValue: JSX.Element): JSX.Element; <U>(callbackfn: (previousValue: U, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => U, initialValue: U): U; }; find: { <S extends JSX.Element>(predicate: (value: JSX.Element, index: number, obj: JSX.Element[]) => value is S, thisArg?: any): S | undefined; (predicate: (value: JSX.Element, index: number, obj: JSX.Element[]) => unknown, thisArg?: any): JSX.Element; }; findIndex: (predicate: (value: JSX.Element, index: number, obj: JSX.Element[]) => unknown, thisArg?: any) => number; fill: (value: JSX.Element, start?: number, end?: number) => JSX.ArrayElement; copyWithin: (target: number, start: number, end?: number) => JSX.ArrayElement; entries: () => ArrayIterator<[number, JSX.Element]>; keys: () => ArrayIterator<number>; values: () => ArrayIterator<JSX.Element>; includes: (searchElement: JSX.Element, fromIndex?: number) => boolean; flatMap: <U, This = undefined>(callback: (this: This, value: JSX.Element, index: number, array: JSX.Element[]) => U | readonly U[], thisArg?: This | undefined) => U[]; flat: <A, D extends number = 1>(this: A, depth?: D | undefined) => FlatArray<A, D>[]; at: (index: number) => JSX.Element; findLast: { <S extends JSX.Element>(predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => value is S, thisArg?: any): S | undefined; (predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => unknown, thisArg?: any): JSX.Element; }; findLastIndex: (predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => unknown, thisArg?: any) => number; toReversed: () => JSX.Element[]; toSorted: (compareFn?: ((a: JSX.Element, b: JSX.Element) => number) | undefined) => JSX.Element[]; toSpliced: { (start: number, deleteCount: number, ...items: JSX.Element[]): JSX.Element[]; (start: number, deleteCount?: number): JSX.Element[]; }; with: (index: number, value: JSX.Element) => JSX.Element[]; __@iterator@12772: () => ArrayIterator<JSX.Element>; __@unscopables@12774: { [x: number]: boolean | undefined; length?: boolean | undefined; toString?: boolean | undefined; toLocaleString?: boolean | undefined; pop?: boolean | undefined; push?: boolean | undefined; concat?: boolean | undefined; join?: boolean | undefined; reverse?: boolean | undefined; shift?: boolean | undefined; slice?: boolean | undefined; sort?: boolean | undefined; splice?: boolean | undefined; unshift?: boolean | undefined; indexOf?: boolean | undefined; lastIndexOf?: boolean | undefined; every?: boolean | undefined; some?: boolean | undefined; forEach?: boolean | undefined; map?: boolean | undefined; filter?: boolean | undefined; reduce?: boolean | undefined; reduceRight?: boolean | undefined; find?: boolean | undefined; findIndex?: boolean | undefined; fill?: boolean | undefined; copyWithin?: boolean | undefined; entries?: boolean | undefined; keys?: boolean | undefined; values?: boolean | undefined; includes?: boolean | undefined; flatMap?: boolean | undefined; flat?: boolean | undefined; at?: boolean | undefined; findLast?: boolean | undefined; findLastIndex?: boolean | undefined; toReversed?: boolean | undefined; toSorted?: boolean | undefined; toSpliced?: boolean | undefined; with?: boolean | undefined; [Symbol.iterator]?: boolean | undefined; readonly [Symbol.unscopables]?: boolean | undefined; } } | string & {}",
1555
- "description": "Replaces the built-in title bar (toggle / \"Chats\" / New chat)."
1556
- },
1557
- {
1558
- "name": "footer",
1559
- "type": "undefined | null | number | false | true | Node | { length: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; }; pop: () => JSX.Element; push: (...items: JSX.Element[]) => number; concat: { (...items: ConcatArray<JSX.Element>[]): JSX.Element[]; (...items: (JSX.Element | ConcatArray<JSX.Element>)[]): JSX.Element[]; }; join: (separator?: string) => string; reverse: () => JSX.Element[]; shift: () => JSX.Element; slice: (start?: number, end?: number) => JSX.Element[]; sort: (compareFn?: ((a: JSX.Element, b: JSX.Element) => number) | undefined) => JSX.ArrayElement; splice: { (start: number, deleteCount?: number): JSX.Element[]; (start: number, deleteCount: number, ...items: JSX.Element[]): JSX.Element[]; }; unshift: (...items: JSX.Element[]) => number; indexOf: (searchElement: JSX.Element, fromIndex?: number) => number; lastIndexOf: (searchElement: JSX.Element, fromIndex?: number) => number; every: { <S extends JSX.Element>(predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: JSX.Element, index: number, array: JSX.Element[]) => void, thisArg?: any) => void; map: <U>(callbackfn: (value: JSX.Element, index: number, array: JSX.Element[]) => U, thisArg?: any) => U[]; filter: { <S extends JSX.Element>(predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => value is S, thisArg?: any): S[]; (predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => unknown, thisArg?: any): JSX.Element[]; }; reduce: { (callbackfn: (previousValue: JSX.Element, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => JSX.Element): JSX.Element; (callbackfn: (previousValue: JSX.Element, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => JSX.Element, initialValue: JSX.Element): JSX.Element; <U>(callbackfn: (previousValue: U, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => U, initialValue: U): U; }; reduceRight: { (callbackfn: (previousValue: JSX.Element, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => JSX.Element): JSX.Element; (callbackfn: (previousValue: JSX.Element, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => JSX.Element, initialValue: JSX.Element): JSX.Element; <U>(callbackfn: (previousValue: U, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => U, initialValue: U): U; }; find: { <S extends JSX.Element>(predicate: (value: JSX.Element, index: number, obj: JSX.Element[]) => value is S, thisArg?: any): S | undefined; (predicate: (value: JSX.Element, index: number, obj: JSX.Element[]) => unknown, thisArg?: any): JSX.Element; }; findIndex: (predicate: (value: JSX.Element, index: number, obj: JSX.Element[]) => unknown, thisArg?: any) => number; fill: (value: JSX.Element, start?: number, end?: number) => JSX.ArrayElement; copyWithin: (target: number, start: number, end?: number) => JSX.ArrayElement; entries: () => ArrayIterator<[number, JSX.Element]>; keys: () => ArrayIterator<number>; values: () => ArrayIterator<JSX.Element>; includes: (searchElement: JSX.Element, fromIndex?: number) => boolean; flatMap: <U, This = undefined>(callback: (this: This, value: JSX.Element, index: number, array: JSX.Element[]) => U | readonly U[], thisArg?: This | undefined) => U[]; flat: <A, D extends number = 1>(this: A, depth?: D | undefined) => FlatArray<A, D>[]; at: (index: number) => JSX.Element; findLast: { <S extends JSX.Element>(predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => value is S, thisArg?: any): S | undefined; (predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => unknown, thisArg?: any): JSX.Element; }; findLastIndex: (predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => unknown, thisArg?: any) => number; toReversed: () => JSX.Element[]; toSorted: (compareFn?: ((a: JSX.Element, b: JSX.Element) => number) | undefined) => JSX.Element[]; toSpliced: { (start: number, deleteCount: number, ...items: JSX.Element[]): JSX.Element[]; (start: number, deleteCount?: number): JSX.Element[]; }; with: (index: number, value: JSX.Element) => JSX.Element[]; __@iterator@12772: () => ArrayIterator<JSX.Element>; __@unscopables@12774: { [x: number]: boolean | undefined; length?: boolean | undefined; toString?: boolean | undefined; toLocaleString?: boolean | undefined; pop?: boolean | undefined; push?: boolean | undefined; concat?: boolean | undefined; join?: boolean | undefined; reverse?: boolean | undefined; shift?: boolean | undefined; slice?: boolean | undefined; sort?: boolean | undefined; splice?: boolean | undefined; unshift?: boolean | undefined; indexOf?: boolean | undefined; lastIndexOf?: boolean | undefined; every?: boolean | undefined; some?: boolean | undefined; forEach?: boolean | undefined; map?: boolean | undefined; filter?: boolean | undefined; reduce?: boolean | undefined; reduceRight?: boolean | undefined; find?: boolean | undefined; findIndex?: boolean | undefined; fill?: boolean | undefined; copyWithin?: boolean | undefined; entries?: boolean | undefined; keys?: boolean | undefined; values?: boolean | undefined; includes?: boolean | undefined; flatMap?: boolean | undefined; flat?: boolean | undefined; at?: boolean | undefined; findLast?: boolean | undefined; findLastIndex?: boolean | undefined; toReversed?: boolean | undefined; toSorted?: boolean | undefined; toSpliced?: boolean | undefined; with?: boolean | undefined; [Symbol.iterator]?: boolean | undefined; readonly [Symbol.unscopables]?: boolean | undefined; } } | string & {}",
1560
- "displayType": "undefined | null | number | false | true | Node | { length: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; }; pop: () => JSX.Element; push: (...items: JSX.Element[]) => number; concat: { (...items: ConcatArray<JSX.Element>[]): JSX.Element[]; (...items: (JSX.Element | ConcatArray<JSX.Element>)[]): JSX.Element[]; }; join: (separator?: string) => string; reverse: () => JSX.Element[]; shift: () => JSX.Element; slice: (start?: number, end?: number) => JSX.Element[]; sort: (compareFn?: ((a: JSX.Element, b: JSX.Element) => number) | undefined) => JSX.ArrayElement; splice: { (start: number, deleteCount?: number): JSX.Element[]; (start: number, deleteCount: number, ...items: JSX.Element[]): JSX.Element[]; }; unshift: (...items: JSX.Element[]) => number; indexOf: (searchElement: JSX.Element, fromIndex?: number) => number; lastIndexOf: (searchElement: JSX.Element, fromIndex?: number) => number; every: { <S extends JSX.Element>(predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: JSX.Element, index: number, array: JSX.Element[]) => void, thisArg?: any) => void; map: <U>(callbackfn: (value: JSX.Element, index: number, array: JSX.Element[]) => U, thisArg?: any) => U[]; filter: { <S extends JSX.Element>(predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => value is S, thisArg?: any): S[]; (predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => unknown, thisArg?: any): JSX.Element[]; }; reduce: { (callbackfn: (previousValue: JSX.Element, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => JSX.Element): JSX.Element; (callbackfn: (previousValue: JSX.Element, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => JSX.Element, initialValue: JSX.Element): JSX.Element; <U>(callbackfn: (previousValue: U, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => U, initialValue: U): U; }; reduceRight: { (callbackfn: (previousValue: JSX.Element, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => JSX.Element): JSX.Element; (callbackfn: (previousValue: JSX.Element, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => JSX.Element, initialValue: JSX.Element): JSX.Element; <U>(callbackfn: (previousValue: U, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => U, initialValue: U): U; }; find: { <S extends JSX.Element>(predicate: (value: JSX.Element, index: number, obj: JSX.Element[]) => value is S, thisArg?: any): S | undefined; (predicate: (value: JSX.Element, index: number, obj: JSX.Element[]) => unknown, thisArg?: any): JSX.Element; }; findIndex: (predicate: (value: JSX.Element, index: number, obj: JSX.Element[]) => unknown, thisArg?: any) => number; fill: (value: JSX.Element, start?: number, end?: number) => JSX.ArrayElement; copyWithin: (target: number, start: number, end?: number) => JSX.ArrayElement; entries: () => ArrayIterator<[number, JSX.Element]>; keys: () => ArrayIterator<number>; values: () => ArrayIterator<JSX.Element>; includes: (searchElement: JSX.Element, fromIndex?: number) => boolean; flatMap: <U, This = undefined>(callback: (this: This, value: JSX.Element, index: number, array: JSX.Element[]) => U | readonly U[], thisArg?: This | undefined) => U[]; flat: <A, D extends number = 1>(this: A, depth?: D | undefined) => FlatArray<A, D>[]; at: (index: number) => JSX.Element; findLast: { <S extends JSX.Element>(predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => value is S, thisArg?: any): S | undefined; (predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => unknown, thisArg?: any): JSX.Element; }; findLastIndex: (predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => unknown, thisArg?: any) => number; toReversed: () => JSX.Element[]; toSorted: (compareFn?: ((a: JSX.Element, b: JSX.Element) => number) | undefined) => JSX.Element[]; toSpliced: { (start: number, deleteCount: number, ...items: JSX.Element[]): JSX.Element[]; (start: number, deleteCount?: number): JSX.Element[]; }; with: (index: number, value: JSX.Element) => JSX.Element[]; __@iterator@12772: () => ArrayIterator<JSX.Element>; __@unscopables@12774: { [x: number]: boolean | undefined; length?: boolean | undefined; toString?: boolean | undefined; toLocaleString?: boolean | undefined; pop?: boolean | undefined; push?: boolean | undefined; concat?: boolean | undefined; join?: boolean | undefined; reverse?: boolean | undefined; shift?: boolean | undefined; slice?: boolean | undefined; sort?: boolean | undefined; splice?: boolean | undefined; unshift?: boolean | undefined; indexOf?: boolean | undefined; lastIndexOf?: boolean | undefined; every?: boolean | undefined; some?: boolean | undefined; forEach?: boolean | undefined; map?: boolean | undefined; filter?: boolean | undefined; reduce?: boolean | undefined; reduceRight?: boolean | undefined; find?: boolean | undefined; findIndex?: boolean | undefined; fill?: boolean | undefined; copyWithin?: boolean | undefined; entries?: boolean | undefined; keys?: boolean | undefined; values?: boolean | undefined; includes?: boolean | undefined; flatMap?: boolean | undefined; flat?: boolean | undefined; at?: boolean | undefined; findLast?: boolean | undefined; findLastIndex?: boolean | undefined; toReversed?: boolean | undefined; toSorted?: boolean | undefined; toSpliced?: boolean | undefined; with?: boolean | undefined; [Symbol.iterator]?: boolean | undefined; readonly [Symbol.unscopables]?: boolean | undefined; } } | string & {}",
1561
- "description": "A row below the list (e.g. account / settings / usage)."
1562
- },
1563
- {
1564
- "name": "empty",
1565
- "type": "undefined | null | number | false | true | Node | { length: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; }; pop: () => JSX.Element; push: (...items: JSX.Element[]) => number; concat: { (...items: ConcatArray<JSX.Element>[]): JSX.Element[]; (...items: (JSX.Element | ConcatArray<JSX.Element>)[]): JSX.Element[]; }; join: (separator?: string) => string; reverse: () => JSX.Element[]; shift: () => JSX.Element; slice: (start?: number, end?: number) => JSX.Element[]; sort: (compareFn?: ((a: JSX.Element, b: JSX.Element) => number) | undefined) => JSX.ArrayElement; splice: { (start: number, deleteCount?: number): JSX.Element[]; (start: number, deleteCount: number, ...items: JSX.Element[]): JSX.Element[]; }; unshift: (...items: JSX.Element[]) => number; indexOf: (searchElement: JSX.Element, fromIndex?: number) => number; lastIndexOf: (searchElement: JSX.Element, fromIndex?: number) => number; every: { <S extends JSX.Element>(predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: JSX.Element, index: number, array: JSX.Element[]) => void, thisArg?: any) => void; map: <U>(callbackfn: (value: JSX.Element, index: number, array: JSX.Element[]) => U, thisArg?: any) => U[]; filter: { <S extends JSX.Element>(predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => value is S, thisArg?: any): S[]; (predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => unknown, thisArg?: any): JSX.Element[]; }; reduce: { (callbackfn: (previousValue: JSX.Element, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => JSX.Element): JSX.Element; (callbackfn: (previousValue: JSX.Element, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => JSX.Element, initialValue: JSX.Element): JSX.Element; <U>(callbackfn: (previousValue: U, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => U, initialValue: U): U; }; reduceRight: { (callbackfn: (previousValue: JSX.Element, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => JSX.Element): JSX.Element; (callbackfn: (previousValue: JSX.Element, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => JSX.Element, initialValue: JSX.Element): JSX.Element; <U>(callbackfn: (previousValue: U, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => U, initialValue: U): U; }; find: { <S extends JSX.Element>(predicate: (value: JSX.Element, index: number, obj: JSX.Element[]) => value is S, thisArg?: any): S | undefined; (predicate: (value: JSX.Element, index: number, obj: JSX.Element[]) => unknown, thisArg?: any): JSX.Element; }; findIndex: (predicate: (value: JSX.Element, index: number, obj: JSX.Element[]) => unknown, thisArg?: any) => number; fill: (value: JSX.Element, start?: number, end?: number) => JSX.ArrayElement; copyWithin: (target: number, start: number, end?: number) => JSX.ArrayElement; entries: () => ArrayIterator<[number, JSX.Element]>; keys: () => ArrayIterator<number>; values: () => ArrayIterator<JSX.Element>; includes: (searchElement: JSX.Element, fromIndex?: number) => boolean; flatMap: <U, This = undefined>(callback: (this: This, value: JSX.Element, index: number, array: JSX.Element[]) => U | readonly U[], thisArg?: This | undefined) => U[]; flat: <A, D extends number = 1>(this: A, depth?: D | undefined) => FlatArray<A, D>[]; at: (index: number) => JSX.Element; findLast: { <S extends JSX.Element>(predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => value is S, thisArg?: any): S | undefined; (predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => unknown, thisArg?: any): JSX.Element; }; findLastIndex: (predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => unknown, thisArg?: any) => number; toReversed: () => JSX.Element[]; toSorted: (compareFn?: ((a: JSX.Element, b: JSX.Element) => number) | undefined) => JSX.Element[]; toSpliced: { (start: number, deleteCount: number, ...items: JSX.Element[]): JSX.Element[]; (start: number, deleteCount?: number): JSX.Element[]; }; with: (index: number, value: JSX.Element) => JSX.Element[]; __@iterator@12772: () => ArrayIterator<JSX.Element>; __@unscopables@12774: { [x: number]: boolean | undefined; length?: boolean | undefined; toString?: boolean | undefined; toLocaleString?: boolean | undefined; pop?: boolean | undefined; push?: boolean | undefined; concat?: boolean | undefined; join?: boolean | undefined; reverse?: boolean | undefined; shift?: boolean | undefined; slice?: boolean | undefined; sort?: boolean | undefined; splice?: boolean | undefined; unshift?: boolean | undefined; indexOf?: boolean | undefined; lastIndexOf?: boolean | undefined; every?: boolean | undefined; some?: boolean | undefined; forEach?: boolean | undefined; map?: boolean | undefined; filter?: boolean | undefined; reduce?: boolean | undefined; reduceRight?: boolean | undefined; find?: boolean | undefined; findIndex?: boolean | undefined; fill?: boolean | undefined; copyWithin?: boolean | undefined; entries?: boolean | undefined; keys?: boolean | undefined; values?: boolean | undefined; includes?: boolean | undefined; flatMap?: boolean | undefined; flat?: boolean | undefined; at?: boolean | undefined; findLast?: boolean | undefined; findLastIndex?: boolean | undefined; toReversed?: boolean | undefined; toSorted?: boolean | undefined; toSpliced?: boolean | undefined; with?: boolean | undefined; [Symbol.iterator]?: boolean | undefined; readonly [Symbol.unscopables]?: boolean | undefined; } } | string & {}",
1566
- "displayType": "undefined | null | number | false | true | Node | { length: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; }; pop: () => JSX.Element; push: (...items: JSX.Element[]) => number; concat: { (...items: ConcatArray<JSX.Element>[]): JSX.Element[]; (...items: (JSX.Element | ConcatArray<JSX.Element>)[]): JSX.Element[]; }; join: (separator?: string) => string; reverse: () => JSX.Element[]; shift: () => JSX.Element; slice: (start?: number, end?: number) => JSX.Element[]; sort: (compareFn?: ((a: JSX.Element, b: JSX.Element) => number) | undefined) => JSX.ArrayElement; splice: { (start: number, deleteCount?: number): JSX.Element[]; (start: number, deleteCount: number, ...items: JSX.Element[]): JSX.Element[]; }; unshift: (...items: JSX.Element[]) => number; indexOf: (searchElement: JSX.Element, fromIndex?: number) => number; lastIndexOf: (searchElement: JSX.Element, fromIndex?: number) => number; every: { <S extends JSX.Element>(predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: JSX.Element, index: number, array: JSX.Element[]) => void, thisArg?: any) => void; map: <U>(callbackfn: (value: JSX.Element, index: number, array: JSX.Element[]) => U, thisArg?: any) => U[]; filter: { <S extends JSX.Element>(predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => value is S, thisArg?: any): S[]; (predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => unknown, thisArg?: any): JSX.Element[]; }; reduce: { (callbackfn: (previousValue: JSX.Element, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => JSX.Element): JSX.Element; (callbackfn: (previousValue: JSX.Element, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => JSX.Element, initialValue: JSX.Element): JSX.Element; <U>(callbackfn: (previousValue: U, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => U, initialValue: U): U; }; reduceRight: { (callbackfn: (previousValue: JSX.Element, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => JSX.Element): JSX.Element; (callbackfn: (previousValue: JSX.Element, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => JSX.Element, initialValue: JSX.Element): JSX.Element; <U>(callbackfn: (previousValue: U, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => U, initialValue: U): U; }; find: { <S extends JSX.Element>(predicate: (value: JSX.Element, index: number, obj: JSX.Element[]) => value is S, thisArg?: any): S | undefined; (predicate: (value: JSX.Element, index: number, obj: JSX.Element[]) => unknown, thisArg?: any): JSX.Element; }; findIndex: (predicate: (value: JSX.Element, index: number, obj: JSX.Element[]) => unknown, thisArg?: any) => number; fill: (value: JSX.Element, start?: number, end?: number) => JSX.ArrayElement; copyWithin: (target: number, start: number, end?: number) => JSX.ArrayElement; entries: () => ArrayIterator<[number, JSX.Element]>; keys: () => ArrayIterator<number>; values: () => ArrayIterator<JSX.Element>; includes: (searchElement: JSX.Element, fromIndex?: number) => boolean; flatMap: <U, This = undefined>(callback: (this: This, value: JSX.Element, index: number, array: JSX.Element[]) => U | readonly U[], thisArg?: This | undefined) => U[]; flat: <A, D extends number = 1>(this: A, depth?: D | undefined) => FlatArray<A, D>[]; at: (index: number) => JSX.Element; findLast: { <S extends JSX.Element>(predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => value is S, thisArg?: any): S | undefined; (predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => unknown, thisArg?: any): JSX.Element; }; findLastIndex: (predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => unknown, thisArg?: any) => number; toReversed: () => JSX.Element[]; toSorted: (compareFn?: ((a: JSX.Element, b: JSX.Element) => number) | undefined) => JSX.Element[]; toSpliced: { (start: number, deleteCount: number, ...items: JSX.Element[]): JSX.Element[]; (start: number, deleteCount?: number): JSX.Element[]; }; with: (index: number, value: JSX.Element) => JSX.Element[]; __@iterator@12772: () => ArrayIterator<JSX.Element>; __@unscopables@12774: { [x: number]: boolean | undefined; length?: boolean | undefined; toString?: boolean | undefined; toLocaleString?: boolean | undefined; pop?: boolean | undefined; push?: boolean | undefined; concat?: boolean | undefined; join?: boolean | undefined; reverse?: boolean | undefined; shift?: boolean | undefined; slice?: boolean | undefined; sort?: boolean | undefined; splice?: boolean | undefined; unshift?: boolean | undefined; indexOf?: boolean | undefined; lastIndexOf?: boolean | undefined; every?: boolean | undefined; some?: boolean | undefined; forEach?: boolean | undefined; map?: boolean | undefined; filter?: boolean | undefined; reduce?: boolean | undefined; reduceRight?: boolean | undefined; find?: boolean | undefined; findIndex?: boolean | undefined; fill?: boolean | undefined; copyWithin?: boolean | undefined; entries?: boolean | undefined; keys?: boolean | undefined; values?: boolean | undefined; includes?: boolean | undefined; flatMap?: boolean | undefined; flat?: boolean | undefined; at?: boolean | undefined; findLast?: boolean | undefined; findLastIndex?: boolean | undefined; toReversed?: boolean | undefined; toSorted?: boolean | undefined; toSpliced?: boolean | undefined; with?: boolean | undefined; [Symbol.iterator]?: boolean | undefined; readonly [Symbol.unscopables]?: boolean | undefined; } } | string & {}",
1567
- "description": "Replaces the built-in \"no conversations yet\" state."
1568
- },
1569
- {
1570
- "name": "onSearchChange",
1571
- "type": "undefined | (query: string) => void",
1572
- "displayType": "undefined | (query: string) => void",
1573
- "description": "Fired whenever the built-in search box query changes (typing or a programmatic `clear()`). Lets the facade surface a `kai-search` event."
1574
- },
1575
- {
1576
- "name": "controllerRef",
1577
- "type": "undefined | (controller: ConversationListController) => void",
1578
- "displayType": "undefined | (controller: ConversationListController) => void",
1579
- "description": "Receive the imperative controller once mounted. The `kai-conversations` facade uses it to focus / clear the internal search input."
1580
- }
1581
- ],
1582
- "slots": [],
1583
- "tokens": [
1584
- "--color-sidebar",
1585
- "--color-scrollbar-thumb",
1586
- "--color-scrollbar-thumb-hover"
1587
- ],
1588
- "extendsHtmlAttributes": false,
1589
- "description": ""
1590
- },
1591
- {
1592
- "name": "DismissedStub",
1593
- "group": "Components",
1594
- "sourceFile": "src/components/dismissed-stub.tsx",
1595
- "props": [
1596
- {
1597
- "name": "type",
1598
- "type": "string",
1599
- "displayType": "string",
1600
- "optional": false,
1601
- "scalar": true,
1602
- "description": "The card type, used to derive the intent label (\"Proposed:\" etc.)."
1603
- },
1604
- {
1605
- "name": "title",
1606
- "type": "undefined | string",
1607
- "displayType": "undefined | string",
1608
- "optional": true,
1609
- "scalar": true,
1610
- "description": "The card's title/heading; shown after the intent label. Falls back gracefully.",
1611
- "default": "'this card'"
1612
- },
1613
- {
1614
- "name": "reopenLabel",
1615
- "type": "undefined | string",
1616
- "displayType": "undefined | string",
1617
- "optional": true,
1618
- "scalar": true,
1619
- "description": "The Reopen button label. Default 'Reopen'.",
1620
- "default": "'Reopen'"
1621
- }
1622
- ],
1623
- "callbacks": [
1624
- {
1625
- "name": "onReopen",
1626
- "type": "() => void",
1627
- "displayType": "() => void",
1628
- "description": "Re-open handler. The owning card emits `{ kind:'reopen', cardId }`."
1629
- }
1630
- ],
1631
- "slots": [],
1632
- "tokens": [],
1633
- "extendsHtmlAttributes": false,
1634
- "description": "`DismissedStub` — the compact stub a card collapses to after it's been dismissed. Group-labelled for a11y; the Reopen affordance is a ghost button."
1635
- },
1636
- {
1637
- "name": "DotsLoader",
1638
- "group": "Components",
1639
- "sourceFile": "src/components/loader.tsx",
1640
- "props": [
1641
- {
1642
- "name": "size",
1643
- "type": "undefined | \"sm\" | \"md\" | \"lg\"",
1644
- "displayType": "undefined | \"sm\" | \"md\" | \"lg\"",
1645
- "optional": true,
1646
- "scalar": true,
1647
- "description": "",
1648
- "default": "'md'"
1649
- }
1650
- ],
1651
- "callbacks": [],
1652
- "slots": [],
1653
- "tokens": [],
1654
- "extendsHtmlAttributes": false,
1655
- "description": ""
1656
- },
1657
- {
1658
- "name": "Embed",
1659
- "group": "Components",
1660
- "sourceFile": "src/components/embed.tsx",
1661
- "props": [
1662
- {
1663
- "name": "cardId",
1664
- "type": "string",
1665
- "displayType": "string",
1666
- "optional": false,
1667
- "scalar": true,
1668
- "description": "The card id correlating every emitted event."
1669
- },
1670
- {
1671
- "name": "data",
1672
- "type": "{ provider: \"youtube\" | \"vimeo\" | \"generic\"; id?: undefined | string; url?: undefined | string; title?: undefined | string; poster?: undefined | string; start?: undefined | number; aspectRatio?: undefined | \"16:9\" | \"4:3\" | \"1:1\" | \"9:16\" }",
1673
- "displayType": "{ provider: \"youtube\" | \"vimeo\" | \"generic\"; id?: undefined | string; url?: undefined | string; title?: undefined | string; poster?: undefined | string; start?: undefined | number; aspectRatio?: undefined | \"16:9\" | \"4:3\" | \"1:1\" | \"9:16\" }",
1674
- "optional": false,
1675
- "scalar": false,
1676
- "description": "The embed payload (data-down)."
1677
- }
1678
- ],
1679
- "callbacks": [
1680
- {
1681
- "name": "onEmit",
1682
- "type": "undefined | (event: CardEvent) => void",
1683
- "displayType": "undefined | (event: CardEvent) => void",
1684
- "description": "Emit a contract CardEvent up (host routes it)."
1685
- }
1686
- ],
1687
- "slots": [],
1688
- "tokens": [],
1689
- "extendsHtmlAttributes": true,
1690
- "description": "`Embed` — a privacy-first lazy media facade. Initial render is a poster + a play button: NO provider iframe, NO provider JS, NO cookies until the user opts in. On play it swaps in the provider `<iframe>` (youtube-nocookie / vimeo dnt / allowlisted generic). A persistent \"Open on {provider}\" affordance routes the contract `open` verb so a blocked embed is never a dead end. The only verbs it emits are lifecycle `ready`, `open`, and failure `error`."
1691
- },
1692
- {
1693
- "name": "Empty",
1694
- "group": "Components",
1695
- "sourceFile": "src/components/empty.tsx",
1696
- "props": [],
1697
- "callbacks": [],
1698
- "slots": [
1699
- {
1700
- "name": "children",
1701
- "description": ""
1702
- }
1703
- ],
1704
- "tokens": [],
1705
- "extendsHtmlAttributes": true,
1706
- "description": ""
1707
- },
1708
- {
1709
- "name": "EmptyContent",
1710
- "group": "Components",
1711
- "sourceFile": "src/components/empty.tsx",
1712
- "props": [],
1713
- "callbacks": [],
1714
- "slots": [
1715
- {
1716
- "name": "children",
1717
- "description": ""
1718
- }
1719
- ],
1720
- "tokens": [],
1721
- "extendsHtmlAttributes": true,
1722
- "description": ""
1723
- },
1724
- {
1725
- "name": "EmptyDescription",
1726
- "group": "Components",
1727
- "sourceFile": "src/components/empty.tsx",
1728
- "props": [],
1729
- "callbacks": [],
1730
- "slots": [
1731
- {
1732
- "name": "children",
1733
- "description": ""
1734
- }
1735
- ],
1736
- "tokens": [],
1737
- "extendsHtmlAttributes": true,
1738
- "description": ""
1739
- },
1740
- {
1741
- "name": "EmptyHeader",
1742
- "group": "Components",
1743
- "sourceFile": "src/components/empty.tsx",
1744
- "props": [],
1745
- "callbacks": [],
1746
- "slots": [
1747
- {
1748
- "name": "children",
1749
- "description": ""
1750
- }
1751
- ],
1752
- "tokens": [],
1753
- "extendsHtmlAttributes": true,
1754
- "description": ""
1755
- },
1756
- {
1757
- "name": "EmptyMedia",
1758
- "group": "Components",
1759
- "sourceFile": "src/components/empty.tsx",
1760
- "props": [
1761
- {
1762
- "name": "variant",
1763
- "type": "undefined | null | \"default\" | \"icon\"",
1764
- "displayType": "undefined | null | \"default\" | \"icon\"",
1765
- "optional": true,
1766
- "scalar": false,
1767
- "description": "",
1768
- "default": "'default'"
1769
- }
1770
- ],
1771
- "callbacks": [],
1772
- "slots": [
1773
- {
1774
- "name": "children",
1775
- "description": ""
1776
- }
1777
- ],
1778
- "tokens": [],
1779
- "extendsHtmlAttributes": true,
1780
- "description": ""
1781
- },
1782
- {
1783
- "name": "EmptyTitle",
1784
- "group": "Components",
1785
- "sourceFile": "src/components/empty.tsx",
1786
- "props": [],
1787
- "callbacks": [],
1788
- "slots": [
1789
- {
1790
- "name": "children",
1791
- "description": ""
1792
- }
1793
- ],
1794
- "tokens": [],
1795
- "extendsHtmlAttributes": true,
1796
- "description": ""
1797
- },
1798
- {
1799
- "name": "FeedbackBar",
1800
- "group": "Components",
1801
- "sourceFile": "src/components/feedback-bar.tsx",
1802
- "props": [
1803
- {
1804
- "name": "title",
1805
- "type": "undefined | string",
1806
- "displayType": "undefined | string",
1807
- "optional": true,
1808
- "scalar": true,
1809
- "description": "Prompt shown in the initial \"ask\" state."
1810
- },
1811
- {
1812
- "name": "collectDetail",
1813
- "type": "undefined | false | true",
1814
- "displayType": "undefined | false | true",
1815
- "optional": true,
1816
- "scalar": true,
1817
- "description": "When set, a not-helpful vote opens an optional detail form before the thank-you confirmation. Off → a vote goes straight to thanks."
1818
- },
1819
- {
1820
- "name": "categories",
1821
- "type": "undefined | string[]",
1822
- "displayType": "undefined | string[]",
1823
- "optional": true,
1824
- "scalar": false,
1825
- "description": "Optional category chips offered in the detail form."
1826
- },
1827
- {
1828
- "name": "detailTitle",
1829
- "type": "undefined | string",
1830
- "displayType": "undefined | string",
1831
- "optional": true,
1832
- "scalar": true,
1833
- "description": "Heading for the detail form.",
1834
- "default": "'What went wrong?'"
1835
- },
1836
- {
1837
- "name": "detailPlaceholder",
1838
- "type": "undefined | string",
1839
- "displayType": "undefined | string",
1840
- "optional": true,
1841
- "scalar": true,
1842
- "description": "Placeholder for the detail comment box.",
1843
- "default": "'Tell us more (optional)'"
1844
- },
1845
- {
1846
- "name": "submitLabel",
1847
- "type": "undefined | string",
1848
- "displayType": "undefined | string",
1849
- "optional": true,
1850
- "scalar": true,
1851
- "description": "Submit button label in the detail form.",
1852
- "default": "'Submit'"
1853
- },
1854
- {
1855
- "name": "thanksMessage",
1856
- "type": "undefined | string",
1857
- "displayType": "undefined | string",
1858
- "optional": true,
1859
- "scalar": true,
1860
- "description": "Confirmation copy shown after a vote/submit.",
1861
- "default": "'Thanks for your feedback'"
1862
- }
1863
- ],
1864
- "callbacks": [
1865
- {
1866
- "name": "icon",
1867
- "type": "undefined | null | number | false | true | Node | { length: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; }; pop: () => JSX.Element; push: (...items: JSX.Element[]) => number; concat: { (...items: ConcatArray<JSX.Element>[]): JSX.Element[]; (...items: (JSX.Element | ConcatArray<JSX.Element>)[]): JSX.Element[]; }; join: (separator?: string) => string; reverse: () => JSX.Element[]; shift: () => JSX.Element; slice: (start?: number, end?: number) => JSX.Element[]; sort: (compareFn?: ((a: JSX.Element, b: JSX.Element) => number) | undefined) => JSX.ArrayElement; splice: { (start: number, deleteCount?: number): JSX.Element[]; (start: number, deleteCount: number, ...items: JSX.Element[]): JSX.Element[]; }; unshift: (...items: JSX.Element[]) => number; indexOf: (searchElement: JSX.Element, fromIndex?: number) => number; lastIndexOf: (searchElement: JSX.Element, fromIndex?: number) => number; every: { <S extends JSX.Element>(predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: JSX.Element, index: number, array: JSX.Element[]) => void, thisArg?: any) => void; map: <U>(callbackfn: (value: JSX.Element, index: number, array: JSX.Element[]) => U, thisArg?: any) => U[]; filter: { <S extends JSX.Element>(predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => value is S, thisArg?: any): S[]; (predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => unknown, thisArg?: any): JSX.Element[]; }; reduce: { (callbackfn: (previousValue: JSX.Element, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => JSX.Element): JSX.Element; (callbackfn: (previousValue: JSX.Element, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => JSX.Element, initialValue: JSX.Element): JSX.Element; <U>(callbackfn: (previousValue: U, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => U, initialValue: U): U; }; reduceRight: { (callbackfn: (previousValue: JSX.Element, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => JSX.Element): JSX.Element; (callbackfn: (previousValue: JSX.Element, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => JSX.Element, initialValue: JSX.Element): JSX.Element; <U>(callbackfn: (previousValue: U, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => U, initialValue: U): U; }; find: { <S extends JSX.Element>(predicate: (value: JSX.Element, index: number, obj: JSX.Element[]) => value is S, thisArg?: any): S | undefined; (predicate: (value: JSX.Element, index: number, obj: JSX.Element[]) => unknown, thisArg?: any): JSX.Element; }; findIndex: (predicate: (value: JSX.Element, index: number, obj: JSX.Element[]) => unknown, thisArg?: any) => number; fill: (value: JSX.Element, start?: number, end?: number) => JSX.ArrayElement; copyWithin: (target: number, start: number, end?: number) => JSX.ArrayElement; entries: () => ArrayIterator<[number, JSX.Element]>; keys: () => ArrayIterator<number>; values: () => ArrayIterator<JSX.Element>; includes: (searchElement: JSX.Element, fromIndex?: number) => boolean; flatMap: <U, This = undefined>(callback: (this: This, value: JSX.Element, index: number, array: JSX.Element[]) => U | readonly U[], thisArg?: This | undefined) => U[]; flat: <A, D extends number = 1>(this: A, depth?: D | undefined) => FlatArray<A, D>[]; at: (index: number) => JSX.Element; findLast: { <S extends JSX.Element>(predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => value is S, thisArg?: any): S | undefined; (predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => unknown, thisArg?: any): JSX.Element; }; findLastIndex: (predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => unknown, thisArg?: any) => number; toReversed: () => JSX.Element[]; toSorted: (compareFn?: ((a: JSX.Element, b: JSX.Element) => number) | undefined) => JSX.Element[]; toSpliced: { (start: number, deleteCount: number, ...items: JSX.Element[]): JSX.Element[]; (start: number, deleteCount?: number): JSX.Element[]; }; with: (index: number, value: JSX.Element) => JSX.Element[]; __@iterator@12772: () => ArrayIterator<JSX.Element>; __@unscopables@12774: { [x: number]: boolean | undefined; length?: boolean | undefined; toString?: boolean | undefined; toLocaleString?: boolean | undefined; pop?: boolean | undefined; push?: boolean | undefined; concat?: boolean | undefined; join?: boolean | undefined; reverse?: boolean | undefined; shift?: boolean | undefined; slice?: boolean | undefined; sort?: boolean | undefined; splice?: boolean | undefined; unshift?: boolean | undefined; indexOf?: boolean | undefined; lastIndexOf?: boolean | undefined; every?: boolean | undefined; some?: boolean | undefined; forEach?: boolean | undefined; map?: boolean | undefined; filter?: boolean | undefined; reduce?: boolean | undefined; reduceRight?: boolean | undefined; find?: boolean | undefined; findIndex?: boolean | undefined; fill?: boolean | undefined; copyWithin?: boolean | undefined; entries?: boolean | undefined; keys?: boolean | undefined; values?: boolean | undefined; includes?: boolean | undefined; flatMap?: boolean | undefined; flat?: boolean | undefined; at?: boolean | undefined; findLast?: boolean | undefined; findLastIndex?: boolean | undefined; toReversed?: boolean | undefined; toSorted?: boolean | undefined; toSpliced?: boolean | undefined; with?: boolean | undefined; [Symbol.iterator]?: boolean | undefined; readonly [Symbol.unscopables]?: boolean | undefined; } } | string & {}",
1868
- "displayType": "undefined | null | number | false | true | Node | { length: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; }; pop: () => JSX.Element; push: (...items: JSX.Element[]) => number; concat: { (...items: ConcatArray<JSX.Element>[]): JSX.Element[]; (...items: (JSX.Element | ConcatArray<JSX.Element>)[]): JSX.Element[]; }; join: (separator?: string) => string; reverse: () => JSX.Element[]; shift: () => JSX.Element; slice: (start?: number, end?: number) => JSX.Element[]; sort: (compareFn?: ((a: JSX.Element, b: JSX.Element) => number) | undefined) => JSX.ArrayElement; splice: { (start: number, deleteCount?: number): JSX.Element[]; (start: number, deleteCount: number, ...items: JSX.Element[]): JSX.Element[]; }; unshift: (...items: JSX.Element[]) => number; indexOf: (searchElement: JSX.Element, fromIndex?: number) => number; lastIndexOf: (searchElement: JSX.Element, fromIndex?: number) => number; every: { <S extends JSX.Element>(predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: JSX.Element, index: number, array: JSX.Element[]) => void, thisArg?: any) => void; map: <U>(callbackfn: (value: JSX.Element, index: number, array: JSX.Element[]) => U, thisArg?: any) => U[]; filter: { <S extends JSX.Element>(predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => value is S, thisArg?: any): S[]; (predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => unknown, thisArg?: any): JSX.Element[]; }; reduce: { (callbackfn: (previousValue: JSX.Element, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => JSX.Element): JSX.Element; (callbackfn: (previousValue: JSX.Element, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => JSX.Element, initialValue: JSX.Element): JSX.Element; <U>(callbackfn: (previousValue: U, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => U, initialValue: U): U; }; reduceRight: { (callbackfn: (previousValue: JSX.Element, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => JSX.Element): JSX.Element; (callbackfn: (previousValue: JSX.Element, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => JSX.Element, initialValue: JSX.Element): JSX.Element; <U>(callbackfn: (previousValue: U, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => U, initialValue: U): U; }; find: { <S extends JSX.Element>(predicate: (value: JSX.Element, index: number, obj: JSX.Element[]) => value is S, thisArg?: any): S | undefined; (predicate: (value: JSX.Element, index: number, obj: JSX.Element[]) => unknown, thisArg?: any): JSX.Element; }; findIndex: (predicate: (value: JSX.Element, index: number, obj: JSX.Element[]) => unknown, thisArg?: any) => number; fill: (value: JSX.Element, start?: number, end?: number) => JSX.ArrayElement; copyWithin: (target: number, start: number, end?: number) => JSX.ArrayElement; entries: () => ArrayIterator<[number, JSX.Element]>; keys: () => ArrayIterator<number>; values: () => ArrayIterator<JSX.Element>; includes: (searchElement: JSX.Element, fromIndex?: number) => boolean; flatMap: <U, This = undefined>(callback: (this: This, value: JSX.Element, index: number, array: JSX.Element[]) => U | readonly U[], thisArg?: This | undefined) => U[]; flat: <A, D extends number = 1>(this: A, depth?: D | undefined) => FlatArray<A, D>[]; at: (index: number) => JSX.Element; findLast: { <S extends JSX.Element>(predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => value is S, thisArg?: any): S | undefined; (predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => unknown, thisArg?: any): JSX.Element; }; findLastIndex: (predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => unknown, thisArg?: any) => number; toReversed: () => JSX.Element[]; toSorted: (compareFn?: ((a: JSX.Element, b: JSX.Element) => number) | undefined) => JSX.Element[]; toSpliced: { (start: number, deleteCount: number, ...items: JSX.Element[]): JSX.Element[]; (start: number, deleteCount?: number): JSX.Element[]; }; with: (index: number, value: JSX.Element) => JSX.Element[]; __@iterator@12772: () => ArrayIterator<JSX.Element>; __@unscopables@12774: { [x: number]: boolean | undefined; length?: boolean | undefined; toString?: boolean | undefined; toLocaleString?: boolean | undefined; pop?: boolean | undefined; push?: boolean | undefined; concat?: boolean | undefined; join?: boolean | undefined; reverse?: boolean | undefined; shift?: boolean | undefined; slice?: boolean | undefined; sort?: boolean | undefined; splice?: boolean | undefined; unshift?: boolean | undefined; indexOf?: boolean | undefined; lastIndexOf?: boolean | undefined; every?: boolean | undefined; some?: boolean | undefined; forEach?: boolean | undefined; map?: boolean | undefined; filter?: boolean | undefined; reduce?: boolean | undefined; reduceRight?: boolean | undefined; find?: boolean | undefined; findIndex?: boolean | undefined; fill?: boolean | undefined; copyWithin?: boolean | undefined; entries?: boolean | undefined; keys?: boolean | undefined; values?: boolean | undefined; includes?: boolean | undefined; flatMap?: boolean | undefined; flat?: boolean | undefined; at?: boolean | undefined; findLast?: boolean | undefined; findLastIndex?: boolean | undefined; toReversed?: boolean | undefined; toSorted?: boolean | undefined; toSpliced?: boolean | undefined; with?: boolean | undefined; [Symbol.iterator]?: boolean | undefined; readonly [Symbol.unscopables]?: boolean | undefined; } } | string & {}",
1869
- "description": "Optional leading icon shown before the title."
1870
- },
1871
- {
1872
- "name": "onFeedback",
1873
- "type": "undefined | (value: FeedbackValue) => void",
1874
- "displayType": "undefined | (value: FeedbackValue) => void",
1875
- "description": "Fired immediately when a rating button is clicked (the vote is recorded even if the user never fills in the detail form)."
1876
- },
1877
- {
1878
- "name": "onSubmitDetail",
1879
- "type": "undefined | (detail: FeedbackDetail) => void",
1880
- "displayType": "undefined | (detail: FeedbackDetail) => void",
1881
- "description": "Fired when the optional detail form is submitted."
1882
- },
1883
- {
1884
- "name": "onClose",
1885
- "type": "undefined | () => void",
1886
- "displayType": "undefined | () => void",
1887
- "description": "Fired when the bar is dismissed via the close (X) button."
1888
- }
1889
- ],
1890
- "slots": [],
1891
- "tokens": [],
1892
- "extendsHtmlAttributes": false,
1893
- "description": "An inline thumbs up/down feedback bar that owns its own flow: it asks, then (optionally, on a not-helpful vote) collects a category + comment, then confirms with a thank-you — all in place, the way ChatGPT/Claude do it. The vote fires `onFeedback` immediately; the optional detail fires `onSubmitDetail`; `onClose` dismisses the bar."
1894
- },
1895
- {
1896
- "name": "FileTree",
1897
- "group": "Components",
1898
- "sourceFile": "src/components/file-tree.tsx",
1899
- "props": [
1900
- {
1901
- "name": "files",
1902
- "type": "{ path: string; url?: undefined | string; code?: undefined | string; language?: undefined | string; type?: undefined | \"html\" | \"pdf\" | \"image\" | \"other\"; additions?: undefined | number; deletions?: undefined | number; status?: undefined | \"added\" | \"modified\" | \"deleted\" | \"renamed\" | \"untracked\" }[]",
1903
- "displayType": "{ path: string; url?: undefined | string; code?: undefined | string; language?: undefined | string; type?: undefined | \"html\" | \"pdf\" | \"image\" | \"other\"; additions?: undefined | number; deletions?: undefined | number; status?: undefined | \"added\" | \"modified\" | \"deleted\" | \"renamed\" | \"untracked\" }[]",
1904
- "optional": false,
1905
- "scalar": false,
1906
- "description": "Flat file list; folders are derived from `/`-delimited paths."
1907
- },
1908
- {
1909
- "name": "activeFile",
1910
- "type": "undefined | string",
1911
- "displayType": "undefined | string",
1912
- "optional": true,
1913
- "scalar": true,
1914
- "description": "Currently-selected file path (highlighted)."
1915
- },
1916
- {
1917
- "name": "defaultExpanded",
1918
- "type": "undefined | string[]",
1919
- "displayType": "undefined | string[]",
1920
- "optional": true,
1921
- "scalar": false,
1922
- "description": "Folder paths expanded by default. When omitted, all folders start open.",
1923
- "default": "[]"
1924
- },
1925
- {
1926
- "name": "summary",
1927
- "type": "undefined | false | true",
1928
- "displayType": "undefined | false | true",
1929
- "optional": true,
1930
- "scalar": true,
1931
- "description": "Show a summary header above the tree: the changed-file count, the summed `+additions / -deletions`, and a Collapse-all/Expand-all toggle wired to the folder-expand state. Off by default (no header — unchanged behavior)."
1932
- }
1933
- ],
1934
- "callbacks": [
1935
- {
1936
- "name": "onSelect",
1937
- "type": "undefined | (path: string, file: FileTreeFile) => void",
1938
- "displayType": "undefined | (path: string, file: FileTreeFile) => void",
1939
- "description": "Called with a file's path when the user selects it."
1940
- }
1941
- ],
1942
- "slots": [],
1943
- "tokens": [],
1944
- "extendsHtmlAttributes": true,
1945
- "description": "`FileTree` — a collapsible, keyboard-navigable file explorer built from a flat list of `/`-delimited paths. ARIA `tree`/`treeitem`/`group`. Selecting a file calls `onSelect(path, file)`."
1946
- },
1947
- {
1948
- "name": "FileUpload",
1949
- "group": "Components",
1950
- "sourceFile": "src/components/file-upload.tsx",
1951
- "props": [
1952
- {
1953
- "name": "multiple",
1954
- "type": "undefined | false | true",
1955
- "displayType": "undefined | false | true",
1956
- "optional": true,
1957
- "scalar": true,
1958
- "description": "",
1959
- "default": "true"
1960
- },
1961
- {
1962
- "name": "accept",
1963
- "type": "undefined | string",
1964
- "displayType": "undefined | string",
1965
- "optional": true,
1966
- "scalar": true,
1967
- "description": ""
1968
- },
1969
- {
1970
- "name": "disabled",
1971
- "type": "undefined | false | true",
1972
- "displayType": "undefined | false | true",
1973
- "optional": true,
1974
- "scalar": true,
1975
- "description": ""
1976
- }
1977
- ],
1978
- "callbacks": [
1979
- {
1980
- "name": "onFilesAdded",
1981
- "type": "(files: File[]) => void",
1982
- "displayType": "(files: File[]) => void",
1983
- "description": ""
1984
- }
1985
- ],
1986
- "slots": [
1987
- {
1988
- "name": "children",
1989
- "description": ""
1990
- }
1991
- ],
1992
- "tokens": [],
1993
- "extendsHtmlAttributes": false,
1994
- "description": ""
1995
- },
1996
- {
1997
- "name": "FileUploadContent",
1998
- "group": "Components",
1999
- "sourceFile": "src/components/file-upload.tsx",
2000
- "props": [],
2001
- "callbacks": [],
2002
- "slots": [],
2003
- "tokens": [],
2004
- "extendsHtmlAttributes": true,
2005
- "description": ""
2006
- },
2007
- {
2008
- "name": "FileUploadTrigger",
2009
- "group": "Components",
2010
- "sourceFile": "src/components/file-upload.tsx",
2011
- "props": [],
2012
- "callbacks": [],
2013
- "slots": [
2014
- {
2015
- "name": "children",
2016
- "description": ""
2017
- }
2018
- ],
2019
- "tokens": [],
2020
- "extendsHtmlAttributes": true,
2021
- "description": ""
2022
- },
2023
- {
2024
- "name": "Form",
2025
- "group": "Components",
2026
- "sourceFile": "src/components/form.tsx",
2027
- "props": [
2028
- {
2029
- "name": "data",
2030
- "type": "undefined | { type: \"object\"; title?: undefined | string; description?: undefined | string; required?: undefined | string[]; properties: Record<string, { type: \"string\" | \"number\" | \"boolean\" | \"object\" | \"integer\" | \"array\"; title?: undefined | string; description?: undefined | string; default?: unknown; enum?: undefined | unknown[]; format?: undefined | \"email\" | \"uri\" | \"url\" | \"date\" | \"date-time\" | \"time\"; minimum?: undefined | number; maximum?: undefined | number; minLength?: undefined | number; maxLength?: undefined | number; pattern?: undefined | string; minItems?: undefined | number; maxItems?: undefined | number; items?: undefined | Record<string, unknown> | { enum: unknown[] }; properties?: undefined | Record<string, Record<string, unknown>>; required?: undefined | string[]; readOnly?: undefined | false | true; x-kai-widget?: undefined | \"textarea\" | \"slider\" | \"rating\" | \"radio\" | \"select\" | \"checkbox\" | \"password\" | \"switch\"; x-kai-placeholder?: undefined | string; x-kai-step?: undefined | number }>; x-kai-order?: undefined | string[]; x-kai-inlineMax?: undefined | number; x-kai-submitLabel?: undefined | string; x-kai-dismissible?: undefined | false | true; x-kai-actions?: undefined | { id: string; label: string; variant?: undefined | \"default\" | \"ghost\" | \"outline\" }[] }",
2031
- "displayType": "undefined | { type: \"object\"; title?: undefined | string; description?: undefined | string; required?: undefined | string[]; properties: Record<string, { type: \"string\" | \"number\" | \"boolean\" | \"object\" | \"integer\" | \"array\"; title?: undefined | string; description?: undefined | string; default?: unknown; enum?: undefined | unknown[]; format?: undefined | \"email\" | \"uri\" | \"url\" | \"date\" | \"date-time\" | \"time\"; minimum?: undefined | number; maximum?: undefined | number; minLength?: undefined | number; maxLength?: undefined | number; pattern?: undefined | string; minItems?: undefined | number; maxItems?: undefined | number; items?: undefined | Record<string, unknown> | { enum: unknown[] }; properties?: undefined | Record<string, Record<string, unknown>>; required?: undefined | string[]; readOnly?: undefined | false | true; x-kai-widget?: undefined | \"textarea\" | \"slider\" | \"rating\" | \"radio\" | \"select\" | \"checkbox\" | \"password\" | \"switch\"; x-kai-placeholder?: undefined | string; x-kai-step?: undefined | number }>; x-kai-order?: undefined | string[]; x-kai-inlineMax?: undefined | number; x-kai-submitLabel?: undefined | string; x-kai-dismissible?: undefined | false | true; x-kai-actions?: undefined | { id: string; label: string; variant?: undefined | \"default\" | \"ghost\" | \"outline\" }[] }",
2032
- "optional": true,
2033
- "scalar": false,
2034
- "description": "The form definition (CardEnvelope.data)."
2035
- },
2036
- {
2037
- "name": "cardId",
2038
- "type": "undefined | string",
2039
- "displayType": "undefined | string",
2040
- "optional": true,
2041
- "scalar": true,
2042
- "description": "The card id used to correlate every emitted CardEvent."
2043
- },
2044
- {
2045
- "name": "heading",
2046
- "type": "undefined | string",
2047
- "displayType": "undefined | string",
2048
- "optional": true,
2049
- "scalar": true,
2050
- "description": "The envelope title rendered in the card chrome."
2051
- },
2052
- {
2053
- "name": "hostElement",
2054
- "type": "undefined | HTMLElement",
2055
- "displayType": "undefined | HTMLElement",
2056
- "optional": true,
2057
- "scalar": false,
2058
- "description": "The custom-element host node, for the bubbling `kai-card` fallback emit."
2059
- },
2060
- {
2061
- "name": "resolution",
2062
- "type": "undefined | { kind: \"action\"; action: string; payload?: unknown; at?: undefined | string } | { kind: \"submit\"; data: unknown; at?: undefined | string } | { kind: \"dismissed\"; at?: undefined | string } | { kind: \"expired\"; reason?: undefined | string; at?: undefined | string }",
2063
- "displayType": "undefined | { kind: \"action\"; action: string; payload?: unknown; at?: undefined | string } | { kind: \"submit\"; data: unknown; at?: undefined | string } | { kind: \"dismissed\"; at?: undefined | string } | { kind: \"expired\"; reason?: undefined | string; at?: undefined | string }",
2064
- "optional": true,
2065
- "scalar": false,
2066
- "description": "When set, render the chromed read-only view instead of the form inputs."
2067
- },
2068
- {
2069
- "name": "values",
2070
- "type": "undefined | Record<string, unknown>",
2071
- "displayType": "undefined | Record<string, unknown>",
2072
- "optional": true,
2073
- "scalar": false,
2074
- "description": "Controlled field values — when set, this wins over internal/uncontrolled state."
2075
- },
2076
- {
2077
- "name": "defaultValues",
2078
- "type": "undefined | Record<string, unknown>",
2079
- "displayType": "undefined | Record<string, unknown>",
2080
- "optional": true,
2081
- "scalar": false,
2082
- "description": "Initial values overlaying the schema defaults (uncontrolled seed)."
2083
- },
2084
- {
2085
- "name": "disabled",
2086
- "type": "undefined | false | true",
2087
- "displayType": "undefined | false | true",
2088
- "optional": true,
2089
- "scalar": true,
2090
- "description": "Disable all fields + submit."
2091
- }
2092
- ],
2093
- "callbacks": [
2094
- {
2095
- "name": "host",
2096
- "type": "undefined | { context: () => import(\"/home/runner/work/ui/ui/packages/ui/src/index\").CardContext; emit: (event: CardEvent) => void }",
2097
- "displayType": "undefined | { context: () => import(\"/home/runner/work/ui/ui/packages/ui/src/index\").CardContext; emit: (event: CardEvent) => void }",
2098
- "description": "Optional explicit CardHost (otherwise read from a CardProvider, otherwise the bubbling `kai-card` CustomEvent off `hostElement`)."
2099
- },
2100
- {
2101
- "name": "onValuesChange",
2102
- "type": "undefined | (payload: { values: Record<string, unknown>; valid: boolean; }) => void",
2103
- "displayType": "undefined | (payload: { values: Record<string, unknown>; valid: boolean; }) => void",
2104
- "description": "Fires on input with the current coerced values + validity (distinct from submit)."
2105
- },
2106
- {
2107
- "name": "controllerRef",
2108
- "type": "undefined | (controller: FormController) => void",
2109
- "displayType": "undefined | (controller: FormController) => void",
2110
- "description": "Receive the imperative controller once mounted."
2111
- }
2112
- ],
2113
- "slots": [],
2114
- "tokens": [],
2115
- "extendsHtmlAttributes": false,
2116
- "description": "`Form` — renders a JSON-Schema form definition into themed, accessible widgets inside `Card` chrome, validates input against that schema, and emits the collected, coerced, validated object up the Card contract as `submit`. Reads context/emits via a `CardProvider` when present, else the bubbling `kai-card` CustomEvent."
2117
- },
2118
- {
2119
- "name": "Image",
2120
- "group": "Components",
2121
- "sourceFile": "src/components/image.tsx",
2122
- "props": [
2123
- {
2124
- "name": "alt",
2125
- "type": "string",
2126
- "displayType": "string",
2127
- "optional": false,
2128
- "scalar": true,
2129
- "description": ""
2130
- },
2131
- {
2132
- "name": "base64",
2133
- "type": "undefined | string",
2134
- "displayType": "undefined | string",
2135
- "optional": true,
2136
- "scalar": true,
2137
- "description": ""
2138
- },
2139
- {
2140
- "name": "uint8Array",
2141
- "type": "undefined | Uint8Array<ArrayBufferLike>",
2142
- "displayType": "undefined | Uint8Array<ArrayBufferLike>",
2143
- "optional": true,
2144
- "scalar": false,
2145
- "description": ""
2146
- },
2147
- {
2148
- "name": "mediaType",
2149
- "type": "undefined | string",
2150
- "displayType": "undefined | string",
2151
- "optional": true,
2152
- "scalar": true,
2153
- "description": "",
2154
- "default": "'image/png'"
2155
- }
2156
- ],
2157
- "callbacks": [],
2158
- "slots": [],
2159
- "tokens": [],
2160
- "extendsHtmlAttributes": false,
2161
- "description": ""
2162
- },
2163
- {
2164
- "name": "LinkPreview",
2165
- "group": "Components",
2166
- "sourceFile": "src/components/link-preview.tsx",
2167
- "props": [
2168
- {
2169
- "name": "cardId",
2170
- "type": "string",
2171
- "displayType": "string",
2172
- "optional": false,
2173
- "scalar": true,
2174
- "description": "The card id correlating every emitted event."
2175
- },
2176
- {
2177
- "name": "data",
2178
- "type": "{ url: string; title?: undefined | string; description?: undefined | string; image?: undefined | string; imageAlt?: undefined | string; favicon?: undefined | string; domain?: undefined | string; siteName?: undefined | string }",
2179
- "displayType": "{ url: string; title?: undefined | string; description?: undefined | string; image?: undefined | string; imageAlt?: undefined | string; favicon?: undefined | string; domain?: undefined | string; siteName?: undefined | string }",
2180
- "optional": false,
2181
- "scalar": false,
2182
- "description": "The link payload (data-down)."
2183
- }
2184
- ],
2185
- "callbacks": [
2186
- {
2187
- "name": "onEmit",
2188
- "type": "undefined | (event: CardEvent) => void",
2189
- "displayType": "undefined | (event: CardEvent) => void",
2190
- "description": "Emit a contract CardEvent up (host routes it)."
2191
- }
2192
- ],
2193
- "slots": [],
2194
- "tokens": [],
2195
- "extendsHtmlAttributes": false,
2196
- "description": "`LinkPreview` — a pure, themed, accessible rich link / OG preview. Renders from the supplied metadata; it never fetches the network itself. When the payload is a bare `{ url }` and an app has registered a `configureLinkPreview` fetcher, it shows a skeleton, calls the hook, merges the result, and renders. Activating the card (click / Enter / Space) emits the contract `open` verb (`target:'tab'`); the host policy performs the navigation so it can veto/redirect."
2197
- },
2198
- {
2199
- "name": "Loader",
2200
- "group": "Components",
2201
- "sourceFile": "src/components/loader.tsx",
2202
- "props": [
2203
- {
2204
- "name": "variant",
2205
- "type": "undefined | \"circular\" | \"classic\" | \"pulse\" | \"pulse-dot\" | \"dots\" | \"typing\" | \"wave\" | \"bars\" | \"terminal\" | \"text-blink\" | \"text-shimmer\" | \"loading-dots\"",
2206
- "displayType": "LoaderVariant | undefined",
2207
- "optional": true,
2208
- "scalar": true,
2209
- "description": ""
2210
- },
2211
- {
2212
- "name": "size",
2213
- "type": "undefined | \"sm\" | \"md\" | \"lg\"",
2214
- "displayType": "undefined | \"sm\" | \"md\" | \"lg\"",
2215
- "optional": true,
2216
- "scalar": true,
2217
- "description": ""
2218
- },
2219
- {
2220
- "name": "text",
2221
- "type": "undefined | string",
2222
- "displayType": "undefined | string",
2223
- "optional": true,
2224
- "scalar": true,
2225
- "description": ""
2226
- }
2227
- ],
2228
- "callbacks": [],
2229
- "slots": [],
2230
- "tokens": [],
2231
- "extendsHtmlAttributes": false,
2232
- "description": ""
2233
- },
2234
- {
2235
- "name": "Markdown",
2236
- "group": "Components",
2237
- "sourceFile": "src/components/markdown.tsx",
2238
- "props": [
2239
- {
2240
- "name": "content",
2241
- "type": "string",
2242
- "displayType": "string",
2243
- "optional": false,
2244
- "scalar": true,
2245
- "description": ""
2246
- },
2247
- {
2248
- "name": "id",
2249
- "type": "undefined | string",
2250
- "displayType": "undefined | string",
2251
- "optional": true,
2252
- "scalar": true,
2253
- "description": ""
2254
- },
2255
- {
2256
- "name": "codeTheme",
2257
- "type": "undefined | string",
2258
- "displayType": "undefined | string",
2259
- "optional": true,
2260
- "scalar": true,
2261
- "description": ""
2262
- },
2263
- {
2264
- "name": "part",
2265
- "type": "undefined | string",
2266
- "displayType": "undefined | string",
2267
- "optional": true,
2268
- "scalar": true,
2269
- "description": "Optional `::part` name(s) to expose on the rendered root. Lets callers (e.g. the message bubble) surface a styleable part through the shadow."
2270
- }
2271
- ],
2272
- "callbacks": [],
2273
- "slots": [],
2274
- "tokens": [],
2275
- "extendsHtmlAttributes": false,
2276
- "description": ""
2277
- },
2278
- {
2279
- "name": "Message",
2280
- "group": "Components",
2281
- "sourceFile": "src/components/message.tsx",
2282
- "props": [],
2283
- "callbacks": [],
2284
- "slots": [
2285
- {
2286
- "name": "children",
2287
- "description": ""
2288
- }
2289
- ],
2290
- "tokens": [],
2291
- "extendsHtmlAttributes": true,
2292
- "description": ""
2293
- },
2294
- {
2295
- "name": "MessageAction",
2296
- "group": "Components",
2297
- "sourceFile": "src/components/message.tsx",
2298
- "props": [
2299
- {
2300
- "name": "tooltip",
2301
- "type": "string",
2302
- "displayType": "string",
2303
- "optional": false,
2304
- "scalar": true,
2305
- "description": ""
2306
- },
2307
- {
2308
- "name": "side",
2309
- "type": "undefined | \"top\" | \"right\" | \"bottom\" | \"left\"",
2310
- "displayType": "undefined | \"top\" | \"right\" | \"bottom\" | \"left\"",
2311
- "optional": true,
2312
- "scalar": true,
2313
- "description": ""
2314
- }
2315
- ],
2316
- "callbacks": [],
2317
- "slots": [
2318
- {
2319
- "name": "children",
2320
- "description": ""
2321
- }
2322
- ],
2323
- "tokens": [],
2324
- "extendsHtmlAttributes": false,
2325
- "description": ""
2326
- },
2327
- {
2328
- "name": "MessageActions",
2329
- "group": "Components",
2330
- "sourceFile": "src/components/message.tsx",
2331
- "props": [],
2332
- "callbacks": [],
2333
- "slots": [
2334
- {
2335
- "name": "children",
2336
- "description": ""
2337
- }
2338
- ],
2339
- "tokens": [],
2340
- "extendsHtmlAttributes": true,
2341
- "description": ""
2342
- },
2343
- {
2344
- "name": "MessageAvatar",
2345
- "group": "Components",
2346
- "sourceFile": "src/components/message.tsx",
2347
- "props": [
2348
- {
2349
- "name": "src",
2350
- "type": "string",
2351
- "displayType": "string",
2352
- "optional": false,
2353
- "scalar": true,
2354
- "description": ""
2355
- },
2356
- {
2357
- "name": "alt",
2358
- "type": "string",
2359
- "displayType": "string",
2360
- "optional": false,
2361
- "scalar": true,
2362
- "description": ""
2363
- },
2364
- {
2365
- "name": "fallback",
2366
- "type": "undefined | string",
2367
- "displayType": "undefined | string",
2368
- "optional": true,
2369
- "scalar": true,
2370
- "description": ""
2371
- }
2372
- ],
2373
- "callbacks": [],
2374
- "slots": [],
2375
- "tokens": [],
2376
- "extendsHtmlAttributes": false,
2377
- "description": ""
2378
- },
2379
- {
2380
- "name": "MessageContent",
2381
- "group": "Components",
2382
- "sourceFile": "src/components/message.tsx",
2383
- "props": [
2384
- {
2385
- "name": "markdown",
2386
- "type": "undefined | false | true",
2387
- "displayType": "undefined | false | true",
2388
- "optional": true,
2389
- "scalar": true,
2390
- "description": ""
2391
- },
2392
- {
2393
- "name": "part",
2394
- "type": "undefined | string",
2395
- "displayType": "undefined | string",
2396
- "optional": true,
2397
- "scalar": true,
2398
- "description": "`::part` name(s) exposed on the content node. The body passes `\"bubble content\"` so consumers can target either the rounded bubble or the text region from outside the shadow boundary."
2399
- }
2400
- ],
2401
- "callbacks": [],
2402
- "slots": [
2403
- {
2404
- "name": "children",
2405
- "description": ""
2406
- }
2407
- ],
2408
- "tokens": [],
2409
- "extendsHtmlAttributes": true,
2410
- "description": ""
2411
- },
2412
- {
2413
- "name": "MessageCopyButton",
2414
- "group": "Components",
2415
- "sourceFile": "src/components/message.tsx",
2416
- "props": [
2417
- {
2418
- "name": "content",
2419
- "type": "string",
2420
- "displayType": "string",
2421
- "optional": false,
2422
- "scalar": true,
2423
- "description": ""
2424
- },
2425
- {
2426
- "name": "size",
2427
- "type": "undefined | number",
2428
- "displayType": "undefined | number",
2429
- "optional": true,
2430
- "scalar": true,
2431
- "description": "",
2432
- "default": "14"
2433
- }
2434
- ],
2435
- "callbacks": [],
2436
- "slots": [],
2437
- "tokens": [],
2438
- "extendsHtmlAttributes": false,
2439
- "description": ""
2440
- },
2441
- {
2442
- "name": "MessageSkills",
2443
- "group": "Components",
2444
- "sourceFile": "src/components/message-skills.tsx",
2445
- "props": [
2446
- {
2447
- "name": "skills",
2448
- "type": "{ id: string; name: string }[]",
2449
- "displayType": "{ id: string; name: string }[]",
2450
- "optional": false,
2451
- "scalar": false,
2452
- "description": ""
2453
- }
2454
- ],
2455
- "callbacks": [],
2456
- "slots": [],
2457
- "tokens": [],
2458
- "extendsHtmlAttributes": false,
2459
- "description": "Displays skill badges above a message to indicate which skills were active when the message was generated."
2460
- },
2461
- {
2462
- "name": "ModelSwitcher",
2463
- "group": "Components",
2464
- "sourceFile": "src/components/model-switcher.tsx",
2465
- "props": [
2466
- {
2467
- "name": "models",
2468
- "type": "{ id: string; name: string; provider?: undefined | string; description?: undefined | string; group?: undefined | string }[]",
2469
- "displayType": "{ id: string; name: string; provider?: undefined | string; description?: undefined | string; group?: undefined | string }[]",
2470
- "optional": false,
2471
- "scalar": false,
2472
- "description": ""
2473
- },
2474
- {
2475
- "name": "currentModelId",
2476
- "type": "string",
2477
- "displayType": "string",
2478
- "optional": false,
2479
- "scalar": true,
2480
- "description": ""
2481
- },
2482
- {
2483
- "name": "defaultOpen",
2484
- "type": "undefined | false | true",
2485
- "displayType": "undefined | false | true",
2486
- "optional": true,
2487
- "scalar": true,
2488
- "description": "Initial open state of the dropdown (uncontrolled seed)."
2489
- },
2490
- {
2491
- "name": "disabled",
2492
- "type": "undefined | false | true",
2493
- "displayType": "undefined | false | true",
2494
- "optional": true,
2495
- "scalar": true,
2496
- "description": "Disable the trigger — click/keyboard no longer open the dropdown."
2497
- }
2498
- ],
2499
- "callbacks": [
2500
- {
2501
- "name": "onModelChange",
2502
- "type": "(modelId: string) => void",
2503
- "displayType": "(modelId: string) => void",
2504
- "description": ""
2505
- },
2506
- {
2507
- "name": "controllerRef",
2508
- "type": "undefined | (api: DropdownController) => void",
2509
- "displayType": "undefined | (api: DropdownController) => void",
2510
- "description": "Receive the dropdown's open controller (forwarded from the inner Dropdown)."
2511
- }
2512
- ],
2513
- "slots": [],
2514
- "tokens": [],
2515
- "extendsHtmlAttributes": false,
2516
- "description": ""
2517
- },
2518
- {
2519
- "name": "PromptInput",
2520
- "group": "Components",
2521
- "sourceFile": "src/components/prompt-input.tsx",
2522
- "props": [
2523
- {
2524
- "name": "isLoading",
2525
- "type": "undefined | false | true",
2526
- "displayType": "undefined | false | true",
2527
- "optional": true,
2528
- "scalar": true,
2529
- "description": "",
2530
- "default": "false"
2531
- },
2532
- {
2533
- "name": "value",
2534
- "type": "undefined | string | ({ type: \"text\"; text: string } | { type: \"entity\"; entity: { kind: string; id: string; label: string; icon?: undefined | string; promptText?: undefined | string; data?: undefined | Record<string, unknown> } })[]",
2535
- "displayType": "undefined | string | ({ type: \"text\"; text: string } | { type: \"entity\"; entity: { kind: string; id: string; label: string; icon?: undefined | string; promptText?: undefined | string; data?: undefined | Record<string, unknown> } })[]",
2536
- "optional": true,
2537
- "scalar": false,
2538
- "description": "String = controlled text; ComposerDoc = a seed that pre-populates pills.",
2539
- "default": "''"
2540
- },
2541
- {
2542
- "name": "maxHeight",
2543
- "type": "undefined | string | number",
2544
- "displayType": "undefined | string | number",
2545
- "optional": true,
2546
- "scalar": true,
2547
- "description": "",
2548
- "default": "240"
2549
- },
2550
- {
2551
- "name": "disabled",
2552
- "type": "undefined | false | true",
2553
- "displayType": "undefined | false | true",
2554
- "optional": true,
2555
- "scalar": true,
2556
- "description": ""
2557
- }
2558
- ],
2559
- "callbacks": [
2560
- {
2561
- "name": "onValueChange",
2562
- "type": "undefined | (value: string) => void",
2563
- "displayType": "undefined | (value: string) => void",
2564
- "description": ""
2565
- },
2566
- {
2567
- "name": "onSubmit",
2568
- "type": "undefined | () => void",
2569
- "displayType": "undefined | () => void",
2570
- "description": ""
2571
- }
2572
- ],
2573
- "slots": [
2574
- {
2575
- "name": "children",
2576
- "description": ""
2577
- }
2578
- ],
2579
- "tokens": [],
2580
- "extendsHtmlAttributes": true,
2581
- "description": ""
2582
- },
2583
- {
2584
- "name": "PromptInputAction",
2585
- "group": "Components",
2586
- "sourceFile": "src/components/prompt-input.tsx",
2587
- "props": [
2588
- {
2589
- "name": "tooltip",
2590
- "type": "undefined | string",
2591
- "displayType": "undefined | string",
2592
- "optional": true,
2593
- "scalar": true,
2594
- "description": ""
2595
- },
2596
- {
2597
- "name": "side",
2598
- "type": "undefined | \"top\" | \"right\" | \"bottom\" | \"left\"",
2599
- "displayType": "undefined | \"top\" | \"right\" | \"bottom\" | \"left\"",
2600
- "optional": true,
2601
- "scalar": true,
2602
- "description": ""
2603
- }
2604
- ],
2605
- "callbacks": [],
2606
- "slots": [
2607
- {
2608
- "name": "children",
2609
- "description": ""
2610
- }
2611
- ],
2612
- "tokens": [],
2613
- "extendsHtmlAttributes": false,
2614
- "description": ""
2615
- },
2616
- {
2617
- "name": "PromptInputActions",
2618
- "group": "Components",
2619
- "sourceFile": "src/components/prompt-input.tsx",
2620
- "props": [],
2621
- "callbacks": [],
2622
- "slots": [
2623
- {
2624
- "name": "children",
2625
- "description": ""
2626
- }
2627
- ],
2628
- "tokens": [],
2629
- "extendsHtmlAttributes": true,
2630
- "description": ""
2631
- },
2632
- {
2633
- "name": "PromptInputTextarea",
2634
- "group": "Components",
2635
- "sourceFile": "src/components/prompt-input.tsx",
2636
- "props": [
2637
- {
2638
- "name": "disableAutosize",
2639
- "type": "undefined | false | true",
2640
- "displayType": "undefined | false | true",
2641
- "optional": true,
2642
- "scalar": true,
2643
- "description": ""
2644
- },
2645
- {
2646
- "name": "triggers",
2647
- "type": "undefined | { char: string; kind: string; items?: undefined | { id: string; label: string; icon?: undefined | string; description?: undefined | string; group?: undefined | string; kind?: undefined | string; promptText?: undefined | string; data?: undefined | Record<string, unknown> }[] }[]",
2648
- "displayType": "undefined | { char: string; kind: string; items?: undefined | { id: string; label: string; icon?: undefined | string; description?: undefined | string; group?: undefined | string; kind?: undefined | string; promptText?: undefined | string; data?: undefined | Record<string, unknown> }[] }[]",
2649
- "optional": true,
2650
- "scalar": false,
2651
- "description": "Rich entity triggers (`/`, `@`) forwarded to the composer."
2652
- },
2653
- {
2654
- "name": "kindIcons",
2655
- "type": "undefined | Record<string, string>",
2656
- "displayType": "undefined | Record<string, string>",
2657
- "optional": true,
2658
- "scalar": false,
2659
- "description": "Default icon per entity kind (kind → image src), forwarded to the composer."
2660
- }
2661
- ],
2662
- "callbacks": [
2663
- {
2664
- "name": "onComposerChange",
2665
- "type": "undefined | (change: ComposerChange) => void",
2666
- "displayType": "undefined | (change: ComposerChange) => void",
2667
- "description": "Structured change (doc + entities) from the composer, on every edit."
2668
- }
2669
- ],
2670
- "slots": [],
2671
- "tokens": [],
2672
- "extendsHtmlAttributes": true,
2673
- "description": ""
2674
- },
2675
- {
2676
- "name": "PromptSuggestion",
2677
- "group": "Components",
2678
- "sourceFile": "src/components/prompt-suggestion.tsx",
2679
- "props": [
2680
- {
2681
- "name": "variant",
2682
- "type": "undefined | \"default\" | \"ghost\" | \"outline\"",
2683
- "displayType": "undefined | \"default\" | \"ghost\" | \"outline\"",
2684
- "optional": true,
2685
- "scalar": true,
2686
- "description": "",
2687
- "default": "'outline'"
2688
- },
2689
- {
2690
- "name": "size",
2691
- "type": "undefined | \"md\" | \"lg\"",
2692
- "displayType": "undefined | \"md\" | \"lg\"",
2693
- "optional": true,
2694
- "scalar": true,
2695
- "description": "Row height for the `list` layout: `'md'` (default) or `'lg'` for taller rows (more vertical padding). Chips/block/highlight are unaffected."
2696
- },
2697
- {
2698
- "name": "icon",
2699
- "type": "undefined | string",
2700
- "displayType": "undefined | string",
2701
- "optional": true,
2702
- "scalar": true,
2703
- "description": "Optional leading icon (named icon, image URL/data-URI, or text)."
2704
- },
2705
- {
2706
- "name": "highlight",
2707
- "type": "undefined | string",
2708
- "displayType": "undefined | string",
2709
- "optional": true,
2710
- "scalar": true,
2711
- "description": ""
2712
- },
2713
- {
2714
- "name": "block",
2715
- "type": "undefined | false | true",
2716
- "displayType": "undefined | false | true",
2717
- "optional": true,
2718
- "scalar": true,
2719
- "description": "Render as a full-width, left-aligned list row (the \"suggested questions\" idiom) instead of a rounded pill. Wraps long text. Ignored in highlight mode, which is always a list row."
2720
- },
2721
- {
2722
- "name": "list",
2723
- "type": "undefined | false | true",
2724
- "displayType": "undefined | false | true",
2725
- "optional": true,
2726
- "scalar": true,
2727
- "description": "Render as a full-width \"Ideas for you\" list row: a leading icon, a left-aligned label, and a hover background. Like `block`, but keeps the leading icon. Ignored in highlight mode."
2728
- }
2729
- ],
2730
- "callbacks": [],
2731
- "slots": [
2732
- {
2733
- "name": "children",
2734
- "description": ""
2735
- }
2736
- ],
2737
- "tokens": [],
2738
- "extendsHtmlAttributes": true,
2739
- "description": ""
2740
- },
2741
- {
2742
- "name": "PulseDotLoader",
2743
- "group": "Components",
2744
- "sourceFile": "src/components/loader.tsx",
2745
- "props": [
2746
- {
2747
- "name": "size",
2748
- "type": "undefined | \"sm\" | \"md\" | \"lg\"",
2749
- "displayType": "undefined | \"sm\" | \"md\" | \"lg\"",
2750
- "optional": true,
2751
- "scalar": true,
2752
- "description": "",
2753
- "default": "'md'"
2754
- }
2755
- ],
2756
- "callbacks": [],
2757
- "slots": [],
2758
- "tokens": [],
2759
- "extendsHtmlAttributes": false,
2760
- "description": ""
2761
- },
2762
- {
2763
- "name": "PulseLoader",
2764
- "group": "Components",
2765
- "sourceFile": "src/components/loader.tsx",
2766
- "props": [
2767
- {
2768
- "name": "size",
2769
- "type": "undefined | \"sm\" | \"md\" | \"lg\"",
2770
- "displayType": "undefined | \"sm\" | \"md\" | \"lg\"",
2771
- "optional": true,
2772
- "scalar": true,
2773
- "description": "",
2774
- "default": "'md'"
2775
- }
2776
- ],
2777
- "callbacks": [],
2778
- "slots": [],
2779
- "tokens": [],
2780
- "extendsHtmlAttributes": false,
2781
- "description": ""
2782
- },
2783
- {
2784
- "name": "Reasoning",
2785
- "group": "Components",
2786
- "sourceFile": "src/components/reasoning.tsx",
2787
- "props": [
2788
- {
2789
- "name": "open",
2790
- "type": "undefined | false | true",
2791
- "displayType": "undefined | false | true",
2792
- "optional": true,
2793
- "scalar": true,
2794
- "description": ""
2795
- },
2796
- {
2797
- "name": "defaultOpen",
2798
- "type": "undefined | false | true",
2799
- "displayType": "undefined | false | true",
2800
- "optional": true,
2801
- "scalar": true,
2802
- "description": "Initial open state (uncontrolled seed).",
2803
- "default": "false"
2804
- },
2805
- {
2806
- "name": "isStreaming",
2807
- "type": "undefined | false | true",
2808
- "displayType": "undefined | false | true",
2809
- "optional": true,
2810
- "scalar": true,
2811
- "description": ""
2812
- },
2813
- {
2814
- "name": "disabled",
2815
- "type": "undefined | false | true",
2816
- "displayType": "undefined | false | true",
2817
- "optional": true,
2818
- "scalar": true,
2819
- "description": "Gate the trigger — programmatic control via the controller still works."
2820
- }
2821
- ],
2822
- "callbacks": [
2823
- {
2824
- "name": "onOpenChange",
2825
- "type": "undefined | (open: boolean) => void",
2826
- "displayType": "undefined | (open: boolean) => void",
2827
- "description": ""
2828
- },
2829
- {
2830
- "name": "controllerRef",
2831
- "type": "undefined | (api: ReasoningController) => void",
2832
- "displayType": "undefined | (api: ReasoningController) => void",
2833
- "description": "Receive the open controller (open accessor + setOpen) once mounted."
2834
- }
2835
- ],
2836
- "slots": [
2837
- {
2838
- "name": "children",
2839
- "description": ""
2840
- }
2841
- ],
2842
- "tokens": [],
2843
- "extendsHtmlAttributes": false,
2844
- "description": ""
2845
- },
2846
- {
2847
- "name": "ReasoningContent",
2848
- "group": "Components",
2849
- "sourceFile": "src/components/reasoning.tsx",
2850
- "props": [
2851
- {
2852
- "name": "markdown",
2853
- "type": "undefined | false | true",
2854
- "displayType": "undefined | false | true",
2855
- "optional": true,
2856
- "scalar": true,
2857
- "description": ""
2858
- },
2859
- {
2860
- "name": "contentClass",
2861
- "type": "undefined | string",
2862
- "displayType": "undefined | string",
2863
- "optional": true,
2864
- "scalar": true,
2865
- "description": ""
2866
- }
2867
- ],
2868
- "callbacks": [],
2869
- "slots": [
2870
- {
2871
- "name": "children",
2872
- "description": ""
2873
- }
2874
- ],
2875
- "tokens": [],
2876
- "extendsHtmlAttributes": true,
2877
- "description": ""
2878
- },
2879
- {
2880
- "name": "ReasoningTrigger",
2881
- "group": "Components",
2882
- "sourceFile": "src/components/reasoning.tsx",
2883
- "props": [],
2884
- "callbacks": [],
2885
- "slots": [
2886
- {
2887
- "name": "children",
2888
- "description": ""
2889
- }
2890
- ],
2891
- "tokens": [],
2892
- "extendsHtmlAttributes": true,
2893
- "description": ""
2894
- },
2895
- {
2896
- "name": "ResponseCompare",
2897
- "group": "Components",
2898
- "sourceFile": "src/components/response-compare.tsx",
2899
- "props": [
2900
- {
2901
- "name": "compareId",
2902
- "type": "undefined | string",
2903
- "displayType": "undefined | string",
2904
- "optional": true,
2905
- "scalar": true,
2906
- "description": "Stable id correlating every emitted event."
2907
- },
2908
- {
2909
- "name": "selection",
2910
- "type": "undefined | { chosenId: string; rejectedIds: string[]; at?: undefined | number }",
2911
- "displayType": "undefined | { chosenId: string; rejectedIds: string[]; at?: undefined | number }",
2912
- "optional": true,
2913
- "scalar": false,
2914
- "description": "Re-hydrate / control the selection. Renders the collapsed winner. Set as a JS property: `el.selection = { chosenId, rejectedIds }`."
2915
- },
2916
- {
2917
- "name": "layout",
2918
- "type": "undefined | \"auto\" | \"columns\" | \"tabs\"",
2919
- "displayType": "undefined | \"auto\" | \"columns\" | \"tabs\"",
2920
- "optional": true,
2921
- "scalar": true,
2922
- "description": "Layout. `'columns'` = side-by-side; `'tabs'` = one candidate at a time with pills to switch; `'auto'` (default) uses a CONTAINER query — columns when the component is ≥640px wide, tabs when narrower (e.g. on a phone)."
2923
- }
2924
- ],
2925
- "callbacks": [
2926
- {
2927
- "name": "data",
2928
- "type": "undefined | { prompt?: undefined | string; candidates: { 0: { id: string; content: string; reasoning?: undefined | { text: string; label?: undefined | string }; tools?: undefined | { type: string; state: \"input-streaming\" | \"input-available\" | \"output-available\" | \"output-error\"; input?: undefined | Record<string, unknown>; output?: undefined | Record<string, unknown>; toolCallId?: undefined | string; errorText?: undefined | string }[]; attachments?: undefined | { id: string; type: \"file\" | \"source-document\"; filename?: undefined | string; mediaType?: undefined | string; url?: undefined | string; title?: undefined | string }[]; label?: undefined | string; model?: undefined | string; streaming?: undefined | false | true }; 1: { id: string; content: string; reasoning?: undefined | { text: string; label?: undefined | string }; tools?: undefined | { type: string; state: \"input-streaming\" | \"input-available\" | \"output-available\" | \"output-error\"; input?: undefined | Record<string, unknown>; output?: undefined | Record<string, unknown>; toolCallId?: undefined | string; errorText?: undefined | string }[]; attachments?: undefined | { id: string; type: \"file\" | \"source-document\"; filename?: undefined | string; mediaType?: undefined | string; url?: undefined | string; title?: undefined | string }[]; label?: undefined | string; model?: undefined | string; streaming?: undefined | false | true }; length: 2; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; }; pop: () => CompareCandidate | undefined; push: (...items: CompareCandidate[]) => number; concat: { (...items: ConcatArray<CompareCandidate>[]): CompareCandidate[]; (...items: (CompareCandidate | ConcatArray<CompareCandidate>)[]): CompareCandidate[]; }; join: (separator?: string) => string; reverse: () => CompareCandidate[]; shift: () => CompareCandidate | undefined; slice: (start?: number, end?: number) => CompareCandidate[]; sort: (compareFn?: ((a: CompareCandidate, b: CompareCandidate) => number) | undefined) => ComparePair; splice: { (start: number, deleteCount?: number): CompareCandidate[]; (start: number, deleteCount: number, ...items: CompareCandidate[]): CompareCandidate[]; }; unshift: (...items: CompareCandidate[]) => number; indexOf: (searchElement: CompareCandidate, fromIndex?: number) => number; lastIndexOf: (searchElement: CompareCandidate, fromIndex?: number) => number; every: { <S extends CompareCandidate>(predicate: (value: CompareCandidate, index: number, array: CompareCandidate[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: CompareCandidate, index: number, array: CompareCandidate[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: CompareCandidate, index: number, array: CompareCandidate[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: CompareCandidate, index: number, array: CompareCandidate[]) => void, thisArg?: any) => void; map: <U>(callbackfn: (value: CompareCandidate, index: number, array: CompareCandidate[]) => U, thisArg?: any) => U[]; filter: { <S extends CompareCandidate>(predicate: (value: CompareCandidate, index: number, array: CompareCandidate[]) => value is S, thisArg?: any): S[]; (predicate: (value: CompareCandidate, index: number, array: CompareCandidate[]) => unknown, thisArg?: any): CompareCandidate[]; }; reduce: { (callbackfn: (previousValue: CompareCandidate, currentValue: CompareCandidate, currentIndex: number, array: CompareCandidate[]) => CompareCandidate): CompareCandidate; (callbackfn: (previousValue: CompareCandidate, currentValue: CompareCandidate, currentIndex: number, array: CompareCandidate[]) => CompareCandidate, initialValue: CompareCandidate): CompareCandidate; <U>(callbackfn: (previousValue: U, currentValue: CompareCandidate, currentIndex: number, array: CompareCandidate[]) => U, initialValue: U): U; }; reduceRight: { (callbackfn: (previousValue: CompareCandidate, currentValue: CompareCandidate, currentIndex: number, array: CompareCandidate[]) => CompareCandidate): CompareCandidate; (callbackfn: (previousValue: CompareCandidate, currentValue: CompareCandidate, currentIndex: number, array: CompareCandidate[]) => CompareCandidate, initialValue: CompareCandidate): CompareCandidate; <U>(callbackfn: (previousValue: U, currentValue: CompareCandidate, currentIndex: number, array: CompareCandidate[]) => U, initialValue: U): U; }; find: { <S extends CompareCandidate>(predicate: (value: CompareCandidate, index: number, obj: CompareCandidate[]) => value is S, thisArg?: any): S | undefined; (predicate: (value: CompareCandidate, index: number, obj: CompareCandidate[]) => unknown, thisArg?: any): CompareCandidate | undefined; }; findIndex: (predicate: (value: CompareCandidate, index: number, obj: CompareCandidate[]) => unknown, thisArg?: any) => number; fill: (value: CompareCandidate, start?: number, end?: number) => ComparePair; copyWithin: (target: number, start: number, end?: number) => ComparePair; entries: () => ArrayIterator<[number, CompareCandidate]>; keys: () => ArrayIterator<number>; values: () => ArrayIterator<CompareCandidate>; includes: (searchElement: CompareCandidate, fromIndex?: number) => boolean; flatMap: <U, This = undefined>(callback: (this: This, value: CompareCandidate, index: number, array: CompareCandidate[]) => U | readonly U[], thisArg?: This | undefined) => U[]; flat: <A, D extends number = 1>(this: A, depth?: D | undefined) => FlatArray<A, D>[]; at: (index: number) => CompareCandidate | undefined; findLast: { <S extends CompareCandidate>(predicate: (value: CompareCandidate, index: number, array: CompareCandidate[]) => value is S, thisArg?: any): S | undefined; (predicate: (value: CompareCandidate, index: number, array: CompareCandidate[]) => unknown, thisArg?: any): CompareCandidate | undefined; }; findLastIndex: (predicate: (value: CompareCandidate, index: number, array: CompareCandidate[]) => unknown, thisArg?: any) => number; toReversed: () => CompareCandidate[]; toSorted: (compareFn?: ((a: CompareCandidate, b: CompareCandidate) => number) | undefined) => CompareCandidate[]; toSpliced: { (start: number, deleteCount: number, ...items: CompareCandidate[]): CompareCandidate[]; (start: number, deleteCount?: number): CompareCandidate[]; }; with: (index: number, value: CompareCandidate) => CompareCandidate[]; __@iterator@12772: () => ArrayIterator<CompareCandidate>; __@unscopables@12774: { [x: number]: boolean | undefined; length?: boolean | undefined; toString?: boolean | undefined; toLocaleString?: boolean | undefined; pop?: boolean | undefined; push?: boolean | undefined; concat?: boolean | undefined; join?: boolean | undefined; reverse?: boolean | undefined; shift?: boolean | undefined; slice?: boolean | undefined; sort?: boolean | undefined; splice?: boolean | undefined; unshift?: boolean | undefined; indexOf?: boolean | undefined; lastIndexOf?: boolean | undefined; every?: boolean | undefined; some?: boolean | undefined; forEach?: boolean | undefined; map?: boolean | undefined; filter?: boolean | undefined; reduce?: boolean | undefined; reduceRight?: boolean | undefined; find?: boolean | undefined; findIndex?: boolean | undefined; fill?: boolean | undefined; copyWithin?: boolean | undefined; entries?: boolean | undefined; keys?: boolean | undefined; values?: boolean | undefined; includes?: boolean | undefined; flatMap?: boolean | undefined; flat?: boolean | undefined; at?: boolean | undefined; findLast?: boolean | undefined; findLastIndex?: boolean | undefined; toReversed?: boolean | undefined; toSorted?: boolean | undefined; toSpliced?: boolean | undefined; with?: boolean | undefined; [Symbol.iterator]?: boolean | undefined; readonly [Symbol.unscopables]?: boolean | undefined; } }; collapse?: undefined | \"none\" | \"winner\" }",
2929
- "displayType": "undefined | { prompt?: undefined | string; candidates: { 0: { id: string; content: string; reasoning?: undefined | { text: string; label?: undefined | string }; tools?: undefined | { type: string; state: \"input-streaming\" | \"input-available\" | \"output-available\" | \"output-error\"; input?: undefined | Record<string, unknown>; output?: undefined | Record<string, unknown>; toolCallId?: undefined | string; errorText?: undefined | string }[]; attachments?: undefined | { id: string; type: \"file\" | \"source-document\"; filename?: undefined | string; mediaType?: undefined | string; url?: undefined | string; title?: undefined | string }[]; label?: undefined | string; model?: undefined | string; streaming?: undefined | false | true }; 1: { id: string; content: string; reasoning?: undefined | { text: string; label?: undefined | string }; tools?: undefined | { type: string; state: \"input-streaming\" | \"input-available\" | \"output-available\" | \"output-error\"; input?: undefined | Record<string, unknown>; output?: undefined | Record<string, unknown>; toolCallId?: undefined | string; errorText?: undefined | string }[]; attachments?: undefined | { id: string; type: \"file\" | \"source-document\"; filename?: undefined | string; mediaType?: undefined | string; url?: undefined | string; title?: undefined | string }[]; label?: undefined | string; model?: undefined | string; streaming?: undefined | false | true }; length: 2; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; }; pop: () => CompareCandidate | undefined; push: (...items: CompareCandidate[]) => number; concat: { (...items: ConcatArray<CompareCandidate>[]): CompareCandidate[]; (...items: (CompareCandidate | ConcatArray<CompareCandidate>)[]): CompareCandidate[]; }; join: (separator?: string) => string; reverse: () => CompareCandidate[]; shift: () => CompareCandidate | undefined; slice: (start?: number, end?: number) => CompareCandidate[]; sort: (compareFn?: ((a: CompareCandidate, b: CompareCandidate) => number) | undefined) => ComparePair; splice: { (start: number, deleteCount?: number): CompareCandidate[]; (start: number, deleteCount: number, ...items: CompareCandidate[]): CompareCandidate[]; }; unshift: (...items: CompareCandidate[]) => number; indexOf: (searchElement: CompareCandidate, fromIndex?: number) => number; lastIndexOf: (searchElement: CompareCandidate, fromIndex?: number) => number; every: { <S extends CompareCandidate>(predicate: (value: CompareCandidate, index: number, array: CompareCandidate[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: CompareCandidate, index: number, array: CompareCandidate[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: CompareCandidate, index: number, array: CompareCandidate[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: CompareCandidate, index: number, array: CompareCandidate[]) => void, thisArg?: any) => void; map: <U>(callbackfn: (value: CompareCandidate, index: number, array: CompareCandidate[]) => U, thisArg?: any) => U[]; filter: { <S extends CompareCandidate>(predicate: (value: CompareCandidate, index: number, array: CompareCandidate[]) => value is S, thisArg?: any): S[]; (predicate: (value: CompareCandidate, index: number, array: CompareCandidate[]) => unknown, thisArg?: any): CompareCandidate[]; }; reduce: { (callbackfn: (previousValue: CompareCandidate, currentValue: CompareCandidate, currentIndex: number, array: CompareCandidate[]) => CompareCandidate): CompareCandidate; (callbackfn: (previousValue: CompareCandidate, currentValue: CompareCandidate, currentIndex: number, array: CompareCandidate[]) => CompareCandidate, initialValue: CompareCandidate): CompareCandidate; <U>(callbackfn: (previousValue: U, currentValue: CompareCandidate, currentIndex: number, array: CompareCandidate[]) => U, initialValue: U): U; }; reduceRight: { (callbackfn: (previousValue: CompareCandidate, currentValue: CompareCandidate, currentIndex: number, array: CompareCandidate[]) => CompareCandidate): CompareCandidate; (callbackfn: (previousValue: CompareCandidate, currentValue: CompareCandidate, currentIndex: number, array: CompareCandidate[]) => CompareCandidate, initialValue: CompareCandidate): CompareCandidate; <U>(callbackfn: (previousValue: U, currentValue: CompareCandidate, currentIndex: number, array: CompareCandidate[]) => U, initialValue: U): U; }; find: { <S extends CompareCandidate>(predicate: (value: CompareCandidate, index: number, obj: CompareCandidate[]) => value is S, thisArg?: any): S | undefined; (predicate: (value: CompareCandidate, index: number, obj: CompareCandidate[]) => unknown, thisArg?: any): CompareCandidate | undefined; }; findIndex: (predicate: (value: CompareCandidate, index: number, obj: CompareCandidate[]) => unknown, thisArg?: any) => number; fill: (value: CompareCandidate, start?: number, end?: number) => ComparePair; copyWithin: (target: number, start: number, end?: number) => ComparePair; entries: () => ArrayIterator<[number, CompareCandidate]>; keys: () => ArrayIterator<number>; values: () => ArrayIterator<CompareCandidate>; includes: (searchElement: CompareCandidate, fromIndex?: number) => boolean; flatMap: <U, This = undefined>(callback: (this: This, value: CompareCandidate, index: number, array: CompareCandidate[]) => U | readonly U[], thisArg?: This | undefined) => U[]; flat: <A, D extends number = 1>(this: A, depth?: D | undefined) => FlatArray<A, D>[]; at: (index: number) => CompareCandidate | undefined; findLast: { <S extends CompareCandidate>(predicate: (value: CompareCandidate, index: number, array: CompareCandidate[]) => value is S, thisArg?: any): S | undefined; (predicate: (value: CompareCandidate, index: number, array: CompareCandidate[]) => unknown, thisArg?: any): CompareCandidate | undefined; }; findLastIndex: (predicate: (value: CompareCandidate, index: number, array: CompareCandidate[]) => unknown, thisArg?: any) => number; toReversed: () => CompareCandidate[]; toSorted: (compareFn?: ((a: CompareCandidate, b: CompareCandidate) => number) | undefined) => CompareCandidate[]; toSpliced: { (start: number, deleteCount: number, ...items: CompareCandidate[]): CompareCandidate[]; (start: number, deleteCount?: number): CompareCandidate[]; }; with: (index: number, value: CompareCandidate) => CompareCandidate[]; __@iterator@12772: () => ArrayIterator<CompareCandidate>; __@unscopables@12774: { [x: number]: boolean | undefined; length?: boolean | undefined; toString?: boolean | undefined; toLocaleString?: boolean | undefined; pop?: boolean | undefined; push?: boolean | undefined; concat?: boolean | undefined; join?: boolean | undefined; reverse?: boolean | undefined; shift?: boolean | undefined; slice?: boolean | undefined; sort?: boolean | undefined; splice?: boolean | undefined; unshift?: boolean | undefined; indexOf?: boolean | undefined; lastIndexOf?: boolean | undefined; every?: boolean | undefined; some?: boolean | undefined; forEach?: boolean | undefined; map?: boolean | undefined; filter?: boolean | undefined; reduce?: boolean | undefined; reduceRight?: boolean | undefined; find?: boolean | undefined; findIndex?: boolean | undefined; fill?: boolean | undefined; copyWithin?: boolean | undefined; entries?: boolean | undefined; keys?: boolean | undefined; values?: boolean | undefined; includes?: boolean | undefined; flatMap?: boolean | undefined; flat?: boolean | undefined; at?: boolean | undefined; findLast?: boolean | undefined; findLastIndex?: boolean | undefined; toReversed?: boolean | undefined; toSorted?: boolean | undefined; toSpliced?: boolean | undefined; with?: boolean | undefined; [Symbol.iterator]?: boolean | undefined; readonly [Symbol.unscopables]?: boolean | undefined; } }; collapse?: undefined | \"none\" | \"winner\" }",
2930
- "description": "The compare definition (prompt + the two candidates)."
2931
- },
2932
- {
2933
- "name": "controllerRef",
2934
- "type": "undefined | (controller: ResponseCompareController) => void",
2935
- "displayType": "undefined | (controller: ResponseCompareController) => void",
2936
- "description": "Receive the imperative controller once mounted. The `<kai-compare>` facade forwards these as element methods (select/focus)."
2937
- },
2938
- {
2939
- "name": "onSelect",
2940
- "type": "undefined | (sel: CompareSelection) => void",
2941
- "displayType": "undefined | (sel: CompareSelection) => void",
2942
- "description": "Fired when the user commits a pick."
2943
- },
2944
- {
2945
- "name": "onReady",
2946
- "type": "undefined | () => void",
2947
- "displayType": "undefined | () => void",
2948
- "description": "Fired once both candidates have settled (stopped streaming) and a valid definition is shown."
2949
- },
2950
- {
2951
- "name": "onError",
2952
- "type": "undefined | (message: string) => void",
2953
- "displayType": "undefined | (message: string) => void",
2954
- "description": "Fired for an unusable definition (inline error state)."
2955
- }
2956
- ],
2957
- "slots": [],
2958
- "tokens": [],
2959
- "extendsHtmlAttributes": false,
2960
- "description": "`ResponseCompare` — a dual-response comparison. Two assistant candidates for the same prompt render side-by-side (or as tabs), each via `MessageBody` so a candidate reads exactly like an assistant message (reasoning + tools + attachments + markdown). The pick is a COMMIT, not a Submit: clicking \"Pick this\" (or Enter on the focused column) computes `{ chosenId, rejectedIds:[other], at }`, optimistically collapses to the chosen candidate's body, and calls `onSelect` for the consumer to send a `(prompt, chosen, rejected)` preference pair. Single-shot. While EITHER candidate is `streaming`, both pick controls are disabled and the streaming column shows a `TextShimmer`; `onReady` fires once both settle. The two columns are a WAI-ARIA radiogroup with roving tabindex (Arrow keys move A↔B, Enter/Space picks). Emits `onError` for a malformed definition."
2961
- },
2962
- {
2963
- "name": "ResponseStream",
2964
- "group": "Components",
2965
- "sourceFile": "src/components/response-stream.tsx",
2966
- "props": [
2967
- {
2968
- "name": "textStream",
2969
- "type": "string | AsyncIterable<string>",
2970
- "displayType": "string | AsyncIterable<string>",
2971
- "optional": false,
2972
- "scalar": false,
2973
- "description": ""
2974
- },
2975
- {
2976
- "name": "mode",
2977
- "type": "undefined | \"typewriter\" | \"fade\"",
2978
- "displayType": "undefined | \"typewriter\" | \"fade\"",
2979
- "optional": true,
2980
- "scalar": true,
2981
- "description": "",
2982
- "default": "'typewriter'"
2983
- },
2984
- {
2985
- "name": "speed",
2986
- "type": "undefined | number",
2987
- "displayType": "undefined | number",
2988
- "optional": true,
2989
- "scalar": true,
2990
- "description": "",
2991
- "default": "20"
2992
- },
2993
- {
2994
- "name": "as",
2995
- "type": "undefined | string",
2996
- "displayType": "undefined | string",
2997
- "optional": true,
2998
- "scalar": true,
2999
- "description": ""
3000
- },
3001
- {
3002
- "name": "fadeDuration",
3003
- "type": "undefined | number",
3004
- "displayType": "undefined | number",
3005
- "optional": true,
3006
- "scalar": true,
3007
- "description": ""
3008
- },
3009
- {
3010
- "name": "segmentDelay",
3011
- "type": "undefined | number",
3012
- "displayType": "undefined | number",
3013
- "optional": true,
3014
- "scalar": true,
3015
- "description": ""
3016
- },
3017
- {
3018
- "name": "characterChunkSize",
3019
- "type": "undefined | number",
3020
- "displayType": "undefined | number",
3021
- "optional": true,
3022
- "scalar": true,
3023
- "description": ""
3024
- }
3025
- ],
3026
- "callbacks": [
3027
- {
3028
- "name": "onComplete",
3029
- "type": "undefined | () => void",
3030
- "displayType": "undefined | () => void",
3031
- "description": ""
3032
- }
3033
- ],
3034
- "slots": [],
3035
- "tokens": [],
3036
- "extendsHtmlAttributes": false,
3037
- "description": ""
3038
- },
3039
- {
3040
- "name": "ScrollButton",
3041
- "group": "Components",
3042
- "sourceFile": "src/components/scroll-button.tsx",
3043
- "props": [
3044
- {
3045
- "name": "variant",
3046
- "type": "undefined | \"default\" | \"ghost\" | \"outline\"",
3047
- "displayType": "undefined | \"default\" | \"ghost\" | \"outline\"",
3048
- "optional": true,
3049
- "scalar": true,
3050
- "description": "",
3051
- "default": "'outline'"
3052
- },
3053
- {
3054
- "name": "size",
3055
- "type": "undefined | \"sm\" | \"md\" | \"lg\" | \"icon\" | \"icon-sm\"",
3056
- "displayType": "undefined | \"sm\" | \"md\" | \"lg\" | \"icon\" | \"icon-sm\"",
3057
- "optional": true,
3058
- "scalar": true,
3059
- "description": "",
3060
- "default": "'sm'"
3061
- }
3062
- ],
3063
- "callbacks": [],
3064
- "slots": [],
3065
- "tokens": [],
3066
- "extendsHtmlAttributes": false,
3067
- "description": ""
3068
- },
3069
- {
3070
- "name": "Source",
3071
- "group": "Components",
3072
- "sourceFile": "src/components/source.tsx",
3073
- "props": [
3074
- {
3075
- "name": "href",
3076
- "type": "string",
3077
- "displayType": "string",
3078
- "optional": false,
3079
- "scalar": true,
3080
- "description": ""
3081
- }
3082
- ],
3083
- "callbacks": [],
3084
- "slots": [
3085
- {
3086
- "name": "children",
3087
- "description": ""
3088
- }
3089
- ],
3090
- "tokens": [],
3091
- "extendsHtmlAttributes": false,
3092
- "description": ""
3093
- },
3094
- {
3095
- "name": "SourceContent",
3096
- "group": "Components",
3097
- "sourceFile": "src/components/source.tsx",
3098
- "props": [
3099
- {
3100
- "name": "title",
3101
- "type": "string",
3102
- "displayType": "string",
3103
- "optional": false,
3104
- "scalar": true,
3105
- "description": ""
3106
- },
3107
- {
3108
- "name": "description",
3109
- "type": "string",
3110
- "displayType": "string",
3111
- "optional": false,
3112
- "scalar": true,
3113
- "description": ""
3114
- }
3115
- ],
3116
- "callbacks": [],
3117
- "slots": [],
3118
- "tokens": [],
3119
- "extendsHtmlAttributes": false,
3120
- "description": ""
3121
- },
3122
- {
3123
- "name": "SourceList",
3124
- "group": "Components",
3125
- "sourceFile": "src/components/source.tsx",
3126
- "props": [],
3127
- "callbacks": [],
3128
- "slots": [
3129
- {
3130
- "name": "children",
3131
- "description": ""
3132
- }
3133
- ],
3134
- "tokens": [],
3135
- "extendsHtmlAttributes": false,
3136
- "description": ""
3137
- },
3138
- {
3139
- "name": "SourceTrigger",
3140
- "group": "Components",
3141
- "sourceFile": "src/components/source.tsx",
3142
- "props": [
3143
- {
3144
- "name": "label",
3145
- "type": "undefined | string | number",
3146
- "displayType": "undefined | string | number",
3147
- "optional": true,
3148
- "scalar": true,
3149
- "description": ""
3150
- },
3151
- {
3152
- "name": "showFavicon",
3153
- "type": "undefined | false | true",
3154
- "displayType": "undefined | false | true",
3155
- "optional": true,
3156
- "scalar": true,
3157
- "description": ""
3158
- }
3159
- ],
3160
- "callbacks": [],
3161
- "slots": [],
3162
- "tokens": [],
3163
- "extendsHtmlAttributes": false,
3164
- "description": ""
3165
- },
3166
- {
3167
- "name": "TasksCard",
3168
- "group": "Components",
3169
- "sourceFile": "src/components/tasks-card.tsx",
3170
- "props": [
3171
- {
3172
- "name": "data",
3173
- "type": "undefined | { mode?: undefined | \"select\" | \"progress\"; heading?: undefined | string; tasks: { id: string; label: string; description?: undefined | string; checked?: undefined | false | true; disabled?: undefined | false | true }[]; selectAll?: undefined | false | true; confirmLabel?: undefined | string; allowEmpty?: undefined | false | true; min?: undefined | number; max?: undefined | number; dismissible?: undefined | false | true }",
3174
- "displayType": "undefined | { mode?: undefined | \"select\" | \"progress\"; heading?: undefined | string; tasks: { id: string; label: string; description?: undefined | string; checked?: undefined | false | true; disabled?: undefined | false | true }[]; selectAll?: undefined | false | true; confirmLabel?: undefined | string; allowEmpty?: undefined | false | true; min?: undefined | number; max?: undefined | number; dismissible?: undefined | false | true }",
3175
- "optional": true,
3176
- "scalar": false,
3177
- "description": "The tasks definition (CardEnvelope.data)."
3178
- },
3179
- {
3180
- "name": "cardId",
3181
- "type": "undefined | string",
3182
- "displayType": "undefined | string",
3183
- "optional": true,
3184
- "scalar": true,
3185
- "description": "The card id used to correlate every emitted CardEvent."
3186
- },
3187
- {
3188
- "name": "heading",
3189
- "type": "undefined | string",
3190
- "displayType": "undefined | string",
3191
- "optional": true,
3192
- "scalar": true,
3193
- "description": "The envelope title rendered in the card chrome."
3194
- },
3195
- {
3196
- "name": "hostElement",
3197
- "type": "undefined | HTMLElement",
3198
- "displayType": "undefined | HTMLElement",
3199
- "optional": true,
3200
- "scalar": false,
3201
- "description": "The custom-element host node, for the bubbling `kai-card` fallback emit."
3202
- },
3203
- {
3204
- "name": "resolution",
3205
- "type": "undefined | { kind: \"action\"; action: string; payload?: unknown; at?: undefined | string } | { kind: \"submit\"; data: unknown; at?: undefined | string } | { kind: \"dismissed\"; at?: undefined | string } | { kind: \"expired\"; reason?: undefined | string; at?: undefined | string }",
3206
- "displayType": "undefined | { kind: \"action\"; action: string; payload?: unknown; at?: undefined | string } | { kind: \"submit\"; data: unknown; at?: undefined | string } | { kind: \"dismissed\"; at?: undefined | string } | { kind: \"expired\"; reason?: undefined | string; at?: undefined | string }",
3207
- "optional": true,
3208
- "scalar": false,
3209
- "description": "When set, render the chromed read-only summary instead of the interactive controls."
3210
- },
3211
- {
3212
- "name": "value",
3213
- "type": "undefined | string[]",
3214
- "displayType": "undefined | string[]",
3215
- "optional": true,
3216
- "scalar": false,
3217
- "description": "Controlled selection (task ids) — when set, this wins over internal state."
3218
- },
3219
- {
3220
- "name": "defaultValue",
3221
- "type": "undefined | string[]",
3222
- "displayType": "undefined | string[]",
3223
- "optional": true,
3224
- "scalar": false,
3225
- "description": "Uncontrolled initial selection (task ids), overlaying per-task `checked`."
3226
- },
3227
- {
3228
- "name": "disabled",
3229
- "type": "undefined | false | true",
3230
- "displayType": "undefined | false | true",
3231
- "optional": true,
3232
- "scalar": true,
3233
- "description": "Freeze the whole list + Confirm."
3234
- },
3235
- {
3236
- "name": "readonly",
3237
- "type": "undefined | false | true",
3238
- "displayType": "undefined | false | true",
3239
- "optional": true,
3240
- "scalar": true,
3241
- "description": "Display-only: rows can't be toggled and show the default cursor (no pointer, no hover background, no focus ring). Keeps the visual content as-is — this only drops the interactive affordances + a11y exposure."
3242
- }
3243
- ],
3244
- "callbacks": [
3245
- {
3246
- "name": "host",
3247
- "type": "undefined | { context: () => import(\"/home/runner/work/ui/ui/packages/ui/src/index\").CardContext; emit: (event: CardEvent) => void }",
3248
- "displayType": "undefined | { context: () => import(\"/home/runner/work/ui/ui/packages/ui/src/index\").CardContext; emit: (event: CardEvent) => void }",
3249
- "description": "Optional explicit CardHost (otherwise read from a CardProvider, otherwise the bubbling `kai-card` CustomEvent off `hostElement`)."
3250
- },
3251
- {
3252
- "name": "onValueChange",
3253
- "type": "undefined | (payload: { value: string[]; }) => void",
3254
- "displayType": "undefined | (payload: { value: string[]; }) => void",
3255
- "description": "Fires on every selection change with the selected ids (distinct from submit)."
3256
- },
3257
- {
3258
- "name": "controllerRef",
3259
- "type": "undefined | (controller: TasksCardController) => void",
3260
- "displayType": "undefined | (controller: TasksCardController) => void",
3261
- "description": "Receive the imperative controller once mounted."
3262
- }
3263
- ],
3264
- "slots": [],
3265
- "tokens": [],
3266
- "extendsHtmlAttributes": false,
3267
- "description": "`TasksCard` — a selectable task/plan list (checkbox rows + optional select-all + a confirm button) inside `Card` chrome. Row toggling and select-all are local UI state; only the final confirm emits the Card contract's `submit` verb (`{ kind:'submit', cardId, data:{ selected } }`) with the checked ids in input order. Emits `ready` on mount and `error` for an unusable definition."
3268
- },
3269
- {
3270
- "name": "TerminalLoader",
3271
- "group": "Components",
3272
- "sourceFile": "src/components/loader.tsx",
3273
- "props": [
3274
- {
3275
- "name": "size",
3276
- "type": "undefined | \"sm\" | \"md\" | \"lg\"",
3277
- "displayType": "undefined | \"sm\" | \"md\" | \"lg\"",
3278
- "optional": true,
3279
- "scalar": true,
3280
- "description": "",
3281
- "default": "'md'"
3282
- }
3283
- ],
3284
- "callbacks": [],
3285
- "slots": [],
3286
- "tokens": [],
3287
- "extendsHtmlAttributes": false,
3288
- "description": ""
3289
- },
3290
- {
3291
- "name": "TextBlinkLoader",
3292
- "group": "Components",
3293
- "sourceFile": "src/components/loader.tsx",
3294
- "props": [
3295
- {
3296
- "name": "text",
3297
- "type": "undefined | string",
3298
- "displayType": "undefined | string",
3299
- "optional": true,
3300
- "scalar": true,
3301
- "description": "",
3302
- "default": "'Thinking'"
3303
- },
3304
- {
3305
- "name": "size",
3306
- "type": "undefined | \"sm\" | \"md\" | \"lg\"",
3307
- "displayType": "undefined | \"sm\" | \"md\" | \"lg\"",
3308
- "optional": true,
3309
- "scalar": true,
3310
- "description": "",
3311
- "default": "'md'"
3312
- }
3313
- ],
3314
- "callbacks": [],
3315
- "slots": [],
3316
- "tokens": [],
3317
- "extendsHtmlAttributes": false,
3318
- "description": ""
3319
- },
3320
- {
3321
- "name": "TextDotsLoader",
3322
- "group": "Components",
3323
- "sourceFile": "src/components/loader.tsx",
3324
- "props": [
3325
- {
3326
- "name": "text",
3327
- "type": "undefined | string",
3328
- "displayType": "undefined | string",
3329
- "optional": true,
3330
- "scalar": true,
3331
- "description": "",
3332
- "default": "'Thinking'"
3333
- },
3334
- {
3335
- "name": "size",
3336
- "type": "undefined | \"sm\" | \"md\" | \"lg\"",
3337
- "displayType": "undefined | \"sm\" | \"md\" | \"lg\"",
3338
- "optional": true,
3339
- "scalar": true,
3340
- "description": "",
3341
- "default": "'md'"
3342
- }
3343
- ],
3344
- "callbacks": [],
3345
- "slots": [],
3346
- "tokens": [],
3347
- "extendsHtmlAttributes": false,
3348
- "description": ""
3349
- },
3350
- {
3351
- "name": "TextShimmer",
3352
- "group": "Components",
3353
- "sourceFile": "src/components/text-shimmer.tsx",
3354
- "props": [
3355
- {
3356
- "name": "as",
3357
- "type": "undefined | string",
3358
- "displayType": "undefined | string",
3359
- "optional": true,
3360
- "scalar": true,
3361
- "description": "",
3362
- "default": "'span'"
3363
- },
3364
- {
3365
- "name": "duration",
3366
- "type": "undefined | number",
3367
- "displayType": "undefined | number",
3368
- "optional": true,
3369
- "scalar": true,
3370
- "description": "",
3371
- "default": "4"
3372
- },
3373
- {
3374
- "name": "spread",
3375
- "type": "undefined | number",
3376
- "displayType": "undefined | number",
3377
- "optional": true,
3378
- "scalar": true,
3379
- "description": "",
3380
- "default": "20"
3381
- }
3382
- ],
3383
- "callbacks": [],
3384
- "slots": [
3385
- {
3386
- "name": "children",
3387
- "description": ""
3388
- }
3389
- ],
3390
- "tokens": [],
3391
- "extendsHtmlAttributes": true,
3392
- "description": ""
3393
- },
3394
- {
3395
- "name": "TextShimmerLoader",
3396
- "group": "Components",
3397
- "sourceFile": "src/components/loader.tsx",
3398
- "props": [
3399
- {
3400
- "name": "text",
3401
- "type": "undefined | string",
3402
- "displayType": "undefined | string",
3403
- "optional": true,
3404
- "scalar": true,
3405
- "description": "",
3406
- "default": "'Thinking'"
3407
- },
3408
- {
3409
- "name": "size",
3410
- "type": "undefined | \"sm\" | \"md\" | \"lg\"",
3411
- "displayType": "undefined | \"sm\" | \"md\" | \"lg\"",
3412
- "optional": true,
3413
- "scalar": true,
3414
- "description": "",
3415
- "default": "'md'"
3416
- }
3417
- ],
3418
- "callbacks": [],
3419
- "slots": [],
3420
- "tokens": [],
3421
- "extendsHtmlAttributes": false,
3422
- "description": ""
3423
- },
3424
- {
3425
- "name": "ThinkingBar",
3426
- "group": "Components",
3427
- "sourceFile": "src/components/thinking-bar.tsx",
3428
- "props": [
3429
- {
3430
- "name": "text",
3431
- "type": "undefined | string",
3432
- "displayType": "undefined | string",
3433
- "optional": true,
3434
- "scalar": true,
3435
- "description": "",
3436
- "default": "'Thinking'"
3437
- },
3438
- {
3439
- "name": "stopLabel",
3440
- "type": "undefined | string",
3441
- "displayType": "undefined | string",
3442
- "optional": true,
3443
- "scalar": true,
3444
- "description": "",
3445
- "default": "'Answer now'"
3446
- }
3447
- ],
3448
- "callbacks": [
3449
- {
3450
- "name": "onStop",
3451
- "type": "undefined | () => void",
3452
- "displayType": "undefined | () => void",
3453
- "description": ""
3454
- },
3455
- {
3456
- "name": "onClick",
3457
- "type": "undefined | () => void",
3458
- "displayType": "undefined | () => void",
3459
- "description": ""
3460
- }
3461
- ],
3462
- "slots": [],
3463
- "tokens": [],
3464
- "extendsHtmlAttributes": false,
3465
- "description": ""
3466
- },
3467
- {
3468
- "name": "Toast",
3469
- "group": "Components",
3470
- "sourceFile": "src/components/toast.tsx",
3471
- "props": [
3472
- {
3473
- "name": "item",
3474
- "type": "{ id: string; message: string; variant?: undefined | \"neutral\" | \"success\" | \"warning\" | \"error\" | \"info\"; appearance?: undefined | \"pill\" | \"card\"; inverse?: undefined | false | true; description?: undefined | string; action?: undefined | { label: string; onAction: () => void | false }; duration?: undefined | number; dismissible?: undefined | false | true; target?: undefined | HTMLElement }",
3475
- "displayType": "{ id: string; message: string; variant?: undefined | \"neutral\" | \"success\" | \"warning\" | \"error\" | \"info\"; appearance?: undefined | \"pill\" | \"card\"; inverse?: undefined | false | true; description?: undefined | string; action?: undefined | { label: string; onAction: () => void | false }; duration?: undefined | number; dismissible?: undefined | false | true; target?: undefined | HTMLElement }",
3476
- "optional": false,
3477
- "scalar": false,
3478
- "description": ""
3479
- },
3480
- {
3481
- "name": "paused",
3482
- "type": "undefined | false | true",
3483
- "displayType": "undefined | false | true",
3484
- "optional": true,
3485
- "scalar": true,
3486
- "description": "Hold the auto-dismiss timer (the region sets this true while the whole stack is hovered/expanded, so peers don't dismiss out from under the cursor)."
3487
- },
3488
- {
3489
- "name": "appearance",
3490
- "type": "undefined | \"pill\" | \"card\"",
3491
- "displayType": "undefined | \"pill\" | \"card\"",
3492
- "optional": true,
3493
- "scalar": true,
3494
- "description": "Region-level default appearance, used when the item doesn't set its own.",
3495
- "default": "'pill'"
3496
- },
3497
- {
3498
- "name": "inverse",
3499
- "type": "undefined | false | true",
3500
- "displayType": "undefined | false | true",
3501
- "optional": true,
3502
- "scalar": true,
3503
- "description": "Region-level default inverse, used when the item doesn't set its own.",
3504
- "default": "false"
3505
- }
3506
- ],
3507
- "callbacks": [
3508
- {
3509
- "name": "onDismiss",
3510
- "type": "(reason: ToastDismissReason) => void",
3511
- "displayType": "(reason: ToastDismissReason) => void",
3512
- "description": ""
3513
- },
3514
- {
3515
- "name": "onAction",
3516
- "type": "undefined | (label: string) => void",
3517
- "displayType": "undefined | (label: string) => void",
3518
- "description": ""
3519
- }
3520
- ],
3521
- "slots": [],
3522
- "tokens": [],
3523
- "extendsHtmlAttributes": false,
3524
- "description": "A single toast pill. Auto-dismisses after its (action-floored) duration, holds the timer while hovered (this pill) OR while `paused` (the whole stack is hovered), and animates in/out via `createPresence`. Pure + prop-driven — the parent `ToastRegion` owns the list + queue."
3525
- },
3526
- {
3527
- "name": "ToastRegion",
3528
- "group": "Components",
3529
- "sourceFile": "src/components/toast.tsx",
3530
- "props": [
3531
- {
3532
- "name": "toasts",
3533
- "type": "{ id: string; message: string; variant?: undefined | \"neutral\" | \"success\" | \"warning\" | \"error\" | \"info\"; appearance?: undefined | \"pill\" | \"card\"; inverse?: undefined | false | true; description?: undefined | string; action?: undefined | { label: string; onAction: () => void | false }; duration?: undefined | number; dismissible?: undefined | false | true; target?: undefined | HTMLElement }[]",
3534
- "displayType": "{ id: string; message: string; variant?: undefined | \"neutral\" | \"success\" | \"warning\" | \"error\" | \"info\"; appearance?: undefined | \"pill\" | \"card\"; inverse?: undefined | false | true; description?: undefined | string; action?: undefined | { label: string; onAction: () => void | false }; duration?: undefined | number; dismissible?: undefined | false | true; target?: undefined | HTMLElement }[]",
3535
- "optional": false,
3536
- "scalar": false,
3537
- "description": "The toasts to render. Newest is shown on top. Set as a JS property on the element; mutate by passing a new array reference.",
3538
- "default": "[]"
3539
- },
3540
- {
3541
- "name": "position",
3542
- "type": "undefined | \"top-center\" | \"top-right\" | \"top-left\" | \"bottom-center\" | \"bottom-right\" | \"bottom-left\"",
3543
- "displayType": "undefined | \"top-center\" | \"top-right\" | \"top-left\" | \"bottom-center\" | \"bottom-right\" | \"bottom-left\"",
3544
- "optional": true,
3545
- "scalar": true,
3546
- "description": "Where the stack anchors. Defaults to `'top-center'`.",
3547
- "default": "'top-center'"
3548
- },
3549
- {
3550
- "name": "max",
3551
- "type": "undefined | number",
3552
- "displayType": "undefined | number",
3553
- "optional": true,
3554
- "scalar": true,
3555
- "description": "Max simultaneously-visible toasts; the rest queue and promote as slots free up. Defaults to `3`.",
3556
- "default": "3"
3557
- },
3558
- {
3559
- "name": "stack",
3560
- "type": "undefined | \"expanded\" | \"collapsed\"",
3561
- "displayType": "undefined | \"expanded\" | \"collapsed\"",
3562
- "optional": true,
3563
- "scalar": true,
3564
- "description": "Stacking: 'expanded' (default, full column) | 'collapsed' (Sonner-style pile that expands on hover/focus). Attribute: stack.",
3565
- "default": "'expanded'"
3566
- },
3567
- {
3568
- "name": "appearance",
3569
- "type": "undefined | \"pill\" | \"card\"",
3570
- "displayType": "undefined | \"pill\" | \"card\"",
3571
- "optional": true,
3572
- "scalar": true,
3573
- "description": "Region-level default appearance for toasts that don't set their own. A per-toast `appearance` always wins. Defaults to `'pill'`."
3574
- },
3575
- {
3576
- "name": "inverse",
3577
- "type": "undefined | false | true",
3578
- "displayType": "undefined | false | true",
3579
- "optional": true,
3580
- "scalar": true,
3581
- "description": "Region-level default inverse treatment for toasts that don't set their own. A per-toast `inverse` always wins. Defaults to `false`."
3582
- },
3583
- {
3584
- "name": "target",
3585
- "type": "undefined | HTMLElement",
3586
- "displayType": "undefined | HTMLElement",
3587
- "optional": true,
3588
- "scalar": false,
3589
- "description": "When set, this region renders only the toasts scoped to that element and anchors over its bounds (top-center), following it on scroll/resize. Unset = the global, viewport-anchored region."
3590
- }
3591
- ],
3592
- "callbacks": [
3593
- {
3594
- "name": "onDismiss",
3595
- "type": "undefined | (id: string, reason: ToastDismissReason) => void",
3596
- "displayType": "undefined | (id: string, reason: ToastDismissReason) => void",
3597
- "description": "Fired when a toast leaves, with the reason."
3598
- },
3599
- {
3600
- "name": "onAction",
3601
- "type": "undefined | (id: string, label: string) => void",
3602
- "displayType": "undefined | (id: string, label: string) => void",
3603
- "description": "Fired when a toast's action button is pressed."
3604
- }
3605
- ],
3606
- "slots": [],
3607
- "tokens": [],
3608
- "extendsHtmlAttributes": false,
3609
- "description": "Renders a stack of toasts at a viewport edge. Caps the visible count at `max` (newest on top); overflow waits in a queue and is promoted as visible toasts leave. `aria-live=polite` / `role=region` so screen readers announce new toasts without stealing focus."
3610
- },
3611
- {
3612
- "name": "Tool",
3613
- "group": "Components",
3614
- "sourceFile": "src/components/tool.tsx",
3615
- "props": [
3616
- {
3617
- "name": "toolPart",
3618
- "type": "{ type: string; state: \"input-streaming\" | \"input-available\" | \"output-available\" | \"output-error\"; input?: undefined | Record<string, unknown>; output?: undefined | Record<string, unknown>; toolCallId?: undefined | string; errorText?: undefined | string }",
3619
- "displayType": "{ type: string; state: \"input-streaming\" | \"input-available\" | \"output-available\" | \"output-error\"; input?: undefined | Record<string, unknown>; output?: undefined | Record<string, unknown>; toolCallId?: undefined | string; errorText?: undefined | string }",
3620
- "optional": false,
3621
- "scalar": false,
3622
- "description": ""
3623
- },
3624
- {
3625
- "name": "defaultOpen",
3626
- "type": "undefined | false | true",
3627
- "displayType": "undefined | false | true",
3628
- "optional": true,
3629
- "scalar": true,
3630
- "description": "",
3631
- "default": "false"
3632
- },
3633
- {
3634
- "name": "disabled",
3635
- "type": "undefined | false | true",
3636
- "displayType": "undefined | false | true",
3637
- "optional": true,
3638
- "scalar": true,
3639
- "description": "Gate the disclosure trigger (programmatic control still works)."
3640
- }
3641
- ],
3642
- "callbacks": [
3643
- {
3644
- "name": "controllerRef",
3645
- "type": "undefined | (api: CollapsibleController) => void",
3646
- "displayType": "undefined | (api: CollapsibleController) => void",
3647
- "description": "Receive the open controller once mounted (forwarded from the Collapsible), so a parent (the kai-tool facade) can drive/observe open state."
3648
- }
3649
- ],
3650
- "slots": [],
3651
- "tokens": [
3652
- "--color-tool-blue",
3653
- "--color-tool-amber",
3654
- "--color-tool-green",
3655
- "--color-tool-red"
3656
- ],
3657
- "extendsHtmlAttributes": false,
3658
- "description": ""
3659
- },
3660
- {
3661
- "name": "TypingLoader",
3662
- "group": "Components",
3663
- "sourceFile": "src/components/loader.tsx",
3664
- "props": [
3665
- {
3666
- "name": "size",
3667
- "type": "undefined | \"sm\" | \"md\" | \"lg\"",
3668
- "displayType": "undefined | \"sm\" | \"md\" | \"lg\"",
3669
- "optional": true,
3670
- "scalar": true,
3671
- "description": "",
3672
- "default": "'md'"
3673
- }
3674
- ],
3675
- "callbacks": [],
3676
- "slots": [],
3677
- "tokens": [],
3678
- "extendsHtmlAttributes": false,
3679
- "description": ""
3680
- },
3681
- {
3682
- "name": "VoiceInput",
3683
- "group": "Components",
3684
- "sourceFile": "src/components/voice-input.tsx",
3685
- "props": [
3686
- {
3687
- "name": "disabled",
3688
- "type": "undefined | false | true",
3689
- "displayType": "undefined | false | true",
3690
- "optional": true,
3691
- "scalar": true,
3692
- "description": ""
3693
- },
3694
- {
3695
- "name": "hasTranscribe",
3696
- "type": "undefined | false | true",
3697
- "displayType": "undefined | false | true",
3698
- "optional": true,
3699
- "scalar": true,
3700
- "description": "Host supplied a `transcribe` callback. When true the MediaRecorder → onTranscribe path runs. When false the component prefers native SpeechRecognition (capable browsers), falling back to record-only."
3701
- },
3702
- {
3703
- "name": "lang",
3704
- "type": "undefined | string",
3705
- "displayType": "undefined | string",
3706
- "optional": true,
3707
- "scalar": true,
3708
- "description": "BCP-47 language tag for native recognition (e.g. `en-US`)."
3709
- },
3710
- {
3711
- "name": "interim",
3712
- "type": "undefined | false | true",
3713
- "displayType": "undefined | false | true",
3714
- "optional": true,
3715
- "scalar": true,
3716
- "description": "Emit live partial transcripts via `onInterim` (native path only)."
3717
- }
3718
- ],
3719
- "callbacks": [
3720
- {
3721
- "name": "onTranscribe",
3722
- "type": "(audio: Blob) => Promise<string>",
3723
- "displayType": "(audio: Blob) => Promise<string>",
3724
- "description": ""
3725
- },
3726
- {
3727
- "name": "onTranscription",
3728
- "type": "(text: string) => void",
3729
- "displayType": "(text: string) => void",
3730
- "description": ""
3731
- },
3732
- {
3733
- "name": "onInterim",
3734
- "type": "undefined | (text: string) => void",
3735
- "displayType": "undefined | (text: string) => void",
3736
- "description": "Live partial transcript from native recognition (when `interim`)."
3737
- },
3738
- {
3739
- "name": "onRecordingChange",
3740
- "type": "undefined | (recording: boolean) => void",
3741
- "displayType": "undefined | (recording: boolean) => void",
3742
- "description": "Fires whenever recording starts or stops. Guarded against the spurious initial `false` — only true transitions emit (the facade maps this to kai-recording-change)."
3743
- },
3744
- {
3745
- "name": "controllerRef",
3746
- "type": "undefined | (controller: VoiceInputController) => void",
3747
- "displayType": "undefined | (controller: VoiceInputController) => void",
3748
- "description": "Receive the imperative controller once mounted. The `<kai-voice-input>` facade forwards these as element methods (start/stop)."
3749
- }
3750
- ],
3751
- "slots": [],
3752
- "tokens": [],
3753
- "extendsHtmlAttributes": false,
3754
- "description": ""
3755
- },
3756
- {
3757
- "name": "WaveLoader",
3758
- "group": "Components",
3759
- "sourceFile": "src/components/loader.tsx",
3760
- "props": [
3761
- {
3762
- "name": "size",
3763
- "type": "undefined | \"sm\" | \"md\" | \"lg\"",
3764
- "displayType": "undefined | \"sm\" | \"md\" | \"lg\"",
3765
- "optional": true,
3766
- "scalar": true,
3767
- "description": "",
3768
- "default": "'md'"
3769
- }
3770
- ],
3771
- "callbacks": [],
3772
- "slots": [],
3773
- "tokens": [],
3774
- "extendsHtmlAttributes": false,
3775
- "description": ""
3776
- },
3777
- {
3778
- "name": "Avatar",
3779
- "group": "UI",
3780
- "sourceFile": "src/ui/avatar.tsx",
3781
- "props": [
3782
- {
3783
- "name": "src",
3784
- "type": "undefined | string",
3785
- "displayType": "undefined | string",
3786
- "optional": true,
3787
- "scalar": true,
3788
- "description": ""
3789
- },
3790
- {
3791
- "name": "alt",
3792
- "type": "undefined | string",
3793
- "displayType": "undefined | string",
3794
- "optional": true,
3795
- "scalar": true,
3796
- "description": ""
3797
- },
3798
- {
3799
- "name": "fallback",
3800
- "type": "string",
3801
- "displayType": "string",
3802
- "optional": false,
3803
- "scalar": true,
3804
- "description": ""
3805
- },
3806
- {
3807
- "name": "size",
3808
- "type": "undefined | \"sm\" | \"md\" | \"lg\"",
3809
- "displayType": "undefined | \"sm\" | \"md\" | \"lg\"",
3810
- "optional": true,
3811
- "scalar": true,
3812
- "description": "",
3813
- "default": "'md'"
3814
- }
3815
- ],
3816
- "callbacks": [],
3817
- "slots": [],
3818
- "tokens": [],
3819
- "extendsHtmlAttributes": true,
3820
- "description": ""
3821
- },
3822
- {
3823
- "name": "Badge",
3824
- "group": "UI",
3825
- "sourceFile": "src/ui/badge.tsx",
3826
- "props": [
3827
- {
3828
- "name": "variant",
3829
- "type": "undefined | null | \"default\" | \"count\" | \"citation\"",
3830
- "displayType": "undefined | null | \"default\" | \"count\" | \"citation\"",
3831
- "optional": true,
3832
- "scalar": false,
3833
- "description": ""
3834
- }
3835
- ],
3836
- "callbacks": [],
3837
- "slots": [
3838
- {
3839
- "name": "children",
3840
- "description": ""
3841
- }
3842
- ],
3843
- "tokens": [],
3844
- "extendsHtmlAttributes": true,
3845
- "description": ""
3846
- },
3847
- {
3848
- "name": "Button",
3849
- "group": "UI",
3850
- "sourceFile": "src/ui/button.tsx",
3851
- "props": [
3852
- {
3853
- "name": "full",
3854
- "type": "undefined | false | true",
3855
- "displayType": "undefined | false | true",
3856
- "optional": true,
3857
- "scalar": true,
3858
- "description": "Stretch to the full width of the container (a block button)."
3859
- },
3860
- {
3861
- "name": "variant",
3862
- "type": "undefined | null | \"default\" | \"ghost\" | \"outline\" | \"destructive\" | \"subtle\"",
3863
- "displayType": "undefined | null | \"default\" | \"ghost\" | \"outline\" | \"destructive\" | \"subtle\"",
3864
- "optional": true,
3865
- "scalar": false,
3866
- "description": ""
3867
- },
3868
- {
3869
- "name": "size",
3870
- "type": "undefined | null | \"sm\" | \"md\" | \"lg\" | \"icon\" | \"icon-sm\"",
3871
- "displayType": "undefined | null | \"sm\" | \"md\" | \"lg\" | \"icon\" | \"icon-sm\"",
3872
- "optional": true,
3873
- "scalar": false,
3874
- "description": ""
3875
- },
3876
- {
3877
- "name": "align",
3878
- "type": "undefined | null | \"start\" | \"center\" | \"end\"",
3879
- "displayType": "undefined | null | \"start\" | \"center\" | \"end\"",
3880
- "optional": true,
3881
- "scalar": false,
3882
- "description": ""
3883
- }
3884
- ],
3885
- "callbacks": [],
3886
- "slots": [
3887
- {
3888
- "name": "children",
3889
- "description": ""
3890
- }
3891
- ],
3892
- "tokens": [],
3893
- "extendsHtmlAttributes": true,
3894
- "description": ""
3895
- },
3896
- {
3897
- "name": "Collapsible",
3898
- "group": "UI",
3899
- "sourceFile": "src/ui/collapsible.tsx",
3900
- "props": [
3901
- {
3902
- "name": "open",
3903
- "type": "undefined | false | true",
3904
- "displayType": "undefined | false | true",
3905
- "optional": true,
3906
- "scalar": true,
3907
- "description": ""
3908
- },
3909
- {
3910
- "name": "defaultOpen",
3911
- "type": "undefined | false | true",
3912
- "displayType": "undefined | false | true",
3913
- "optional": true,
3914
- "scalar": true,
3915
- "description": "",
3916
- "default": "false"
3917
- },
3918
- {
3919
- "name": "disabled",
3920
- "type": "undefined | false | true",
3921
- "displayType": "undefined | false | true",
3922
- "optional": true,
3923
- "scalar": true,
3924
- "description": "When true, the trigger no longer toggles (programmatic show/hide still work via the controller; this only gates the user-facing trigger)."
3925
- }
3926
- ],
3927
- "callbacks": [
3928
- {
3929
- "name": "onOpenChange",
3930
- "type": "undefined | (open: boolean) => void",
3931
- "displayType": "undefined | (open: boolean) => void",
3932
- "description": ""
3933
- },
3934
- {
3935
- "name": "controllerRef",
3936
- "type": "undefined | (api: CollapsibleController) => void",
3937
- "displayType": "undefined | (api: CollapsibleController) => void",
3938
- "description": "Receive the open controller (open accessor + setOpen) once mounted. Only meaningful in uncontrolled mode (no `open` prop)."
3939
- }
3940
- ],
3941
- "slots": [
3942
- {
3943
- "name": "children",
3944
- "description": ""
3945
- }
3946
- ],
3947
- "tokens": [],
3948
- "extendsHtmlAttributes": false,
3949
- "description": ""
3950
- },
3951
- {
3952
- "name": "CollapsibleContent",
3953
- "group": "UI",
3954
- "sourceFile": "src/ui/collapsible.tsx",
3955
- "props": [],
3956
- "callbacks": [],
3957
- "slots": [
3958
- {
3959
- "name": "children",
3960
- "description": ""
3961
- }
3962
- ],
3963
- "tokens": [],
3964
- "extendsHtmlAttributes": false,
3965
- "description": ""
3966
- },
3967
- {
3968
- "name": "CollapsibleTrigger",
3969
- "group": "UI",
3970
- "sourceFile": "src/ui/collapsible.tsx",
3971
- "props": [],
3972
- "callbacks": [
3973
- {
3974
- "name": "as",
3975
- "type": "undefined | (props: Record<string, any>) => JSX.Element",
3976
- "displayType": "undefined | (props: Record<string, any>) => JSX.Element",
3977
- "description": ""
3978
- },
3979
- {
3980
- "name": "onClick",
3981
- "type": "undefined | JSX.EventHandler<HTMLButtonElement, MouseEvent> | { 0: (data: any, e: MouseEvent & { currentTarget: HTMLButtonElement; target: import(\"/home/runner/work/ui/ui/node_modules/solid-js/types/jsx\").DOMElement; }) => void; 1: any }",
3982
- "displayType": "undefined | JSX.EventHandler<HTMLButtonElement, MouseEvent> | { 0: (data: any, e: MouseEvent & { currentTarget: HTMLButtonElement; target: import(\"/home/runner/work/ui/ui/node_modules/solid-js/types/jsx\").DOMElement; }) => void; 1: any }",
3983
- "description": ""
3984
- }
3985
- ],
3986
- "slots": [
3987
- {
3988
- "name": "children",
3989
- "description": ""
3990
- }
3991
- ],
3992
- "tokens": [],
3993
- "extendsHtmlAttributes": false,
3994
- "description": ""
3995
- },
3996
- {
3997
- "name": "Dropdown",
3998
- "group": "UI",
3999
- "sourceFile": "src/ui/dropdown.tsx",
4000
- "props": [
4001
- {
4002
- "name": "defaultOpen",
4003
- "type": "undefined | false | true",
4004
- "displayType": "undefined | false | true",
4005
- "optional": true,
4006
- "scalar": true,
4007
- "description": "Initial open state (uncontrolled seed).",
4008
- "default": "false"
4009
- },
4010
- {
4011
- "name": "disabled",
4012
- "type": "undefined | false | true",
4013
- "displayType": "undefined | false | true",
4014
- "optional": true,
4015
- "scalar": true,
4016
- "description": "When true, the trigger never opens the menu."
4017
- }
4018
- ],
4019
- "callbacks": [
4020
- {
4021
- "name": "controllerRef",
4022
- "type": "undefined | (api: DropdownController) => void",
4023
- "displayType": "undefined | (api: DropdownController) => void",
4024
- "description": "Receive the open controller (open accessor + setOpen) once mounted."
4025
- }
4026
- ],
4027
- "slots": [
4028
- {
4029
- "name": "children",
4030
- "description": ""
4031
- }
4032
- ],
4033
- "tokens": [],
4034
- "extendsHtmlAttributes": false,
4035
- "description": ""
4036
- },
4037
- {
4038
- "name": "DropdownContent",
4039
- "group": "UI",
4040
- "sourceFile": "src/ui/dropdown.tsx",
4041
- "props": [],
4042
- "callbacks": [],
4043
- "slots": [
4044
- {
4045
- "name": "children",
4046
- "description": ""
4047
- }
4048
- ],
4049
- "tokens": [],
4050
- "extendsHtmlAttributes": false,
4051
- "description": ""
4052
- },
4053
- {
4054
- "name": "DropdownItem",
4055
- "group": "UI",
4056
- "sourceFile": "src/ui/dropdown.tsx",
4057
- "props": [
4058
- {
4059
- "name": "disabled",
4060
- "type": "undefined | false | true",
4061
- "displayType": "undefined | false | true",
4062
- "optional": true,
4063
- "scalar": true,
4064
- "description": ""
4065
- }
4066
- ],
4067
- "callbacks": [
4068
- {
4069
- "name": "onSelect",
4070
- "type": "undefined | () => void",
4071
- "displayType": "undefined | () => void",
4072
- "description": ""
4073
- }
4074
- ],
4075
- "slots": [
4076
- {
4077
- "name": "children",
4078
- "description": ""
4079
- }
4080
- ],
4081
- "tokens": [],
4082
- "extendsHtmlAttributes": false,
4083
- "description": ""
4084
- },
4085
- {
4086
- "name": "DropdownTrigger",
4087
- "group": "UI",
4088
- "sourceFile": "src/ui/dropdown.tsx",
4089
- "props": [],
4090
- "callbacks": [
4091
- {
4092
- "name": "as",
4093
- "type": "undefined | string | (props: Record<string, any>) => JSX.Element",
4094
- "displayType": "undefined | string | (props: Record<string, any>) => JSX.Element",
4095
- "description": ""
4096
- }
4097
- ],
4098
- "slots": [
4099
- {
4100
- "name": "children",
4101
- "description": ""
4102
- }
4103
- ],
4104
- "tokens": [],
4105
- "extendsHtmlAttributes": false,
4106
- "description": ""
4107
- },
4108
- {
4109
- "name": "HoverCard",
4110
- "group": "UI",
4111
- "sourceFile": "src/ui/hover-card.tsx",
4112
- "props": [
4113
- {
4114
- "name": "openDelay",
4115
- "type": "undefined | number",
4116
- "displayType": "undefined | number",
4117
- "optional": true,
4118
- "scalar": true,
4119
- "description": ""
4120
- },
4121
- {
4122
- "name": "closeDelay",
4123
- "type": "undefined | number",
4124
- "displayType": "undefined | number",
4125
- "optional": true,
4126
- "scalar": true,
4127
- "description": ""
4128
- },
4129
- {
4130
- "name": "placement",
4131
- "type": "undefined | \"top\" | \"right\" | \"bottom\" | \"left\" | \"top-start\" | \"top-end\" | \"right-start\" | \"right-end\" | \"bottom-start\" | \"bottom-end\" | \"left-start\" | \"left-end\"",
4132
- "displayType": "undefined | \"top\" | \"right\" | \"bottom\" | \"left\" | \"top-start\" | \"top-end\" | \"right-start\" | \"right-end\" | \"bottom-start\" | \"bottom-end\" | \"left-start\" | \"left-end\"",
4133
- "optional": true,
4134
- "scalar": true,
4135
- "description": ""
4136
- }
4137
- ],
4138
- "callbacks": [
4139
- {
4140
- "name": "trigger",
4141
- "type": "undefined | null | number | false | true | Node | { length: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; }; pop: () => JSX.Element; push: (...items: JSX.Element[]) => number; concat: { (...items: ConcatArray<JSX.Element>[]): JSX.Element[]; (...items: (JSX.Element | ConcatArray<JSX.Element>)[]): JSX.Element[]; }; join: (separator?: string) => string; reverse: () => JSX.Element[]; shift: () => JSX.Element; slice: (start?: number, end?: number) => JSX.Element[]; sort: (compareFn?: ((a: JSX.Element, b: JSX.Element) => number) | undefined) => JSX.ArrayElement; splice: { (start: number, deleteCount?: number): JSX.Element[]; (start: number, deleteCount: number, ...items: JSX.Element[]): JSX.Element[]; }; unshift: (...items: JSX.Element[]) => number; indexOf: (searchElement: JSX.Element, fromIndex?: number) => number; lastIndexOf: (searchElement: JSX.Element, fromIndex?: number) => number; every: { <S extends JSX.Element>(predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: JSX.Element, index: number, array: JSX.Element[]) => void, thisArg?: any) => void; map: <U>(callbackfn: (value: JSX.Element, index: number, array: JSX.Element[]) => U, thisArg?: any) => U[]; filter: { <S extends JSX.Element>(predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => value is S, thisArg?: any): S[]; (predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => unknown, thisArg?: any): JSX.Element[]; }; reduce: { (callbackfn: (previousValue: JSX.Element, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => JSX.Element): JSX.Element; (callbackfn: (previousValue: JSX.Element, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => JSX.Element, initialValue: JSX.Element): JSX.Element; <U>(callbackfn: (previousValue: U, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => U, initialValue: U): U; }; reduceRight: { (callbackfn: (previousValue: JSX.Element, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => JSX.Element): JSX.Element; (callbackfn: (previousValue: JSX.Element, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => JSX.Element, initialValue: JSX.Element): JSX.Element; <U>(callbackfn: (previousValue: U, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => U, initialValue: U): U; }; find: { <S extends JSX.Element>(predicate: (value: JSX.Element, index: number, obj: JSX.Element[]) => value is S, thisArg?: any): S | undefined; (predicate: (value: JSX.Element, index: number, obj: JSX.Element[]) => unknown, thisArg?: any): JSX.Element; }; findIndex: (predicate: (value: JSX.Element, index: number, obj: JSX.Element[]) => unknown, thisArg?: any) => number; fill: (value: JSX.Element, start?: number, end?: number) => JSX.ArrayElement; copyWithin: (target: number, start: number, end?: number) => JSX.ArrayElement; entries: () => ArrayIterator<[number, JSX.Element]>; keys: () => ArrayIterator<number>; values: () => ArrayIterator<JSX.Element>; includes: (searchElement: JSX.Element, fromIndex?: number) => boolean; flatMap: <U, This = undefined>(callback: (this: This, value: JSX.Element, index: number, array: JSX.Element[]) => U | readonly U[], thisArg?: This | undefined) => U[]; flat: <A, D extends number = 1>(this: A, depth?: D | undefined) => FlatArray<A, D>[]; at: (index: number) => JSX.Element; findLast: { <S extends JSX.Element>(predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => value is S, thisArg?: any): S | undefined; (predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => unknown, thisArg?: any): JSX.Element; }; findLastIndex: (predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => unknown, thisArg?: any) => number; toReversed: () => JSX.Element[]; toSorted: (compareFn?: ((a: JSX.Element, b: JSX.Element) => number) | undefined) => JSX.Element[]; toSpliced: { (start: number, deleteCount: number, ...items: JSX.Element[]): JSX.Element[]; (start: number, deleteCount?: number): JSX.Element[]; }; with: (index: number, value: JSX.Element) => JSX.Element[]; __@iterator@12772: () => ArrayIterator<JSX.Element>; __@unscopables@12774: { [x: number]: boolean | undefined; length?: boolean | undefined; toString?: boolean | undefined; toLocaleString?: boolean | undefined; pop?: boolean | undefined; push?: boolean | undefined; concat?: boolean | undefined; join?: boolean | undefined; reverse?: boolean | undefined; shift?: boolean | undefined; slice?: boolean | undefined; sort?: boolean | undefined; splice?: boolean | undefined; unshift?: boolean | undefined; indexOf?: boolean | undefined; lastIndexOf?: boolean | undefined; every?: boolean | undefined; some?: boolean | undefined; forEach?: boolean | undefined; map?: boolean | undefined; filter?: boolean | undefined; reduce?: boolean | undefined; reduceRight?: boolean | undefined; find?: boolean | undefined; findIndex?: boolean | undefined; fill?: boolean | undefined; copyWithin?: boolean | undefined; entries?: boolean | undefined; keys?: boolean | undefined; values?: boolean | undefined; includes?: boolean | undefined; flatMap?: boolean | undefined; flat?: boolean | undefined; at?: boolean | undefined; findLast?: boolean | undefined; findLastIndex?: boolean | undefined; toReversed?: boolean | undefined; toSorted?: boolean | undefined; toSpliced?: boolean | undefined; with?: boolean | undefined; [Symbol.iterator]?: boolean | undefined; readonly [Symbol.unscopables]?: boolean | undefined; } } | string & {}",
4142
- "displayType": "undefined | null | number | false | true | Node | { length: number; toString: () => string; toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; }; pop: () => JSX.Element; push: (...items: JSX.Element[]) => number; concat: { (...items: ConcatArray<JSX.Element>[]): JSX.Element[]; (...items: (JSX.Element | ConcatArray<JSX.Element>)[]): JSX.Element[]; }; join: (separator?: string) => string; reverse: () => JSX.Element[]; shift: () => JSX.Element; slice: (start?: number, end?: number) => JSX.Element[]; sort: (compareFn?: ((a: JSX.Element, b: JSX.Element) => number) | undefined) => JSX.ArrayElement; splice: { (start: number, deleteCount?: number): JSX.Element[]; (start: number, deleteCount: number, ...items: JSX.Element[]): JSX.Element[]; }; unshift: (...items: JSX.Element[]) => number; indexOf: (searchElement: JSX.Element, fromIndex?: number) => number; lastIndexOf: (searchElement: JSX.Element, fromIndex?: number) => number; every: { <S extends JSX.Element>(predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: JSX.Element, index: number, array: JSX.Element[]) => void, thisArg?: any) => void; map: <U>(callbackfn: (value: JSX.Element, index: number, array: JSX.Element[]) => U, thisArg?: any) => U[]; filter: { <S extends JSX.Element>(predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => value is S, thisArg?: any): S[]; (predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => unknown, thisArg?: any): JSX.Element[]; }; reduce: { (callbackfn: (previousValue: JSX.Element, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => JSX.Element): JSX.Element; (callbackfn: (previousValue: JSX.Element, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => JSX.Element, initialValue: JSX.Element): JSX.Element; <U>(callbackfn: (previousValue: U, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => U, initialValue: U): U; }; reduceRight: { (callbackfn: (previousValue: JSX.Element, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => JSX.Element): JSX.Element; (callbackfn: (previousValue: JSX.Element, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => JSX.Element, initialValue: JSX.Element): JSX.Element; <U>(callbackfn: (previousValue: U, currentValue: JSX.Element, currentIndex: number, array: JSX.Element[]) => U, initialValue: U): U; }; find: { <S extends JSX.Element>(predicate: (value: JSX.Element, index: number, obj: JSX.Element[]) => value is S, thisArg?: any): S | undefined; (predicate: (value: JSX.Element, index: number, obj: JSX.Element[]) => unknown, thisArg?: any): JSX.Element; }; findIndex: (predicate: (value: JSX.Element, index: number, obj: JSX.Element[]) => unknown, thisArg?: any) => number; fill: (value: JSX.Element, start?: number, end?: number) => JSX.ArrayElement; copyWithin: (target: number, start: number, end?: number) => JSX.ArrayElement; entries: () => ArrayIterator<[number, JSX.Element]>; keys: () => ArrayIterator<number>; values: () => ArrayIterator<JSX.Element>; includes: (searchElement: JSX.Element, fromIndex?: number) => boolean; flatMap: <U, This = undefined>(callback: (this: This, value: JSX.Element, index: number, array: JSX.Element[]) => U | readonly U[], thisArg?: This | undefined) => U[]; flat: <A, D extends number = 1>(this: A, depth?: D | undefined) => FlatArray<A, D>[]; at: (index: number) => JSX.Element; findLast: { <S extends JSX.Element>(predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => value is S, thisArg?: any): S | undefined; (predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => unknown, thisArg?: any): JSX.Element; }; findLastIndex: (predicate: (value: JSX.Element, index: number, array: JSX.Element[]) => unknown, thisArg?: any) => number; toReversed: () => JSX.Element[]; toSorted: (compareFn?: ((a: JSX.Element, b: JSX.Element) => number) | undefined) => JSX.Element[]; toSpliced: { (start: number, deleteCount: number, ...items: JSX.Element[]): JSX.Element[]; (start: number, deleteCount?: number): JSX.Element[]; }; with: (index: number, value: JSX.Element) => JSX.Element[]; __@iterator@12772: () => ArrayIterator<JSX.Element>; __@unscopables@12774: { [x: number]: boolean | undefined; length?: boolean | undefined; toString?: boolean | undefined; toLocaleString?: boolean | undefined; pop?: boolean | undefined; push?: boolean | undefined; concat?: boolean | undefined; join?: boolean | undefined; reverse?: boolean | undefined; shift?: boolean | undefined; slice?: boolean | undefined; sort?: boolean | undefined; splice?: boolean | undefined; unshift?: boolean | undefined; indexOf?: boolean | undefined; lastIndexOf?: boolean | undefined; every?: boolean | undefined; some?: boolean | undefined; forEach?: boolean | undefined; map?: boolean | undefined; filter?: boolean | undefined; reduce?: boolean | undefined; reduceRight?: boolean | undefined; find?: boolean | undefined; findIndex?: boolean | undefined; fill?: boolean | undefined; copyWithin?: boolean | undefined; entries?: boolean | undefined; keys?: boolean | undefined; values?: boolean | undefined; includes?: boolean | undefined; flatMap?: boolean | undefined; flat?: boolean | undefined; at?: boolean | undefined; findLast?: boolean | undefined; findLastIndex?: boolean | undefined; toReversed?: boolean | undefined; toSorted?: boolean | undefined; toSpliced?: boolean | undefined; with?: boolean | undefined; [Symbol.iterator]?: boolean | undefined; readonly [Symbol.unscopables]?: boolean | undefined; } } | string & {}",
4143
- "description": ""
4144
- }
4145
- ],
4146
- "slots": [
4147
- {
4148
- "name": "children",
4149
- "description": ""
4150
- }
4151
- ],
4152
- "tokens": [],
4153
- "extendsHtmlAttributes": false,
4154
- "description": ""
4155
- },
4156
- {
4157
- "name": "Resizable",
4158
- "group": "UI",
4159
- "sourceFile": "src/ui/resizable.tsx",
4160
- "props": [
4161
- {
4162
- "name": "orientation",
4163
- "type": "undefined | \"vertical\" | \"horizontal\"",
4164
- "displayType": "undefined | \"vertical\" | \"horizontal\"",
4165
- "optional": true,
4166
- "scalar": true,
4167
- "description": "",
4168
- "default": "'horizontal'"
4169
- },
4170
- {
4171
- "name": "handle",
4172
- "type": "undefined | \"line\" | \"grip\" | \"none\"",
4173
- "displayType": "undefined | \"line\" | \"grip\" | \"none\"",
4174
- "optional": true,
4175
- "scalar": true,
4176
- "description": "Divider affordance on each interactive handle: `line` (default), `grip`, or `none`.",
4177
- "default": "'line'"
4178
- },
4179
- {
4180
- "name": "maximizedIndex",
4181
- "type": "undefined | null | number",
4182
- "displayType": "undefined | null | number",
4183
- "optional": true,
4184
- "scalar": false,
4185
- "description": "Which panel index is maximized (null = none). Hides the others."
4186
- }
4187
- ],
4188
- "callbacks": [
4189
- {
4190
- "name": "onChange",
4191
- "type": "undefined | (sizes: number[]) => void",
4192
- "displayType": "undefined | (sizes: number[]) => void",
4193
- "description": "Fired on drag-end / keyboard resize / visibility change with the current panel sizes (percent)."
4194
- },
4195
- {
4196
- "name": "onMaximizeChange",
4197
- "type": "undefined | (index: number | null) => void",
4198
- "displayType": "undefined | (index: number | null) => void",
4199
- "description": "Fired when the maximized panel changes (index, or null on restore)."
4200
- }
4201
- ],
4202
- "slots": [
4203
- {
4204
- "name": "children",
4205
- "description": "`ResizablePanel` children."
4206
- }
4207
- ],
4208
- "tokens": [],
4209
- "extendsHtmlAttributes": false,
4210
- "description": "Convenience group that takes `ResizablePanel` children and AUTO-INSERTS a `ResizableHandle` between each pair of visible (non-`hidden`) panels. A handle is interactive only between two unlocked neighbors; otherwise it renders as a static divider. Power users who need manual control can keep using `ResizablePanelGroup` + explicit `ResizableHandle`s."
4211
- },
4212
- {
4213
- "name": "ResizableHandle",
4214
- "group": "UI",
4215
- "sourceFile": "src/ui/resizable.tsx",
4216
- "props": [
4217
- {
4218
- "name": "handle",
4219
- "type": "undefined | \"line\" | \"grip\" | \"none\"",
4220
- "displayType": "undefined | \"line\" | \"grip\" | \"none\"",
4221
- "optional": true,
4222
- "scalar": true,
4223
- "description": "Divider affordance drawn inside the 8px grab zone: - `line` (default) — a 1px hairline, transparent at rest, tinting on hover/drag. - `grip` — a dotted grip handle. - `none` — no visible divider (invisible hit-area only).",
4224
- "default": "'line'"
4225
- },
4226
- {
4227
- "name": "keyboardStep",
4228
- "type": "undefined | number",
4229
- "displayType": "undefined | number",
4230
- "optional": true,
4231
- "scalar": true,
4232
- "description": "Keyboard nudge step in pixels (default 16). Home/End jump to min/max.",
4233
- "default": "16"
4234
- },
4235
- {
4236
- "name": "static",
4237
- "type": "undefined | false | true",
4238
- "displayType": "undefined | false | true",
4239
- "optional": true,
4240
- "scalar": true,
4241
- "description": "Render as a static, non-interactive divider (e.g. between locked panels)."
4242
- },
4243
- {
4244
- "name": "orientation",
4245
- "type": "undefined | \"vertical\" | \"horizontal\"",
4246
- "displayType": "undefined | \"vertical\" | \"horizontal\"",
4247
- "optional": true,
4248
- "scalar": true,
4249
- "description": "Explicit axis; overrides `ResizableContext`. Needed by facades that render handles outside a context provider (e.g. `<kai-resizable>`)."
4250
- }
4251
- ],
4252
- "callbacks": [
4253
- {
4254
- "name": "onPanelResize",
4255
- "type": "undefined | (delta: number) => void",
4256
- "displayType": "undefined | (delta: number) => void",
4257
- "description": ""
4258
- }
4259
- ],
4260
- "slots": [],
4261
- "tokens": [],
4262
- "extendsHtmlAttributes": true,
4263
- "description": ""
4264
- },
4265
- {
4266
- "name": "ResizablePanel",
4267
- "group": "UI",
4268
- "sourceFile": "src/ui/resizable.tsx",
4269
- "props": [
4270
- {
4271
- "name": "defaultSize",
4272
- "type": "undefined | string | number",
4273
- "displayType": "undefined | string | number",
4274
- "optional": true,
4275
- "scalar": true,
4276
- "description": "Initial main-axis size: number/`\"25%\"` (percent) or `\"280px\"` (pixels). Omitted → flexible."
4277
- },
4278
- {
4279
- "name": "minSize",
4280
- "type": "undefined | string | number",
4281
- "displayType": "undefined | string | number",
4282
- "optional": true,
4283
- "scalar": true,
4284
- "description": "Minimum size during resize (px or %)."
4285
- },
4286
- {
4287
- "name": "maxSize",
4288
- "type": "undefined | string | number",
4289
- "displayType": "undefined | string | number",
4290
- "optional": true,
4291
- "scalar": true,
4292
- "description": "Maximum size during resize (px or %)."
4293
- },
4294
- {
4295
- "name": "locked",
4296
- "type": "undefined | false | true",
4297
- "displayType": "undefined | false | true",
4298
- "optional": true,
4299
- "scalar": true,
4300
- "description": "When true, the panel's size is fixed and adjacent handles are non-draggable."
4301
- },
4302
- {
4303
- "name": "hidden",
4304
- "type": "undefined | false | true",
4305
- "displayType": "undefined | false | true",
4306
- "optional": true,
4307
- "scalar": true,
4308
- "description": "When true, the panel is not visible (used by the `Resizable` convenience to drop dividers)."
4309
- }
4310
- ],
4311
- "callbacks": [],
4312
- "slots": [
4313
- {
4314
- "name": "children",
4315
- "description": ""
4316
- }
4317
- ],
4318
- "tokens": [],
4319
- "extendsHtmlAttributes": true,
4320
- "description": ""
4321
- },
4322
- {
4323
- "name": "ResizablePanelGroup",
4324
- "group": "UI",
4325
- "sourceFile": "src/ui/resizable.tsx",
4326
- "props": [
4327
- {
4328
- "name": "orientation",
4329
- "type": "undefined | \"vertical\" | \"horizontal\"",
4330
- "displayType": "undefined | \"vertical\" | \"horizontal\"",
4331
- "optional": true,
4332
- "scalar": true,
4333
- "description": "",
4334
- "default": "'horizontal'"
4335
- }
4336
- ],
4337
- "callbacks": [],
4338
- "slots": [
4339
- {
4340
- "name": "children",
4341
- "description": ""
4342
- }
4343
- ],
4344
- "tokens": [],
4345
- "extendsHtmlAttributes": true,
4346
- "description": ""
4347
- },
4348
- {
4349
- "name": "ScrollArea",
4350
- "group": "UI",
4351
- "sourceFile": "src/ui/scroll-area.tsx",
4352
- "props": [
4353
- {
4354
- "name": "orientation",
4355
- "type": "undefined | \"vertical\" | \"horizontal\" | \"both\"",
4356
- "displayType": "undefined | \"vertical\" | \"horizontal\" | \"both\"",
4357
- "optional": true,
4358
- "scalar": true,
4359
- "description": "Which axis scrolls. `vertical` (default) · `horizontal` · `both`. The cross axis is clamped to `hidden` so content can't overflow it."
4360
- }
4361
- ],
4362
- "callbacks": [],
4363
- "slots": [
4364
- {
4365
- "name": "children",
4366
- "description": ""
4367
- }
4368
- ],
4369
- "tokens": [],
4370
- "extendsHtmlAttributes": true,
4371
- "description": ""
4372
- },
4373
- {
4374
- "name": "Separator",
4375
- "group": "UI",
4376
- "sourceFile": "src/ui/separator.tsx",
4377
- "props": [
4378
- {
4379
- "name": "orientation",
4380
- "type": "undefined | \"vertical\" | \"horizontal\"",
4381
- "displayType": "undefined | \"vertical\" | \"horizontal\"",
4382
- "optional": true,
4383
- "scalar": true,
4384
- "description": ""
4385
- }
4386
- ],
4387
- "callbacks": [],
4388
- "slots": [],
4389
- "tokens": [],
4390
- "extendsHtmlAttributes": true,
4391
- "description": ""
4392
- },
4393
- {
4394
- "name": "Skeleton",
4395
- "group": "UI",
4396
- "sourceFile": "src/ui/skeleton.tsx",
4397
- "props": [
4398
- {
4399
- "name": "variant",
4400
- "type": "undefined | \"text\" | \"rect\" | \"circle\"",
4401
- "displayType": "undefined | \"text\" | \"rect\" | \"circle\"",
4402
- "optional": true,
4403
- "scalar": true,
4404
- "description": "Shape preset. `text` = one or more lines; `rect` = a block; `circle` = round. Omit for the bare, class-driven block (size it with utility classes yourself — the original low-level usage)."
4405
- },
4406
- {
4407
- "name": "width",
4408
- "type": "undefined | string | number",
4409
- "displayType": "undefined | string | number",
4410
- "optional": true,
4411
- "scalar": true,
4412
- "description": "CSS width (a number is treated as px). With a `variant` and no width it fills its container (responsive); for `circle` it is the diameter."
4413
- },
4414
- {
4415
- "name": "height",
4416
- "type": "undefined | string | number",
4417
- "displayType": "undefined | string | number",
4418
- "optional": true,
4419
- "scalar": true,
4420
- "description": "CSS height (a number is treated as px). Defaults per variant."
4421
- },
4422
- {
4423
- "name": "lines",
4424
- "type": "undefined | number",
4425
- "displayType": "undefined | number",
4426
- "optional": true,
4427
- "scalar": true,
4428
- "description": "`text` only: how many lines to render (the last is shorter). Default 1.",
4429
- "default": "1"
4430
- }
4431
- ],
4432
- "callbacks": [],
4433
- "slots": [],
4434
- "tokens": [],
4435
- "extendsHtmlAttributes": true,
4436
- "description": ""
4437
- },
4438
- {
4439
- "name": "Textarea",
4440
- "group": "UI",
4441
- "sourceFile": "src/ui/textarea.tsx",
4442
- "props": [
4443
- {
4444
- "name": "maxHeight",
4445
- "type": "undefined | number",
4446
- "displayType": "undefined | number",
4447
- "optional": true,
4448
- "scalar": true,
4449
- "description": ""
4450
- },
4451
- {
4452
- "name": "autoResize",
4453
- "type": "undefined | false | true",
4454
- "displayType": "undefined | false | true",
4455
- "optional": true,
4456
- "scalar": true,
4457
- "description": ""
4458
- }
4459
- ],
4460
- "callbacks": [],
4461
- "slots": [],
4462
- "tokens": [],
4463
- "extendsHtmlAttributes": true,
4464
- "description": ""
4465
- },
4466
- {
4467
- "name": "Tooltip",
4468
- "group": "UI",
4469
- "sourceFile": "src/ui/tooltip.tsx",
4470
- "props": [
4471
- {
4472
- "name": "content",
4473
- "type": "string",
4474
- "displayType": "string",
4475
- "optional": false,
4476
- "scalar": true,
4477
- "description": ""
4478
- },
4479
- {
4480
- "name": "openDelay",
4481
- "type": "undefined | number",
4482
- "displayType": "undefined | number",
4483
- "optional": true,
4484
- "scalar": true,
4485
- "description": "",
4486
- "default": "600"
4487
- },
4488
- {
4489
- "name": "closeDelay",
4490
- "type": "undefined | number",
4491
- "displayType": "undefined | number",
4492
- "optional": true,
4493
- "scalar": true,
4494
- "description": "Delay (ms) before it hides after the pointer leaves. Defaults to 0 (hides immediately).",
4495
- "default": "0"
4496
- },
4497
- {
4498
- "name": "placement",
4499
- "type": "undefined | \"top\" | \"right\" | \"bottom\" | \"left\" | \"top-start\" | \"top-end\" | \"right-start\" | \"right-end\" | \"bottom-start\" | \"bottom-end\" | \"left-start\" | \"left-end\"",
4500
- "displayType": "undefined | \"top\" | \"right\" | \"bottom\" | \"left\" | \"top-start\" | \"top-end\" | \"right-start\" | \"right-end\" | \"bottom-start\" | \"bottom-end\" | \"left-start\" | \"left-end\"",
4501
- "optional": true,
4502
- "scalar": true,
4503
- "description": "Preferred placement (post flip/shift). Defaults to `'top'`.",
4504
- "default": "'top'"
4505
- },
4506
- {
4507
- "name": "defaultOpen",
4508
- "type": "undefined | false | true",
4509
- "displayType": "undefined | false | true",
4510
- "optional": true,
4511
- "scalar": true,
4512
- "description": "Initial open state on mount (uncontrolled seed).",
4513
- "default": "false"
4514
- },
4515
- {
4516
- "name": "disabled",
4517
- "type": "undefined | false | true",
4518
- "displayType": "undefined | false | true",
4519
- "optional": true,
4520
- "scalar": true,
4521
- "description": "When true, hover/focus (and `show()`) never opens the tooltip."
4522
- },
4523
- {
4524
- "name": "dismissOnClick",
4525
- "type": "undefined | false | true",
4526
- "displayType": "undefined | false | true",
4527
- "optional": true,
4528
- "scalar": true,
4529
- "description": ""
4530
- }
4531
- ],
4532
- "callbacks": [
4533
- {
4534
- "name": "controllerRef",
4535
- "type": "undefined | (api: TooltipController) => void",
4536
- "displayType": "undefined | (api: TooltipController) => void",
4537
- "description": "Receive the open controller (open accessor + setOpen) once mounted."
4538
- }
4539
- ],
4540
- "slots": [
4541
- {
4542
- "name": "children",
4543
- "description": ""
4544
- }
4545
- ],
4546
- "tokens": [],
4547
- "extendsHtmlAttributes": false,
4548
- "description": ""
4549
- }
4550
- ]