@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.
- package/README.md +44 -45
- package/dist/components/artifact-card.d.ts +51 -0
- package/dist/components/artifact.d.ts +1 -1
- package/dist/components/attachments.d.ts +2 -2
- package/dist/components/audio-visualizer/index.d.ts +3 -3
- package/dist/components/audio-visualizer/labs/lab-choreography.d.ts +59 -0
- package/dist/components/audio-visualizer/labs/lab-shaders.d.ts +22 -0
- package/dist/components/audio-visualizer/labs/lab-visualizer.d.ts +18 -0
- package/dist/components/audio-visualizer/variant-aurora.d.ts +2 -2
- package/dist/components/audio-visualizer/variant-bar.d.ts +2 -2
- package/dist/components/audio-visualizer/variant-custom.d.ts +2 -2
- package/dist/components/audio-visualizer/variant-grid.d.ts +1 -1
- package/dist/components/audio-visualizer/variant-radial.d.ts +1 -1
- package/dist/components/audio-visualizer/variant-wave.d.ts +1 -1
- package/dist/components/card-fallback.d.ts +12 -2
- package/dist/components/card-renderer.d.ts +63 -2
- package/dist/components/chat-container.d.ts +3 -0
- package/dist/components/chat-scope-picker.d.ts +2 -2
- package/dist/components/chat-thread.d.ts +68 -18
- package/dist/components/choice-card.d.ts +3 -28
- package/dist/components/composer-dom.d.ts +1 -1
- package/dist/components/composer-highlight.d.ts +1 -1
- package/dist/components/composer-history.d.ts +1 -1
- package/dist/components/composer.d.ts +1 -1
- package/dist/components/confirm-card.d.ts +3 -18
- package/dist/components/context.d.ts +8 -4
- package/dist/components/conversation-item.d.ts +1 -1
- package/dist/components/conversation-list.d.ts +4 -3
- package/dist/components/embed.d.ts +3 -3
- package/dist/components/file-tree.d.ts +11 -22
- package/dist/components/form-widgets.d.ts +1 -1
- package/dist/components/form.d.ts +3 -44
- package/dist/components/link-preview.d.ts +3 -3
- package/dist/components/loader.d.ts +30 -48
- package/dist/components/message-skills.d.ts +4 -0
- package/dist/components/message.d.ts +84 -21
- package/dist/components/model-switcher.d.ts +2 -2
- package/dist/components/prompt-input.d.ts +2 -2
- package/dist/components/response-compare-types.d.ts +11 -2
- package/dist/components/response-compare.d.ts +3 -3
- package/dist/components/source.d.ts +12 -3
- package/dist/components/tasks-card.d.ts +3 -31
- package/dist/components/thread.d.ts +17 -5
- package/dist/components/toast.d.ts +2 -2
- package/dist/components/tool-classify.d.ts +8 -0
- package/dist/components/tool-types.d.ts +29 -1
- package/dist/components/tool.d.ts +3 -3
- package/dist/components/use-card-resolution.d.ts +1 -1
- package/dist/create-tween-D3Y5qiij.js +338 -0
- package/dist/create-tween-DGKY1FDY.js +341 -0
- package/dist/create-tween-paho5Rh-.js +7 -0
- package/dist/custom-elements.json +1681 -454
- package/dist/elements/agent-card.js +1 -1
- package/dist/elements/artifact.js +1 -1
- package/dist/elements/attachments.js +1 -1
- package/dist/elements/audio-visualizer.js +1 -1
- package/dist/elements/avatar.js +1 -1
- package/dist/elements/badge.js +1 -1
- package/dist/elements/button.js +1 -1
- package/dist/elements/card.js +1 -1
- package/dist/elements/cards.js +1 -1
- package/dist/elements/chain-of-thought.js +1 -1
- package/dist/elements/chat-scope-picker.js +1 -1
- package/dist/elements/chat-types.d.ts +70 -10
- package/dist/elements/chat-workspace.js +1 -1
- package/dist/elements/chat.js +1 -1
- package/dist/elements/checkpoint.js +1 -1
- package/dist/elements/choice.js +1 -1
- package/dist/elements/chunks/{Icon-Tj58ES_d.js → Icon-C-2LvGDG.js} +1 -1
- package/dist/elements/chunks/{action-icons-ns1Fnedj.js → action-icons-CaYoImEk.js} +1 -1
- package/dist/elements/chunks/arrow-left-Bb46H7w9.js +1 -0
- package/dist/elements/chunks/artifact-BBIscOxJ.js +1 -0
- package/dist/elements/chunks/{attachments-mCB5F1Fq.js → attachments-BB56zoji.js} +1 -1
- package/dist/elements/chunks/audio-visualizer-BxOx4THz.js +1 -0
- package/dist/elements/chunks/{badge-B4Zuajl2.js → badge-SxLSZ19R.js} +1 -1
- package/dist/elements/chunks/{button-ZWNif3--.js → button-CmkUkz6c.js} +1 -1
- package/dist/elements/chunks/card-renderer-Db4ffkWv.js +1 -0
- package/dist/elements/chunks/card-tags-D8lZ-C_U.js +1 -0
- package/dist/elements/chunks/chat-thread-B3Ks-cKr.js +1 -0
- package/dist/elements/chunks/check-C8desc_h.js +1 -0
- package/dist/elements/chunks/chevron-down-DKtc2HNB.js +1 -0
- package/dist/elements/chunks/chevron-right-Dw4GPhwL.js +1 -0
- package/dist/elements/chunks/choice-card-Q9cYYDyM.js +1 -0
- package/dist/elements/chunks/circle-BeokBsvB.js +1 -0
- package/dist/elements/chunks/circle-check-wJSqt859.js +1 -0
- package/dist/elements/chunks/{circle-x-B7faJFlY.js → circle-x-D0MEfxOM.js} +1 -1
- package/dist/elements/chunks/code-block-C8VzAraE.js +1 -0
- package/dist/elements/chunks/{collapsible-DM1Ckd4e.js → collapsible-Cvj61obE.js} +1 -1
- package/dist/elements/chunks/{composer-BguS0QL_.js → composer-D86ztyL0.js} +2 -2
- package/dist/elements/chunks/confirm-card-BdyDAGLw.js +1 -0
- package/dist/elements/chunks/context-WHDl-xSx.js +1 -0
- package/dist/elements/chunks/conversation-list-CdR14_Y4.js +1 -0
- package/dist/elements/chunks/create-tween-C_A_B638.js +7 -0
- package/dist/elements/chunks/{default-input-Cqqilg9t.js → default-input-CSZqUM81.js} +1 -1
- package/dist/elements/chunks/define-BzPnNsXg.js +1 -0
- package/dist/elements/chunks/{disclosure-CIZ5c8nO.js → disclosure-DVKsoc1F.js} +1 -1
- package/dist/elements/chunks/{download-Dsbg3ste.js → download-BjA54IMJ.js} +1 -1
- package/dist/elements/chunks/{dropdown-BDd1-Zgi.js → dropdown-BjVVHWXH.js} +1 -1
- package/dist/elements/chunks/{ellipsis-Dw6qrss-.js → ellipsis-BNedmqfi.js} +1 -1
- package/dist/elements/chunks/embed-DQsl4XEq.js +1 -0
- package/dist/elements/chunks/{external-link-Vt74zAoL.js → external-link-Di-dw2CU.js} +1 -1
- package/dist/elements/chunks/{file-text-CZrZF6_v.js → file-text-B3sAODCV.js} +1 -1
- package/dist/elements/chunks/{file-tree-DF4okKyo.js → file-tree-Dgto-bMn.js} +1 -1
- package/dist/elements/chunks/{folder-glP5rha4.js → folder-D6rMadFV.js} +1 -1
- package/dist/elements/chunks/form-CILxvhQ7.js +1 -0
- package/dist/elements/chunks/hover-card-BtiF4XiU.js +1 -0
- package/dist/elements/chunks/{icon-BLb8beoi.js → icon-DKkmze3y.js} +1 -1
- package/dist/elements/chunks/{info-CIsv92JK.js → info-CWRjZkuy.js} +1 -1
- package/dist/elements/chunks/{input-Dds1kFyt.js → input--QJBK6BA.js} +1 -1
- package/dist/elements/chunks/{kbd-De_xbgi9.js → kbd-C3zuKh8R.js} +1 -1
- package/dist/elements/chunks/{link-i4r_k7z4.js → link-BL5JA7Q0.js} +1 -1
- package/dist/elements/chunks/link-preview-CU37bbXh.js +1 -0
- package/dist/elements/chunks/{loader-BmQH4s3V.js → loader-XmpyxyRH.js} +1 -1
- package/dist/elements/chunks/{markdown-Zi21WhUz.js → markdown-3Gv5UZ_o.js} +1 -1
- package/dist/elements/chunks/message-CnBA2OUt.js +1 -0
- package/dist/elements/chunks/message-X5NZbq-W.js +1 -0
- package/dist/elements/chunks/message-square-CnpAm_P0.js +1 -0
- package/dist/elements/chunks/{minimize-2--ifeCGrl.js → minimize-2-DwyrUTcM.js} +1 -1
- package/dist/elements/chunks/{model-switcher-B94YAKsM.js → model-switcher-CclaJEHt.js} +1 -1
- package/dist/elements/chunks/{overlay-kD8dwRv_.js → overlay-Cepd-KcS.js} +1 -1
- package/dist/elements/chunks/{paperclip-q21dYOSK.js → paperclip-CdwKjrlu.js} +1 -1
- package/dist/elements/chunks/{progress-bar-BrAIIaaJ.js → progress-bar-DMVXBD3b.js} +1 -1
- package/dist/elements/chunks/{prompt-suggestion-Bjn2K-fR.js → prompt-suggestion-Di_WZE_5.js} +1 -1
- package/dist/elements/chunks/reasoning-D0jMch5u.js +1 -0
- package/dist/elements/chunks/{resizable-Dp4JExql.js → resizable-1znbL1Gv.js} +1 -1
- package/dist/elements/chunks/{rotate-cw-CFWWkpj2.js → rotate-cw-DVhhgx8n.js} +1 -1
- package/dist/elements/chunks/{scroll-area-Bb0kHH1j.js → scroll-area-Bs4bFS1P.js} +1 -1
- package/dist/elements/chunks/scroll-button-Bet5NLc4.js +1 -0
- package/dist/elements/chunks/{separator-9kRgr1X9.js → separator-C5Gh8qGC.js} +1 -1
- package/dist/elements/chunks/{settings-B8lmec4D.js → settings-5vmEFg0K.js} +1 -1
- package/dist/elements/chunks/{settings-group-I0hEuXiN.js → settings-group-BWLB38kz.js} +1 -1
- package/dist/elements/chunks/{share-C3lTiYGt.js → share-BZ3G_DaB.js} +1 -1
- package/dist/elements/chunks/skeleton-DafPJQTp.js +1 -0
- package/dist/elements/chunks/slots-CIw9RlAe.js +1 -0
- package/dist/elements/chunks/source-D_qj_6uJ.js +1 -0
- package/dist/elements/chunks/{star-CSJtGxgv.js → star-Cuv7j2IE.js} +1 -1
- package/dist/elements/chunks/{store-CHyW95TP.js → store-C1StPHfW.js} +1 -1
- package/dist/elements/chunks/tasks-card-EyoBZfpA.js +1 -0
- package/dist/elements/chunks/{text-shimmer-Cn9TmNpI.js → text-shimmer-D9gRSh34.js} +1 -1
- package/dist/elements/chunks/textarea-DuhtHfcm.js +1 -0
- package/dist/elements/chunks/{thumbs-up-PNVVThEF.js → thumbs-up-B9hwv43w.js} +1 -1
- package/dist/elements/chunks/{toast-store-DKbQn3Wn.js → toast-store-Bm3DUEDe.js} +1 -1
- package/dist/elements/chunks/{tool-DjTRpIpl.js → tool-CDtW7L0z.js} +1 -1
- package/dist/elements/chunks/tooltip-eB226mGK.js +1 -0
- package/dist/elements/chunks/{triangle-alert-DsHTHCPm.js → triangle-alert-C1SNzTqK.js} +1 -1
- package/dist/elements/chunks/use-card-resolution-YZh2MvI5.js +1 -0
- package/dist/elements/chunks/{variant-aurora-Dc4nQUia.js → variant-aurora-Cj1F7D0l.js} +2 -2
- package/dist/elements/chunks/{variant-custom-y_3kVQhS.js → variant-custom-T9gpt7QE.js} +1 -1
- package/dist/elements/chunks/{variant-wave-D5OR1-9Z.js → variant-wave-CxU9z-TE.js} +2 -2
- package/dist/elements/chunks/{video-B7vmenoC.js → video-CK4R7Rus.js} +1 -1
- package/dist/elements/chunks/x-D1qx0aLd.js +1 -0
- package/dist/elements/coachmark.js +1 -1
- package/dist/elements/code-block.js +1 -1
- package/dist/elements/command.js +1 -1
- package/dist/elements/compare.js +1 -1
- package/dist/elements/composer.js +1 -1
- package/dist/elements/confirm-card.js +1 -1
- package/dist/elements/context-meter.js +1 -1
- package/dist/elements/conversation-list.js +1 -1
- package/dist/elements/default-input.d.ts +7 -7
- package/dist/elements/define.d.ts +1 -0
- package/dist/elements/dialog.js +1 -1
- package/dist/elements/disclosure.d.ts +1 -1
- package/dist/elements/editable-label.js +1 -1
- package/dist/elements/element-data-types.d.ts +107 -0
- package/dist/elements/embed.js +1 -1
- package/dist/elements/empty.js +1 -1
- package/dist/elements/feedback-bar.js +1 -1
- package/dist/elements/file-tree.js +1 -1
- package/dist/elements/file-upload.js +1 -1
- package/dist/elements/form.js +1 -1
- package/dist/elements/hover-card.js +1 -1
- package/dist/elements/icon.js +1 -1
- package/dist/elements/image.js +1 -1
- package/dist/elements/input.js +1 -1
- package/dist/elements/kbd.js +1 -1
- package/dist/elements/link-preview.js +1 -1
- package/dist/elements/loader.js +1 -1
- package/dist/elements/markdown.js +1 -1
- package/dist/elements/menu.js +1 -1
- package/dist/elements/message-skills.js +1 -1
- package/dist/elements/message.js +1 -1
- package/dist/elements/model-switcher.js +1 -1
- package/dist/elements/nav.js +1 -1
- package/dist/elements/notice.js +1 -1
- package/dist/elements/pane-group.js +1 -1
- package/dist/elements/pane.js +1 -1
- package/dist/elements/popover.js +1 -1
- package/dist/elements/progress-bar.js +1 -1
- package/dist/elements/prompt-dock.js +1 -1
- package/dist/elements/prompt-input.js +1 -1
- package/dist/elements/prompt-suggestions.js +1 -1
- package/dist/elements/reasoning.js +1 -1
- package/dist/elements/register.d.ts +8 -6
- package/dist/elements/remote.js +1 -1
- package/dist/elements/resizable.js +1 -1
- package/dist/elements/response-stream.js +2 -2
- package/dist/elements/screen.js +1 -1
- package/dist/elements/scroll-area.js +1 -1
- package/dist/elements/scroll-button.js +1 -1
- package/dist/elements/search.js +1 -1
- package/dist/elements/segmented.js +1 -1
- package/dist/elements/separator.js +1 -1
- package/dist/elements/setting-item.js +1 -1
- package/dist/elements/settings-group.js +1 -1
- package/dist/elements/skeleton.js +1 -1
- package/dist/elements/slots.d.ts +16 -0
- package/dist/elements/source.js +1 -1
- package/dist/elements/status.js +1 -1
- package/dist/elements/switch.js +1 -1
- package/dist/elements/tabs.js +1 -1
- package/dist/elements/tasks.js +1 -1
- package/dist/elements/text-shimmer.js +1 -1
- package/dist/elements/thinking-bar.js +1 -1
- package/dist/elements/thread.js +1 -1
- package/dist/elements/toast.js +1 -1
- package/dist/elements/tool.js +1 -1
- package/dist/elements/tooltip.js +1 -1
- package/dist/elements/validate-messages.d.ts +25 -0
- package/dist/elements/voice-input.js +1 -1
- package/dist/elements/voice-output.js +1 -1
- package/dist/elements.d.ts +2725 -214
- package/dist/index.d.ts +163 -125
- package/dist/index.js +6336 -5802
- package/dist/index.server.d.ts +5 -0
- package/dist/index.server.js +5446 -4937
- package/dist/kai-provider.es.d.ts +5 -0
- package/dist/kai-provider.es.js +79 -77
- package/dist/kai.es.d.ts +5 -0
- package/dist/kai.es.js +1 -1
- package/dist/llms/llms-full.txt +762 -148
- package/dist/llms/llms.txt +57 -5
- package/dist/mcp.es.js +4010 -770
- package/dist/primitives/card-component-types.d.ts +11 -0
- package/dist/primitives/card-data-types.d.ts +196 -0
- package/dist/primitives/card-host.d.ts +1 -1
- package/dist/primitives/card-recovery.d.ts +3 -3
- package/dist/primitives/card-registry.d.ts +4 -14
- package/dist/primitives/card-resolution.d.ts +1 -1
- package/dist/primitives/card-routing.d.ts +1 -1
- package/dist/primitives/card-tags.d.ts +11 -0
- package/dist/primitives/card-validate-cards.d.ts +57 -0
- package/dist/primitives/card-validate-generator.testlib.d.ts +20 -0
- package/dist/primitives/card-validate-schemas.d.ts +17 -0
- package/dist/primitives/card-validate.d.ts +24 -0
- package/dist/primitives/create-kai-chat.d.ts +3 -3
- package/dist/primitives/embed-providers.d.ts +1 -1
- package/dist/primitives/link-preview.d.ts +1 -1
- package/dist/primitives/message-feedback.d.ts +2 -2
- package/dist/primitives/toast-store.d.ts +1 -1
- package/dist/react/index.d.ts +717 -299
- package/dist/react/use-kai-chat.d.ts +8 -4
- package/dist/react.d.ts +5 -0
- package/dist/react.js +417 -316
- package/dist/register-impl-bzrZ44ft.js +145 -0
- package/dist/remote/host-embed.d.ts +1 -1
- package/dist/remote/index.d.ts +2 -2
- package/dist/remote/provider-runtime.d.ts +2 -2
- package/dist/remote/provider.d.ts +2 -2
- package/dist/remote/validate.d.ts +1 -1
- package/dist/remote/wire.d.ts +1 -1
- package/dist/schemas/artifact.schema.json +92 -0
- package/dist/schemas/embed.schema.json +0 -2
- package/dist/schemas/from-tool-call.d.ts +48 -0
- package/dist/schemas/index.d.ts +48 -0
- package/dist/schemas/link.schema.json +0 -2
- package/dist/schemas/provider-subsets.d.ts +136 -0
- package/dist/schemas/registry.d.ts +140 -0
- package/dist/schemas/tool-defs.d.ts +121 -0
- package/dist/schemas.d.ts +5 -0
- package/dist/schemas.js +717 -0
- package/dist/solid-BCJUQqwS.js +22750 -0
- package/dist/solid-BdENBcEq.js +20108 -0
- package/dist/solid.d.ts +66 -0
- package/dist/solid.js +261 -0
- package/dist/solid.server.d.ts +5 -0
- package/dist/solid.server.js +261 -0
- package/dist/state/index.d.ts +14 -4
- package/dist/state/messages.d.ts +8 -3
- package/dist/state/mock.d.ts +46 -0
- package/dist/state/parts.d.ts +85 -0
- package/dist/state/stream.d.ts +15 -9
- package/dist/state.d.ts +5 -0
- package/dist/state.js +253 -84
- package/dist/ui/action-icons.d.ts +1 -1
- package/dist/ui/collapsible.d.ts +11 -6
- package/dist/ui/dropdown.d.ts +47 -42
- package/dist/ui/pane-group.d.ts +1 -1
- package/dist/variant-aurora-1wMcXRUS.js +381 -0
- package/dist/variant-aurora-BKHHiOgL.js +391 -0
- package/dist/{variant-aurora-DVtGqVH6.js → variant-aurora-DOb_o4pC.js} +1 -1
- package/dist/{variant-custom-Dif-IV4u.js → variant-custom-CJGB0Kbw.js} +1 -1
- package/dist/variant-custom-Co0CkXJF.js +200 -0
- package/dist/variant-custom-DWSSgmd2.js +170 -0
- package/dist/variant-wave-C3-45cL6.js +218 -0
- package/dist/{variant-wave-DbfNdvSi.js → variant-wave-CEODq-9q.js} +1 -1
- package/dist/variant-wave-jdXBnCUZ.js +208 -0
- package/dist/wire/chunk.d.ts +171 -0
- package/dist/wire/consume.d.ts +26 -0
- package/dist/wire/encode.d.ts +148 -0
- package/dist/wire/formats/anthropic.d.ts +2 -0
- package/dist/wire/formats/openai.d.ts +5 -0
- package/dist/wire/index.d.ts +14 -0
- package/dist/wire/read.d.ts +26 -0
- package/dist/wire/sink-helpers.d.ts +21 -0
- package/dist/wire/sse.d.ts +33 -0
- package/dist/wire.d.ts +5 -53
- package/dist/wire.js +898 -0
- package/frameworks/react/index.tsx +183 -154
- package/frameworks/react/runtime.tsx +21 -1
- package/frameworks/react/use-kai-chat.tsx +11 -1
- package/llms-full.txt +762 -148
- package/llms.txt +57 -5
- package/package.json +61 -8
- package/src/agent-tooling/archetypes.ts +96 -0
- package/src/agent-tooling/integrations/anthropic.ts +412 -0
- package/src/agent-tooling/integrations/cloudflare.ts +136 -52
- package/src/agent-tooling/integrations/langgraph.ts +67 -13
- package/src/agent-tooling/integrations/mastra.ts +120 -12
- package/src/agent-tooling/integrations/mock.ts +43 -8
- package/src/agent-tooling/integrations/ollama.ts +61 -24
- package/src/agent-tooling/integrations/openai.ts +87 -0
- package/src/agent-tooling/integrations/openrouter.ts +56 -8
- package/src/agent-tooling/integrations/pi.ts +79 -23
- package/src/agent-tooling/integrations/pydantic-ai.ts +24 -2
- package/src/agent-tooling/integrations/vercel-ai-sdk.ts +84 -13
- package/src/agent-tooling/mcp/manifest.ts +206 -25
- package/src/agent-tooling/mcp/tools/debug.ts +13 -7
- package/src/agent-tooling/mcp/tools/reference.ts +285 -6
- package/src/agent-tooling/mcp/tools/scaffold.ts +3345 -675
- package/src/agent-tooling/registry.ts +17 -0
- package/src/agent-tooling/types.ts +229 -1
- package/src/components/artifact-card.tsx +120 -0
- package/src/components/audio-visualizer/index.tsx +9 -0
- package/src/components/audio-visualizer/labs/lab-choreography.ts +187 -0
- package/src/components/audio-visualizer/labs/lab-shaders.ts +363 -0
- package/src/components/audio-visualizer/labs/lab-visualizer.tsx +102 -0
- package/src/components/audio-visualizer/shader-canvas.tsx +31 -1
- package/src/components/card-fallback.tsx +42 -10
- package/src/components/card-renderer.tsx +146 -9
- package/src/components/chat-container.tsx +4 -0
- package/src/components/chat-thread.tsx +118 -51
- package/src/components/choice-card.tsx +17 -29
- package/src/components/composer.tsx +12 -2
- package/src/components/confirm-card.tsx +24 -20
- package/src/components/context.tsx +12 -4
- package/src/components/conversation-list.tsx +18 -2
- package/src/components/file-tree.tsx +11 -22
- package/src/components/file-upload.tsx +14 -8
- package/src/components/form.tsx +14 -47
- package/src/components/loader.tsx +39 -12
- package/src/components/message-skills.tsx +4 -0
- package/src/components/message.tsx +294 -46
- package/src/components/reasoning.tsx +92 -5
- package/src/components/response-compare-types.ts +25 -0
- package/src/components/response-compare.tsx +4 -9
- package/src/components/source.tsx +50 -24
- package/src/components/tasks-card.tsx +10 -33
- package/src/components/thread.tsx +84 -42
- package/src/components/toast.tsx +11 -5
- package/src/components/tool-classify.ts +26 -0
- package/src/components/tool-types.ts +31 -1
- package/src/elements/agent-card.tsx +11 -11
- package/src/elements/artifact.tsx +15 -7
- package/src/elements/attachments.tsx +6 -4
- package/src/elements/avatar.tsx +1 -1
- package/src/elements/button.tsx +3 -3
- package/src/elements/card.tsx +2 -2
- package/src/elements/cards.tsx +109 -14
- package/src/elements/chain-of-thought.tsx +14 -10
- package/src/elements/chat-scope-picker.tsx +9 -7
- package/src/elements/chat-types.ts +59 -6
- package/src/elements/chat-workspace.tsx +50 -9
- package/src/elements/chat.tsx +64 -3
- package/src/elements/choice.tsx +8 -8
- package/src/elements/coachmark.tsx +1 -1
- package/src/elements/command.tsx +8 -23
- package/src/elements/compare.tsx +7 -6
- package/src/elements/compiled.css +1 -1
- package/src/elements/composer.tsx +8 -8
- package/src/elements/confirm-card.tsx +9 -9
- package/src/elements/context-meter.tsx +4 -18
- package/src/elements/conversation-list.tsx +14 -9
- package/src/elements/default-input.tsx +3 -3
- package/src/elements/define.tsx +178 -43
- package/src/elements/editable-label.tsx +17 -2
- package/src/elements/element-data-types.ts +112 -0
- package/src/elements/element-meta.json +1596 -304
- package/src/elements/element-types.d.ts +2636 -211
- package/src/elements/feedback-bar.tsx +1 -1
- package/src/elements/file-tree.tsx +1 -1
- package/src/elements/file-upload.tsx +1 -1
- package/src/elements/form.tsx +14 -6
- package/src/elements/input.tsx +1 -1
- package/src/elements/kbd.tsx +1 -1
- package/src/elements/menu.tsx +10 -29
- package/src/elements/message-skills.tsx +7 -9
- package/src/elements/message.tsx +200 -32
- package/src/elements/model-switcher.tsx +5 -3
- package/src/elements/pane.tsx +1 -1
- package/src/elements/prompt-dock.tsx +8 -8
- package/src/elements/prompt-input.tsx +10 -10
- package/src/elements/prompt-suggestions.tsx +7 -4
- package/src/elements/reasoning.tsx +1 -1
- package/src/elements/register.ts +9 -0
- package/src/elements/resizable.globals.d.ts +36 -0
- package/src/elements/resizable.tsx +24 -13
- package/src/elements/response-stream.tsx +1 -1
- package/src/elements/scroll-button.tsx +1 -1
- package/src/elements/search.tsx +6 -1
- package/src/elements/segmented.tsx +5 -11
- package/src/elements/separator.tsx +1 -1
- package/src/elements/slots.ts +57 -24
- package/src/elements/source.tsx +21 -22
- package/src/elements/switch.tsx +3 -3
- package/src/elements/tasks.tsx +5 -4
- package/src/elements/thread.tsx +36 -4
- package/src/elements/toast.tsx +3 -2
- package/src/elements/tool.tsx +1 -1
- package/src/elements/validate-messages.ts +76 -0
- package/src/elements/voice-input.tsx +7 -7
- package/src/elements/voice-output.tsx +4 -4
- package/src/index.ts +141 -6
- package/src/primitives/card-component-types.ts +63 -0
- package/src/primitives/card-data-types.ts +312 -0
- package/src/primitives/card-recovery.ts +13 -2
- package/src/primitives/card-registry.tsx +34 -23
- package/src/primitives/card-schemas/artifact.schema.json +92 -0
- package/src/primitives/card-schemas/embed.schema.json +0 -2
- package/src/primitives/card-schemas/link.schema.json +0 -2
- package/src/primitives/card-tags.ts +61 -0
- package/src/primitives/card-validate-cards.ts +255 -0
- package/src/primitives/card-validate-generator.testlib.ts +38 -0
- package/src/primitives/card-validate-schemas.ts +58 -0
- package/src/primitives/card-validate.ts +48 -20
- package/src/primitives/create-tween.ts +54 -2
- package/src/primitives/message-feedback.ts +3 -2
- package/src/primitives/use-audio-analysis.ts +20 -1
- package/src/primitives/use-sequencer.ts +20 -1
- package/src/schemas/from-tool-call.ts +151 -0
- package/src/schemas/index.ts +340 -0
- package/src/schemas/provider-subsets.ts +538 -0
- package/src/schemas/registry.ts +355 -0
- package/src/schemas/tool-defs.ts +492 -0
- package/src/solid.ts +150 -0
- package/src/state/index.ts +27 -1
- package/src/state/messages.ts +21 -4
- package/src/state/mock.ts +211 -0
- package/src/state/parts.ts +295 -0
- package/src/state/stream.ts +56 -58
- package/src/ui/collapsible.tsx +17 -5
- package/src/ui/dropdown.tsx +46 -12
- package/src/ui/overlay.tsx +10 -4
- package/src/wire/chunk.ts +201 -0
- package/src/wire/consume.ts +440 -0
- package/src/wire/encode.ts +474 -0
- package/src/wire/formats/anthropic.ts +267 -0
- package/src/wire/formats/openai.ts +187 -0
- package/src/wire/index.ts +52 -0
- package/src/wire/read.ts +152 -0
- package/src/wire/sink-helpers.ts +50 -0
- package/src/wire/sse.ts +140 -0
- package/dist/create-tween-hvpmSuwW.js +0 -7
- package/dist/elements/chunks/arrow-left-DQocUFvy.js +0 -1
- package/dist/elements/chunks/audio-visualizer-BqNy7dfm.js +0 -1
- package/dist/elements/chunks/card-BkHbp4BA.js +0 -1
- package/dist/elements/chunks/chat-thread-CkRN6pZ7.js +0 -1
- package/dist/elements/chunks/check-B9-gn6SS.js +0 -1
- package/dist/elements/chunks/chevron-down-BNsxc2hk.js +0 -1
- package/dist/elements/chunks/chevron-right-Hv00StBO.js +0 -1
- package/dist/elements/chunks/circle-0e3KJTDr.js +0 -1
- package/dist/elements/chunks/circle-check-BNAS0JEy.js +0 -1
- package/dist/elements/chunks/code-block-BFUHn6Va.js +0 -1
- package/dist/elements/chunks/context-Cb7k4F-v.js +0 -1
- package/dist/elements/chunks/conversation-list-CvoAkWhN.js +0 -1
- package/dist/elements/chunks/create-tween-oVvAIG8r.js +0 -7
- package/dist/elements/chunks/define-D1din7Ld.js +0 -1
- package/dist/elements/chunks/hover-card-Cmm6Q53m.js +0 -1
- package/dist/elements/chunks/message-BqyXDN3-.js +0 -1
- package/dist/elements/chunks/message-feedback-Djr3z6Yb.js +0 -1
- package/dist/elements/chunks/message-square-vFAgbDaX.js +0 -1
- package/dist/elements/chunks/reasoning-DTpCGtnY.js +0 -1
- package/dist/elements/chunks/scroll-button-B0cH5fXf.js +0 -1
- package/dist/elements/chunks/skeleton-DSXW5Yya.js +0 -1
- package/dist/elements/chunks/slots--V19HwUb.js +0 -1
- package/dist/elements/chunks/textarea-CUwqAX0G.js +0 -1
- package/dist/elements/chunks/tooltip-CgBZCVKp.js +0 -1
- package/dist/elements/chunks/use-card-resolution-BSu_XHjH.js +0 -1
- package/dist/elements/chunks/x-GRUeeQFT.js +0 -1
- package/dist/host-embed.d.ts +0 -33
- package/dist/kai-provider.d.ts +0 -2
- package/dist/origin.d.ts +0 -5
- package/dist/provider-runtime.d.ts +0 -27
- package/dist/register-impl-DQyejdfb.js +0 -145
- package/dist/validate.d.ts +0 -4
- package/dist/version.d.ts +0 -4
- package/src/components/component-meta.json +0 -4550
- package/src/elements/card-media.jpg +0 -0
- package/src/elements/resizable.d.ts +0 -27
- package/src/elements/video-poster.jpg +0 -0
|
@@ -4,12 +4,22 @@
|
|
|
4
4
|
"className": "KaiAgentCardElement",
|
|
5
5
|
"displayName": "AgentCard",
|
|
6
6
|
"props": [
|
|
7
|
+
{
|
|
8
|
+
"name": "theme",
|
|
9
|
+
"type": "\"light\" | \"dark\" | \"auto\"",
|
|
10
|
+
"optional": true,
|
|
11
|
+
"scalar": true,
|
|
12
|
+
"description": "Color mode (`auto` follows prefers-color-scheme).",
|
|
13
|
+
"default": "'auto'",
|
|
14
|
+
"universal": true,
|
|
15
|
+
"displayType": "\"light\" | \"dark\" | \"auto\""
|
|
16
|
+
},
|
|
7
17
|
{
|
|
8
18
|
"name": "name",
|
|
9
19
|
"type": "undefined | string",
|
|
10
20
|
"optional": true,
|
|
11
21
|
"scalar": true,
|
|
12
|
-
"description": "The agent's name
|
|
22
|
+
"description": "The agent's name, the primary label. Attribute: `name`.",
|
|
13
23
|
"displayType": "undefined | string"
|
|
14
24
|
},
|
|
15
25
|
{
|
|
@@ -25,7 +35,7 @@
|
|
|
25
35
|
"type": "undefined | false | true",
|
|
26
36
|
"optional": true,
|
|
27
37
|
"scalar": true,
|
|
28
|
-
"description": "Raise a prominent \"Needs you\" pill plus a glowing amber edge
|
|
38
|
+
"description": "Raise a prominent \"Needs you\" pill plus a glowing amber edge. This is the attention-routing signal that pulls focus to this agent. Attribute: `needs-attention`.",
|
|
29
39
|
"displayType": "undefined | false | true"
|
|
30
40
|
},
|
|
31
41
|
{
|
|
@@ -33,7 +43,10 @@
|
|
|
33
43
|
"type": "undefined | { tone: \"working\" | \"idle\" | \"done\" | \"error\" | \"blocked\"; label?: undefined | string; pulse?: undefined | false | true }",
|
|
34
44
|
"optional": true,
|
|
35
45
|
"scalar": false,
|
|
36
|
-
"description": "Run status
|
|
46
|
+
"description": "Run status. A JS PROPERTY (object), not an attribute. Shape: `{ tone, label?, pulse? }`, where `tone` is one of `working` | `idle` | `done` | `error` | `blocked` (maps to the kit's tool hues), `label` is an optional short string beside the dot, and `pulse` animates the dot. Set it with `el.status = { tone: 'working', label: 'Working', pulse: true }`.",
|
|
47
|
+
"typeName": "AgentStatus",
|
|
48
|
+
"typeShape": "{ tone: \"working\" | \"idle\" | \"done\" | \"error\" | \"blocked\"; label?: undefined | string; pulse?: undefined | false | true }",
|
|
49
|
+
"typeImport": "AgentStatus",
|
|
37
50
|
"displayType": "undefined | { tone: \"working\" | \"idle\" | \"done\" | \"error\" | \"blocked\"; label?: undefined | string; pulse?: undefined | false | true }"
|
|
38
51
|
}
|
|
39
52
|
],
|
|
@@ -41,7 +54,7 @@
|
|
|
41
54
|
{
|
|
42
55
|
"name": "kai-activate",
|
|
43
56
|
"detail": null,
|
|
44
|
-
"description": "The card was activated
|
|
57
|
+
"description": "The card was activated by a click, or by Enter / Space while focused. Promote this agent back to focus.",
|
|
45
58
|
"displayDetail": null
|
|
46
59
|
},
|
|
47
60
|
{
|
|
@@ -78,6 +91,16 @@
|
|
|
78
91
|
"className": "KaiArtifactElement",
|
|
79
92
|
"displayName": "Artifact",
|
|
80
93
|
"props": [
|
|
94
|
+
{
|
|
95
|
+
"name": "theme",
|
|
96
|
+
"type": "\"light\" | \"dark\" | \"auto\"",
|
|
97
|
+
"optional": true,
|
|
98
|
+
"scalar": true,
|
|
99
|
+
"description": "Color mode (`auto` follows prefers-color-scheme).",
|
|
100
|
+
"default": "'auto'",
|
|
101
|
+
"universal": true,
|
|
102
|
+
"displayType": "\"light\" | \"dark\" | \"auto\""
|
|
103
|
+
},
|
|
81
104
|
{
|
|
82
105
|
"name": "src",
|
|
83
106
|
"type": "undefined | string",
|
|
@@ -88,15 +111,15 @@
|
|
|
88
111
|
},
|
|
89
112
|
{
|
|
90
113
|
"name": "files",
|
|
91
|
-
"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\" }[]",
|
|
92
|
-
"optional":
|
|
114
|
+
"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\" }[]",
|
|
115
|
+
"optional": true,
|
|
93
116
|
"scalar": false,
|
|
94
|
-
"description": "Files for the Code tab tree + each file's preview `url`. Set as a JS property (array).",
|
|
95
|
-
"typeName": "
|
|
117
|
+
"description": "Files for the Code tab tree + each file's preview `url`. Omit for a preview-only artifact (the Code tab then has nothing to show; pair it with `no-tabs` to hide the toggle). Set as a JS property (array).",
|
|
118
|
+
"typeName": "ArtifactCardFile[]",
|
|
96
119
|
"typeShape": "{ 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\" }[]",
|
|
97
120
|
"default": "[]",
|
|
98
|
-
"typeImport": "
|
|
99
|
-
"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\" }[]"
|
|
121
|
+
"typeImport": "ArtifactCardFile",
|
|
122
|
+
"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\" }[]"
|
|
100
123
|
},
|
|
101
124
|
{
|
|
102
125
|
"name": "tab",
|
|
@@ -119,7 +142,7 @@
|
|
|
119
142
|
"type": "undefined | string",
|
|
120
143
|
"optional": true,
|
|
121
144
|
"scalar": true,
|
|
122
|
-
"description": "Selected file path
|
|
145
|
+
"description": "Selected file path. Syncs the tree highlight, Code source, and preview.",
|
|
123
146
|
"displayType": "undefined | string"
|
|
124
147
|
},
|
|
125
148
|
{
|
|
@@ -251,6 +274,12 @@
|
|
|
251
274
|
"description": "Artifact's own maximize button toggled (consumer-observable; non-bubbling).",
|
|
252
275
|
"displayDetail": "{ maximized: false | true }"
|
|
253
276
|
},
|
|
277
|
+
{
|
|
278
|
+
"name": "kai-maximize-intent",
|
|
279
|
+
"detail": "{ requested: false | true }",
|
|
280
|
+
"description": "The maximize PROTOCOL intent, raised as a raw bubbling + composed CustomEvent (not through `dispatch`) so an enclosing `<kai-resizable>` can catch it and maximize the containing panel. Declared here so it is typed and reaches the generated API. Listen for it to drive maximize from your own chrome, or re-emit it to trigger one.",
|
|
281
|
+
"displayDetail": "{ requested: false | true }"
|
|
282
|
+
},
|
|
254
283
|
{
|
|
255
284
|
"name": "kai-navigate",
|
|
256
285
|
"detail": "{ url: string }",
|
|
@@ -293,7 +322,7 @@
|
|
|
293
322
|
"name": "navigate",
|
|
294
323
|
"params": "url: string",
|
|
295
324
|
"returns": "void",
|
|
296
|
-
"description": "Push + load a url in the preview
|
|
325
|
+
"description": "Push + load a url in the preview, the path-field submit path (fires kai-navigate)."
|
|
297
326
|
},
|
|
298
327
|
{
|
|
299
328
|
"name": "selectFile",
|
|
@@ -305,13 +334,13 @@
|
|
|
305
334
|
"name": "openExternal",
|
|
306
335
|
"params": "",
|
|
307
336
|
"returns": "void",
|
|
308
|
-
"description": "Open the current url in a new browser tab (no-op when there's no concrete url). Named openExternal, NOT openInTab
|
|
337
|
+
"description": "Open the current url in a new browser tab (no-op when there's no concrete url). Named openExternal, NOT openInTab, which is a prop (toolbar button visibility)."
|
|
309
338
|
},
|
|
310
339
|
{
|
|
311
340
|
"name": "maximize",
|
|
312
341
|
"params": "",
|
|
313
342
|
"returns": "void",
|
|
314
|
-
"description": "Enter the maximized view-state (fires kai-maximize-change{maximized:true}). Named maximize, NOT maximized
|
|
343
|
+
"description": "Enter the maximized view-state (fires kai-maximize-change{maximized:true}). Named maximize, NOT maximized, which is a prop."
|
|
315
344
|
},
|
|
316
345
|
{
|
|
317
346
|
"name": "restore",
|
|
@@ -334,17 +363,27 @@
|
|
|
334
363
|
"className": "KaiAttachmentsElement",
|
|
335
364
|
"displayName": "Attachments",
|
|
336
365
|
"props": [
|
|
366
|
+
{
|
|
367
|
+
"name": "theme",
|
|
368
|
+
"type": "\"light\" | \"dark\" | \"auto\"",
|
|
369
|
+
"optional": true,
|
|
370
|
+
"scalar": true,
|
|
371
|
+
"description": "Color mode (`auto` follows prefers-color-scheme).",
|
|
372
|
+
"default": "'auto'",
|
|
373
|
+
"universal": true,
|
|
374
|
+
"displayType": "\"light\" | \"dark\" | \"auto\""
|
|
375
|
+
},
|
|
337
376
|
{
|
|
338
377
|
"name": "items",
|
|
339
|
-
"type": "{ id: string; type: \"file\" | \"source-document\"; filename?: undefined | string; mediaType?: undefined | string; url?: undefined | string; title?: undefined | string }[]",
|
|
340
|
-
"optional":
|
|
378
|
+
"type": "undefined | { id: string; type: \"file\" | \"source-document\"; filename?: undefined | string; mediaType?: undefined | string; url?: undefined | string; title?: undefined | string }[]",
|
|
379
|
+
"optional": true,
|
|
341
380
|
"scalar": false,
|
|
342
|
-
"description": "The attachments to render. Set as a JS property (array).",
|
|
381
|
+
"description": "The attachments to render. Omit (or pass an empty array) for the empty state, which shows `emptyText` if set and nothing otherwise. Set as a JS property (array).",
|
|
343
382
|
"typeName": "AttachmentData[]",
|
|
344
383
|
"typeShape": "{ id: string; type: \"file\" | \"source-document\"; filename?: undefined | string; mediaType?: undefined | string; url?: undefined | string; title?: undefined | string }[]",
|
|
345
384
|
"default": "[]",
|
|
346
385
|
"typeImport": "AttachmentData",
|
|
347
|
-
"displayType": "AttachmentData[]"
|
|
386
|
+
"displayType": "AttachmentData[] | undefined"
|
|
348
387
|
},
|
|
349
388
|
{
|
|
350
389
|
"name": "variant",
|
|
@@ -451,7 +490,7 @@
|
|
|
451
490
|
"parts": [
|
|
452
491
|
{
|
|
453
492
|
"name": "preview",
|
|
454
|
-
"doc": "The image shown in an attachment’s hover-card preview. Bounded by default (max ~320×256, aspect preserved) so a large image never blows up the card
|
|
493
|
+
"doc": "The image shown in an attachment’s hover-card preview. Bounded by default (max ~320×256, aspect preserved) so a large image never blows up the card. Raise or lower the cap from outside.",
|
|
455
494
|
"recipe": "kai-attachments::part(preview) { max-width: 32rem; max-height: 24rem }"
|
|
456
495
|
}
|
|
457
496
|
]
|
|
@@ -461,6 +500,16 @@
|
|
|
461
500
|
"className": "KaiAudioVisualizerElement",
|
|
462
501
|
"displayName": "AudioVisualizer",
|
|
463
502
|
"props": [
|
|
503
|
+
{
|
|
504
|
+
"name": "theme",
|
|
505
|
+
"type": "\"light\" | \"dark\" | \"auto\"",
|
|
506
|
+
"optional": true,
|
|
507
|
+
"scalar": true,
|
|
508
|
+
"description": "Color mode (`auto` follows prefers-color-scheme).",
|
|
509
|
+
"default": "'auto'",
|
|
510
|
+
"universal": true,
|
|
511
|
+
"displayType": "\"light\" | \"dark\" | \"auto\""
|
|
512
|
+
},
|
|
464
513
|
{
|
|
465
514
|
"name": "variant",
|
|
466
515
|
"type": "undefined | string",
|
|
@@ -582,6 +631,9 @@
|
|
|
582
631
|
"optional": true,
|
|
583
632
|
"scalar": false,
|
|
584
633
|
"description": "Custom fragment shader for `variant=\"custom\"`. JS property only.",
|
|
634
|
+
"typeName": "ShaderSpec",
|
|
635
|
+
"typeShape": "{ fragment: string; uniforms?: undefined | Record<string, { type: \"1f\" | \"1i\" | \"1fv\" | \"2f\" | \"3f\" | \"3fv\" | \"4f\" | \"4fv\" | \"Matrix2fv\" | \"Matrix3fv\" | \"Matrix4fv\"; value: number | number[] }> }",
|
|
636
|
+
"typeImport": "ShaderSpec",
|
|
585
637
|
"displayType": "undefined | { fragment: string; uniforms?: undefined | Record<string, { type: \"1f\" | \"1i\" | \"1fv\" | \"2f\" | \"3f\" | \"3fv\" | \"4f\" | \"4fv\" | \"Matrix2fv\" | \"Matrix3fv\" | \"Matrix4fv\"; value: number | number[] }> }"
|
|
586
638
|
},
|
|
587
639
|
{
|
|
@@ -631,6 +683,16 @@
|
|
|
631
683
|
"className": "KaiAvatarElement",
|
|
632
684
|
"displayName": "Avatar",
|
|
633
685
|
"props": [
|
|
686
|
+
{
|
|
687
|
+
"name": "theme",
|
|
688
|
+
"type": "\"light\" | \"dark\" | \"auto\"",
|
|
689
|
+
"optional": true,
|
|
690
|
+
"scalar": true,
|
|
691
|
+
"description": "Color mode (`auto` follows prefers-color-scheme).",
|
|
692
|
+
"default": "'auto'",
|
|
693
|
+
"universal": true,
|
|
694
|
+
"displayType": "\"light\" | \"dark\" | \"auto\""
|
|
695
|
+
},
|
|
634
696
|
{
|
|
635
697
|
"name": "src",
|
|
636
698
|
"type": "undefined | string",
|
|
@@ -652,7 +714,7 @@
|
|
|
652
714
|
"type": "undefined | string",
|
|
653
715
|
"optional": true,
|
|
654
716
|
"scalar": true,
|
|
655
|
-
"description": "Short text shown when there's no image
|
|
717
|
+
"description": "Short text shown when there's no image, usually initials (e.g. \"JD\", \"AI\").",
|
|
656
718
|
"default": "''",
|
|
657
719
|
"displayType": "undefined | string"
|
|
658
720
|
},
|
|
@@ -682,6 +744,16 @@
|
|
|
682
744
|
"className": "KaiBadgeElement",
|
|
683
745
|
"displayName": "Badge",
|
|
684
746
|
"props": [
|
|
747
|
+
{
|
|
748
|
+
"name": "theme",
|
|
749
|
+
"type": "\"light\" | \"dark\" | \"auto\"",
|
|
750
|
+
"optional": true,
|
|
751
|
+
"scalar": true,
|
|
752
|
+
"description": "Color mode (`auto` follows prefers-color-scheme).",
|
|
753
|
+
"default": "'auto'",
|
|
754
|
+
"universal": true,
|
|
755
|
+
"displayType": "\"light\" | \"dark\" | \"auto\""
|
|
756
|
+
},
|
|
685
757
|
{
|
|
686
758
|
"name": "variant",
|
|
687
759
|
"type": "undefined | \"default\" | \"count\" | \"citation\"",
|
|
@@ -702,6 +774,13 @@
|
|
|
702
774
|
}
|
|
703
775
|
],
|
|
704
776
|
"tokens": [],
|
|
777
|
+
"slots": [
|
|
778
|
+
{
|
|
779
|
+
"name": "",
|
|
780
|
+
"mode": "inject",
|
|
781
|
+
"doc": "The badge's label: text, or a small inline icon plus text."
|
|
782
|
+
}
|
|
783
|
+
],
|
|
705
784
|
"parts": [
|
|
706
785
|
{
|
|
707
786
|
"name": "badge",
|
|
@@ -715,12 +794,22 @@
|
|
|
715
794
|
"className": "KaiButtonElement",
|
|
716
795
|
"displayName": "Button",
|
|
717
796
|
"props": [
|
|
797
|
+
{
|
|
798
|
+
"name": "theme",
|
|
799
|
+
"type": "\"light\" | \"dark\" | \"auto\"",
|
|
800
|
+
"optional": true,
|
|
801
|
+
"scalar": true,
|
|
802
|
+
"description": "Color mode (`auto` follows prefers-color-scheme).",
|
|
803
|
+
"default": "'auto'",
|
|
804
|
+
"universal": true,
|
|
805
|
+
"displayType": "\"light\" | \"dark\" | \"auto\""
|
|
806
|
+
},
|
|
718
807
|
{
|
|
719
808
|
"name": "variant",
|
|
720
809
|
"type": "undefined | \"default\" | \"subtle\" | \"ghost\" | \"outline\" | \"destructive\"",
|
|
721
810
|
"optional": true,
|
|
722
811
|
"scalar": true,
|
|
723
|
-
"description": "Visual style. `default` (filled), `subtle` (muted text, hover tint
|
|
812
|
+
"description": "Visual style. `default` (filled), `subtle` (muted text, hover tint, the toolbar icon look), `ghost` (transparent, hover fill), `outline`, or `destructive`. Defaults to `default`.",
|
|
724
813
|
"default": "'default'",
|
|
725
814
|
"displayType": "undefined | \"default\" | \"subtle\" | \"ghost\" | \"outline\" | \"destructive\""
|
|
726
815
|
},
|
|
@@ -771,7 +860,7 @@
|
|
|
771
860
|
"type": "undefined | false | true",
|
|
772
861
|
"optional": true,
|
|
773
862
|
"scalar": true,
|
|
774
|
-
"description": "Stretch the button to the full width of its container (a block button)
|
|
863
|
+
"description": "Stretch the button to the full width of its container (a block button), e.g. a card CTA or a stacked action. Attribute: `full`.",
|
|
775
864
|
"default": "false",
|
|
776
865
|
"displayType": "undefined | false | true"
|
|
777
866
|
},
|
|
@@ -819,7 +908,7 @@
|
|
|
819
908
|
"name": "click",
|
|
820
909
|
"params": "",
|
|
821
910
|
"returns": "void",
|
|
822
|
-
"description": "Programmatically activate the button
|
|
911
|
+
"description": "Programmatically activate the button. Runs the same path as a user click and fires kai-click. Forwarding to the inner button means `disabled` is respected automatically."
|
|
823
912
|
}
|
|
824
913
|
],
|
|
825
914
|
"composedFrom": [
|
|
@@ -831,6 +920,11 @@
|
|
|
831
920
|
],
|
|
832
921
|
"tokens": [],
|
|
833
922
|
"slots": [
|
|
923
|
+
{
|
|
924
|
+
"name": "",
|
|
925
|
+
"mode": "inject",
|
|
926
|
+
"doc": "The button's label. Omit it for an icon-only button (pair with `aria-label`)."
|
|
927
|
+
},
|
|
834
928
|
{
|
|
835
929
|
"name": "icon",
|
|
836
930
|
"mode": "replace",
|
|
@@ -850,6 +944,16 @@
|
|
|
850
944
|
"className": "KaiCardElement",
|
|
851
945
|
"displayName": "Card",
|
|
852
946
|
"props": [
|
|
947
|
+
{
|
|
948
|
+
"name": "theme",
|
|
949
|
+
"type": "\"light\" | \"dark\" | \"auto\"",
|
|
950
|
+
"optional": true,
|
|
951
|
+
"scalar": true,
|
|
952
|
+
"description": "Color mode (`auto` follows prefers-color-scheme).",
|
|
953
|
+
"default": "'auto'",
|
|
954
|
+
"universal": true,
|
|
955
|
+
"displayType": "\"light\" | \"dark\" | \"auto\""
|
|
956
|
+
},
|
|
853
957
|
{
|
|
854
958
|
"name": "appearance",
|
|
855
959
|
"type": "undefined | \"outlined\" | \"filled\" | \"plain\" | \"accent\"",
|
|
@@ -864,7 +968,7 @@
|
|
|
864
968
|
"type": "undefined | \"vertical\" | \"horizontal\" | \"responsive\"",
|
|
865
969
|
"optional": true,
|
|
866
970
|
"scalar": true,
|
|
867
|
-
"description": "`vertical` (default, media on top) | `horizontal` (media at the start) | `responsive` (horizontal when the card's container is wide enough, else vertical
|
|
971
|
+
"description": "`vertical` (default, media on top) | `horizontal` (media at the start) | `responsive` (horizontal when the card's container is wide enough, else vertical, via a container query on the card's own width). Attribute: `orientation`.",
|
|
868
972
|
"default": "'vertical'",
|
|
869
973
|
"displayType": "undefined | \"vertical\" | \"horizontal\" | \"responsive\""
|
|
870
974
|
},
|
|
@@ -953,6 +1057,11 @@
|
|
|
953
1057
|
],
|
|
954
1058
|
"tokens": [],
|
|
955
1059
|
"slots": [
|
|
1060
|
+
{
|
|
1061
|
+
"name": "",
|
|
1062
|
+
"mode": "inject",
|
|
1063
|
+
"doc": "The card body, below the header/media regions."
|
|
1064
|
+
},
|
|
956
1065
|
{
|
|
957
1066
|
"name": "media",
|
|
958
1067
|
"mode": "inject",
|
|
@@ -1017,12 +1126,25 @@
|
|
|
1017
1126
|
"className": "KaiCardsElement",
|
|
1018
1127
|
"displayName": "Cards",
|
|
1019
1128
|
"props": [
|
|
1129
|
+
{
|
|
1130
|
+
"name": "theme",
|
|
1131
|
+
"type": "\"light\" | \"dark\" | \"auto\"",
|
|
1132
|
+
"optional": true,
|
|
1133
|
+
"scalar": true,
|
|
1134
|
+
"description": "Color mode (`auto` follows prefers-color-scheme).",
|
|
1135
|
+
"default": "'auto'",
|
|
1136
|
+
"universal": true,
|
|
1137
|
+
"displayType": "\"light\" | \"dark\" | \"auto\""
|
|
1138
|
+
},
|
|
1020
1139
|
{
|
|
1021
1140
|
"name": "cards",
|
|
1022
1141
|
"type": "undefined | { 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 } }[]",
|
|
1023
1142
|
"optional": true,
|
|
1024
1143
|
"scalar": false,
|
|
1025
1144
|
"description": "The stream of card envelopes to render. Set as a JS PROPERTY: `el.cards = [...]`.",
|
|
1145
|
+
"typeName": "CardEnvelope[]",
|
|
1146
|
+
"typeShape": "{ 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 } }[]",
|
|
1147
|
+
"typeImport": "CardEnvelope",
|
|
1026
1148
|
"displayType": "undefined | { 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 } }[]"
|
|
1027
1149
|
},
|
|
1028
1150
|
{
|
|
@@ -1033,20 +1155,40 @@
|
|
|
1033
1155
|
"description": "Optional type→tag overrides/additions (merged over the built-ins). Property: `el.types`. Typed as a plain string map (not the `CardTagMap` alias) so the generated React wrapper inlines it instead of emitting an unresolved named type.",
|
|
1034
1156
|
"displayType": "undefined | Record<string, string>"
|
|
1035
1157
|
},
|
|
1158
|
+
{
|
|
1159
|
+
"name": "schemas",
|
|
1160
|
+
"type": "undefined | Record<string, object>",
|
|
1161
|
+
"optional": true,
|
|
1162
|
+
"scalar": false,
|
|
1163
|
+
"description": "JSON Schemas for the card types this app renders, keyed by envelope type. The companion of `types`, which says what DRAWS a card while this says what a VALID one looks like. An OBJECT, so it is a JS property only: `el.schemas = { 'pricing-table': pricingSchema }`, never an attribute. `createCardRegistry(...).validationSchemas` is exactly this shape. Without it the kit validates its own seven built-ins and leaves your own card type, the one your app actually cares about, as the only unchecked thing on screen. A schema here WINS over a built-in of the same name, matching `mergeCardTags`, where your entry is spread over ours. Typed `Record<string, object>` rather than `Record<string, JsonSchema>` deliberately: an imported `.json` schema widens `\"type\"` to `string`, and an authored one carries `$schema`/`title`/`description`/`additionalProperties`, so the tighter type would reject both of the normal ways to supply one. See `CardSchemaMap` in components/card-renderer.tsx.",
|
|
1164
|
+
"displayType": "undefined | Record<string, object>"
|
|
1165
|
+
},
|
|
1036
1166
|
{
|
|
1037
1167
|
"name": "policy",
|
|
1038
1168
|
"type": "undefined | { onSubmit?: undefined | (cardId: string, data: unknown) => void; onAction?: undefined | (cardId: string, action: string, payload?: unknown) => void; onSendPrompt?: undefined | (text: string, opts: { mode: \"compose\" | \"send\"; context?: unknown; }) => void; onOpen?: undefined | (url: string, target: \"tab\" | \"artifact\") => void; onState?: undefined | (cardId: string, patch: unknown) => void; onDismiss?: undefined | (cardId: string) => void; onReopen?: undefined | (cardId: string) => void; onError?: undefined | (cardId: string, message: string) => void; maxSendPromptMode?: undefined | \"compose\" | \"send\" }",
|
|
1039
1169
|
"optional": true,
|
|
1040
1170
|
"scalar": false,
|
|
1041
1171
|
"description": "Optional CardPolicy handling child events. Property: `el.policy`.",
|
|
1172
|
+
"typeName": "CardPolicy",
|
|
1173
|
+
"typeShape": "{ onSubmit?: undefined | (cardId: string, data: unknown) => void; onAction?: undefined | (cardId: string, action: string, payload?: unknown) => void; onSendPrompt?: undefined | (text: string, opts: { mode: \"compose\" | \"send\"; context?: unknown; }) => void; onOpen?: undefined | (url: string, target: \"tab\" | \"artifact\") => void; onState?: undefined | (cardId: string, patch: unknown) => void; onDismiss?: undefined | (cardId: string) => void; onReopen?: undefined | (cardId: string) => void; onError?: undefined | (cardId: string, message: string) => void; maxSendPromptMode?: undefined | \"compose\" | \"send\" }",
|
|
1174
|
+
"typeImport": "CardPolicy",
|
|
1042
1175
|
"displayType": "undefined | { onSubmit?: undefined | (cardId: string, data: unknown) => void; onAction?: undefined | (cardId: string, action: string, payload?: unknown) => void; onSendPrompt?: undefined | (text: string, opts: { mode: \"compose\" | \"send\"; context?: unknown; }) => void; onOpen?: undefined | (url: string, target: \"tab\" | \"artifact\") => void; onState?: undefined | (cardId: string, patch: unknown) => void; onDismiss?: undefined | (cardId: string) => void; onReopen?: undefined | (cardId: string) => void; onError?: undefined | (cardId: string, message: string) => void; maxSendPromptMode?: undefined | \"compose\" | \"send\" }"
|
|
1176
|
+
},
|
|
1177
|
+
{
|
|
1178
|
+
"name": "validateCards",
|
|
1179
|
+
"type": "undefined | false | true",
|
|
1180
|
+
"optional": true,
|
|
1181
|
+
"scalar": true,
|
|
1182
|
+
"description": "Validate each envelope's `data` against the schema for its type before rendering it, using a built-in's own schema or yours from `schemas`. Default `true`; set `validate-cards=\"false\"` (or `el.validateCards = false`) to opt out. A hard failure (wrong type, a missing required field) renders a diagnostic naming the field instead of the card; a soft failure (bounds) renders the card unchanged. Both emit a contract `error` event. On in production too: a model emitting a bad shape is a production failure mode, so stripping the check there would hide it from exactly the person who needs to see it.",
|
|
1183
|
+
"default": "true",
|
|
1184
|
+
"displayType": "undefined | false | true"
|
|
1043
1185
|
}
|
|
1044
1186
|
],
|
|
1045
1187
|
"events": [
|
|
1046
1188
|
{
|
|
1047
1189
|
"name": "kai-card-resolved",
|
|
1048
1190
|
"detail": "{ cardId: string; resolution: { 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 } }",
|
|
1049
|
-
"description": "A child card transitioned to a resolved/deferred state (an action was chosen, a form/tasks submission landed, or it was dismissed)
|
|
1191
|
+
"description": "A child card transitioned to a resolved/deferred state (an action was chosen, a form/tasks submission landed, or it was dismissed). Re-emitted off the host as a non-bubbling convenience event so a consumer can observe resolution centrally without diffing the cards array. `detail` = `{ cardId, resolution }`. (A `reopen` un-resolves a card and has no `CardResolution`, so it does NOT fire this; observe reopen via the underlying bubbling `kai-card` event.)",
|
|
1050
1192
|
"displayDetail": "{ cardId: string; resolution: { 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 } }"
|
|
1051
1193
|
}
|
|
1052
1194
|
],
|
|
@@ -1055,13 +1197,13 @@
|
|
|
1055
1197
|
"name": "resolve",
|
|
1056
1198
|
"params": "cardId: string, resolution: CardResolution",
|
|
1057
1199
|
"returns": "void",
|
|
1058
|
-
"description": "Programmatically resolve a child card by id: set that envelope's `resolution` so the child re-renders into its read-only/resolved view
|
|
1200
|
+
"description": "Programmatically resolve a child card by id: set that envelope's `resolution` so the child re-renders into its read-only/resolved view. The imperative twin of the consumer mutating the cards array. No-op for an unknown id."
|
|
1059
1201
|
},
|
|
1060
1202
|
{
|
|
1061
1203
|
"name": "dismiss",
|
|
1062
1204
|
"params": "cardId: string",
|
|
1063
1205
|
"returns": "void",
|
|
1064
|
-
"description": "Collapse a card to its re-openable stub from the host side
|
|
1206
|
+
"description": "Collapse a card to its re-openable stub from the host side. Convenience for `resolve(cardId, { kind: 'dismissed' })`."
|
|
1065
1207
|
},
|
|
1066
1208
|
{
|
|
1067
1209
|
"name": "getCard",
|
|
@@ -1084,23 +1226,34 @@
|
|
|
1084
1226
|
"className": "KaiChainOfThoughtElement",
|
|
1085
1227
|
"displayName": "ChainOfThought",
|
|
1086
1228
|
"props": [
|
|
1229
|
+
{
|
|
1230
|
+
"name": "theme",
|
|
1231
|
+
"type": "\"light\" | \"dark\" | \"auto\"",
|
|
1232
|
+
"optional": true,
|
|
1233
|
+
"scalar": true,
|
|
1234
|
+
"description": "Color mode (`auto` follows prefers-color-scheme).",
|
|
1235
|
+
"default": "'auto'",
|
|
1236
|
+
"universal": true,
|
|
1237
|
+
"displayType": "\"light\" | \"dark\" | \"auto\""
|
|
1238
|
+
},
|
|
1087
1239
|
{
|
|
1088
1240
|
"name": "steps",
|
|
1089
|
-
"type": "{ label: string; content?: undefined | string; id?: undefined | string }[]",
|
|
1090
|
-
"optional":
|
|
1241
|
+
"type": "undefined | { label: string; content?: undefined | string; id?: undefined | string }[]",
|
|
1242
|
+
"optional": true,
|
|
1091
1243
|
"scalar": false,
|
|
1092
|
-
"description": "The reasoning steps. Set as a JS property. Compound sub-parts collapse to this one data model (Route 1). Each `{ label, content?, id? }`.",
|
|
1244
|
+
"description": "The reasoning steps. Set as a JS property. Compound sub-parts collapse to this one data model (Route 1). Each `{ label, content?, id? }`. Omit to supply the steps as `<kai-step>` light-DOM children instead; when both are present the property's steps come first.",
|
|
1093
1245
|
"typeName": "ChainOfThoughtStepData[]",
|
|
1094
1246
|
"typeShape": "{ label: string; content?: undefined | string; id?: undefined | string }[]",
|
|
1095
1247
|
"default": "[]",
|
|
1096
|
-
"
|
|
1248
|
+
"typeImport": "ChainOfThoughtStepData",
|
|
1249
|
+
"displayType": "undefined | { label: string; content?: undefined | string; id?: undefined | string }[]"
|
|
1097
1250
|
},
|
|
1098
1251
|
{
|
|
1099
1252
|
"name": "type",
|
|
1100
1253
|
"type": "undefined | \"single\" | \"multiple\"",
|
|
1101
1254
|
"optional": true,
|
|
1102
1255
|
"scalar": true,
|
|
1103
|
-
"description": "Open mode: `'multiple'` (default
|
|
1256
|
+
"description": "Open mode: `'multiple'` (default, any number of steps open at once) or `'single'` (at most one open; opening a step closes the others).",
|
|
1104
1257
|
"displayType": "undefined | \"single\" | \"multiple\""
|
|
1105
1258
|
},
|
|
1106
1259
|
{
|
|
@@ -1116,7 +1269,7 @@
|
|
|
1116
1269
|
"type": "undefined | string | string[]",
|
|
1117
1270
|
"optional": true,
|
|
1118
1271
|
"scalar": false,
|
|
1119
|
-
"description": "Uncontrolled INITIAL open step key(s)
|
|
1272
|
+
"description": "Uncontrolled INITIAL open step key(s), seeding which steps render expanded. Ignored once `value` is provided. Set as a JS property.",
|
|
1120
1273
|
"displayType": "undefined | string | string[]"
|
|
1121
1274
|
}
|
|
1122
1275
|
],
|
|
@@ -1124,7 +1277,7 @@
|
|
|
1124
1277
|
{
|
|
1125
1278
|
"name": "kai-value-change",
|
|
1126
1279
|
"detail": "{ value: string | string[] }",
|
|
1127
|
-
"description": "The open set changed
|
|
1280
|
+
"description": "The open set changed, by user click OR an expand()/collapse()/toggle() call. `value` is a string in `single` mode, a string[] in `multiple` mode. (Maps Radix Accordion's onValueChange.)",
|
|
1128
1281
|
"displayDetail": "{ value: string | string[] }"
|
|
1129
1282
|
}
|
|
1130
1283
|
],
|
|
@@ -1133,13 +1286,13 @@
|
|
|
1133
1286
|
"name": "expand",
|
|
1134
1287
|
"params": "index?: number",
|
|
1135
1288
|
"returns": "void",
|
|
1136
|
-
"description": "Open one step's detail by index, or
|
|
1289
|
+
"description": "Open one step's detail by index, or ALL steps when called with no arg. In `single` mode opening one step closes the others (expand-all keeps the last)."
|
|
1137
1290
|
},
|
|
1138
1291
|
{
|
|
1139
1292
|
"name": "collapse",
|
|
1140
1293
|
"params": "index?: number",
|
|
1141
1294
|
"returns": "void",
|
|
1142
|
-
"description": "Close one step's detail by index, or
|
|
1295
|
+
"description": "Close one step's detail by index, or ALL steps when called with no arg."
|
|
1143
1296
|
},
|
|
1144
1297
|
{
|
|
1145
1298
|
"name": "toggle",
|
|
@@ -1155,7 +1308,18 @@
|
|
|
1155
1308
|
"storyId": "solid-advanced-elements-chainofthoughtaccordion--docs"
|
|
1156
1309
|
}
|
|
1157
1310
|
],
|
|
1158
|
-
"tokens": []
|
|
1311
|
+
"tokens": [],
|
|
1312
|
+
"declarativeChildren": [
|
|
1313
|
+
{
|
|
1314
|
+
"tag": "kai-step",
|
|
1315
|
+
"attributes": [
|
|
1316
|
+
"label",
|
|
1317
|
+
"step-id"
|
|
1318
|
+
],
|
|
1319
|
+
"text": true,
|
|
1320
|
+
"description": "Parse a single light-DOM `<kai-step>` element into a `Step` descriptor. Attribute mapping: - `label` → Step.label (the always-visible heading) - `step-id` → Step.id (optional stable open-set key) - textContent → Step.content (optional expandable detail)"
|
|
1321
|
+
}
|
|
1322
|
+
]
|
|
1159
1323
|
},
|
|
1160
1324
|
{
|
|
1161
1325
|
"tag": "kai-chat",
|
|
@@ -1163,16 +1327,23 @@
|
|
|
1163
1327
|
"displayName": "Chat",
|
|
1164
1328
|
"props": [
|
|
1165
1329
|
{
|
|
1166
|
-
"name": "
|
|
1167
|
-
"type": "
|
|
1168
|
-
"optional":
|
|
1169
|
-
"scalar":
|
|
1170
|
-
"description": "
|
|
1171
|
-
"
|
|
1172
|
-
"
|
|
1173
|
-
"
|
|
1174
|
-
|
|
1175
|
-
|
|
1330
|
+
"name": "theme",
|
|
1331
|
+
"type": "\"light\" | \"dark\" | \"auto\"",
|
|
1332
|
+
"optional": true,
|
|
1333
|
+
"scalar": true,
|
|
1334
|
+
"description": "Color mode (`auto` follows prefers-color-scheme).",
|
|
1335
|
+
"default": "'auto'",
|
|
1336
|
+
"universal": true,
|
|
1337
|
+
"displayType": "\"light\" | \"dark\" | \"auto\""
|
|
1338
|
+
},
|
|
1339
|
+
{
|
|
1340
|
+
"name": "search",
|
|
1341
|
+
"type": "undefined | false | true",
|
|
1342
|
+
"optional": true,
|
|
1343
|
+
"scalar": true,
|
|
1344
|
+
"description": "Show a Search (Globe) button in the input toolbar; fires a `search` event.",
|
|
1345
|
+
"default": "false",
|
|
1346
|
+
"displayType": "undefined | false | true"
|
|
1176
1347
|
},
|
|
1177
1348
|
{
|
|
1178
1349
|
"name": "value",
|
|
@@ -1228,12 +1399,12 @@
|
|
|
1228
1399
|
},
|
|
1229
1400
|
{
|
|
1230
1401
|
"name": "proseSize",
|
|
1231
|
-
"type": "undefined | \"
|
|
1402
|
+
"type": "undefined | \"xs\" | \"sm\" | \"base\" | \"lg\"",
|
|
1232
1403
|
"optional": true,
|
|
1233
1404
|
"scalar": true,
|
|
1234
1405
|
"description": "Body/prose font scale for rendered markdown (`'xs' | 'sm' | 'base' | 'lg'`). Defaults to `'sm'`.",
|
|
1235
1406
|
"default": "'sm'",
|
|
1236
|
-
"displayType": "undefined | \"
|
|
1407
|
+
"displayType": "undefined | \"xs\" | \"sm\" | \"base\" | \"lg\""
|
|
1237
1408
|
},
|
|
1238
1409
|
{
|
|
1239
1410
|
"name": "codeTheme",
|
|
@@ -1267,6 +1438,9 @@
|
|
|
1267
1438
|
"optional": true,
|
|
1268
1439
|
"scalar": false,
|
|
1269
1440
|
"description": "Optional model list. When set (>1 model) a ModelSwitcher is shown in the header and a `kai-model-change` event fires on selection.",
|
|
1441
|
+
"typeName": "ModelOption[]",
|
|
1442
|
+
"typeShape": "{ id: string; name: string; provider?: undefined | string; description?: undefined | string; group?: undefined | string }[]",
|
|
1443
|
+
"typeImport": "ModelOption",
|
|
1270
1444
|
"displayType": "undefined | { id: string; name: string; provider?: undefined | string; description?: undefined | string; group?: undefined | string }[]"
|
|
1271
1445
|
},
|
|
1272
1446
|
{
|
|
@@ -1283,6 +1457,9 @@
|
|
|
1283
1457
|
"optional": true,
|
|
1284
1458
|
"scalar": false,
|
|
1285
1459
|
"description": "Optional context-window token usage. When set, a Context token meter is shown in the header.",
|
|
1460
|
+
"typeName": "ChatThreadContextUsage",
|
|
1461
|
+
"typeShape": "{ usedTokens: number; maxTokens: number; inputTokens?: undefined | number; outputTokens?: undefined | number; estimatedCost?: undefined | number }",
|
|
1462
|
+
"typeImport": "ChatThreadContextUsage",
|
|
1286
1463
|
"displayType": "ContextData | undefined"
|
|
1287
1464
|
},
|
|
1288
1465
|
{
|
|
@@ -1299,7 +1476,7 @@
|
|
|
1299
1476
|
"type": "undefined | false | true",
|
|
1300
1477
|
"optional": true,
|
|
1301
1478
|
"scalar": true,
|
|
1302
|
-
"description": "Whether the host has `slot=\"header-start\"` content (left of the title)
|
|
1479
|
+
"description": "Whether the host has `slot=\"header-start\"` content (left of the title). Set by the `<kai-chat>` facade so a custom control forces the header open.",
|
|
1303
1480
|
"displayType": "undefined | false | true"
|
|
1304
1481
|
},
|
|
1305
1482
|
{
|
|
@@ -1315,7 +1492,7 @@
|
|
|
1315
1492
|
"type": "undefined | false | true",
|
|
1316
1493
|
"optional": true,
|
|
1317
1494
|
"scalar": true,
|
|
1318
|
-
"description": "REPLACE
|
|
1495
|
+
"description": "REPLACE: full custom header in place of the built-in title/model/context bar.",
|
|
1319
1496
|
"displayType": "undefined | false | true"
|
|
1320
1497
|
},
|
|
1321
1498
|
{
|
|
@@ -1323,7 +1500,7 @@
|
|
|
1323
1500
|
"type": "undefined | false | true",
|
|
1324
1501
|
"optional": true,
|
|
1325
1502
|
"scalar": true,
|
|
1326
|
-
"description": "INJECT
|
|
1503
|
+
"description": "INJECT: left sidebar column (e.g. a conversation list / your own nav).",
|
|
1327
1504
|
"displayType": "undefined | false | true"
|
|
1328
1505
|
},
|
|
1329
1506
|
{
|
|
@@ -1331,7 +1508,7 @@
|
|
|
1331
1508
|
"type": "undefined | false | true",
|
|
1332
1509
|
"optional": true,
|
|
1333
1510
|
"scalar": true,
|
|
1334
|
-
"description": "REPLACE
|
|
1511
|
+
"description": "REPLACE: custom zero-state rendered in the message area while the thread is empty (replaces the empty message list only; the composer and its suggestions still render).",
|
|
1335
1512
|
"displayType": "undefined | false | true"
|
|
1336
1513
|
},
|
|
1337
1514
|
{
|
|
@@ -1339,7 +1516,7 @@
|
|
|
1339
1516
|
"type": "undefined | false | true",
|
|
1340
1517
|
"optional": true,
|
|
1341
1518
|
"scalar": true,
|
|
1342
|
-
"description": "REPLACE
|
|
1519
|
+
"description": "REPLACE: full custom composer in place of the built-in prompt input. The projected content wires its own submit (the data-flow boundary).",
|
|
1343
1520
|
"displayType": "undefined | false | true"
|
|
1344
1521
|
},
|
|
1345
1522
|
{
|
|
@@ -1347,7 +1524,7 @@
|
|
|
1347
1524
|
"type": "undefined | false | true",
|
|
1348
1525
|
"optional": true,
|
|
1349
1526
|
"scalar": true,
|
|
1350
|
-
"description": "INJECT
|
|
1527
|
+
"description": "INJECT: accessory row just above the composer (e.g. extra actions).",
|
|
1351
1528
|
"displayType": "undefined | false | true"
|
|
1352
1529
|
},
|
|
1353
1530
|
{
|
|
@@ -1355,16 +1532,7 @@
|
|
|
1355
1532
|
"type": "undefined | false | true",
|
|
1356
1533
|
"optional": true,
|
|
1357
1534
|
"scalar": true,
|
|
1358
|
-
"description": "INJECT
|
|
1359
|
-
"displayType": "undefined | false | true"
|
|
1360
|
-
},
|
|
1361
|
-
{
|
|
1362
|
-
"name": "search",
|
|
1363
|
-
"type": "undefined | false | true",
|
|
1364
|
-
"optional": true,
|
|
1365
|
-
"scalar": true,
|
|
1366
|
-
"description": "Show a Search (Globe) button in the input toolbar; fires a `search` event.",
|
|
1367
|
-
"default": "false",
|
|
1535
|
+
"description": "INJECT: footer row below the composer (disclaimers, token meter, …).",
|
|
1368
1536
|
"displayType": "undefined | false | true"
|
|
1369
1537
|
},
|
|
1370
1538
|
{
|
|
@@ -1381,7 +1549,10 @@
|
|
|
1381
1549
|
"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> }[] }[]",
|
|
1382
1550
|
"optional": true,
|
|
1383
1551
|
"scalar": false,
|
|
1384
|
-
"description": "Rich entity triggers
|
|
1552
|
+
"description": "Rich entity triggers. Each `{ char, kind, items }` opens a caret-anchored menu that inserts an atomic pill (`/` skills, `@` agents/plugins). Set as a JS property; forwarded to the input.",
|
|
1553
|
+
"typeName": "TriggerDef[]",
|
|
1554
|
+
"typeShape": "{ 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> }[] }[]",
|
|
1555
|
+
"typeImport": "TriggerDef",
|
|
1385
1556
|
"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> }[] }[]"
|
|
1386
1557
|
},
|
|
1387
1558
|
{
|
|
@@ -1400,6 +1571,34 @@
|
|
|
1400
1571
|
"description": "Whether each message's action bar is always visible (`'always'`, default) or only revealed on hover of that message row (`'hover'`).",
|
|
1401
1572
|
"default": "'always'",
|
|
1402
1573
|
"displayType": "undefined | \"always\" | \"hover\""
|
|
1574
|
+
},
|
|
1575
|
+
{
|
|
1576
|
+
"name": "messages",
|
|
1577
|
+
"type": "undefined | { id: string; role: \"user\" | \"assistant\"; parts: ({ type: \"text\"; text: string; raw?: undefined | { source: string; payload: unknown } } | { type: \"reasoning\"; text: string; label?: undefined | string; index?: undefined | number; streamId?: undefined | string; signature?: undefined | string; raw?: undefined | { source: string; payload: unknown } } | { type: \"tool\"; tool: { type: string; kind?: undefined | \"command\" | \"file-change\" | \"search\" | \"fetch\" | \"mcp\" | \"image\" | \"generic\"; state: \"input-streaming\" | \"input-available\" | \"output-available\" | \"output-error\"; input?: undefined | Record<string, unknown>; rawInput?: undefined | string; output?: undefined | Record<string, unknown>; toolCallId?: undefined | string; errorText?: undefined | string; raw?: undefined | { source: string; payload: unknown } }; raw?: undefined | { source: string; payload: unknown } } | { type: \"card\"; envelope: { 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 } }; raw?: undefined | { source: string; payload: unknown } } | { type: \"source\"; source: { id?: undefined | string; url?: undefined | string; title?: undefined | string; snippet?: undefined | string; index?: undefined | number }; raw?: undefined | { source: string; payload: unknown } } | { type: \"file\"; attachment: { id: string; type: \"file\" | \"source-document\"; filename?: undefined | string; mediaType?: undefined | string; url?: undefined | string; title?: undefined | string }; raw?: undefined | { source: string; payload: unknown } })[]; actions?: undefined | (\"copy\" | \"like\" | \"dislike\" | \"regenerate\" | \"edit\" | { id: string; label: string; icon?: undefined | string; tooltip?: undefined | string })[]; avatar?: undefined | { src?: undefined | string; fallback?: undefined | string; alt?: undefined | string }; feedback?: undefined | \"like\" | \"dislike\" }[]",
|
|
1578
|
+
"optional": true,
|
|
1579
|
+
"scalar": false,
|
|
1580
|
+
"description": "The full message thread to render, newest last. Each entry carries its role, ordered `parts`, and optional actions/avatar/feedback. Set as a JS property (`el.messages = [...]`); a NEW array reference per streaming chunk re-renders (mutating in place does not). Omit for an empty thread. Re-declared here (rather than inherited from `ChatThreadProps`) because the ELEMENT registers a `[]` default and renders the empty state without it, while the SolidJS `<ChatThread>` component still requires it. The facade hands it a validated array either way. Matches `<kai-thread>`.",
|
|
1581
|
+
"typeName": "ChatMessage[]",
|
|
1582
|
+
"typeShape": "{ id: string; role: \"user\" | \"assistant\"; parts: ({ type: \"text\"; text: string; raw?: undefined | { source: string; payload: unknown } } | { type: \"reasoning\"; text: string; label?: undefined | string; index?: undefined | number; streamId?: undefined | string; signature?: undefined | string; raw?: undefined | { source: string; payload: unknown } } | { type: \"tool\"; tool: { type: string; kind?: undefined | \"command\" | \"file-change\" | \"search\" | \"fetch\" | \"mcp\" | \"image\" | \"generic\"; state: \"input-streaming\" | \"input-available\" | \"output-available\" | \"output-error\"; input?: undefined | Record<string, unknown>; rawInput?: undefined | string; output?: undefined | Record<string, unknown>; toolCallId?: undefined | string; errorText?: undefined | string; raw?: undefined | { source: string; payload: unknown } }; raw?: undefined | { source: string; payload: unknown } } | { type: \"card\"; envelope: { 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 } }; raw?: undefined | { source: string; payload: unknown } } | { type: \"source\"; source: { id?: undefined | string; url?: undefined | string; title?: undefined | string; snippet?: undefined | string; index?: undefined | number }; raw?: undefined | { source: string; payload: unknown } } | { type: \"file\"; attachment: { id: string; type: \"file\" | \"source-document\"; filename?: undefined | string; mediaType?: undefined | string; url?: undefined | string; title?: undefined | string }; raw?: undefined | { source: string; payload: unknown } })[]; actions?: undefined | (\"copy\" | \"like\" | \"dislike\" | \"regenerate\" | \"edit\" | { id: string; label: string; icon?: undefined | string; tooltip?: undefined | string })[]; avatar?: undefined | { src?: undefined | string; fallback?: undefined | string; alt?: undefined | string }; feedback?: undefined | \"like\" | \"dislike\" }[]",
|
|
1583
|
+
"default": "[]",
|
|
1584
|
+
"typeImport": "ChatMessage",
|
|
1585
|
+
"displayType": "undefined | { id: string; role: \"user\" | \"assistant\"; parts: ({ type: \"text\"; text: string; raw?: undefined | { source: string; payload: unknown } } | { type: \"reasoning\"; text: string; label?: undefined | string; index?: undefined | number; streamId?: undefined | string; signature?: undefined | string; raw?: undefined | { source: string; payload: unknown } } | { type: \"tool\"; tool: { type: string; kind?: undefined | \"command\" | \"file-change\" | \"search\" | \"fetch\" | \"mcp\" | \"image\" | \"generic\"; state: \"input-streaming\" | \"input-available\" | \"output-available\" | \"output-error\"; input?: undefined | Record<string, unknown>; rawInput?: undefined | string; output?: undefined | Record<string, unknown>; toolCallId?: undefined | string; errorText?: undefined | string; raw?: undefined | { source: string; payload: unknown } }; raw?: undefined | { source: string; payload: unknown } } | { type: \"card\"; envelope: { 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 } }; raw?: undefined | { source: string; payload: unknown } } | { type: \"source\"; source: { id?: undefined | string; url?: undefined | string; title?: undefined | string; snippet?: undefined | string; index?: undefined | number }; raw?: undefined | { source: string; payload: unknown } } | { type: \"file\"; attachment: { id: string; type: \"file\" | \"source-document\"; filename?: undefined | string; mediaType?: undefined | string; url?: undefined | string; title?: undefined | string }; raw?: undefined | { source: string; payload: unknown } })[]; actions?: undefined | (\"copy\" | \"like\" | \"dislike\" | \"regenerate\" | \"edit\" | { id: string; label: string; icon?: undefined | string; tooltip?: undefined | string })[]; avatar?: undefined | { src?: undefined | string; fallback?: undefined | string; alt?: undefined | string }; feedback?: undefined | \"like\" | \"dislike\" }[]"
|
|
1586
|
+
},
|
|
1587
|
+
{
|
|
1588
|
+
"name": "cardTypes",
|
|
1589
|
+
"type": "undefined | Record<string, string>",
|
|
1590
|
+
"optional": true,
|
|
1591
|
+
"scalar": false,
|
|
1592
|
+
"description": "Optional card type -> custom-element tag overrides/additions for `card` parts (merged over the built-ins). Property: `el.cardTypes`. Typed as a plain string map (not the `CardTagMap` alias) so the generated React wrapper inlines it instead of emitting an unresolved named type.",
|
|
1593
|
+
"displayType": "undefined | Record<string, string>"
|
|
1594
|
+
},
|
|
1595
|
+
{
|
|
1596
|
+
"name": "cardSchemas",
|
|
1597
|
+
"type": "undefined | Record<string, object>",
|
|
1598
|
+
"optional": true,
|
|
1599
|
+
"scalar": false,
|
|
1600
|
+
"description": "JSON Schemas for the card types this app renders, keyed by envelope type. The companion of `cardTypes`, which says what DRAWS a card while this says what a VALID one looks like. An OBJECT, so it is a JS property only: `el.cardSchemas = { 'pricing-table': pricingSchema }`, never an attribute. `createCardRegistry(...).validationSchemas` is exactly this shape. Without it the kit validates its own seven built-ins and leaves your own card type, the one your app actually cares about, as the only unchecked thing on screen. A schema here WINS over a built-in of the same name. Typed `Record<string, object>` rather than `Record<string, JsonSchema>` deliberately: an imported `.json` schema widens `\"type\"` to `string`, and an authored one carries `$schema`/`title`/`description`/`additionalProperties`, so the tighter type would reject both of the normal ways to supply one.",
|
|
1601
|
+
"displayType": "undefined | Record<string, object>"
|
|
1403
1602
|
}
|
|
1404
1603
|
],
|
|
1405
1604
|
"events": [
|
|
@@ -1457,31 +1656,31 @@
|
|
|
1457
1656
|
"name": "focus",
|
|
1458
1657
|
"params": "options?: FocusOptions",
|
|
1459
1658
|
"returns": "void",
|
|
1460
|
-
"description": ""
|
|
1659
|
+
"description": "Focus the composer, meaning the contenteditable (or textarea) inside the shadow root. A native `focus()` on the host lands on the host itself and never reaches it, so this is the only way to focus the input programmatically."
|
|
1461
1660
|
},
|
|
1462
1661
|
{
|
|
1463
1662
|
"name": "blur",
|
|
1464
1663
|
"params": "",
|
|
1465
1664
|
"returns": "void",
|
|
1466
|
-
"description": ""
|
|
1665
|
+
"description": "Blur whatever currently holds focus inside the shadow root. The companion to `focus()`, for the same reason: a native `blur()` on the host misses the real focus target."
|
|
1467
1666
|
},
|
|
1468
1667
|
{
|
|
1469
1668
|
"name": "clear",
|
|
1470
1669
|
"params": "",
|
|
1471
1670
|
"returns": "void",
|
|
1472
|
-
"description": ""
|
|
1671
|
+
"description": "Empty the COMPOSER: drops the draft text and every staged attachment, then fires `kai-value-change` with `''`. It does NOT touch the thread. `messages` is the consumer's own state, so clearing history stays the consumer's call."
|
|
1473
1672
|
},
|
|
1474
1673
|
{
|
|
1475
1674
|
"name": "send",
|
|
1476
1675
|
"params": "",
|
|
1477
1676
|
"returns": "void",
|
|
1478
|
-
"description": ""
|
|
1677
|
+
"description": "Submit whatever the composer currently holds, on the same path as Enter or the send button: fires `kai-submit` with that value plus the staged attachments, then drops the attachments. It takes no argument, so to send text the user never typed, set `el.value` first. There is no empty-check, so an empty composer still fires. The draft is cleared afterwards only when `value` is uncontrolled; a controlled host owns its value and clears it itself. Named `send`, not `submit`, to match the shared vocabulary."
|
|
1479
1678
|
},
|
|
1480
1679
|
{
|
|
1481
1680
|
"name": "scrollToBottom",
|
|
1482
1681
|
"params": "behavior?: ScrollBehavior",
|
|
1483
1682
|
"returns": "void",
|
|
1484
|
-
"description": ""
|
|
1683
|
+
"description": "Scroll the message viewport to the newest message. Defaults to `'smooth'`; pass `'instant'` to jump without animating."
|
|
1485
1684
|
}
|
|
1486
1685
|
],
|
|
1487
1686
|
"composedFrom": [
|
|
@@ -1518,7 +1717,7 @@
|
|
|
1518
1717
|
{
|
|
1519
1718
|
"name": "empty",
|
|
1520
1719
|
"mode": "replace",
|
|
1521
|
-
"doc": "Custom zero-state rendered in the message area while the thread is empty. Replaces the empty message list only
|
|
1720
|
+
"doc": "Custom zero-state rendered in the message area while the thread is empty. Replaces the empty message list only; the composer and any suggestions still render."
|
|
1522
1721
|
},
|
|
1523
1722
|
{
|
|
1524
1723
|
"name": "composer",
|
|
@@ -1562,6 +1761,16 @@
|
|
|
1562
1761
|
"className": "KaiCheckpointElement",
|
|
1563
1762
|
"displayName": "Checkpoint",
|
|
1564
1763
|
"props": [
|
|
1764
|
+
{
|
|
1765
|
+
"name": "theme",
|
|
1766
|
+
"type": "\"light\" | \"dark\" | \"auto\"",
|
|
1767
|
+
"optional": true,
|
|
1768
|
+
"scalar": true,
|
|
1769
|
+
"description": "Color mode (`auto` follows prefers-color-scheme).",
|
|
1770
|
+
"default": "'auto'",
|
|
1771
|
+
"universal": true,
|
|
1772
|
+
"displayType": "\"light\" | \"dark\" | \"auto\""
|
|
1773
|
+
},
|
|
1565
1774
|
{
|
|
1566
1775
|
"name": "label",
|
|
1567
1776
|
"type": "undefined | string",
|
|
@@ -1580,12 +1789,12 @@
|
|
|
1580
1789
|
},
|
|
1581
1790
|
{
|
|
1582
1791
|
"name": "variant",
|
|
1583
|
-
"type": "undefined | \"
|
|
1792
|
+
"type": "undefined | \"ghost\" | \"default\" | \"outline\"",
|
|
1584
1793
|
"optional": true,
|
|
1585
1794
|
"scalar": true,
|
|
1586
1795
|
"description": "Visual button style.",
|
|
1587
1796
|
"default": "'ghost'",
|
|
1588
|
-
"displayType": "undefined | \"
|
|
1797
|
+
"displayType": "undefined | \"ghost\" | \"default\" | \"outline\""
|
|
1589
1798
|
},
|
|
1590
1799
|
{
|
|
1591
1800
|
"name": "size",
|
|
@@ -1630,13 +1839,26 @@
|
|
|
1630
1839
|
"className": "KaiChoiceElement",
|
|
1631
1840
|
"displayName": "Choice",
|
|
1632
1841
|
"props": [
|
|
1842
|
+
{
|
|
1843
|
+
"name": "theme",
|
|
1844
|
+
"type": "\"light\" | \"dark\" | \"auto\"",
|
|
1845
|
+
"optional": true,
|
|
1846
|
+
"scalar": true,
|
|
1847
|
+
"description": "Color mode (`auto` follows prefers-color-scheme).",
|
|
1848
|
+
"default": "'auto'",
|
|
1849
|
+
"universal": true,
|
|
1850
|
+
"displayType": "\"light\" | \"dark\" | \"auto\""
|
|
1851
|
+
},
|
|
1633
1852
|
{
|
|
1634
1853
|
"name": "data",
|
|
1635
|
-
"type": "undefined |
|
|
1854
|
+
"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 }",
|
|
1636
1855
|
"optional": true,
|
|
1637
1856
|
"scalar": false,
|
|
1638
1857
|
"description": "The choice definition (the CardEnvelope.data). Set as a JS PROPERTY: `el.data = { prompt, options:[…], allowOther?, submitLabel? }`. Import `ChoiceCardData` from `@kitn.ai/ui` for the full shape.",
|
|
1639
|
-
"
|
|
1858
|
+
"typeName": "ChoiceCardData",
|
|
1859
|
+
"typeShape": "{ 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 }",
|
|
1860
|
+
"typeImport": "ChoiceCardData",
|
|
1861
|
+
"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 }"
|
|
1640
1862
|
},
|
|
1641
1863
|
{
|
|
1642
1864
|
"name": "cardId",
|
|
@@ -1667,7 +1889,7 @@
|
|
|
1667
1889
|
"type": "undefined | string",
|
|
1668
1890
|
"optional": true,
|
|
1669
1891
|
"scalar": true,
|
|
1670
|
-
"description": "Controlled selection
|
|
1892
|
+
"description": "Controlled selection: the selected option id. When set, the consumer owns the current pick (RadioGroup `value`). Attribute: `value`.",
|
|
1671
1893
|
"displayType": "undefined | string"
|
|
1672
1894
|
},
|
|
1673
1895
|
{
|
|
@@ -1706,25 +1928,25 @@
|
|
|
1706
1928
|
"name": "select",
|
|
1707
1929
|
"params": "optionId: string",
|
|
1708
1930
|
"returns": "void",
|
|
1709
|
-
"description": "Select an option by id locally
|
|
1931
|
+
"description": "Select an option by id locally: no emit, fires kai-value-change (same as a row click). Lets a consumer pre-highlight or drive selection externally."
|
|
1710
1932
|
},
|
|
1711
1933
|
{
|
|
1712
1934
|
"name": "send",
|
|
1713
1935
|
"params": "",
|
|
1714
1936
|
"returns": "void",
|
|
1715
|
-
"description": "Submit the current selection
|
|
1937
|
+
"description": "Submit the current selection: emits the `action` verb on kai-card and resolves the card (single-shot). Named `send`, not `submit`, per the shared vocabulary."
|
|
1716
1938
|
},
|
|
1717
1939
|
{
|
|
1718
1940
|
"name": "dismiss",
|
|
1719
1941
|
"params": "",
|
|
1720
1942
|
"returns": "void",
|
|
1721
|
-
"description": "Trigger the dismiss path
|
|
1943
|
+
"description": "Trigger the dismiss path: emits `dismiss` on kai-card and optimistically collapses the card to its re-openable stub."
|
|
1722
1944
|
},
|
|
1723
1945
|
{
|
|
1724
1946
|
"name": "reopen",
|
|
1725
1947
|
"params": "",
|
|
1726
1948
|
"returns": "void",
|
|
1727
|
-
"description": "Re-open a dismissed card from its stub
|
|
1949
|
+
"description": "Re-open a dismissed card from its stub: emits `reopen` on kai-card."
|
|
1728
1950
|
}
|
|
1729
1951
|
],
|
|
1730
1952
|
"composedFrom": [
|
|
@@ -1741,6 +1963,16 @@
|
|
|
1741
1963
|
"className": "KaiCoachmarkElement",
|
|
1742
1964
|
"displayName": "Coachmark",
|
|
1743
1965
|
"props": [
|
|
1966
|
+
{
|
|
1967
|
+
"name": "theme",
|
|
1968
|
+
"type": "\"light\" | \"dark\" | \"auto\"",
|
|
1969
|
+
"optional": true,
|
|
1970
|
+
"scalar": true,
|
|
1971
|
+
"description": "Color mode (`auto` follows prefers-color-scheme).",
|
|
1972
|
+
"default": "'auto'",
|
|
1973
|
+
"universal": true,
|
|
1974
|
+
"displayType": "\"light\" | \"dark\" | \"auto\""
|
|
1975
|
+
},
|
|
1744
1976
|
{
|
|
1745
1977
|
"name": "open",
|
|
1746
1978
|
"type": "undefined | false | true",
|
|
@@ -1783,11 +2015,11 @@
|
|
|
1783
2015
|
},
|
|
1784
2016
|
{
|
|
1785
2017
|
"name": "tone",
|
|
1786
|
-
"type": "undefined | \"
|
|
2018
|
+
"type": "undefined | \"primary\" | \"info\" | \"success\" | \"warning\" | \"error\"",
|
|
1787
2019
|
"optional": true,
|
|
1788
2020
|
"scalar": true,
|
|
1789
|
-
"description": "Color tone: `primary` (default, theme accent), `info` (blue), `success` (green), `warning` (amber), or `error` (red)
|
|
1790
|
-
"displayType": "undefined | \"
|
|
2021
|
+
"description": "Color tone: `primary` (default, theme accent), `info` (blue), `success` (green), `warning` (amber), or `error` (red), reusing the kit's tool hues.",
|
|
2022
|
+
"displayType": "undefined | \"primary\" | \"info\" | \"success\" | \"warning\" | \"error\""
|
|
1791
2023
|
},
|
|
1792
2024
|
{
|
|
1793
2025
|
"name": "arrow",
|
|
@@ -1842,6 +2074,11 @@
|
|
|
1842
2074
|
],
|
|
1843
2075
|
"tokens": [],
|
|
1844
2076
|
"slots": [
|
|
2077
|
+
{
|
|
2078
|
+
"name": "",
|
|
2079
|
+
"mode": "inject",
|
|
2080
|
+
"doc": "The ANCHOR the coachmark points at: the element it attaches to and positions against. The bubble body is the `content` slot."
|
|
2081
|
+
},
|
|
1845
2082
|
{
|
|
1846
2083
|
"name": "content",
|
|
1847
2084
|
"mode": "replace",
|
|
@@ -1881,6 +2118,16 @@
|
|
|
1881
2118
|
"className": "KaiCodeBlockElement",
|
|
1882
2119
|
"displayName": "CodeBlock",
|
|
1883
2120
|
"props": [
|
|
2121
|
+
{
|
|
2122
|
+
"name": "theme",
|
|
2123
|
+
"type": "\"light\" | \"dark\" | \"auto\"",
|
|
2124
|
+
"optional": true,
|
|
2125
|
+
"scalar": true,
|
|
2126
|
+
"description": "Color mode (`auto` follows prefers-color-scheme).",
|
|
2127
|
+
"default": "'auto'",
|
|
2128
|
+
"universal": true,
|
|
2129
|
+
"displayType": "\"light\" | \"dark\" | \"auto\""
|
|
2130
|
+
},
|
|
1884
2131
|
{
|
|
1885
2132
|
"name": "code",
|
|
1886
2133
|
"type": "string",
|
|
@@ -1918,12 +2165,12 @@
|
|
|
1918
2165
|
},
|
|
1919
2166
|
{
|
|
1920
2167
|
"name": "proseSize",
|
|
1921
|
-
"type": "undefined | \"
|
|
2168
|
+
"type": "undefined | \"xs\" | \"sm\" | \"base\" | \"lg\"",
|
|
1922
2169
|
"optional": true,
|
|
1923
2170
|
"scalar": true,
|
|
1924
2171
|
"description": "Code text sizing.",
|
|
1925
2172
|
"default": "'sm'",
|
|
1926
|
-
"displayType": "undefined | \"
|
|
2173
|
+
"displayType": "undefined | \"xs\" | \"sm\" | \"base\" | \"lg\""
|
|
1927
2174
|
}
|
|
1928
2175
|
],
|
|
1929
2176
|
"events": [],
|
|
@@ -1949,12 +2196,25 @@
|
|
|
1949
2196
|
"className": "KaiCommandElement",
|
|
1950
2197
|
"displayName": "Command",
|
|
1951
2198
|
"props": [
|
|
2199
|
+
{
|
|
2200
|
+
"name": "theme",
|
|
2201
|
+
"type": "\"light\" | \"dark\" | \"auto\"",
|
|
2202
|
+
"optional": true,
|
|
2203
|
+
"scalar": true,
|
|
2204
|
+
"description": "Color mode (`auto` follows prefers-color-scheme).",
|
|
2205
|
+
"default": "'auto'",
|
|
2206
|
+
"universal": true,
|
|
2207
|
+
"displayType": "\"light\" | \"dark\" | \"auto\""
|
|
2208
|
+
},
|
|
1952
2209
|
{
|
|
1953
2210
|
"name": "items",
|
|
1954
2211
|
"type": "undefined | { id: string; label: string; icon?: undefined | string; description?: undefined | string; shortcut?: undefined | string; group?: undefined | string }[]",
|
|
1955
2212
|
"optional": true,
|
|
1956
2213
|
"scalar": false,
|
|
1957
|
-
"description": "Flat list of items. Set as a JS property
|
|
2214
|
+
"description": "Flat list of items. Set as a JS property, not an HTML attribute.",
|
|
2215
|
+
"typeName": "KaiCommandItem[]",
|
|
2216
|
+
"typeShape": "{ id: string; label: string; icon?: undefined | string; description?: undefined | string; shortcut?: undefined | string; group?: undefined | string }[]",
|
|
2217
|
+
"typeImport": "KaiCommandItem",
|
|
1958
2218
|
"displayType": "undefined | { id: string; label: string; icon?: undefined | string; description?: undefined | string; shortcut?: undefined | string; group?: undefined | string }[]"
|
|
1959
2219
|
},
|
|
1960
2220
|
{
|
|
@@ -1977,9 +2237,9 @@
|
|
|
1977
2237
|
"events": [
|
|
1978
2238
|
{
|
|
1979
2239
|
"name": "kai-active-change",
|
|
1980
|
-
"detail": "{ id:
|
|
1981
|
-
"description": "Fired when the highlighted/active item changes
|
|
1982
|
-
"displayDetail": "{ id:
|
|
2240
|
+
"detail": "{ id: string | undefined }",
|
|
2241
|
+
"description": "Fired when the highlighted/active item changes, via Arrow keys or when filtering re-clamps the active row. `id` is the newly active item's id, or `undefined` when no item is active (e.g. the filtered list is empty). Lets a host preview the active item without committing a selection.",
|
|
2242
|
+
"displayDetail": "{ id: string | undefined }"
|
|
1983
2243
|
},
|
|
1984
2244
|
{
|
|
1985
2245
|
"name": "kai-query-change",
|
|
@@ -2011,7 +2271,7 @@
|
|
|
2011
2271
|
"name": "clear",
|
|
2012
2272
|
"params": "",
|
|
2013
2273
|
"returns": "void",
|
|
2014
|
-
"description": "Reset the search query to empty
|
|
2274
|
+
"description": "Reset the search query to empty, re-showing all items, and fire `kai-query-change` with `''`. Mirrors the Escape-key behavior."
|
|
2015
2275
|
}
|
|
2016
2276
|
],
|
|
2017
2277
|
"composedFrom": [
|
|
@@ -2035,6 +2295,16 @@
|
|
|
2035
2295
|
"className": "KaiCompareElement",
|
|
2036
2296
|
"displayName": "Compare",
|
|
2037
2297
|
"props": [
|
|
2298
|
+
{
|
|
2299
|
+
"name": "theme",
|
|
2300
|
+
"type": "\"light\" | \"dark\" | \"auto\"",
|
|
2301
|
+
"optional": true,
|
|
2302
|
+
"scalar": true,
|
|
2303
|
+
"description": "Color mode (`auto` follows prefers-color-scheme).",
|
|
2304
|
+
"default": "'auto'",
|
|
2305
|
+
"universal": true,
|
|
2306
|
+
"displayType": "\"light\" | \"dark\" | \"auto\""
|
|
2307
|
+
},
|
|
2038
2308
|
{
|
|
2039
2309
|
"name": "data",
|
|
2040
2310
|
"type": "undefined | Record<string, unknown>",
|
|
@@ -2064,17 +2334,17 @@
|
|
|
2064
2334
|
"type": "undefined | \"auto\" | \"columns\" | \"tabs\"",
|
|
2065
2335
|
"optional": true,
|
|
2066
2336
|
"scalar": true,
|
|
2067
|
-
"description": "Layout: `'auto'` (default
|
|
2337
|
+
"description": "Layout: `'auto'` (default, columns when wide, tabs when narrow, by CONTAINER width) | `'columns'` (side-by-side) | `'tabs'` (pills to switch). Attribute: `layout`.",
|
|
2068
2338
|
"default": "'auto'",
|
|
2069
2339
|
"displayType": "undefined | \"auto\" | \"columns\" | \"tabs\""
|
|
2070
2340
|
},
|
|
2071
2341
|
{
|
|
2072
2342
|
"name": "proseSize",
|
|
2073
|
-
"type": "undefined | \"
|
|
2343
|
+
"type": "undefined | \"xs\" | \"sm\" | \"base\" | \"lg\"",
|
|
2074
2344
|
"optional": true,
|
|
2075
2345
|
"scalar": true,
|
|
2076
2346
|
"description": "Prose/text size for the rendered candidates. Attribute: `prose-size`.",
|
|
2077
|
-
"displayType": "undefined | \"
|
|
2347
|
+
"displayType": "undefined | \"xs\" | \"sm\" | \"base\" | \"lg\""
|
|
2078
2348
|
},
|
|
2079
2349
|
{
|
|
2080
2350
|
"name": "codeTheme",
|
|
@@ -2118,7 +2388,7 @@
|
|
|
2118
2388
|
"name": "select",
|
|
2119
2389
|
"params": "candidateId: string",
|
|
2120
2390
|
"returns": "void",
|
|
2121
|
-
"description": "Programmatically commit a pick by candidate id
|
|
2391
|
+
"description": "Programmatically commit a pick by candidate id, on the same path as the \"Pick this\" button: fires kai-compare-select and optimistically collapses (single-shot; inert while streaming or already resolved). `select` does NOT collide with the `selection` prop (distinct identifier)."
|
|
2122
2392
|
},
|
|
2123
2393
|
{
|
|
2124
2394
|
"name": "focus",
|
|
@@ -2141,12 +2411,22 @@
|
|
|
2141
2411
|
"className": "KaiComposerElement",
|
|
2142
2412
|
"displayName": "Composer",
|
|
2143
2413
|
"props": [
|
|
2414
|
+
{
|
|
2415
|
+
"name": "theme",
|
|
2416
|
+
"type": "\"light\" | \"dark\" | \"auto\"",
|
|
2417
|
+
"optional": true,
|
|
2418
|
+
"scalar": true,
|
|
2419
|
+
"description": "Color mode (`auto` follows prefers-color-scheme).",
|
|
2420
|
+
"default": "'auto'",
|
|
2421
|
+
"universal": true,
|
|
2422
|
+
"displayType": "\"light\" | \"dark\" | \"auto\""
|
|
2423
|
+
},
|
|
2144
2424
|
{
|
|
2145
2425
|
"name": "value",
|
|
2146
2426
|
"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> } })[]",
|
|
2147
2427
|
"optional": true,
|
|
2148
2428
|
"scalar": false,
|
|
2149
|
-
"description": "Controlled value
|
|
2429
|
+
"description": "Controlled value: a string or a full ComposerDoc (set as JS property).",
|
|
2150
2430
|
"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> } })[]"
|
|
2151
2431
|
},
|
|
2152
2432
|
{
|
|
@@ -2177,12 +2457,12 @@
|
|
|
2177
2457
|
},
|
|
2178
2458
|
{
|
|
2179
2459
|
"name": "maxHeight",
|
|
2180
|
-
"type": "undefined |
|
|
2460
|
+
"type": "undefined | number | string",
|
|
2181
2461
|
"optional": true,
|
|
2182
2462
|
"scalar": true,
|
|
2183
2463
|
"description": "Maximum height in px before the content scrolls. Default 240.",
|
|
2184
2464
|
"default": "240",
|
|
2185
|
-
"displayType": "undefined |
|
|
2465
|
+
"displayType": "undefined | number | string"
|
|
2186
2466
|
},
|
|
2187
2467
|
{
|
|
2188
2468
|
"name": "submitOnEnter",
|
|
@@ -2198,7 +2478,10 @@
|
|
|
2198
2478
|
"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> }[] }[]",
|
|
2199
2479
|
"optional": true,
|
|
2200
2480
|
"scalar": false,
|
|
2201
|
-
"description": "Trigger definitions
|
|
2481
|
+
"description": "Trigger definitions. Set as a JS property.",
|
|
2482
|
+
"typeName": "TriggerDef[]",
|
|
2483
|
+
"typeShape": "{ 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> }[] }[]",
|
|
2484
|
+
"typeImport": "TriggerDef",
|
|
2202
2485
|
"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> }[] }[]"
|
|
2203
2486
|
},
|
|
2204
2487
|
{
|
|
@@ -2206,7 +2489,7 @@
|
|
|
2206
2489
|
"type": "undefined | (string | { pattern: string; flags?: undefined | string; class?: undefined | string })[]",
|
|
2207
2490
|
"optional": true,
|
|
2208
2491
|
"scalar": false,
|
|
2209
|
-
"description": "Keyword highlight rules
|
|
2492
|
+
"description": "Keyword highlight rules. Set as a JS property.",
|
|
2210
2493
|
"displayType": "undefined | (string | { pattern: string; flags?: undefined | string; class?: undefined | string })[]"
|
|
2211
2494
|
},
|
|
2212
2495
|
{
|
|
@@ -2240,7 +2523,7 @@
|
|
|
2240
2523
|
{
|
|
2241
2524
|
"name": "kai-focus",
|
|
2242
2525
|
"detail": "{ originalEvent: FocusEvent }",
|
|
2243
|
-
"description": "The composer gained focus. `focus`/`blur` are NOT composed natively, so they don't escape the shadow root
|
|
2526
|
+
"description": "The composer gained focus. `focus`/`blur` are NOT composed natively, so they don't escape the shadow root; these re-expose them on the host. (For `keydown`/`paste`/`focusin`/`focusout`, listen NATIVELY on `<kai-composer>`: they're composed and already cross the shadow boundary.)",
|
|
2244
2527
|
"displayDetail": "{ originalEvent: FocusEvent }"
|
|
2245
2528
|
},
|
|
2246
2529
|
{
|
|
@@ -2273,7 +2556,7 @@
|
|
|
2273
2556
|
"name": "focus",
|
|
2274
2557
|
"params": "options?: FocusOptions",
|
|
2275
2558
|
"returns": "void",
|
|
2276
|
-
"description": "Focus the editable element. `focus`/`blur` are NOT composed natively, so a host-level focus() can't reach the editable inside the shadow root
|
|
2559
|
+
"description": "Focus the editable element. `focus`/`blur` are NOT composed natively, so a host-level focus() can't reach the editable inside the shadow root. This is the only way to focus the composer programmatically."
|
|
2277
2560
|
},
|
|
2278
2561
|
{
|
|
2279
2562
|
"name": "blur",
|
|
@@ -2291,7 +2574,7 @@
|
|
|
2291
2574
|
"name": "send",
|
|
2292
2575
|
"params": "",
|
|
2293
2576
|
"returns": "void",
|
|
2294
|
-
"description": "Submit the current content programmatically
|
|
2577
|
+
"description": "Submit the current content programmatically, on the same path as Enter (fires kai-submit). Named `send`, not `submit`, to match the shared vocabulary and avoid any submit collision."
|
|
2295
2578
|
},
|
|
2296
2579
|
{
|
|
2297
2580
|
"name": "insertEntity",
|
|
@@ -2314,13 +2597,26 @@
|
|
|
2314
2597
|
"className": "KaiConfirmElement",
|
|
2315
2598
|
"displayName": "Confirm",
|
|
2316
2599
|
"props": [
|
|
2600
|
+
{
|
|
2601
|
+
"name": "theme",
|
|
2602
|
+
"type": "\"light\" | \"dark\" | \"auto\"",
|
|
2603
|
+
"optional": true,
|
|
2604
|
+
"scalar": true,
|
|
2605
|
+
"description": "Color mode (`auto` follows prefers-color-scheme).",
|
|
2606
|
+
"default": "'auto'",
|
|
2607
|
+
"universal": true,
|
|
2608
|
+
"displayType": "\"light\" | \"dark\" | \"auto\""
|
|
2609
|
+
},
|
|
2317
2610
|
{
|
|
2318
2611
|
"name": "data",
|
|
2319
|
-
"type": "undefined |
|
|
2612
|
+
"type": "undefined | { heading?: undefined | string; body?: undefined | string; tone?: undefined | \"default\" | \"warning\" | \"danger\"; actions: { id: string; label: string; style?: undefined | \"primary\" | \"default\" | \"destructive\"; payload?: unknown; default?: undefined | false | true }[]; dismissible?: undefined | false | true }",
|
|
2320
2613
|
"optional": true,
|
|
2321
2614
|
"scalar": false,
|
|
2322
2615
|
"description": "The confirm definition (the CardEnvelope.data). Set as a JS PROPERTY: `el.data = { body, tone, actions:[…] }`. Import `ConfirmCardData` from `@kitn.ai/ui` for the full shape.",
|
|
2323
|
-
"
|
|
2616
|
+
"typeName": "ConfirmCardData",
|
|
2617
|
+
"typeShape": "{ heading?: undefined | string; body?: undefined | string; tone?: undefined | \"default\" | \"warning\" | \"danger\"; actions: { id: string; label: string; style?: undefined | \"primary\" | \"default\" | \"destructive\"; payload?: unknown; default?: undefined | false | true }[]; dismissible?: undefined | false | true }",
|
|
2618
|
+
"typeImport": "ConfirmCardData",
|
|
2619
|
+
"displayType": "undefined | { heading?: undefined | string; body?: undefined | string; tone?: undefined | \"default\" | \"warning\" | \"danger\"; actions: { id: string; label: string; style?: undefined | \"primary\" | \"default\" | \"destructive\"; payload?: unknown; default?: undefined | false | true }[]; dismissible?: undefined | false | true }"
|
|
2324
2620
|
},
|
|
2325
2621
|
{
|
|
2326
2622
|
"name": "cardId",
|
|
@@ -2343,7 +2639,7 @@
|
|
|
2343
2639
|
"type": "undefined | false | true",
|
|
2344
2640
|
"optional": true,
|
|
2345
2641
|
"scalar": true,
|
|
2346
|
-
"description": "Focus the default action on mount (off by default
|
|
2642
|
+
"description": "Focus the default action on mount (off by default, so nothing steals focus). Attribute: `autofocus`.",
|
|
2347
2643
|
"default": "false",
|
|
2348
2644
|
"displayType": "undefined | false | true"
|
|
2349
2645
|
},
|
|
@@ -2362,25 +2658,25 @@
|
|
|
2362
2658
|
"name": "focus",
|
|
2363
2659
|
"params": "options?: FocusOptions",
|
|
2364
2660
|
"returns": "void",
|
|
2365
|
-
"description": "Focus the default action button (or the first action if none is default)
|
|
2661
|
+
"description": "Focus the default action button (or the first action if none is default). The same target `autofocus` focuses on mount, but on demand."
|
|
2366
2662
|
},
|
|
2367
2663
|
{
|
|
2368
2664
|
"name": "confirm",
|
|
2369
2665
|
"params": "actionId?: string",
|
|
2370
2666
|
"returns": "void",
|
|
2371
|
-
"description": "Activate an action by id
|
|
2667
|
+
"description": "Activate an action by id: emits the `action` verb on kai-card and resolves the card (single-shot). With no id, invokes the default action."
|
|
2372
2668
|
},
|
|
2373
2669
|
{
|
|
2374
2670
|
"name": "dismiss",
|
|
2375
2671
|
"params": "",
|
|
2376
2672
|
"returns": "void",
|
|
2377
|
-
"description": "Trigger the dismiss path
|
|
2673
|
+
"description": "Trigger the dismiss path: emits `dismiss` on kai-card and optimistically collapses the card to its re-openable stub."
|
|
2378
2674
|
},
|
|
2379
2675
|
{
|
|
2380
2676
|
"name": "reopen",
|
|
2381
2677
|
"params": "",
|
|
2382
2678
|
"returns": "void",
|
|
2383
|
-
"description": "Re-open a dismissed card from its stub
|
|
2679
|
+
"description": "Re-open a dismissed card from its stub: emits `reopen` on kai-card."
|
|
2384
2680
|
}
|
|
2385
2681
|
],
|
|
2386
2682
|
"composedFrom": [
|
|
@@ -2397,12 +2693,25 @@
|
|
|
2397
2693
|
"className": "KaiContextElement",
|
|
2398
2694
|
"displayName": "Context",
|
|
2399
2695
|
"props": [
|
|
2696
|
+
{
|
|
2697
|
+
"name": "theme",
|
|
2698
|
+
"type": "\"light\" | \"dark\" | \"auto\"",
|
|
2699
|
+
"optional": true,
|
|
2700
|
+
"scalar": true,
|
|
2701
|
+
"description": "Color mode (`auto` follows prefers-color-scheme).",
|
|
2702
|
+
"default": "'auto'",
|
|
2703
|
+
"universal": true,
|
|
2704
|
+
"displayType": "\"light\" | \"dark\" | \"auto\""
|
|
2705
|
+
},
|
|
2400
2706
|
{
|
|
2401
2707
|
"name": "context",
|
|
2402
2708
|
"type": "undefined | { usedTokens: number; maxTokens: number; inputTokens?: undefined | number; outputTokens?: undefined | number; reasoningTokens?: undefined | number; cacheTokens?: undefined | number; estimatedCost?: undefined | number }",
|
|
2403
2709
|
"optional": true,
|
|
2404
2710
|
"scalar": false,
|
|
2405
2711
|
"description": "Token-usage data. Set as a JS property.",
|
|
2712
|
+
"typeName": "KaiContextUsage",
|
|
2713
|
+
"typeShape": "{ usedTokens: number; maxTokens: number; inputTokens?: undefined | number; outputTokens?: undefined | number; reasoningTokens?: undefined | number; cacheTokens?: undefined | number; estimatedCost?: undefined | number }",
|
|
2714
|
+
"typeImport": "KaiContextUsage",
|
|
2406
2715
|
"displayType": "ContextData | undefined"
|
|
2407
2716
|
},
|
|
2408
2717
|
{
|
|
@@ -2481,16 +2790,6 @@
|
|
|
2481
2790
|
"name": "ContextCacheUsage",
|
|
2482
2791
|
"group": "Components",
|
|
2483
2792
|
"storyId": "solid-advanced-elements-contextcacheusage--docs"
|
|
2484
|
-
},
|
|
2485
|
-
{
|
|
2486
|
-
"name": "DEFAULT_WARN_THRESHOLD",
|
|
2487
|
-
"group": "Components",
|
|
2488
|
-
"storyId": "solid-advanced-elements-defaultwarnthreshold--docs"
|
|
2489
|
-
},
|
|
2490
|
-
{
|
|
2491
|
-
"name": "DEFAULT_DANGER_THRESHOLD",
|
|
2492
|
-
"group": "Components",
|
|
2493
|
-
"storyId": "solid-advanced-elements-defaultdangerthreshold--docs"
|
|
2494
2793
|
}
|
|
2495
2794
|
],
|
|
2496
2795
|
"tokens": []
|
|
@@ -2500,29 +2799,39 @@
|
|
|
2500
2799
|
"className": "KaiConversationsElement",
|
|
2501
2800
|
"displayName": "Conversations",
|
|
2502
2801
|
"props": [
|
|
2802
|
+
{
|
|
2803
|
+
"name": "theme",
|
|
2804
|
+
"type": "\"light\" | \"dark\" | \"auto\"",
|
|
2805
|
+
"optional": true,
|
|
2806
|
+
"scalar": true,
|
|
2807
|
+
"description": "Color mode (`auto` follows prefers-color-scheme).",
|
|
2808
|
+
"default": "'auto'",
|
|
2809
|
+
"universal": true,
|
|
2810
|
+
"displayType": "\"light\" | \"dark\" | \"auto\""
|
|
2811
|
+
},
|
|
2503
2812
|
{
|
|
2504
2813
|
"name": "groups",
|
|
2505
|
-
"type": "{ id: string; userId?: undefined | string; teamId?: undefined | string; name: string; sortOrder: number; createdAt: string }[]",
|
|
2506
|
-
"optional":
|
|
2814
|
+
"type": "undefined | { id: string; userId?: undefined | string; teamId?: undefined | string; name: string; sortOrder: number; createdAt: string }[]",
|
|
2815
|
+
"optional": true,
|
|
2507
2816
|
"scalar": false,
|
|
2508
|
-
"description": "
|
|
2817
|
+
"description": "The list's section headers (`{ id, name, sortOrder, createdAt }`), rendered in array order. A group carries no conversations of its own; it is matched against `conversations` by id, so the two props are complementary rather than alternatives. Omit for an ungrouped list. Set as a JS property.",
|
|
2509
2818
|
"typeName": "ConversationGroup[]",
|
|
2510
2819
|
"typeShape": "{ id: string; userId?: undefined | string; teamId?: undefined | string; name: string; sortOrder: number; createdAt: string }[]",
|
|
2511
2820
|
"default": "[]",
|
|
2512
2821
|
"typeImport": "ConversationGroup",
|
|
2513
|
-
"displayType": "
|
|
2822
|
+
"displayType": "undefined | { id: string; userId?: undefined | string; teamId?: undefined | string; name: string; sortOrder: number; createdAt: string }[]"
|
|
2514
2823
|
},
|
|
2515
2824
|
{
|
|
2516
2825
|
"name": "conversations",
|
|
2517
|
-
"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 }[]",
|
|
2518
|
-
"optional":
|
|
2826
|
+
"type": "undefined | { 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 }[]",
|
|
2827
|
+
"optional": true,
|
|
2519
2828
|
"scalar": false,
|
|
2520
|
-
"description": "
|
|
2829
|
+
"description": "Every conversation the list renders, flat. Each one is filed under the group whose `id` equals its `groupId`; one with no `groupId`, or with a `groupId` matching no entry in `groups`, falls into a trailing \"Ungrouped\" section, so nothing you pass in is ever dropped. There is no recency bucketing. Set as a JS property. Omit to supply them as `<kai-conversation>` light-DOM children instead, or for the empty state.",
|
|
2521
2830
|
"typeName": "ConversationSummary[]",
|
|
2522
2831
|
"typeShape": "{ 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 }[]",
|
|
2523
2832
|
"default": "[]",
|
|
2524
2833
|
"typeImport": "ConversationSummary",
|
|
2525
|
-
"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 }[]"
|
|
2834
|
+
"displayType": "undefined | { 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 }[]"
|
|
2526
2835
|
},
|
|
2527
2836
|
{
|
|
2528
2837
|
"name": "activeId",
|
|
@@ -2598,7 +2907,7 @@
|
|
|
2598
2907
|
"name": "select",
|
|
2599
2908
|
"params": "id: string",
|
|
2600
2909
|
"returns": "void",
|
|
2601
|
-
"description": "Programmatically select a conversation by id
|
|
2910
|
+
"description": "Programmatically select a conversation by id. The mirror of the kai-conversation-select event (a convenience over driving `activeId`)."
|
|
2602
2911
|
},
|
|
2603
2912
|
{
|
|
2604
2913
|
"name": "collapse",
|
|
@@ -2635,6 +2944,17 @@
|
|
|
2635
2944
|
"--color-sidebar",
|
|
2636
2945
|
"--color-scrollbar-thumb"
|
|
2637
2946
|
],
|
|
2947
|
+
"declarativeChildren": [
|
|
2948
|
+
{
|
|
2949
|
+
"tag": "kai-conversation",
|
|
2950
|
+
"attributes": [
|
|
2951
|
+
"group-id",
|
|
2952
|
+
"id"
|
|
2953
|
+
],
|
|
2954
|
+
"text": true,
|
|
2955
|
+
"description": "Parse a single light-DOM `<kai-conversation>` element into a `ConversationSummary`. Attribute mapping: - `id` → ConversationSummary.id - `group-id` → ConversationSummary.groupId (optional) - textContent → ConversationSummary.title Required fields not expressible as HTML attributes (`scope`, `messageCount`, `lastMessageAt`, `updatedAt`) receive safe defaults so the rendered list item is fully functional with just `id` + title text."
|
|
2956
|
+
}
|
|
2957
|
+
],
|
|
2638
2958
|
"slots": [
|
|
2639
2959
|
{
|
|
2640
2960
|
"name": "header",
|
|
@@ -2649,7 +2969,7 @@
|
|
|
2649
2969
|
{
|
|
2650
2970
|
"name": "footer",
|
|
2651
2971
|
"mode": "inject",
|
|
2652
|
-
"doc": "A row below the list
|
|
2972
|
+
"doc": "A row below the list: account, settings, or usage."
|
|
2653
2973
|
}
|
|
2654
2974
|
],
|
|
2655
2975
|
"parts": [
|
|
@@ -2665,6 +2985,16 @@
|
|
|
2665
2985
|
"className": "KaiDialogElement",
|
|
2666
2986
|
"displayName": "Dialog",
|
|
2667
2987
|
"props": [
|
|
2988
|
+
{
|
|
2989
|
+
"name": "theme",
|
|
2990
|
+
"type": "\"light\" | \"dark\" | \"auto\"",
|
|
2991
|
+
"optional": true,
|
|
2992
|
+
"scalar": true,
|
|
2993
|
+
"description": "Color mode (`auto` follows prefers-color-scheme).",
|
|
2994
|
+
"default": "'auto'",
|
|
2995
|
+
"universal": true,
|
|
2996
|
+
"displayType": "\"light\" | \"dark\" | \"auto\""
|
|
2997
|
+
},
|
|
2668
2998
|
{
|
|
2669
2999
|
"name": "open",
|
|
2670
3000
|
"type": "undefined | false | true",
|
|
@@ -2725,6 +3055,11 @@
|
|
|
2725
3055
|
],
|
|
2726
3056
|
"tokens": [],
|
|
2727
3057
|
"slots": [
|
|
3058
|
+
{
|
|
3059
|
+
"name": "",
|
|
3060
|
+
"mode": "inject",
|
|
3061
|
+
"doc": "The dialog body, between the `header` and `footer` slots."
|
|
3062
|
+
},
|
|
2728
3063
|
{
|
|
2729
3064
|
"name": "header",
|
|
2730
3065
|
"mode": "inject",
|
|
@@ -2769,12 +3104,22 @@
|
|
|
2769
3104
|
"className": "KaiEditableLabelElement",
|
|
2770
3105
|
"displayName": "EditableLabel",
|
|
2771
3106
|
"props": [
|
|
3107
|
+
{
|
|
3108
|
+
"name": "theme",
|
|
3109
|
+
"type": "\"light\" | \"dark\" | \"auto\"",
|
|
3110
|
+
"optional": true,
|
|
3111
|
+
"scalar": true,
|
|
3112
|
+
"description": "Color mode (`auto` follows prefers-color-scheme).",
|
|
3113
|
+
"default": "'auto'",
|
|
3114
|
+
"universal": true,
|
|
3115
|
+
"displayType": "\"light\" | \"dark\" | \"auto\""
|
|
3116
|
+
},
|
|
2772
3117
|
{
|
|
2773
3118
|
"name": "value",
|
|
2774
3119
|
"type": "undefined | string",
|
|
2775
3120
|
"optional": true,
|
|
2776
3121
|
"scalar": true,
|
|
2777
|
-
"description": "The label text
|
|
3122
|
+
"description": "The label text. Settable and reflected to the `value` attribute. Read `el.value` for live state.",
|
|
2778
3123
|
"displayType": "undefined | string"
|
|
2779
3124
|
},
|
|
2780
3125
|
{
|
|
@@ -2823,7 +3168,19 @@
|
|
|
2823
3168
|
"name": "edit",
|
|
2824
3169
|
"params": "",
|
|
2825
3170
|
"returns": "void",
|
|
2826
|
-
"description": ""
|
|
3171
|
+
"description": "Switch the label into its editing field, which autofocuses and selects the current text. Same entry point as a user double-click, and a no-op while `disabled`. Commit with `commit()` or by blurring, abandon with `cancel()` or Escape."
|
|
3172
|
+
},
|
|
3173
|
+
{
|
|
3174
|
+
"name": "commit",
|
|
3175
|
+
"params": "",
|
|
3176
|
+
"returns": "void",
|
|
3177
|
+
"description": "Close the field and keep what was typed, exactly as blurring it does. `kai-rename` fires only when the text actually changed, so committing an untouched field is silent. A no-op while the field is closed."
|
|
3178
|
+
},
|
|
3179
|
+
{
|
|
3180
|
+
"name": "cancel",
|
|
3181
|
+
"params": "",
|
|
3182
|
+
"returns": "void",
|
|
3183
|
+
"description": "Abandon the edit, exactly as Escape does: the original text is restored, the field closes and `kai-cancel` fires. `kai-rename` never fires, even if the field was edited. Also works when `editing` was set programmatically and the field has not rendered yet."
|
|
2827
3184
|
}
|
|
2828
3185
|
],
|
|
2829
3186
|
"composedFrom": [
|
|
@@ -2852,6 +3209,16 @@
|
|
|
2852
3209
|
"className": "KaiEmbedElement",
|
|
2853
3210
|
"displayName": "Embed",
|
|
2854
3211
|
"props": [
|
|
3212
|
+
{
|
|
3213
|
+
"name": "theme",
|
|
3214
|
+
"type": "\"light\" | \"dark\" | \"auto\"",
|
|
3215
|
+
"optional": true,
|
|
3216
|
+
"scalar": true,
|
|
3217
|
+
"description": "Color mode (`auto` follows prefers-color-scheme).",
|
|
3218
|
+
"default": "'auto'",
|
|
3219
|
+
"universal": true,
|
|
3220
|
+
"displayType": "\"light\" | \"dark\" | \"auto\""
|
|
3221
|
+
},
|
|
2855
3222
|
{
|
|
2856
3223
|
"name": "cardId",
|
|
2857
3224
|
"type": "undefined | string",
|
|
@@ -2866,6 +3233,9 @@
|
|
|
2866
3233
|
"optional": true,
|
|
2867
3234
|
"scalar": false,
|
|
2868
3235
|
"description": "The embed payload (provider + id/url + options). Set as a JS **property** (object).",
|
|
3236
|
+
"typeName": "EmbedCardData",
|
|
3237
|
+
"typeShape": "{ 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\" }",
|
|
3238
|
+
"typeImport": "EmbedCardData",
|
|
2869
3239
|
"displayType": "undefined | { 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\" }"
|
|
2870
3240
|
}
|
|
2871
3241
|
],
|
|
@@ -2885,6 +3255,16 @@
|
|
|
2885
3255
|
"className": "KaiEmptyElement",
|
|
2886
3256
|
"displayName": "Empty",
|
|
2887
3257
|
"props": [
|
|
3258
|
+
{
|
|
3259
|
+
"name": "theme",
|
|
3260
|
+
"type": "\"light\" | \"dark\" | \"auto\"",
|
|
3261
|
+
"optional": true,
|
|
3262
|
+
"scalar": true,
|
|
3263
|
+
"description": "Color mode (`auto` follows prefers-color-scheme).",
|
|
3264
|
+
"default": "'auto'",
|
|
3265
|
+
"universal": true,
|
|
3266
|
+
"displayType": "\"light\" | \"dark\" | \"auto\""
|
|
3267
|
+
},
|
|
2888
3268
|
{
|
|
2889
3269
|
"name": "emptyTitle",
|
|
2890
3270
|
"type": "undefined | string",
|
|
@@ -2938,19 +3318,41 @@
|
|
|
2938
3318
|
"storyId": "solid-advanced-elements-emptycontent--docs"
|
|
2939
3319
|
}
|
|
2940
3320
|
],
|
|
2941
|
-
"tokens": []
|
|
3321
|
+
"tokens": [],
|
|
3322
|
+
"slots": [
|
|
3323
|
+
{
|
|
3324
|
+
"name": "",
|
|
3325
|
+
"mode": "inject",
|
|
3326
|
+
"doc": "The empty-state body below the title/description, usually the call to action."
|
|
3327
|
+
},
|
|
3328
|
+
{
|
|
3329
|
+
"name": "media",
|
|
3330
|
+
"mode": "replace",
|
|
3331
|
+
"doc": "The leading illustration or icon above the title (any inline SVG or <img>). Replaces the built-in media box."
|
|
3332
|
+
}
|
|
3333
|
+
]
|
|
2942
3334
|
},
|
|
2943
3335
|
{
|
|
2944
3336
|
"tag": "kai-feedback-bar",
|
|
2945
3337
|
"className": "KaiFeedbackBarElement",
|
|
2946
3338
|
"displayName": "FeedbackBar",
|
|
2947
3339
|
"props": [
|
|
3340
|
+
{
|
|
3341
|
+
"name": "theme",
|
|
3342
|
+
"type": "\"light\" | \"dark\" | \"auto\"",
|
|
3343
|
+
"optional": true,
|
|
3344
|
+
"scalar": true,
|
|
3345
|
+
"description": "Color mode (`auto` follows prefers-color-scheme).",
|
|
3346
|
+
"default": "'auto'",
|
|
3347
|
+
"universal": true,
|
|
3348
|
+
"displayType": "\"light\" | \"dark\" | \"auto\""
|
|
3349
|
+
},
|
|
2948
3350
|
{
|
|
2949
3351
|
"name": "barTitle",
|
|
2950
3352
|
"type": "undefined | string",
|
|
2951
3353
|
"optional": true,
|
|
2952
3354
|
"scalar": true,
|
|
2953
|
-
"description": "The banner label (e.g. \"Was this helpful?\"). Attribute: `bar-title` (`title` is avoided
|
|
3355
|
+
"description": "The banner label (e.g. \"Was this helpful?\"). Attribute: `bar-title` (`title` is avoided because it is a global HTML attribute).",
|
|
2954
3356
|
"default": "'Was this helpful?'",
|
|
2955
3357
|
"displayType": "undefined | string"
|
|
2956
3358
|
},
|
|
@@ -3039,15 +3441,25 @@
|
|
|
3039
3441
|
"displayName": "FileTree",
|
|
3040
3442
|
"props": [
|
|
3041
3443
|
{
|
|
3042
|
-
"name": "
|
|
3043
|
-
"type": "
|
|
3444
|
+
"name": "theme",
|
|
3445
|
+
"type": "\"light\" | \"dark\" | \"auto\"",
|
|
3446
|
+
"optional": true,
|
|
3447
|
+
"scalar": true,
|
|
3448
|
+
"description": "Color mode (`auto` follows prefers-color-scheme).",
|
|
3449
|
+
"default": "'auto'",
|
|
3450
|
+
"universal": true,
|
|
3451
|
+
"displayType": "\"light\" | \"dark\" | \"auto\""
|
|
3452
|
+
},
|
|
3453
|
+
{
|
|
3454
|
+
"name": "files",
|
|
3455
|
+
"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\" }[]",
|
|
3044
3456
|
"optional": false,
|
|
3045
3457
|
"scalar": false,
|
|
3046
3458
|
"description": "The files to render. Set as a JS property (array of `{ path, url?, code?, language?, type?, additions?, deletions?, status? }`).",
|
|
3047
|
-
"typeName": "
|
|
3459
|
+
"typeName": "ArtifactCardFile[]",
|
|
3048
3460
|
"typeShape": "{ 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\" }[]",
|
|
3049
3461
|
"default": "[]",
|
|
3050
|
-
"typeImport": "
|
|
3462
|
+
"typeImport": "ArtifactCardFile",
|
|
3051
3463
|
"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\" }[]"
|
|
3052
3464
|
},
|
|
3053
3465
|
{
|
|
@@ -3055,7 +3467,7 @@
|
|
|
3055
3467
|
"type": "undefined | string",
|
|
3056
3468
|
"optional": true,
|
|
3057
3469
|
"scalar": true,
|
|
3058
|
-
"description": "Selected file path
|
|
3470
|
+
"description": "Selected file path, highlighted in the tree.",
|
|
3059
3471
|
"displayType": "undefined | string"
|
|
3060
3472
|
},
|
|
3061
3473
|
{
|
|
@@ -3121,6 +3533,16 @@
|
|
|
3121
3533
|
"className": "KaiFileUploadElement",
|
|
3122
3534
|
"displayName": "FileUpload",
|
|
3123
3535
|
"props": [
|
|
3536
|
+
{
|
|
3537
|
+
"name": "theme",
|
|
3538
|
+
"type": "\"light\" | \"dark\" | \"auto\"",
|
|
3539
|
+
"optional": true,
|
|
3540
|
+
"scalar": true,
|
|
3541
|
+
"description": "Color mode (`auto` follows prefers-color-scheme).",
|
|
3542
|
+
"default": "'auto'",
|
|
3543
|
+
"universal": true,
|
|
3544
|
+
"displayType": "\"light\" | \"dark\" | \"auto\""
|
|
3545
|
+
},
|
|
3124
3546
|
{
|
|
3125
3547
|
"name": "multiple",
|
|
3126
3548
|
"type": "undefined | false | true",
|
|
@@ -3143,7 +3565,7 @@
|
|
|
3143
3565
|
"type": "undefined | false | true",
|
|
3144
3566
|
"optional": true,
|
|
3145
3567
|
"scalar": true,
|
|
3146
|
-
"description": "Disable the dropzone
|
|
3568
|
+
"description": "Disable the dropzone: no clicking, no drag-and-drop.",
|
|
3147
3569
|
"default": "false",
|
|
3148
3570
|
"displayType": "undefined | false | true"
|
|
3149
3571
|
},
|
|
@@ -3178,20 +3600,40 @@
|
|
|
3178
3600
|
"storyId": "solid-advanced-elements-fileuploadtrigger--docs"
|
|
3179
3601
|
}
|
|
3180
3602
|
],
|
|
3181
|
-
"tokens": []
|
|
3603
|
+
"tokens": [],
|
|
3604
|
+
"slots": [
|
|
3605
|
+
{
|
|
3606
|
+
"name": "",
|
|
3607
|
+
"mode": "inject",
|
|
3608
|
+
"doc": "Custom dropzone content, replacing the default label (the `label` prop is the fallback)."
|
|
3609
|
+
}
|
|
3610
|
+
]
|
|
3182
3611
|
},
|
|
3183
3612
|
{
|
|
3184
3613
|
"tag": "kai-form",
|
|
3185
3614
|
"className": "KaiFormElement",
|
|
3186
3615
|
"displayName": "Form",
|
|
3187
3616
|
"props": [
|
|
3617
|
+
{
|
|
3618
|
+
"name": "theme",
|
|
3619
|
+
"type": "\"light\" | \"dark\" | \"auto\"",
|
|
3620
|
+
"optional": true,
|
|
3621
|
+
"scalar": true,
|
|
3622
|
+
"description": "Color mode (`auto` follows prefers-color-scheme).",
|
|
3623
|
+
"default": "'auto'",
|
|
3624
|
+
"universal": true,
|
|
3625
|
+
"displayType": "\"light\" | \"dark\" | \"auto\""
|
|
3626
|
+
},
|
|
3188
3627
|
{
|
|
3189
3628
|
"name": "data",
|
|
3190
|
-
"type": "undefined | Record<string, unknown>",
|
|
3629
|
+
"type": "undefined | { type: \"object\"; title?: undefined | string; description?: undefined | string; required?: undefined | string[]; properties: Record<string, { type: \"string\" | \"number\" | \"integer\" | \"boolean\" | \"array\" | \"object\"; 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\" }[] }",
|
|
3191
3630
|
"optional": true,
|
|
3192
3631
|
"scalar": false,
|
|
3193
|
-
"description": "The form definition
|
|
3194
|
-
"
|
|
3632
|
+
"description": "The form definition: a JSON Schema (`type:'object'`) + `x-kai-*` UI hints (the CardEnvelope.data). Set as a JS PROPERTY: `el.data = { type:'object', properties:{…} }`. Import the `FormDefinition` type from `@kitn.ai/ui` for the full shape. It IS self-referential (`FormField.properties` is another `FormField` map), and the generated `element-types.d.ts` inlines every named type, so the shipped declaration bottoms out in a `Record<string, unknown>` placeholder one level down rather than carrying the recursion. That is why `FormDefinition` is a `type` alias: an interface gets no implicit index signature, so it would not be assignable to that placeholder.",
|
|
3633
|
+
"typeName": "FormDefinition",
|
|
3634
|
+
"typeShape": "{ type: \"object\"; title?: undefined | string; description?: undefined | string; required?: undefined | string[]; properties: Record<string, { type: \"string\" | \"number\" | \"integer\" | \"boolean\" | \"array\" | \"object\"; 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\" }[] }",
|
|
3635
|
+
"typeImport": "FormDefinition",
|
|
3636
|
+
"displayType": "undefined | { type: \"object\"; title?: undefined | string; description?: undefined | string; required?: undefined | string[]; properties: Record<string, { type: \"string\" | \"number\" | \"integer\" | \"boolean\" | \"array\" | \"object\"; 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\" }[] }"
|
|
3195
3637
|
},
|
|
3196
3638
|
{
|
|
3197
3639
|
"name": "cardId",
|
|
@@ -3247,7 +3689,7 @@
|
|
|
3247
3689
|
{
|
|
3248
3690
|
"name": "kai-values-change",
|
|
3249
3691
|
"detail": "{ values: Record<string, unknown>; valid: false | true }",
|
|
3250
|
-
"description": "The form's values changed on input
|
|
3692
|
+
"description": "The form's values changed on input. Carries the current coerced values + validity.",
|
|
3251
3693
|
"displayDetail": "{ values: Record<string, unknown>; valid: false | true }"
|
|
3252
3694
|
}
|
|
3253
3695
|
],
|
|
@@ -3262,7 +3704,7 @@
|
|
|
3262
3704
|
"name": "send",
|
|
3263
3705
|
"params": "",
|
|
3264
3706
|
"returns": "void",
|
|
3265
|
-
"description": "Validate + submit programmatically
|
|
3707
|
+
"description": "Validate + submit programmatically: focus the first invalid field on failure, else emit the `submit` CardEvent and resolve. Named `send`, not `submit`."
|
|
3266
3708
|
},
|
|
3267
3709
|
{
|
|
3268
3710
|
"name": "validate",
|
|
@@ -3303,6 +3745,16 @@
|
|
|
3303
3745
|
"className": "KaiHoverCardElement",
|
|
3304
3746
|
"displayName": "HoverCard",
|
|
3305
3747
|
"props": [
|
|
3748
|
+
{
|
|
3749
|
+
"name": "theme",
|
|
3750
|
+
"type": "\"light\" | \"dark\" | \"auto\"",
|
|
3751
|
+
"optional": true,
|
|
3752
|
+
"scalar": true,
|
|
3753
|
+
"description": "Color mode (`auto` follows prefers-color-scheme).",
|
|
3754
|
+
"default": "'auto'",
|
|
3755
|
+
"universal": true,
|
|
3756
|
+
"displayType": "\"light\" | \"dark\" | \"auto\""
|
|
3757
|
+
},
|
|
3306
3758
|
{
|
|
3307
3759
|
"name": "openDelay",
|
|
3308
3760
|
"type": "undefined | number",
|
|
@@ -3399,6 +3851,11 @@
|
|
|
3399
3851
|
],
|
|
3400
3852
|
"tokens": [],
|
|
3401
3853
|
"slots": [
|
|
3854
|
+
{
|
|
3855
|
+
"name": "",
|
|
3856
|
+
"mode": "inject",
|
|
3857
|
+
"doc": "The TRIGGER the card hovers off. The card body is the `card` slot."
|
|
3858
|
+
},
|
|
3402
3859
|
{
|
|
3403
3860
|
"name": "card",
|
|
3404
3861
|
"mode": "inject",
|
|
@@ -3411,6 +3868,16 @@
|
|
|
3411
3868
|
"className": "KaiIconElement",
|
|
3412
3869
|
"displayName": "Icon",
|
|
3413
3870
|
"props": [
|
|
3871
|
+
{
|
|
3872
|
+
"name": "theme",
|
|
3873
|
+
"type": "\"light\" | \"dark\" | \"auto\"",
|
|
3874
|
+
"optional": true,
|
|
3875
|
+
"scalar": true,
|
|
3876
|
+
"description": "Color mode (`auto` follows prefers-color-scheme).",
|
|
3877
|
+
"default": "'auto'",
|
|
3878
|
+
"universal": true,
|
|
3879
|
+
"displayType": "\"light\" | \"dark\" | \"auto\""
|
|
3880
|
+
},
|
|
3414
3881
|
{
|
|
3415
3882
|
"name": "name",
|
|
3416
3883
|
"type": "undefined | string",
|
|
@@ -3447,6 +3914,16 @@
|
|
|
3447
3914
|
"className": "KaiImageElement",
|
|
3448
3915
|
"displayName": "Image",
|
|
3449
3916
|
"props": [
|
|
3917
|
+
{
|
|
3918
|
+
"name": "theme",
|
|
3919
|
+
"type": "\"light\" | \"dark\" | \"auto\"",
|
|
3920
|
+
"optional": true,
|
|
3921
|
+
"scalar": true,
|
|
3922
|
+
"description": "Color mode (`auto` follows prefers-color-scheme).",
|
|
3923
|
+
"default": "'auto'",
|
|
3924
|
+
"universal": true,
|
|
3925
|
+
"displayType": "\"light\" | \"dark\" | \"auto\""
|
|
3926
|
+
},
|
|
3450
3927
|
{
|
|
3451
3928
|
"name": "base64",
|
|
3452
3929
|
"type": "undefined | string",
|
|
@@ -3497,6 +3974,16 @@
|
|
|
3497
3974
|
"className": "KaiInputElement",
|
|
3498
3975
|
"displayName": "Input",
|
|
3499
3976
|
"props": [
|
|
3977
|
+
{
|
|
3978
|
+
"name": "theme",
|
|
3979
|
+
"type": "\"light\" | \"dark\" | \"auto\"",
|
|
3980
|
+
"optional": true,
|
|
3981
|
+
"scalar": true,
|
|
3982
|
+
"description": "Color mode (`auto` follows prefers-color-scheme).",
|
|
3983
|
+
"default": "'auto'",
|
|
3984
|
+
"universal": true,
|
|
3985
|
+
"displayType": "\"light\" | \"dark\" | \"auto\""
|
|
3986
|
+
},
|
|
3500
3987
|
{
|
|
3501
3988
|
"name": "type",
|
|
3502
3989
|
"type": "undefined | string",
|
|
@@ -3511,7 +3998,7 @@
|
|
|
3511
3998
|
"type": "undefined | string",
|
|
3512
3999
|
"optional": true,
|
|
3513
4000
|
"scalar": true,
|
|
3514
|
-
"description": "Controlled value
|
|
4001
|
+
"description": "Controlled value. Settable and reflected to the `value` attribute. `el.value = 'hi'` drives it (no event); typing updates it and fires `kai-input`. Read `el.value` for live state.",
|
|
3515
4002
|
"displayType": "undefined | string"
|
|
3516
4003
|
},
|
|
3517
4004
|
{
|
|
@@ -3694,22 +4181,32 @@
|
|
|
3694
4181
|
"className": "KaiKbdElement",
|
|
3695
4182
|
"displayName": "Kbd",
|
|
3696
4183
|
"props": [
|
|
4184
|
+
{
|
|
4185
|
+
"name": "theme",
|
|
4186
|
+
"type": "\"light\" | \"dark\" | \"auto\"",
|
|
4187
|
+
"optional": true,
|
|
4188
|
+
"scalar": true,
|
|
4189
|
+
"description": "Color mode (`auto` follows prefers-color-scheme).",
|
|
4190
|
+
"default": "'auto'",
|
|
4191
|
+
"universal": true,
|
|
4192
|
+
"displayType": "\"light\" | \"dark\" | \"auto\""
|
|
4193
|
+
},
|
|
3697
4194
|
{
|
|
3698
4195
|
"name": "keys",
|
|
3699
4196
|
"type": "undefined | string",
|
|
3700
4197
|
"optional": true,
|
|
3701
4198
|
"scalar": true,
|
|
3702
|
-
"description": "Shortcut spec
|
|
4199
|
+
"description": "Shortcut spec: tokens joined by `+` (e.g. `Mod+Shift+K`). Omit it to show default-slot content instead. Display only; the element does not bind keys.",
|
|
3703
4200
|
"displayType": "undefined | string"
|
|
3704
4201
|
},
|
|
3705
4202
|
{
|
|
3706
4203
|
"name": "platform",
|
|
3707
|
-
"type": "undefined | \"
|
|
4204
|
+
"type": "undefined | \"auto\" | \"mac\" | \"other\"",
|
|
3708
4205
|
"optional": true,
|
|
3709
4206
|
"scalar": true,
|
|
3710
4207
|
"description": "`mac` uses ⌘/⌥, `other` uses Ctrl. `auto` (default) sniffs the OS.",
|
|
3711
4208
|
"default": "'auto'",
|
|
3712
|
-
"displayType": "undefined | \"
|
|
4209
|
+
"displayType": "undefined | \"auto\" | \"mac\" | \"other\""
|
|
3713
4210
|
},
|
|
3714
4211
|
{
|
|
3715
4212
|
"name": "size",
|
|
@@ -3731,6 +4228,13 @@
|
|
|
3731
4228
|
}
|
|
3732
4229
|
],
|
|
3733
4230
|
"tokens": [],
|
|
4231
|
+
"slots": [
|
|
4232
|
+
{
|
|
4233
|
+
"name": "",
|
|
4234
|
+
"mode": "inject",
|
|
4235
|
+
"doc": "Literal key text, when you are not using the `keys` prop to render key caps."
|
|
4236
|
+
}
|
|
4237
|
+
],
|
|
3734
4238
|
"parts": [
|
|
3735
4239
|
{
|
|
3736
4240
|
"name": "key",
|
|
@@ -3749,6 +4253,16 @@
|
|
|
3749
4253
|
"className": "KaiLinkPreviewElement",
|
|
3750
4254
|
"displayName": "LinkPreview",
|
|
3751
4255
|
"props": [
|
|
4256
|
+
{
|
|
4257
|
+
"name": "theme",
|
|
4258
|
+
"type": "\"light\" | \"dark\" | \"auto\"",
|
|
4259
|
+
"optional": true,
|
|
4260
|
+
"scalar": true,
|
|
4261
|
+
"description": "Color mode (`auto` follows prefers-color-scheme).",
|
|
4262
|
+
"default": "'auto'",
|
|
4263
|
+
"universal": true,
|
|
4264
|
+
"displayType": "\"light\" | \"dark\" | \"auto\""
|
|
4265
|
+
},
|
|
3752
4266
|
{
|
|
3753
4267
|
"name": "cardId",
|
|
3754
4268
|
"type": "undefined | string",
|
|
@@ -3763,6 +4277,9 @@
|
|
|
3763
4277
|
"optional": true,
|
|
3764
4278
|
"scalar": false,
|
|
3765
4279
|
"description": "The link payload (OG metadata). Set as a JS **property** (object).",
|
|
4280
|
+
"typeName": "LinkPreviewData",
|
|
4281
|
+
"typeShape": "{ url: string; title?: undefined | string; description?: undefined | string; image?: undefined | string; imageAlt?: undefined | string; favicon?: undefined | string; domain?: undefined | string; siteName?: undefined | string }",
|
|
4282
|
+
"typeImport": "LinkPreviewData",
|
|
3766
4283
|
"displayType": "undefined | { url: string; title?: undefined | string; description?: undefined | string; image?: undefined | string; imageAlt?: undefined | string; favicon?: undefined | string; domain?: undefined | string; siteName?: undefined | string }"
|
|
3767
4284
|
}
|
|
3768
4285
|
],
|
|
@@ -3782,6 +4299,16 @@
|
|
|
3782
4299
|
"className": "KaiLoaderElement",
|
|
3783
4300
|
"displayName": "Loader",
|
|
3784
4301
|
"props": [
|
|
4302
|
+
{
|
|
4303
|
+
"name": "theme",
|
|
4304
|
+
"type": "\"light\" | \"dark\" | \"auto\"",
|
|
4305
|
+
"optional": true,
|
|
4306
|
+
"scalar": true,
|
|
4307
|
+
"description": "Color mode (`auto` follows prefers-color-scheme).",
|
|
4308
|
+
"default": "'auto'",
|
|
4309
|
+
"universal": true,
|
|
4310
|
+
"displayType": "\"light\" | \"dark\" | \"auto\""
|
|
4311
|
+
},
|
|
3785
4312
|
{
|
|
3786
4313
|
"name": "variant",
|
|
3787
4314
|
"type": "undefined | \"circular\" | \"classic\" | \"pulse\" | \"pulse-dot\" | \"dots\" | \"typing\" | \"wave\" | \"bars\" | \"terminal\" | \"text-blink\" | \"text-shimmer\" | \"loading-dots\"",
|
|
@@ -3825,6 +4352,16 @@
|
|
|
3825
4352
|
"className": "KaiMarkdownElement",
|
|
3826
4353
|
"displayName": "Markdown",
|
|
3827
4354
|
"props": [
|
|
4355
|
+
{
|
|
4356
|
+
"name": "theme",
|
|
4357
|
+
"type": "\"light\" | \"dark\" | \"auto\"",
|
|
4358
|
+
"optional": true,
|
|
4359
|
+
"scalar": true,
|
|
4360
|
+
"description": "Color mode (`auto` follows prefers-color-scheme).",
|
|
4361
|
+
"default": "'auto'",
|
|
4362
|
+
"universal": true,
|
|
4363
|
+
"displayType": "\"light\" | \"dark\" | \"auto\""
|
|
4364
|
+
},
|
|
3828
4365
|
{
|
|
3829
4366
|
"name": "content",
|
|
3830
4367
|
"type": "string",
|
|
@@ -3836,12 +4373,12 @@
|
|
|
3836
4373
|
},
|
|
3837
4374
|
{
|
|
3838
4375
|
"name": "proseSize",
|
|
3839
|
-
"type": "undefined | \"
|
|
4376
|
+
"type": "undefined | \"xs\" | \"sm\" | \"base\" | \"lg\"",
|
|
3840
4377
|
"optional": true,
|
|
3841
4378
|
"scalar": true,
|
|
3842
4379
|
"description": "Text/markdown sizing.",
|
|
3843
4380
|
"default": "'sm'",
|
|
3844
|
-
"displayType": "undefined | \"
|
|
4381
|
+
"displayType": "undefined | \"xs\" | \"sm\" | \"base\" | \"lg\""
|
|
3845
4382
|
},
|
|
3846
4383
|
{
|
|
3847
4384
|
"name": "codeTheme",
|
|
@@ -3878,12 +4415,25 @@
|
|
|
3878
4415
|
"className": "KaiMenuElement",
|
|
3879
4416
|
"displayName": "Menu",
|
|
3880
4417
|
"props": [
|
|
4418
|
+
{
|
|
4419
|
+
"name": "theme",
|
|
4420
|
+
"type": "\"light\" | \"dark\" | \"auto\"",
|
|
4421
|
+
"optional": true,
|
|
4422
|
+
"scalar": true,
|
|
4423
|
+
"description": "Color mode (`auto` follows prefers-color-scheme).",
|
|
4424
|
+
"default": "'auto'",
|
|
4425
|
+
"universal": true,
|
|
4426
|
+
"displayType": "\"light\" | \"dark\" | \"auto\""
|
|
4427
|
+
},
|
|
3881
4428
|
{
|
|
3882
4429
|
"name": "items",
|
|
3883
4430
|
"type": "undefined | { id?: undefined | string; label?: undefined | string; icon?: undefined | string; shortcut?: undefined | string; checked?: undefined | false | true; radioGroup?: undefined | string; disabled?: undefined | false | true; separator?: undefined | false | true; heading?: undefined | false | true; items?: undefined | Record<string, unknown>[] }[]",
|
|
3884
4431
|
"optional": true,
|
|
3885
4432
|
"scalar": false,
|
|
3886
|
-
"description": "Tree of menu items. Set as a JS property
|
|
4433
|
+
"description": "Tree of menu items. Set as a JS property, not an HTML attribute.",
|
|
4434
|
+
"typeName": "KaiMenuItem[]",
|
|
4435
|
+
"typeShape": "{ id?: undefined | string; label?: undefined | string; icon?: undefined | string; shortcut?: undefined | string; checked?: undefined | false | true; radioGroup?: undefined | string; disabled?: undefined | false | true; separator?: undefined | false | true; heading?: undefined | false | true; items?: undefined | { id?: undefined | string; label?: undefined | string; icon?: undefined | string; shortcut?: undefined | string; checked?: undefined | false | true; radioGroup?: undefined | string; disabled?: undefined | false | true; separator?: undefined | false | true; heading?: undefined | false | true; items?: undefined | Record<string, unknown>[] }[] }[]",
|
|
4436
|
+
"typeImport": "KaiMenuItem",
|
|
3887
4437
|
"displayType": "undefined | { id?: undefined | string; label?: undefined | string; icon?: undefined | string; shortcut?: undefined | string; checked?: undefined | false | true; radioGroup?: undefined | string; disabled?: undefined | false | true; separator?: undefined | false | true; heading?: undefined | false | true; items?: undefined | Record<string, unknown>[] }[]"
|
|
3888
4438
|
},
|
|
3889
4439
|
{
|
|
@@ -3899,7 +4449,7 @@
|
|
|
3899
4449
|
"type": "undefined | string",
|
|
3900
4450
|
"optional": true,
|
|
3901
4451
|
"scalar": true,
|
|
3902
|
-
"description": "Built-in trigger: leading icon (a named icon like `\"plus\"`, an image URL/data-URI, or text). Use this instead of slotting `slot=\"trigger\"` for the common case
|
|
4452
|
+
"description": "Built-in trigger: leading icon (a named icon like `\"plus\"`, an image URL/data-URI, or text). Use this instead of slotting `slot=\"trigger\"` for the common case; a slotted trigger overrides it.",
|
|
3903
4453
|
"displayType": "undefined | string"
|
|
3904
4454
|
},
|
|
3905
4455
|
{
|
|
@@ -3947,7 +4497,7 @@
|
|
|
3947
4497
|
"type": "undefined | false | true",
|
|
3948
4498
|
"optional": true,
|
|
3949
4499
|
"scalar": true,
|
|
3950
|
-
"description": "Disable the trigger
|
|
4500
|
+
"description": "Disable the trigger: click/keyboard and `show()` no longer open the menu.",
|
|
3951
4501
|
"displayType": "undefined | false | true"
|
|
3952
4502
|
}
|
|
3953
4503
|
],
|
|
@@ -3961,7 +4511,7 @@
|
|
|
3961
4511
|
{
|
|
3962
4512
|
"name": "kai-select",
|
|
3963
4513
|
"detail": "{ id: string; checked?: undefined | false | true; radioGroup?: undefined | string }",
|
|
3964
|
-
"description": "Fired when the user selects a leaf item. - Plain items: `{ id }`. - Checkbox items: `{ id, checked }` where `checked` is the NEW state. - Radio items: `{ id, radioGroup }
|
|
4514
|
+
"description": "Fired when the user selects a leaf item. - Plain items: `{ id }`. - Checkbox items: `{ id, checked }` where `checked` is the NEW state. - Radio items: `{ id, radioGroup }`, where the consumer marks `id` as the selected one in `radioGroup` and clears the others.",
|
|
3965
4515
|
"displayDetail": "{ id: string; checked?: undefined | false | true; radioGroup?: undefined | string }"
|
|
3966
4516
|
}
|
|
3967
4517
|
],
|
|
@@ -4068,31 +4618,36 @@
|
|
|
4068
4618
|
"className": "KaiMessageElement",
|
|
4069
4619
|
"displayName": "Message",
|
|
4070
4620
|
"props": [
|
|
4621
|
+
{
|
|
4622
|
+
"name": "theme",
|
|
4623
|
+
"type": "\"light\" | \"dark\" | \"auto\"",
|
|
4624
|
+
"optional": true,
|
|
4625
|
+
"scalar": true,
|
|
4626
|
+
"description": "Color mode (`auto` follows prefers-color-scheme).",
|
|
4627
|
+
"default": "'auto'",
|
|
4628
|
+
"universal": true,
|
|
4629
|
+
"displayType": "\"light\" | \"dark\" | \"auto\""
|
|
4630
|
+
},
|
|
4071
4631
|
{
|
|
4072
4632
|
"name": "message",
|
|
4073
|
-
"type": "undefined | { id: string; role: \"user\" | \"assistant\";
|
|
4633
|
+
"type": "undefined | { id: string; role: \"user\" | \"assistant\"; parts: ({ type: \"text\"; text: string; raw?: undefined | { source: string; payload: unknown } } | { type: \"reasoning\"; text: string; label?: undefined | string; index?: undefined | number; streamId?: undefined | string; signature?: undefined | string; raw?: undefined | { source: string; payload: unknown } } | { type: \"tool\"; tool: { type: string; kind?: undefined | \"command\" | \"file-change\" | \"search\" | \"fetch\" | \"mcp\" | \"image\" | \"generic\"; state: \"input-streaming\" | \"input-available\" | \"output-available\" | \"output-error\"; input?: undefined | Record<string, unknown>; rawInput?: undefined | string; output?: undefined | Record<string, unknown>; toolCallId?: undefined | string; errorText?: undefined | string; raw?: undefined | { source: string; payload: unknown } }; raw?: undefined | { source: string; payload: unknown } } | { type: \"card\"; envelope: { 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 } }; raw?: undefined | { source: string; payload: unknown } } | { type: \"source\"; source: { id?: undefined | string; url?: undefined | string; title?: undefined | string; snippet?: undefined | string; index?: undefined | number }; raw?: undefined | { source: string; payload: unknown } } | { type: \"file\"; attachment: { id: string; type: \"file\" | \"source-document\"; filename?: undefined | string; mediaType?: undefined | string; url?: undefined | string; title?: undefined | string }; raw?: undefined | { source: string; payload: unknown } })[]; actions?: undefined | (\"copy\" | \"like\" | \"dislike\" | \"regenerate\" | \"edit\" | { id: string; label: string; icon?: undefined | string; tooltip?: undefined | string })[]; avatar?: undefined | { src?: undefined | string; fallback?: undefined | string; alt?: undefined | string }; feedback?: undefined | \"like\" | \"dislike\" }",
|
|
4074
4634
|
"optional": true,
|
|
4075
4635
|
"scalar": false,
|
|
4076
4636
|
"description": "The full message object. Set as a JS property.",
|
|
4077
|
-
"
|
|
4637
|
+
"typeName": "ChatMessage",
|
|
4638
|
+
"typeShape": "{ id: string; role: \"user\" | \"assistant\"; parts: ({ type: \"text\"; text: string; raw?: undefined | { source: string; payload: unknown } } | { type: \"reasoning\"; text: string; label?: undefined | string; index?: undefined | number; streamId?: undefined | string; signature?: undefined | string; raw?: undefined | { source: string; payload: unknown } } | { type: \"tool\"; tool: { type: string; kind?: undefined | \"command\" | \"file-change\" | \"search\" | \"fetch\" | \"mcp\" | \"image\" | \"generic\"; state: \"input-streaming\" | \"input-available\" | \"output-available\" | \"output-error\"; input?: undefined | Record<string, unknown>; rawInput?: undefined | string; output?: undefined | Record<string, unknown>; toolCallId?: undefined | string; errorText?: undefined | string; raw?: undefined | { source: string; payload: unknown } }; raw?: undefined | { source: string; payload: unknown } } | { type: \"card\"; envelope: { 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 } }; raw?: undefined | { source: string; payload: unknown } } | { type: \"source\"; source: { id?: undefined | string; url?: undefined | string; title?: undefined | string; snippet?: undefined | string; index?: undefined | number }; raw?: undefined | { source: string; payload: unknown } } | { type: \"file\"; attachment: { id: string; type: \"file\" | \"source-document\"; filename?: undefined | string; mediaType?: undefined | string; url?: undefined | string; title?: undefined | string }; raw?: undefined | { source: string; payload: unknown } })[]; actions?: undefined | (\"copy\" | \"like\" | \"dislike\" | \"regenerate\" | \"edit\" | { id: string; label: string; icon?: undefined | string; tooltip?: undefined | string })[]; avatar?: undefined | { src?: undefined | string; fallback?: undefined | string; alt?: undefined | string }; feedback?: undefined | \"like\" | \"dislike\" }",
|
|
4639
|
+
"typeImport": "ChatMessage",
|
|
4640
|
+
"displayType": "undefined | { id: string; role: \"user\" | \"assistant\"; parts: ({ type: \"text\"; text: string; raw?: undefined | { source: string; payload: unknown } } | { type: \"reasoning\"; text: string; label?: undefined | string; index?: undefined | number; streamId?: undefined | string; signature?: undefined | string; raw?: undefined | { source: string; payload: unknown } } | { type: \"tool\"; tool: { type: string; kind?: undefined | \"command\" | \"file-change\" | \"search\" | \"fetch\" | \"mcp\" | \"image\" | \"generic\"; state: \"input-streaming\" | \"input-available\" | \"output-available\" | \"output-error\"; input?: undefined | Record<string, unknown>; rawInput?: undefined | string; output?: undefined | Record<string, unknown>; toolCallId?: undefined | string; errorText?: undefined | string; raw?: undefined | { source: string; payload: unknown } }; raw?: undefined | { source: string; payload: unknown } } | { type: \"card\"; envelope: { 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 } }; raw?: undefined | { source: string; payload: unknown } } | { type: \"source\"; source: { id?: undefined | string; url?: undefined | string; title?: undefined | string; snippet?: undefined | string; index?: undefined | number }; raw?: undefined | { source: string; payload: unknown } } | { type: \"file\"; attachment: { id: string; type: \"file\" | \"source-document\"; filename?: undefined | string; mediaType?: undefined | string; url?: undefined | string; title?: undefined | string }; raw?: undefined | { source: string; payload: unknown } })[]; actions?: undefined | (\"copy\" | \"like\" | \"dislike\" | \"regenerate\" | \"edit\" | { id: string; label: string; icon?: undefined | string; tooltip?: undefined | string })[]; avatar?: undefined | { src?: undefined | string; fallback?: undefined | string; alt?: undefined | string }; feedback?: undefined | \"like\" | \"dislike\" }"
|
|
4078
4641
|
},
|
|
4079
4642
|
{
|
|
4080
4643
|
"name": "role",
|
|
4081
4644
|
"type": "undefined | \"user\" | \"assistant\"",
|
|
4082
4645
|
"optional": true,
|
|
4083
4646
|
"scalar": true,
|
|
4084
|
-
"description": "Convenience for simple cases when not passing a `message` object.",
|
|
4647
|
+
"description": "Who is speaking: `'user'` or `'assistant'`. Convenience for simple cases when not passing a `message` object. This is the SEMANTIC role of the message, not an ARIA role. The name collides with the global ARIA `role` attribute, which is why the facade lifts it off the host (see `liftRoleOffHost`). Neither speaker is a valid ARIA role, so a `role=\"user\"` left on `<kai-message>` is a CRITICAL axe `aria-roles` violation. The accessible role lives on the row inside the shadow root instead: `role=\"article\"` plus an `aria-label` naming the speaker, matching the SolidJS `<Message>` component.",
|
|
4085
4648
|
"default": "'assistant'",
|
|
4086
4649
|
"displayType": "undefined | \"user\" | \"assistant\""
|
|
4087
4650
|
},
|
|
4088
|
-
{
|
|
4089
|
-
"name": "content",
|
|
4090
|
-
"type": "undefined | string",
|
|
4091
|
-
"optional": true,
|
|
4092
|
-
"scalar": true,
|
|
4093
|
-
"description": "Convenience content (used when `message` is not set).",
|
|
4094
|
-
"displayType": "undefined | string"
|
|
4095
|
-
},
|
|
4096
4651
|
{
|
|
4097
4652
|
"name": "markdown",
|
|
4098
4653
|
"type": "undefined | false | true",
|
|
@@ -4103,12 +4658,12 @@
|
|
|
4103
4658
|
},
|
|
4104
4659
|
{
|
|
4105
4660
|
"name": "proseSize",
|
|
4106
|
-
"type": "undefined | \"
|
|
4661
|
+
"type": "undefined | \"xs\" | \"sm\" | \"base\" | \"lg\"",
|
|
4107
4662
|
"optional": true,
|
|
4108
4663
|
"scalar": true,
|
|
4109
4664
|
"description": "Text/markdown sizing for the message body.",
|
|
4110
4665
|
"default": "'sm'",
|
|
4111
|
-
"displayType": "undefined | \"
|
|
4666
|
+
"displayType": "undefined | \"xs\" | \"sm\" | \"base\" | \"lg\""
|
|
4112
4667
|
},
|
|
4113
4668
|
{
|
|
4114
4669
|
"name": "codeTheme",
|
|
@@ -4160,6 +4715,22 @@
|
|
|
4160
4715
|
"scalar": true,
|
|
4161
4716
|
"description": "Avatar rail mode. `'none'` omits the avatar rail entirely so the body spans the full row (predictable layout when you never show avatars). Any other value keeps the default behaviour: the built-in avatar when one resolves, or your `slot=\"avatar\"` content when projected (which REPLACES the built-in).",
|
|
4162
4717
|
"displayType": "undefined | string"
|
|
4718
|
+
},
|
|
4719
|
+
{
|
|
4720
|
+
"name": "cardTypes",
|
|
4721
|
+
"type": "undefined | Record<string, string>",
|
|
4722
|
+
"optional": true,
|
|
4723
|
+
"scalar": false,
|
|
4724
|
+
"description": "Optional card type -> custom-element tag overrides/additions for `card` parts (merged over the built-ins). Property: `el.cardTypes`. Typed as a plain string map (not the `CardTagMap` alias) so the generated React wrapper inlines it instead of emitting an unresolved named type.",
|
|
4725
|
+
"displayType": "undefined | Record<string, string>"
|
|
4726
|
+
},
|
|
4727
|
+
{
|
|
4728
|
+
"name": "cardSchemas",
|
|
4729
|
+
"type": "undefined | Record<string, object>",
|
|
4730
|
+
"optional": true,
|
|
4731
|
+
"scalar": false,
|
|
4732
|
+
"description": "JSON Schemas for the card types this app renders, keyed by envelope type. The companion of `cardTypes`, which says what DRAWS a card while this says what a VALID one looks like. An OBJECT, so it is a JS property only: `el.cardSchemas = { 'pricing-table': pricingSchema }`, never an attribute. `createCardRegistry(...).validationSchemas` is exactly this shape. Without it the kit validates its own seven built-ins and leaves your own card type, the one your app actually cares about, as the only unchecked thing on screen. A schema here WINS over a built-in of the same name. Typed `Record<string, object>` rather than `Record<string, JsonSchema>` deliberately: an imported `.json` schema widens `\"type\"` to `string`, and an authored one carries `$schema`/`title`/`description`/`additionalProperties`, so the tighter type would reject both of the normal ways to supply one.",
|
|
4733
|
+
"displayType": "undefined | Record<string, object>"
|
|
4163
4734
|
}
|
|
4164
4735
|
],
|
|
4165
4736
|
"events": [
|
|
@@ -4196,16 +4767,29 @@
|
|
|
4196
4767
|
}
|
|
4197
4768
|
],
|
|
4198
4769
|
"tokens": [],
|
|
4770
|
+
"declarativeChildren": [
|
|
4771
|
+
{
|
|
4772
|
+
"tag": "kai-action",
|
|
4773
|
+
"attributes": [
|
|
4774
|
+
"action",
|
|
4775
|
+
"icon",
|
|
4776
|
+
"id",
|
|
4777
|
+
"label",
|
|
4778
|
+
"tooltip"
|
|
4779
|
+
],
|
|
4780
|
+
"text": true
|
|
4781
|
+
}
|
|
4782
|
+
],
|
|
4199
4783
|
"slots": [
|
|
4200
4784
|
{
|
|
4201
4785
|
"name": "before-body",
|
|
4202
4786
|
"mode": "inject",
|
|
4203
|
-
"doc": "A per-message header at the TOP of the body, above reasoning/tools/content
|
|
4787
|
+
"doc": "A per-message header at the TOP of the body, above reasoning/tools/content: a model-name label, a role + timestamp line."
|
|
4204
4788
|
},
|
|
4205
4789
|
{
|
|
4206
4790
|
"name": "after-body",
|
|
4207
4791
|
"mode": "inject",
|
|
4208
|
-
"doc": "A row at the BOTTOM of the body, below the action bar
|
|
4792
|
+
"doc": "A row at the BOTTOM of the body, below the action bar: a citation/sources row, a token-cost/latency line."
|
|
4209
4793
|
},
|
|
4210
4794
|
{
|
|
4211
4795
|
"name": "avatar",
|
|
@@ -4235,6 +4819,11 @@
|
|
|
4235
4819
|
"doc": "The action-bar row (copy / like / regenerate …). Restyle its spacing or hide it entirely from outside.",
|
|
4236
4820
|
"recipe": "kai-message::part(actions) { gap: 0.25rem }"
|
|
4237
4821
|
},
|
|
4822
|
+
{
|
|
4823
|
+
"name": "citations",
|
|
4824
|
+
"doc": "The citation row rendered from the message’s `source` parts: a wrapped row of chips below the bubble, never inside it. Restyle its spacing or hide it entirely from outside.",
|
|
4825
|
+
"recipe": "kai-message::part(citations) { gap: 0.5rem }"
|
|
4826
|
+
},
|
|
4238
4827
|
{
|
|
4239
4828
|
"name": "avatar",
|
|
4240
4829
|
"doc": "Replaces the built-in avatar rail with your own node. Use `avatar=\"none\"` to omit the rail and let the body span the full row."
|
|
@@ -4246,17 +4835,27 @@
|
|
|
4246
4835
|
"className": "KaiModelSwitcherElement",
|
|
4247
4836
|
"displayName": "ModelSwitcher",
|
|
4248
4837
|
"props": [
|
|
4838
|
+
{
|
|
4839
|
+
"name": "theme",
|
|
4840
|
+
"type": "\"light\" | \"dark\" | \"auto\"",
|
|
4841
|
+
"optional": true,
|
|
4842
|
+
"scalar": true,
|
|
4843
|
+
"description": "Color mode (`auto` follows prefers-color-scheme).",
|
|
4844
|
+
"default": "'auto'",
|
|
4845
|
+
"universal": true,
|
|
4846
|
+
"displayType": "\"light\" | \"dark\" | \"auto\""
|
|
4847
|
+
},
|
|
4249
4848
|
{
|
|
4250
4849
|
"name": "models",
|
|
4251
|
-
"type": "{ id: string; name: string; provider?: undefined | string; description?: undefined | string; group?: undefined | string }[]",
|
|
4252
|
-
"optional":
|
|
4850
|
+
"type": "undefined | { id: string; name: string; provider?: undefined | string; description?: undefined | string; group?: undefined | string }[]",
|
|
4851
|
+
"optional": true,
|
|
4253
4852
|
"scalar": false,
|
|
4254
|
-
"description": "The selectable models. Set as a JS property (array).",
|
|
4853
|
+
"description": "The selectable models. Set as a JS property (array). Omit to supply them as `<kai-model>` light-DOM children instead; when both are present the property's models come first.",
|
|
4255
4854
|
"typeName": "ModelOption[]",
|
|
4256
4855
|
"typeShape": "{ id: string; name: string; provider?: undefined | string; description?: undefined | string; group?: undefined | string }[]",
|
|
4257
4856
|
"default": "[]",
|
|
4258
4857
|
"typeImport": "ModelOption",
|
|
4259
|
-
"displayType": "{ id: string; name: string; provider?: undefined | string; description?: undefined | string; group?: undefined | string }[]"
|
|
4858
|
+
"displayType": "undefined | { id: string; name: string; provider?: undefined | string; description?: undefined | string; group?: undefined | string }[]"
|
|
4260
4859
|
},
|
|
4261
4860
|
{
|
|
4262
4861
|
"name": "currentModel",
|
|
@@ -4287,7 +4886,7 @@
|
|
|
4287
4886
|
"type": "undefined | false | true",
|
|
4288
4887
|
"optional": true,
|
|
4289
4888
|
"scalar": true,
|
|
4290
|
-
"description": "Disable the trigger
|
|
4889
|
+
"description": "Disable the trigger: click/keyboard and `show()` no longer open the dropdown.",
|
|
4291
4890
|
"displayType": "undefined | false | true"
|
|
4292
4891
|
}
|
|
4293
4892
|
],
|
|
@@ -4332,20 +4931,46 @@
|
|
|
4332
4931
|
"storyId": "solid-advanced-elements-modelswitcher--docs"
|
|
4333
4932
|
}
|
|
4334
4933
|
],
|
|
4335
|
-
"tokens": []
|
|
4934
|
+
"tokens": [],
|
|
4935
|
+
"declarativeChildren": [
|
|
4936
|
+
{
|
|
4937
|
+
"tag": "kai-model",
|
|
4938
|
+
"attributes": [
|
|
4939
|
+
"description",
|
|
4940
|
+
"group",
|
|
4941
|
+
"id",
|
|
4942
|
+
"provider"
|
|
4943
|
+
],
|
|
4944
|
+
"text": true,
|
|
4945
|
+
"description": "Parse a single light-DOM `<kai-model>` element into a `ModelOption` descriptor. Attribute mapping: - `id` → ModelOption.id - textContent → ModelOption.name - `provider` → ModelOption.provider (optional) - `description` → ModelOption.description (optional subtitle) - `group` → ModelOption.group (optional collapsible section)"
|
|
4946
|
+
}
|
|
4947
|
+
]
|
|
4336
4948
|
},
|
|
4337
4949
|
{
|
|
4338
4950
|
"tag": "kai-nav",
|
|
4339
4951
|
"className": "KaiNavElement",
|
|
4340
4952
|
"displayName": "Nav",
|
|
4341
4953
|
"props": [
|
|
4954
|
+
{
|
|
4955
|
+
"name": "theme",
|
|
4956
|
+
"type": "\"light\" | \"dark\" | \"auto\"",
|
|
4957
|
+
"optional": true,
|
|
4958
|
+
"scalar": true,
|
|
4959
|
+
"description": "Color mode (`auto` follows prefers-color-scheme).",
|
|
4960
|
+
"default": "'auto'",
|
|
4961
|
+
"universal": true,
|
|
4962
|
+
"displayType": "\"light\" | \"dark\" | \"auto\""
|
|
4963
|
+
},
|
|
4342
4964
|
{
|
|
4343
4965
|
"name": "items",
|
|
4344
|
-
"type": "undefined | { id: string; label?: undefined | string; icon?: undefined | string; badge?: undefined | string; trailing?: undefined | string; disabled?: undefined | false | true; children?: undefined | Record<string, unknown>[]; status?: undefined | { tone: \"
|
|
4966
|
+
"type": "undefined | { id: string; label?: undefined | string; icon?: undefined | string; badge?: undefined | string; trailing?: undefined | string; disabled?: undefined | false | true; children?: undefined | Record<string, unknown>[]; status?: undefined | { tone: \"primary\" | \"info\" | \"success\" | \"warning\" | \"error\" | \"neutral\"; label?: undefined | string; pulse?: undefined | false | true }; meta?: undefined | string; action?: undefined | { icon: string; label: string }; closable?: undefined | false | true }[]",
|
|
4345
4967
|
"optional": true,
|
|
4346
4968
|
"scalar": false,
|
|
4347
4969
|
"description": "The nav items. Set as a JS property (array, not an attribute). Each item may carry `children` (a collapsible group), a `status` dot, and trailing `meta` text.",
|
|
4348
|
-
"
|
|
4970
|
+
"typeName": "KaiNavItem[]",
|
|
4971
|
+
"typeShape": "{ id: string; label?: undefined | string; icon?: undefined | string; badge?: undefined | string; trailing?: undefined | string; disabled?: undefined | false | true; children?: undefined | { id: string; label?: undefined | string; icon?: undefined | string; badge?: undefined | string; trailing?: undefined | string; disabled?: undefined | false | true; children?: undefined | Record<string, unknown>[]; status?: undefined | { tone: \"primary\" | \"info\" | \"success\" | \"warning\" | \"error\" | \"neutral\"; label?: undefined | string; pulse?: undefined | false | true }; meta?: undefined | string; action?: undefined | { icon: string; label: string }; closable?: undefined | false | true }[]; status?: undefined | { tone: \"primary\" | \"info\" | \"success\" | \"warning\" | \"error\" | \"neutral\"; label?: undefined | string; pulse?: undefined | false | true }; meta?: undefined | string; action?: undefined | { icon: string; label: string }; closable?: undefined | false | true }[]",
|
|
4972
|
+
"typeImport": "KaiNavItem",
|
|
4973
|
+
"displayType": "undefined | { id: string; label?: undefined | string; icon?: undefined | string; badge?: undefined | string; trailing?: undefined | string; disabled?: undefined | false | true; children?: undefined | Record<string, unknown>[]; status?: undefined | { tone: \"primary\" | \"info\" | \"success\" | \"warning\" | \"error\" | \"neutral\"; label?: undefined | string; pulse?: undefined | false | true }; meta?: undefined | string; action?: undefined | { icon: string; label: string }; closable?: undefined | false | true }[]"
|
|
4349
4974
|
},
|
|
4350
4975
|
{
|
|
4351
4976
|
"name": "value",
|
|
@@ -4451,14 +5076,24 @@
|
|
|
4451
5076
|
"className": "KaiNoticeElement",
|
|
4452
5077
|
"displayName": "Notice",
|
|
4453
5078
|
"props": [
|
|
5079
|
+
{
|
|
5080
|
+
"name": "theme",
|
|
5081
|
+
"type": "\"light\" | \"dark\" | \"auto\"",
|
|
5082
|
+
"optional": true,
|
|
5083
|
+
"scalar": true,
|
|
5084
|
+
"description": "Color mode (`auto` follows prefers-color-scheme).",
|
|
5085
|
+
"default": "'auto'",
|
|
5086
|
+
"universal": true,
|
|
5087
|
+
"displayType": "\"light\" | \"dark\" | \"auto\""
|
|
5088
|
+
},
|
|
4454
5089
|
{
|
|
4455
5090
|
"name": "severity",
|
|
4456
|
-
"type": "undefined | \"
|
|
5091
|
+
"type": "undefined | \"neutral\" | \"info\" | \"warning\" | \"error\" | \"success\"",
|
|
4457
5092
|
"optional": true,
|
|
4458
5093
|
"scalar": true,
|
|
4459
5094
|
"description": "`neutral` (default) · `info` · `warning` · `error` · `success`. Drives the leading icon's color and the a11y role (`alert` for errors, else `status`).",
|
|
4460
5095
|
"default": "'neutral'",
|
|
4461
|
-
"displayType": "undefined | \"
|
|
5096
|
+
"displayType": "undefined | \"neutral\" | \"info\" | \"warning\" | \"error\" | \"success\""
|
|
4462
5097
|
},
|
|
4463
5098
|
{
|
|
4464
5099
|
"name": "icon",
|
|
@@ -4496,15 +5131,20 @@
|
|
|
4496
5131
|
],
|
|
4497
5132
|
"tokens": [],
|
|
4498
5133
|
"slots": [
|
|
5134
|
+
{
|
|
5135
|
+
"name": "",
|
|
5136
|
+
"mode": "inject",
|
|
5137
|
+
"doc": "The notice message. `icon` and `action` are the named seams around it."
|
|
5138
|
+
},
|
|
4499
5139
|
{
|
|
4500
5140
|
"name": "action",
|
|
4501
5141
|
"mode": "inject",
|
|
4502
|
-
"doc": "A trailing action beside the message
|
|
5142
|
+
"doc": "A trailing action beside the message: a link or button."
|
|
4503
5143
|
},
|
|
4504
5144
|
{
|
|
4505
5145
|
"name": "icon",
|
|
4506
5146
|
"mode": "replace",
|
|
4507
|
-
"doc": "A custom leading icon (any inline SVG, inherits `currentColor`). Overrides the severity default and the `icon` prop
|
|
5147
|
+
"doc": "A custom leading icon (any inline SVG, inherits `currentColor`). Overrides the severity default and the `icon` prop, the same escape hatch as `kai-button`."
|
|
4508
5148
|
}
|
|
4509
5149
|
]
|
|
4510
5150
|
},
|
|
@@ -4513,6 +5153,16 @@
|
|
|
4513
5153
|
"className": "KaiPaneElement",
|
|
4514
5154
|
"displayName": "Pane",
|
|
4515
5155
|
"props": [
|
|
5156
|
+
{
|
|
5157
|
+
"name": "theme",
|
|
5158
|
+
"type": "\"light\" | \"dark\" | \"auto\"",
|
|
5159
|
+
"optional": true,
|
|
5160
|
+
"scalar": true,
|
|
5161
|
+
"description": "Color mode (`auto` follows prefers-color-scheme).",
|
|
5162
|
+
"default": "'auto'",
|
|
5163
|
+
"universal": true,
|
|
5164
|
+
"displayType": "\"light\" | \"dark\" | \"auto\""
|
|
5165
|
+
},
|
|
4516
5166
|
{
|
|
4517
5167
|
"name": "headline",
|
|
4518
5168
|
"type": "undefined | string",
|
|
@@ -4572,6 +5222,9 @@
|
|
|
4572
5222
|
"optional": true,
|
|
4573
5223
|
"scalar": false,
|
|
4574
5224
|
"description": "A tone-colored status dot (+ optional label) in the header. An object `{ tone, label?, pulse? }` set as a JS PROPERTY (not an attribute).",
|
|
5225
|
+
"typeName": "PaneStatus",
|
|
5226
|
+
"typeShape": "{ tone: \"working\" | \"idle\" | \"done\" | \"error\" | \"blocked\"; label?: undefined | string; pulse?: undefined | false | true }",
|
|
5227
|
+
"typeImport": "PaneStatus",
|
|
4575
5228
|
"displayType": "undefined | { tone: \"working\" | \"idle\" | \"done\" | \"error\" | \"blocked\"; label?: undefined | string; pulse?: undefined | false | true }"
|
|
4576
5229
|
}
|
|
4577
5230
|
],
|
|
@@ -4591,7 +5244,7 @@
|
|
|
4591
5244
|
{
|
|
4592
5245
|
"name": "kai-maximize",
|
|
4593
5246
|
"detail": "{ maximized: false | true }",
|
|
4594
|
-
"description": "The maximize/restore control was clicked. `detail.maximized` is the intended NEXT state
|
|
5247
|
+
"description": "The maximize/restore control was clicked. `detail.maximized` is the intended NEXT state. Drive the `maximized` prop yourself from it.",
|
|
4595
5248
|
"displayDetail": "{ maximized: false | true }"
|
|
4596
5249
|
},
|
|
4597
5250
|
{
|
|
@@ -4611,6 +5264,11 @@
|
|
|
4611
5264
|
],
|
|
4612
5265
|
"tokens": [],
|
|
4613
5266
|
"slots": [
|
|
5267
|
+
{
|
|
5268
|
+
"name": "",
|
|
5269
|
+
"mode": "inject",
|
|
5270
|
+
"doc": "The pane body, below the header row."
|
|
5271
|
+
},
|
|
4614
5272
|
{
|
|
4615
5273
|
"name": "leading",
|
|
4616
5274
|
"mode": "inject",
|
|
@@ -4655,12 +5313,25 @@
|
|
|
4655
5313
|
"className": "KaiPaneGroupElement",
|
|
4656
5314
|
"displayName": "PaneGroup",
|
|
4657
5315
|
"props": [
|
|
5316
|
+
{
|
|
5317
|
+
"name": "theme",
|
|
5318
|
+
"type": "\"light\" | \"dark\" | \"auto\"",
|
|
5319
|
+
"optional": true,
|
|
5320
|
+
"scalar": true,
|
|
5321
|
+
"description": "Color mode (`auto` follows prefers-color-scheme).",
|
|
5322
|
+
"default": "'auto'",
|
|
5323
|
+
"universal": true,
|
|
5324
|
+
"displayType": "\"light\" | \"dark\" | \"auto\""
|
|
5325
|
+
},
|
|
4658
5326
|
{
|
|
4659
5327
|
"name": "tabs",
|
|
4660
5328
|
"type": "undefined | { id: string; name: string; status?: undefined | { tone: \"working\" | \"idle\" | \"done\" | \"error\" | \"blocked\"; label?: undefined | string; pulse?: undefined | false | true }; needsAttention?: undefined | false | true; number?: undefined | number }[]",
|
|
4661
5329
|
"optional": true,
|
|
4662
5330
|
"scalar": false,
|
|
4663
5331
|
"description": "The tabs to render. An array of `{ id, name, status?, needsAttention?, number? }` set as a JS PROPERTY (not an HTML attribute).",
|
|
5332
|
+
"typeName": "PaneTab[]",
|
|
5333
|
+
"typeShape": "{ id: string; name: string; status?: undefined | { tone: \"working\" | \"idle\" | \"done\" | \"error\" | \"blocked\"; label?: undefined | string; pulse?: undefined | false | true }; needsAttention?: undefined | false | true; number?: undefined | number }[]",
|
|
5334
|
+
"typeImport": "PaneTab",
|
|
4664
5335
|
"displayType": "undefined | { id: string; name: string; status?: undefined | { tone: \"working\" | \"idle\" | \"done\" | \"error\" | \"blocked\"; label?: undefined | string; pulse?: undefined | false | true }; needsAttention?: undefined | false | true; number?: undefined | number }[]"
|
|
4665
5336
|
},
|
|
4666
5337
|
{
|
|
@@ -4723,6 +5394,13 @@
|
|
|
4723
5394
|
}
|
|
4724
5395
|
],
|
|
4725
5396
|
"tokens": [],
|
|
5397
|
+
"slots": [
|
|
5398
|
+
{
|
|
5399
|
+
"name": "",
|
|
5400
|
+
"mode": "inject",
|
|
5401
|
+
"doc": "Content shown for every tab. Use it INSTEAD of the per-tab `slot=\"<tab id>\"` seams when you swap the content yourself."
|
|
5402
|
+
}
|
|
5403
|
+
],
|
|
4726
5404
|
"parts": [
|
|
4727
5405
|
{
|
|
4728
5406
|
"name": "tabs",
|
|
@@ -4756,14 +5434,24 @@
|
|
|
4756
5434
|
"className": "KaiPopoverElement",
|
|
4757
5435
|
"displayName": "Popover",
|
|
4758
5436
|
"props": [
|
|
5437
|
+
{
|
|
5438
|
+
"name": "theme",
|
|
5439
|
+
"type": "\"light\" | \"dark\" | \"auto\"",
|
|
5440
|
+
"optional": true,
|
|
5441
|
+
"scalar": true,
|
|
5442
|
+
"description": "Color mode (`auto` follows prefers-color-scheme).",
|
|
5443
|
+
"default": "'auto'",
|
|
5444
|
+
"universal": true,
|
|
5445
|
+
"displayType": "\"light\" | \"dark\" | \"auto\""
|
|
5446
|
+
},
|
|
4759
5447
|
{
|
|
4760
5448
|
"name": "placement",
|
|
4761
|
-
"type": "undefined | \"top\" | \"right\" | \"bottom\" | \"left\" | \"
|
|
5449
|
+
"type": "undefined | \"top\" | \"right\" | \"bottom\" | \"left\" | \"bottom-end\" | \"bottom-start\" | \"left-end\" | \"left-start\" | \"right-end\" | \"right-start\" | \"top-end\" | \"top-start\"",
|
|
4762
5450
|
"optional": true,
|
|
4763
5451
|
"scalar": true,
|
|
4764
5452
|
"description": "Floating placement relative to the trigger (floating-ui placement).",
|
|
4765
5453
|
"default": "'bottom-start'",
|
|
4766
|
-
"displayType": "undefined | \"top\" | \"right\" | \"bottom\" | \"left\" | \"
|
|
5454
|
+
"displayType": "undefined | \"top\" | \"right\" | \"bottom\" | \"left\" | \"bottom-end\" | \"bottom-start\" | \"left-end\" | \"left-start\" | \"right-end\" | \"right-start\" | \"top-end\" | \"top-start\""
|
|
4767
5455
|
},
|
|
4768
5456
|
{
|
|
4769
5457
|
"name": "gutter",
|
|
@@ -4834,13 +5522,35 @@
|
|
|
4834
5522
|
"storyId": "solid-advanced-primitives-popover--docs"
|
|
4835
5523
|
}
|
|
4836
5524
|
],
|
|
4837
|
-
"tokens": []
|
|
5525
|
+
"tokens": [],
|
|
5526
|
+
"slots": [
|
|
5527
|
+
{
|
|
5528
|
+
"name": "",
|
|
5529
|
+
"mode": "inject",
|
|
5530
|
+
"doc": "The popover panel body. The control that opens it is the `trigger` slot."
|
|
5531
|
+
},
|
|
5532
|
+
{
|
|
5533
|
+
"name": "trigger",
|
|
5534
|
+
"mode": "replace",
|
|
5535
|
+
"doc": "The control that opens the popover (a button, an avatar, …). The panel anchors to it."
|
|
5536
|
+
}
|
|
5537
|
+
]
|
|
4838
5538
|
},
|
|
4839
5539
|
{
|
|
4840
5540
|
"tag": "kai-progress-bar",
|
|
4841
5541
|
"className": "KaiProgressBarElement",
|
|
4842
5542
|
"displayName": "ProgressBar",
|
|
4843
5543
|
"props": [
|
|
5544
|
+
{
|
|
5545
|
+
"name": "theme",
|
|
5546
|
+
"type": "\"light\" | \"dark\" | \"auto\"",
|
|
5547
|
+
"optional": true,
|
|
5548
|
+
"scalar": true,
|
|
5549
|
+
"description": "Color mode (`auto` follows prefers-color-scheme).",
|
|
5550
|
+
"default": "'auto'",
|
|
5551
|
+
"universal": true,
|
|
5552
|
+
"displayType": "\"light\" | \"dark\" | \"auto\""
|
|
5553
|
+
},
|
|
4844
5554
|
{
|
|
4845
5555
|
"name": "value",
|
|
4846
5556
|
"type": "undefined | number",
|
|
@@ -4903,23 +5613,33 @@
|
|
|
4903
5613
|
"className": "KaiPromptDockElement",
|
|
4904
5614
|
"displayName": "PromptDock",
|
|
4905
5615
|
"props": [
|
|
5616
|
+
{
|
|
5617
|
+
"name": "theme",
|
|
5618
|
+
"type": "\"light\" | \"dark\" | \"auto\"",
|
|
5619
|
+
"optional": true,
|
|
5620
|
+
"scalar": true,
|
|
5621
|
+
"description": "Color mode (`auto` follows prefers-color-scheme).",
|
|
5622
|
+
"default": "'auto'",
|
|
5623
|
+
"universal": true,
|
|
5624
|
+
"displayType": "\"light\" | \"dark\" | \"auto\""
|
|
5625
|
+
},
|
|
4906
5626
|
{
|
|
4907
5627
|
"name": "frame",
|
|
4908
|
-
"type": "undefined | \"
|
|
5628
|
+
"type": "undefined | \"inset\" | \"edge\" | \"none\"",
|
|
4909
5629
|
"optional": true,
|
|
4910
5630
|
"scalar": true,
|
|
4911
|
-
"description": "How the tray frames the input
|
|
5631
|
+
"description": "How the tray frames the input, the SPATIAL inset axis: `inset` (default, the classic recessed frame on every side) | `edge` (top/bottom inset only; the input sits flush left/right so the lips span the full width) | `none` (no inset; the lips attach directly as a plain stack). Attribute: `frame`.",
|
|
4912
5632
|
"default": "'inset'",
|
|
4913
|
-
"displayType": "undefined | \"
|
|
5633
|
+
"displayType": "undefined | \"inset\" | \"edge\" | \"none\""
|
|
4914
5634
|
},
|
|
4915
5635
|
{
|
|
4916
5636
|
"name": "appearance",
|
|
4917
|
-
"type": "undefined | \"
|
|
5637
|
+
"type": "undefined | \"soft\" | \"outlined\" | \"filled\" | \"plain\"",
|
|
4918
5638
|
"optional": true,
|
|
4919
5639
|
"scalar": true,
|
|
4920
|
-
"description": "How the tray surface looks
|
|
5640
|
+
"description": "How the tray surface looks, the VISUAL axis orthogonal to `frame`: `soft` (default, sunken surface + border + radius) | `outlined` (transparent + border + radius) | `filled` (sunken, no border, + radius) | `plain` (bare). Attribute: `appearance`.",
|
|
4921
5641
|
"default": "'soft'",
|
|
4922
|
-
"displayType": "undefined | \"
|
|
5642
|
+
"displayType": "undefined | \"soft\" | \"outlined\" | \"filled\" | \"plain\""
|
|
4923
5643
|
}
|
|
4924
5644
|
],
|
|
4925
5645
|
"events": [],
|
|
@@ -4933,6 +5653,11 @@
|
|
|
4933
5653
|
],
|
|
4934
5654
|
"tokens": [],
|
|
4935
5655
|
"slots": [
|
|
5656
|
+
{
|
|
5657
|
+
"name": "",
|
|
5658
|
+
"mode": "inject",
|
|
5659
|
+
"doc": "The input the dock wraps, typically a `<kai-prompt-input>`. The `top`/`bottom` slots are the lips around it."
|
|
5660
|
+
},
|
|
4936
5661
|
{
|
|
4937
5662
|
"name": "top",
|
|
4938
5663
|
"mode": "inject",
|
|
@@ -4967,6 +5692,16 @@
|
|
|
4967
5692
|
"className": "KaiPromptInputElement",
|
|
4968
5693
|
"displayName": "PromptInput",
|
|
4969
5694
|
"props": [
|
|
5695
|
+
{
|
|
5696
|
+
"name": "theme",
|
|
5697
|
+
"type": "\"light\" | \"dark\" | \"auto\"",
|
|
5698
|
+
"optional": true,
|
|
5699
|
+
"scalar": true,
|
|
5700
|
+
"description": "Color mode (`auto` follows prefers-color-scheme).",
|
|
5701
|
+
"default": "'auto'",
|
|
5702
|
+
"universal": true,
|
|
5703
|
+
"displayType": "\"light\" | \"dark\" | \"auto\""
|
|
5704
|
+
},
|
|
4970
5705
|
{
|
|
4971
5706
|
"name": "value",
|
|
4972
5707
|
"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> } })[]",
|
|
@@ -5051,7 +5786,7 @@
|
|
|
5051
5786
|
"type": "undefined | \"always\" | \"auto\"",
|
|
5052
5787
|
"optional": true,
|
|
5053
5788
|
"scalar": true,
|
|
5054
|
-
"description": "Send-button visibility. `'always'` (default) always shows it; `'auto'` shows it only when there's text/attachments (an empty composer hides it
|
|
5789
|
+
"description": "Send-button visibility. `'always'` (default) always shows it; `'auto'` shows it only when there's text/attachments (an empty composer hides it, though Enter still submits). To hide it entirely (Enter-only), it's pure CSS: `::part(send){display:none}`, no prop needed. Restyle via `::part(send)`. The Stop button (`stoppable` + `loading`) is unaffected.",
|
|
5055
5790
|
"default": "'always'",
|
|
5056
5791
|
"displayType": "undefined | \"always\" | \"auto\""
|
|
5057
5792
|
},
|
|
@@ -5070,6 +5805,9 @@
|
|
|
5070
5805
|
"optional": true,
|
|
5071
5806
|
"scalar": false,
|
|
5072
5807
|
"description": "Attachments to seed the input with (so a consumer can pre-populate staged files without an upload). Set as a JS property; the element then manages its own attachment state from there (add via the paperclip, remove per chip).",
|
|
5808
|
+
"typeName": "AttachmentData[]",
|
|
5809
|
+
"typeShape": "{ id: string; type: \"file\" | \"source-document\"; filename?: undefined | string; mediaType?: undefined | string; url?: undefined | string; title?: undefined | string }[]",
|
|
5810
|
+
"typeImport": "AttachmentData",
|
|
5073
5811
|
"displayType": "AttachmentData[] | undefined"
|
|
5074
5812
|
},
|
|
5075
5813
|
{
|
|
@@ -5077,7 +5815,10 @@
|
|
|
5077
5815
|
"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> }[] }[]",
|
|
5078
5816
|
"optional": true,
|
|
5079
5817
|
"scalar": false,
|
|
5080
|
-
"description": "Rich entity triggers
|
|
5818
|
+
"description": "Rich entity triggers. Each `{ char, kind, items }` opens a caret-anchored menu that inserts an atomic pill. Convention: `/` → skills, `@` → agents (plugins are the grouping/provenance of those items). Set as a JS property.",
|
|
5819
|
+
"typeName": "TriggerDef[]",
|
|
5820
|
+
"typeShape": "{ 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> }[] }[]",
|
|
5821
|
+
"typeImport": "TriggerDef",
|
|
5081
5822
|
"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> }[] }[]"
|
|
5082
5823
|
},
|
|
5083
5824
|
{
|
|
@@ -5093,7 +5834,7 @@
|
|
|
5093
5834
|
{
|
|
5094
5835
|
"name": "kai-attachments-change",
|
|
5095
5836
|
"detail": "{ attachments: { id: string; type: \"file\" | \"source-document\"; filename?: undefined | string; mediaType?: undefined | string; url?: undefined | string; title?: undefined | string }[] }",
|
|
5096
|
-
"description": "The staged attachments changed
|
|
5837
|
+
"description": "The staged attachments changed: a file was added (via the paperclip) or removed (per-chip ×). Carries the full current list so a consumer can react in real time (validate, show upload progress, toggle the send button).",
|
|
5097
5838
|
"displayDetail": "{ attachments: { id: string; type: \"file\" | \"source-document\"; filename?: undefined | string; mediaType?: undefined | string; url?: undefined | string; title?: undefined | string }[] }"
|
|
5098
5839
|
},
|
|
5099
5840
|
{
|
|
@@ -5162,21 +5903,90 @@
|
|
|
5162
5903
|
"name": "send",
|
|
5163
5904
|
"params": "",
|
|
5164
5905
|
"returns": "void",
|
|
5165
|
-
"description": "Send the current value programmatically
|
|
5906
|
+
"description": "Send the current value programmatically, on the same path as Enter / the send button (fires kai-submit, then clears staged attachments). Named `send`, not `submit`, to avoid colliding with the `submit` prop."
|
|
5907
|
+
}
|
|
5908
|
+
],
|
|
5909
|
+
"composedFrom": [
|
|
5910
|
+
{
|
|
5911
|
+
"name": "PromptInput",
|
|
5912
|
+
"group": "Components",
|
|
5913
|
+
"storyId": "solid-advanced-elements-promptinput--docs"
|
|
5914
|
+
},
|
|
5915
|
+
{
|
|
5916
|
+
"name": "PromptInputTextarea",
|
|
5917
|
+
"group": "Components",
|
|
5918
|
+
"storyId": "solid-advanced-elements-promptinputtextarea--docs"
|
|
5919
|
+
},
|
|
5920
|
+
{
|
|
5921
|
+
"name": "PromptInputActions",
|
|
5922
|
+
"group": "Components",
|
|
5923
|
+
"storyId": "solid-advanced-elements-promptinputactions--docs"
|
|
5924
|
+
},
|
|
5925
|
+
{
|
|
5926
|
+
"name": "PromptSuggestion",
|
|
5927
|
+
"group": "Components",
|
|
5928
|
+
"storyId": "solid-advanced-elements-promptsuggestion--docs"
|
|
5929
|
+
},
|
|
5930
|
+
{
|
|
5931
|
+
"name": "Button",
|
|
5932
|
+
"group": "UI",
|
|
5933
|
+
"storyId": "solid-advanced-primitives-button--docs"
|
|
5934
|
+
},
|
|
5935
|
+
{
|
|
5936
|
+
"name": "Tooltip",
|
|
5937
|
+
"group": "UI",
|
|
5938
|
+
"storyId": "solid-advanced-primitives-tooltip--docs"
|
|
5939
|
+
},
|
|
5940
|
+
{
|
|
5941
|
+
"name": "Attachments",
|
|
5942
|
+
"group": "Components",
|
|
5943
|
+
"storyId": "solid-advanced-elements-attachments--docs"
|
|
5944
|
+
},
|
|
5945
|
+
{
|
|
5946
|
+
"name": "Attachment",
|
|
5947
|
+
"group": "Components",
|
|
5948
|
+
"storyId": "solid-advanced-elements-attachment--docs"
|
|
5949
|
+
},
|
|
5950
|
+
{
|
|
5951
|
+
"name": "AttachmentPreview",
|
|
5952
|
+
"group": "Components",
|
|
5953
|
+
"storyId": "solid-advanced-elements-attachmentpreview--docs"
|
|
5954
|
+
},
|
|
5955
|
+
{
|
|
5956
|
+
"name": "AttachmentInfo",
|
|
5957
|
+
"group": "Components",
|
|
5958
|
+
"storyId": "solid-advanced-elements-attachmentinfo--docs"
|
|
5959
|
+
},
|
|
5960
|
+
{
|
|
5961
|
+
"name": "AttachmentRemove",
|
|
5962
|
+
"group": "Components",
|
|
5963
|
+
"storyId": "solid-advanced-elements-attachmentremove--docs"
|
|
5166
5964
|
}
|
|
5167
5965
|
],
|
|
5168
|
-
"composedFrom": [],
|
|
5169
5966
|
"tokens": [],
|
|
5967
|
+
"declarativeChildren": [
|
|
5968
|
+
{
|
|
5969
|
+
"tag": "kai-action",
|
|
5970
|
+
"attributes": [
|
|
5971
|
+
"action",
|
|
5972
|
+
"icon",
|
|
5973
|
+
"id",
|
|
5974
|
+
"label",
|
|
5975
|
+
"tooltip"
|
|
5976
|
+
],
|
|
5977
|
+
"text": true
|
|
5978
|
+
}
|
|
5979
|
+
],
|
|
5170
5980
|
"slots": [
|
|
5171
5981
|
{
|
|
5172
5982
|
"name": "input-top",
|
|
5173
5983
|
"mode": "inject",
|
|
5174
|
-
"doc": "Inside the card, above the textarea (e.g. an inline status strip). For content above/below the whole card, use your own layout
|
|
5984
|
+
"doc": "Inside the card, above the textarea (e.g. an inline status strip). For content above/below the whole card, use your own layout; that is light DOM you control."
|
|
5175
5985
|
},
|
|
5176
5986
|
{
|
|
5177
5987
|
"name": "toolbar-start",
|
|
5178
5988
|
"mode": "inject",
|
|
5179
|
-
"doc": "Leading controls in the input toolbar
|
|
5989
|
+
"doc": "Leading controls in the input toolbar, where a + menu goes."
|
|
5180
5990
|
},
|
|
5181
5991
|
{
|
|
5182
5992
|
"name": "toolbar-end",
|
|
@@ -5187,7 +5997,7 @@
|
|
|
5187
5997
|
"parts": [
|
|
5188
5998
|
{
|
|
5189
5999
|
"name": "send",
|
|
5190
|
-
"doc": "The send button. Restyle from outside, or hide it entirely (Enter-only)
|
|
6000
|
+
"doc": "The send button. Restyle from outside, or hide it entirely (Enter-only). Hiding is pure CSS, which is why there is no `submit=\"never\"`.",
|
|
5191
6001
|
"recipe": "kai-prompt-input::part(send) { display: none } /* Enter-only; or restyle: background, border-radius, … */"
|
|
5192
6002
|
}
|
|
5193
6003
|
]
|
|
@@ -5197,6 +6007,16 @@
|
|
|
5197
6007
|
"className": "KaiReasoningElement",
|
|
5198
6008
|
"displayName": "Reasoning",
|
|
5199
6009
|
"props": [
|
|
6010
|
+
{
|
|
6011
|
+
"name": "theme",
|
|
6012
|
+
"type": "\"light\" | \"dark\" | \"auto\"",
|
|
6013
|
+
"optional": true,
|
|
6014
|
+
"scalar": true,
|
|
6015
|
+
"description": "Color mode (`auto` follows prefers-color-scheme).",
|
|
6016
|
+
"default": "'auto'",
|
|
6017
|
+
"universal": true,
|
|
6018
|
+
"displayType": "\"light\" | \"dark\" | \"auto\""
|
|
6019
|
+
},
|
|
5200
6020
|
{
|
|
5201
6021
|
"name": "text",
|
|
5202
6022
|
"type": "string",
|
|
@@ -5254,7 +6074,7 @@
|
|
|
5254
6074
|
"type": "undefined | false | true",
|
|
5255
6075
|
"optional": true,
|
|
5256
6076
|
"scalar": true,
|
|
5257
|
-
"description": "Gate the disclosure trigger
|
|
6077
|
+
"description": "Gate the disclosure trigger: programmatic `show()/hide()/toggle()` still work, but the trigger click no longer toggles.",
|
|
5258
6078
|
"displayType": "undefined | false | true"
|
|
5259
6079
|
}
|
|
5260
6080
|
],
|
|
@@ -5310,6 +6130,16 @@
|
|
|
5310
6130
|
"className": "KaiRemoteElement",
|
|
5311
6131
|
"displayName": "Remote",
|
|
5312
6132
|
"props": [
|
|
6133
|
+
{
|
|
6134
|
+
"name": "theme",
|
|
6135
|
+
"type": "\"light\" | \"dark\" | \"auto\"",
|
|
6136
|
+
"optional": true,
|
|
6137
|
+
"scalar": true,
|
|
6138
|
+
"description": "Color mode (`auto` follows prefers-color-scheme).",
|
|
6139
|
+
"default": "'auto'",
|
|
6140
|
+
"universal": true,
|
|
6141
|
+
"displayType": "\"light\" | \"dark\" | \"auto\""
|
|
6142
|
+
},
|
|
5313
6143
|
{
|
|
5314
6144
|
"name": "src",
|
|
5315
6145
|
"type": "undefined | string",
|
|
@@ -5353,32 +6183,42 @@
|
|
|
5353
6183
|
"className": "KaiResizableElement",
|
|
5354
6184
|
"displayName": "Resizable",
|
|
5355
6185
|
"props": [
|
|
6186
|
+
{
|
|
6187
|
+
"name": "theme",
|
|
6188
|
+
"type": "\"light\" | \"dark\" | \"auto\"",
|
|
6189
|
+
"optional": true,
|
|
6190
|
+
"scalar": true,
|
|
6191
|
+
"description": "Color mode (`auto` follows prefers-color-scheme).",
|
|
6192
|
+
"default": "'auto'",
|
|
6193
|
+
"universal": true,
|
|
6194
|
+
"displayType": "\"light\" | \"dark\" | \"auto\""
|
|
6195
|
+
},
|
|
5356
6196
|
{
|
|
5357
6197
|
"name": "orientation",
|
|
5358
|
-
"type": "undefined | \"
|
|
6198
|
+
"type": "undefined | \"horizontal\" | \"vertical\"",
|
|
5359
6199
|
"optional": true,
|
|
5360
6200
|
"scalar": true,
|
|
5361
6201
|
"description": "Layout axis: `horizontal` (row, default) or `vertical` (column).",
|
|
5362
6202
|
"default": "'horizontal'",
|
|
5363
|
-
"displayType": "undefined | \"
|
|
6203
|
+
"displayType": "undefined | \"horizontal\" | \"vertical\""
|
|
5364
6204
|
},
|
|
5365
6205
|
{
|
|
5366
6206
|
"name": "maximizedIndex",
|
|
5367
|
-
"type": "undefined |
|
|
6207
|
+
"type": "undefined | number | null",
|
|
5368
6208
|
"optional": true,
|
|
5369
6209
|
"scalar": false,
|
|
5370
6210
|
"description": "Which item index is maximized (null = none). Declarative source of truth.",
|
|
5371
6211
|
"default": "null",
|
|
5372
|
-
"displayType": "undefined |
|
|
6212
|
+
"displayType": "undefined | number | null"
|
|
5373
6213
|
},
|
|
5374
6214
|
{
|
|
5375
6215
|
"name": "handle",
|
|
5376
|
-
"type": "undefined | \"
|
|
6216
|
+
"type": "undefined | \"line\" | \"grip\" | \"none\"",
|
|
5377
6217
|
"optional": true,
|
|
5378
6218
|
"scalar": true,
|
|
5379
|
-
"description": "Divider affordance drawn inside each draggable handle's 8px grab zone: - `line` (default)
|
|
6219
|
+
"description": "Divider affordance drawn inside each draggable handle's 8px grab zone: - `line` (default): a 1px hairline, transparent at rest, tinting on hover/drag. - `grip`: a dotted grip handle. - `none`: no visible divider, just the invisible hit-area. The full grab zone and keyboard/ARIA behavior are identical for all three.",
|
|
5380
6220
|
"default": "'line'",
|
|
5381
|
-
"displayType": "undefined | \"
|
|
6221
|
+
"displayType": "undefined | \"line\" | \"grip\" | \"none\""
|
|
5382
6222
|
}
|
|
5383
6223
|
],
|
|
5384
6224
|
"events": [
|
|
@@ -5390,12 +6230,31 @@
|
|
|
5390
6230
|
},
|
|
5391
6231
|
{
|
|
5392
6232
|
"name": "kai-maximize-change",
|
|
5393
|
-
"detail": "{ maximized: false | true; index:
|
|
6233
|
+
"detail": "{ maximized: false | true; index: number | null }",
|
|
5394
6234
|
"description": "Observe layout maximize state.",
|
|
5395
|
-
"displayDetail": "{ maximized: false | true; index:
|
|
6235
|
+
"displayDetail": "{ maximized: false | true; index: number | null }"
|
|
6236
|
+
},
|
|
6237
|
+
{
|
|
6238
|
+
"name": "kai-maximize-state",
|
|
6239
|
+
"detail": "{ maximized: false | true }",
|
|
6240
|
+
"description": "Authoritative maximize state, dispatched as a raw composed CustomEvent (not through `dispatch`) onto the affected `<kai-resizable-item>` and, on restore, onto the group host. A nested element (e.g. `<kai-artifact>`) listens for it to reconcile its own toggle.",
|
|
6241
|
+
"displayDetail": "{ maximized: false | true }"
|
|
6242
|
+
}
|
|
6243
|
+
],
|
|
6244
|
+
"methods": [
|
|
6245
|
+
{
|
|
6246
|
+
"name": "maximize",
|
|
6247
|
+
"params": "index: number",
|
|
6248
|
+
"returns": "void",
|
|
6249
|
+
"description": "Imperatively maximize the item at `index` (thin wrapper over `maximizedIndex`)."
|
|
6250
|
+
},
|
|
6251
|
+
{
|
|
6252
|
+
"name": "restore",
|
|
6253
|
+
"params": "",
|
|
6254
|
+
"returns": "void",
|
|
6255
|
+
"description": "Imperatively restore from the maximized layout."
|
|
5396
6256
|
}
|
|
5397
6257
|
],
|
|
5398
|
-
"methods": [],
|
|
5399
6258
|
"composedFrom": [
|
|
5400
6259
|
{
|
|
5401
6260
|
"name": "ResizableHandle",
|
|
@@ -5403,13 +6262,30 @@
|
|
|
5403
6262
|
"storyId": "solid-advanced-primitives-resizablehandle--docs"
|
|
5404
6263
|
}
|
|
5405
6264
|
],
|
|
5406
|
-
"tokens": []
|
|
6265
|
+
"tokens": [],
|
|
6266
|
+
"slots": [
|
|
6267
|
+
{
|
|
6268
|
+
"name": "",
|
|
6269
|
+
"mode": "inject",
|
|
6270
|
+
"doc": "The `<kai-resizable-item>` panels, in order. Dividers are inserted between them."
|
|
6271
|
+
}
|
|
6272
|
+
]
|
|
5407
6273
|
},
|
|
5408
6274
|
{
|
|
5409
6275
|
"tag": "kai-resizable-item",
|
|
5410
6276
|
"className": "KaiResizableItemElement",
|
|
5411
6277
|
"displayName": "ResizableItem",
|
|
5412
6278
|
"props": [
|
|
6279
|
+
{
|
|
6280
|
+
"name": "theme",
|
|
6281
|
+
"type": "\"light\" | \"dark\" | \"auto\"",
|
|
6282
|
+
"optional": true,
|
|
6283
|
+
"scalar": true,
|
|
6284
|
+
"description": "Color mode (`auto` follows prefers-color-scheme).",
|
|
6285
|
+
"default": "'auto'",
|
|
6286
|
+
"universal": true,
|
|
6287
|
+
"displayType": "\"light\" | \"dark\" | \"auto\""
|
|
6288
|
+
},
|
|
5413
6289
|
{
|
|
5414
6290
|
"name": "size",
|
|
5415
6291
|
"type": "undefined | string",
|
|
@@ -5457,7 +6333,7 @@
|
|
|
5457
6333
|
"type": "undefined | false | true",
|
|
5458
6334
|
"optional": true,
|
|
5459
6335
|
"scalar": true,
|
|
5460
|
-
"description": "Collapse this panel
|
|
6336
|
+
"description": "Collapse this panel. Same layout effect as `hidden` (divider dropped, the rest reflow), but it WORKS as a bare boolean from framework JSX. A plain `<kai-resizable-item collapsed>` in React/Solid/Vue/Svelte collapses the panel at the first render; `hidden` does not, because a JSX boolean sets neither the `hidden` attribute nor the IDL property on a custom element, so the parent never sees it. The facade reflects `collapsed` to a `collapsed` attribute the parent reads. Prefer this over `hidden` for declarative collapse.",
|
|
5461
6337
|
"default": "false",
|
|
5462
6338
|
"displayType": "undefined | false | true"
|
|
5463
6339
|
}
|
|
@@ -5474,6 +6350,12 @@
|
|
|
5474
6350
|
"detail": "unknown",
|
|
5475
6351
|
"description": "",
|
|
5476
6352
|
"displayDetail": "unknown"
|
|
6353
|
+
},
|
|
6354
|
+
{
|
|
6355
|
+
"name": "kai-maximize-state",
|
|
6356
|
+
"detail": "unknown",
|
|
6357
|
+
"description": "",
|
|
6358
|
+
"displayDetail": "unknown"
|
|
5477
6359
|
}
|
|
5478
6360
|
],
|
|
5479
6361
|
"methods": [],
|
|
@@ -5484,19 +6366,36 @@
|
|
|
5484
6366
|
"storyId": "solid-advanced-primitives-resizablehandle--docs"
|
|
5485
6367
|
}
|
|
5486
6368
|
],
|
|
5487
|
-
"tokens": []
|
|
6369
|
+
"tokens": [],
|
|
6370
|
+
"slots": [
|
|
6371
|
+
{
|
|
6372
|
+
"name": "",
|
|
6373
|
+
"mode": "inject",
|
|
6374
|
+
"doc": "This panel's content."
|
|
6375
|
+
}
|
|
6376
|
+
]
|
|
5488
6377
|
},
|
|
5489
6378
|
{
|
|
5490
6379
|
"tag": "kai-response-stream",
|
|
5491
6380
|
"className": "KaiResponseStreamElement",
|
|
5492
6381
|
"displayName": "ResponseStream",
|
|
5493
6382
|
"props": [
|
|
6383
|
+
{
|
|
6384
|
+
"name": "theme",
|
|
6385
|
+
"type": "\"light\" | \"dark\" | \"auto\"",
|
|
6386
|
+
"optional": true,
|
|
6387
|
+
"scalar": true,
|
|
6388
|
+
"description": "Color mode (`auto` follows prefers-color-scheme).",
|
|
6389
|
+
"default": "'auto'",
|
|
6390
|
+
"universal": true,
|
|
6391
|
+
"displayType": "\"light\" | \"dark\" | \"auto\""
|
|
6392
|
+
},
|
|
5494
6393
|
{
|
|
5495
6394
|
"name": "text",
|
|
5496
6395
|
"type": "undefined | string | AsyncIterable<string>",
|
|
5497
6396
|
"optional": true,
|
|
5498
6397
|
"scalar": false,
|
|
5499
|
-
"description": "Text to stream. A string, or an `AsyncIterable<string>` (set as a JS property
|
|
6398
|
+
"description": "Text to stream. A string, or an `AsyncIterable<string>` (set as a JS property, since async iterables can't be HTML attributes).",
|
|
5500
6399
|
"default": "''",
|
|
5501
6400
|
"displayType": "undefined | string | AsyncIterable<string>"
|
|
5502
6401
|
},
|
|
@@ -5550,23 +6449,33 @@
|
|
|
5550
6449
|
"className": "KaiScopePickerElement",
|
|
5551
6450
|
"displayName": "ScopePicker",
|
|
5552
6451
|
"props": [
|
|
6452
|
+
{
|
|
6453
|
+
"name": "theme",
|
|
6454
|
+
"type": "\"light\" | \"dark\" | \"auto\"",
|
|
6455
|
+
"optional": true,
|
|
6456
|
+
"scalar": true,
|
|
6457
|
+
"description": "Color mode (`auto` follows prefers-color-scheme).",
|
|
6458
|
+
"default": "'auto'",
|
|
6459
|
+
"universal": true,
|
|
6460
|
+
"displayType": "\"light\" | \"dark\" | \"auto\""
|
|
6461
|
+
},
|
|
5553
6462
|
{
|
|
5554
6463
|
"name": "availableAuthors",
|
|
5555
|
-
"type": "string[]",
|
|
5556
|
-
"optional":
|
|
6464
|
+
"type": "undefined | string[]",
|
|
6465
|
+
"optional": true,
|
|
5557
6466
|
"scalar": false,
|
|
5558
|
-
"description": "Authors to offer as scope filters. Set as a JS property.",
|
|
6467
|
+
"description": "Authors to offer as scope filters. Omit to drop the Authors section (for a tag-only picker). Set as a JS property.",
|
|
5559
6468
|
"default": "[]",
|
|
5560
|
-
"displayType": "string[]"
|
|
6469
|
+
"displayType": "undefined | string[]"
|
|
5561
6470
|
},
|
|
5562
6471
|
{
|
|
5563
6472
|
"name": "availableTags",
|
|
5564
|
-
"type": "string[]",
|
|
5565
|
-
"optional":
|
|
6473
|
+
"type": "undefined | string[]",
|
|
6474
|
+
"optional": true,
|
|
5566
6475
|
"scalar": false,
|
|
5567
|
-
"description": "Tags to offer as scope filters. Set as a JS property.",
|
|
6476
|
+
"description": "Tags to offer as scope filters. Omit to drop the Tags section (for an author-only picker). Set as a JS property.",
|
|
5568
6477
|
"default": "[]",
|
|
5569
|
-
"displayType": "string[]"
|
|
6478
|
+
"displayType": "undefined | string[]"
|
|
5570
6479
|
},
|
|
5571
6480
|
{
|
|
5572
6481
|
"name": "currentLabel",
|
|
@@ -5598,7 +6507,7 @@
|
|
|
5598
6507
|
"type": "undefined | false | true",
|
|
5599
6508
|
"optional": true,
|
|
5600
6509
|
"scalar": true,
|
|
5601
|
-
"description": "Disable the trigger
|
|
6510
|
+
"description": "Disable the trigger: click/keyboard and `show()` no longer open the dropdown.",
|
|
5602
6511
|
"displayType": "undefined | false | true"
|
|
5603
6512
|
}
|
|
5604
6513
|
],
|
|
@@ -5611,9 +6520,9 @@
|
|
|
5611
6520
|
},
|
|
5612
6521
|
{
|
|
5613
6522
|
"name": "kai-scope-change",
|
|
5614
|
-
"detail": "{ filters:
|
|
6523
|
+
"detail": "{ filters: { tags?: undefined | string[]; authors?: undefined | string[]; contentType?: undefined | \"transcript\" | \"markdown\"; dateRange?: undefined | { from: string; to: string } } | undefined }",
|
|
5615
6524
|
"description": "A scope was chosen (`undefined` filters = \"All Content\").",
|
|
5616
|
-
"displayDetail": "{ filters:
|
|
6525
|
+
"displayDetail": "{ filters: { tags?: undefined | string[]; authors?: undefined | string[]; contentType?: undefined | \"transcript\" | \"markdown\"; dateRange?: undefined | { from: string; to: string } } | undefined }"
|
|
5617
6526
|
}
|
|
5618
6527
|
],
|
|
5619
6528
|
"methods": [
|
|
@@ -5650,6 +6559,16 @@
|
|
|
5650
6559
|
"className": "KaiScreenElement",
|
|
5651
6560
|
"displayName": "Screen",
|
|
5652
6561
|
"props": [
|
|
6562
|
+
{
|
|
6563
|
+
"name": "theme",
|
|
6564
|
+
"type": "\"light\" | \"dark\" | \"auto\"",
|
|
6565
|
+
"optional": true,
|
|
6566
|
+
"scalar": true,
|
|
6567
|
+
"description": "Color mode (`auto` follows prefers-color-scheme).",
|
|
6568
|
+
"default": "'auto'",
|
|
6569
|
+
"universal": true,
|
|
6570
|
+
"displayType": "\"light\" | \"dark\" | \"auto\""
|
|
6571
|
+
},
|
|
5653
6572
|
{
|
|
5654
6573
|
"name": "open",
|
|
5655
6574
|
"type": "undefined | false | true",
|
|
@@ -5740,6 +6659,11 @@
|
|
|
5740
6659
|
],
|
|
5741
6660
|
"tokens": [],
|
|
5742
6661
|
"slots": [
|
|
6662
|
+
{
|
|
6663
|
+
"name": "",
|
|
6664
|
+
"mode": "inject",
|
|
6665
|
+
"doc": "The screen body, below the title bar."
|
|
6666
|
+
},
|
|
5743
6667
|
{
|
|
5744
6668
|
"name": "title",
|
|
5745
6669
|
"mode": "replace",
|
|
@@ -5779,6 +6703,16 @@
|
|
|
5779
6703
|
"className": "KaiScrollAreaElement",
|
|
5780
6704
|
"displayName": "ScrollArea",
|
|
5781
6705
|
"props": [
|
|
6706
|
+
{
|
|
6707
|
+
"name": "theme",
|
|
6708
|
+
"type": "\"light\" | \"dark\" | \"auto\"",
|
|
6709
|
+
"optional": true,
|
|
6710
|
+
"scalar": true,
|
|
6711
|
+
"description": "Color mode (`auto` follows prefers-color-scheme).",
|
|
6712
|
+
"default": "'auto'",
|
|
6713
|
+
"universal": true,
|
|
6714
|
+
"displayType": "\"light\" | \"dark\" | \"auto\""
|
|
6715
|
+
},
|
|
5782
6716
|
{
|
|
5783
6717
|
"name": "orientation",
|
|
5784
6718
|
"type": "undefined | \"vertical\" | \"horizontal\" | \"both\"",
|
|
@@ -5799,6 +6733,13 @@
|
|
|
5799
6733
|
}
|
|
5800
6734
|
],
|
|
5801
6735
|
"tokens": [],
|
|
6736
|
+
"slots": [
|
|
6737
|
+
{
|
|
6738
|
+
"name": "",
|
|
6739
|
+
"mode": "inject",
|
|
6740
|
+
"doc": "The scrollable content."
|
|
6741
|
+
}
|
|
6742
|
+
],
|
|
5802
6743
|
"parts": [
|
|
5803
6744
|
{
|
|
5804
6745
|
"name": "viewport",
|
|
@@ -5812,6 +6753,16 @@
|
|
|
5812
6753
|
"className": "KaiScrollButtonElement",
|
|
5813
6754
|
"displayName": "ScrollButton",
|
|
5814
6755
|
"props": [
|
|
6756
|
+
{
|
|
6757
|
+
"name": "theme",
|
|
6758
|
+
"type": "\"light\" | \"dark\" | \"auto\"",
|
|
6759
|
+
"optional": true,
|
|
6760
|
+
"scalar": true,
|
|
6761
|
+
"description": "Color mode (`auto` follows prefers-color-scheme).",
|
|
6762
|
+
"default": "'auto'",
|
|
6763
|
+
"universal": true,
|
|
6764
|
+
"displayType": "\"light\" | \"dark\" | \"auto\""
|
|
6765
|
+
},
|
|
5815
6766
|
{
|
|
5816
6767
|
"name": "for",
|
|
5817
6768
|
"type": "undefined | string",
|
|
@@ -5822,12 +6773,12 @@
|
|
|
5822
6773
|
},
|
|
5823
6774
|
{
|
|
5824
6775
|
"name": "variant",
|
|
5825
|
-
"type": "undefined | \"
|
|
6776
|
+
"type": "undefined | \"outline\" | \"ghost\" | \"default\"",
|
|
5826
6777
|
"optional": true,
|
|
5827
6778
|
"scalar": true,
|
|
5828
6779
|
"description": "Button visual variant: `'outline' | 'ghost' | 'default'`. Defaults to `'outline'`.",
|
|
5829
6780
|
"default": "'outline'",
|
|
5830
|
-
"displayType": "undefined | \"
|
|
6781
|
+
"displayType": "undefined | \"outline\" | \"ghost\" | \"default\""
|
|
5831
6782
|
},
|
|
5832
6783
|
{
|
|
5833
6784
|
"name": "size",
|
|
@@ -5843,7 +6794,7 @@
|
|
|
5843
6794
|
{
|
|
5844
6795
|
"name": "kai-scroll",
|
|
5845
6796
|
"detail": null,
|
|
5846
|
-
"description": "Emitted when the user clicks the button and `scrollToBottom()` is called. Carries no detail
|
|
6797
|
+
"description": "Emitted when the user clicks the button and `scrollToBottom()` is called. Carries no detail; consumers use it to know a manual scroll occurred.",
|
|
5847
6798
|
"displayDetail": null
|
|
5848
6799
|
}
|
|
5849
6800
|
],
|
|
@@ -5862,12 +6813,22 @@
|
|
|
5862
6813
|
"className": "KaiSearchElement",
|
|
5863
6814
|
"displayName": "Search",
|
|
5864
6815
|
"props": [
|
|
6816
|
+
{
|
|
6817
|
+
"name": "theme",
|
|
6818
|
+
"type": "\"light\" | \"dark\" | \"auto\"",
|
|
6819
|
+
"optional": true,
|
|
6820
|
+
"scalar": true,
|
|
6821
|
+
"description": "Color mode (`auto` follows prefers-color-scheme).",
|
|
6822
|
+
"default": "'auto'",
|
|
6823
|
+
"universal": true,
|
|
6824
|
+
"displayType": "\"light\" | \"dark\" | \"auto\""
|
|
6825
|
+
},
|
|
5865
6826
|
{
|
|
5866
6827
|
"name": "value",
|
|
5867
6828
|
"type": "undefined | string",
|
|
5868
6829
|
"optional": true,
|
|
5869
6830
|
"scalar": true,
|
|
5870
|
-
"description": "Controlled query
|
|
6831
|
+
"description": "Controlled query. Settable and reflected to the `value` attribute. Read `el.value` for live state.",
|
|
5871
6832
|
"displayType": "undefined | string"
|
|
5872
6833
|
},
|
|
5873
6834
|
{
|
|
@@ -5940,7 +6901,13 @@
|
|
|
5940
6901
|
"name": "focus",
|
|
5941
6902
|
"params": "",
|
|
5942
6903
|
"returns": "void",
|
|
5943
|
-
"description": ""
|
|
6904
|
+
"description": "Focus the search input inside the shadow root. A native `focus()` on the host lands on the host itself and never reaches it."
|
|
6905
|
+
},
|
|
6906
|
+
{
|
|
6907
|
+
"name": "clear",
|
|
6908
|
+
"params": "",
|
|
6909
|
+
"returns": "void",
|
|
6910
|
+
"description": "Empty the field and fire `kai-search` with an empty value immediately, cancelling any debounced search still in flight, then return focus to the input. Same path as the trailing clear button."
|
|
5944
6911
|
}
|
|
5945
6912
|
],
|
|
5946
6913
|
"composedFrom": [
|
|
@@ -5984,15 +6951,26 @@
|
|
|
5984
6951
|
"className": "KaiSegmentedElement",
|
|
5985
6952
|
"displayName": "Segmented",
|
|
5986
6953
|
"props": [
|
|
6954
|
+
{
|
|
6955
|
+
"name": "theme",
|
|
6956
|
+
"type": "\"light\" | \"dark\" | \"auto\"",
|
|
6957
|
+
"optional": true,
|
|
6958
|
+
"scalar": true,
|
|
6959
|
+
"description": "Color mode (`auto` follows prefers-color-scheme).",
|
|
6960
|
+
"default": "'auto'",
|
|
6961
|
+
"universal": true,
|
|
6962
|
+
"displayType": "\"light\" | \"dark\" | \"auto\""
|
|
6963
|
+
},
|
|
5987
6964
|
{
|
|
5988
6965
|
"name": "options",
|
|
5989
6966
|
"type": "{ value: string; label: string; icon?: undefined | string }[]",
|
|
5990
6967
|
"optional": false,
|
|
5991
6968
|
"scalar": false,
|
|
5992
6969
|
"description": "The selectable segments, left to right. Set as a JS property (array).",
|
|
5993
|
-
"typeName": "
|
|
6970
|
+
"typeName": "KaiSegmentedOption[]",
|
|
5994
6971
|
"typeShape": "{ value: string; label: string; icon?: undefined | string }[]",
|
|
5995
6972
|
"default": "[]",
|
|
6973
|
+
"typeImport": "KaiSegmentedOption",
|
|
5996
6974
|
"displayType": "{ value: string; label: string; icon?: undefined | string }[]"
|
|
5997
6975
|
},
|
|
5998
6976
|
{
|
|
@@ -6000,7 +6978,7 @@
|
|
|
6000
6978
|
"type": "undefined | string",
|
|
6001
6979
|
"optional": true,
|
|
6002
6980
|
"scalar": true,
|
|
6003
|
-
"description": "Controlled selected `value
|
|
6981
|
+
"description": "Controlled selected `value`. Settable and reflected to the `value` attribute. `el.value = 'preview'` drives it; choosing a segment updates it and fires `kai-change`. Read `el.value` for live state.",
|
|
6004
6982
|
"displayType": "undefined | string"
|
|
6005
6983
|
},
|
|
6006
6984
|
{
|
|
@@ -6048,14 +7026,24 @@
|
|
|
6048
7026
|
"className": "KaiSeparatorElement",
|
|
6049
7027
|
"displayName": "Separator",
|
|
6050
7028
|
"props": [
|
|
7029
|
+
{
|
|
7030
|
+
"name": "theme",
|
|
7031
|
+
"type": "\"light\" | \"dark\" | \"auto\"",
|
|
7032
|
+
"optional": true,
|
|
7033
|
+
"scalar": true,
|
|
7034
|
+
"description": "Color mode (`auto` follows prefers-color-scheme).",
|
|
7035
|
+
"default": "'auto'",
|
|
7036
|
+
"universal": true,
|
|
7037
|
+
"displayType": "\"light\" | \"dark\" | \"auto\""
|
|
7038
|
+
},
|
|
6051
7039
|
{
|
|
6052
7040
|
"name": "orientation",
|
|
6053
|
-
"type": "undefined | \"
|
|
7041
|
+
"type": "undefined | \"horizontal\" | \"vertical\"",
|
|
6054
7042
|
"optional": true,
|
|
6055
7043
|
"scalar": true,
|
|
6056
|
-
"description": "`horizontal` (default, block + full-width) or `vertical` (a rule inside a flex/grid row
|
|
7044
|
+
"description": "`horizontal` (default, block + full-width) or `vertical` (a rule inside a flex/grid row, stretching to the row height).",
|
|
6057
7045
|
"default": "'horizontal'",
|
|
6058
|
-
"displayType": "undefined | \"
|
|
7046
|
+
"displayType": "undefined | \"horizontal\" | \"vertical\""
|
|
6059
7047
|
}
|
|
6060
7048
|
],
|
|
6061
7049
|
"events": [],
|
|
@@ -6081,6 +7069,16 @@
|
|
|
6081
7069
|
"className": "KaiSettingItemElement",
|
|
6082
7070
|
"displayName": "SettingItem",
|
|
6083
7071
|
"props": [
|
|
7072
|
+
{
|
|
7073
|
+
"name": "theme",
|
|
7074
|
+
"type": "\"light\" | \"dark\" | \"auto\"",
|
|
7075
|
+
"optional": true,
|
|
7076
|
+
"scalar": true,
|
|
7077
|
+
"description": "Color mode (`auto` follows prefers-color-scheme).",
|
|
7078
|
+
"default": "'auto'",
|
|
7079
|
+
"universal": true,
|
|
7080
|
+
"displayType": "\"light\" | \"dark\" | \"auto\""
|
|
7081
|
+
},
|
|
6084
7082
|
{
|
|
6085
7083
|
"name": "label",
|
|
6086
7084
|
"type": "undefined | string",
|
|
@@ -6134,6 +7132,16 @@
|
|
|
6134
7132
|
"className": "KaiSettingsGroupElement",
|
|
6135
7133
|
"displayName": "SettingsGroup",
|
|
6136
7134
|
"props": [
|
|
7135
|
+
{
|
|
7136
|
+
"name": "theme",
|
|
7137
|
+
"type": "\"light\" | \"dark\" | \"auto\"",
|
|
7138
|
+
"optional": true,
|
|
7139
|
+
"scalar": true,
|
|
7140
|
+
"description": "Color mode (`auto` follows prefers-color-scheme).",
|
|
7141
|
+
"default": "'auto'",
|
|
7142
|
+
"universal": true,
|
|
7143
|
+
"displayType": "\"light\" | \"dark\" | \"auto\""
|
|
7144
|
+
},
|
|
6137
7145
|
{
|
|
6138
7146
|
"name": "heading",
|
|
6139
7147
|
"type": "undefined | string",
|
|
@@ -6162,6 +7170,13 @@
|
|
|
6162
7170
|
}
|
|
6163
7171
|
],
|
|
6164
7172
|
"tokens": [],
|
|
7173
|
+
"slots": [
|
|
7174
|
+
{
|
|
7175
|
+
"name": "",
|
|
7176
|
+
"mode": "inject",
|
|
7177
|
+
"doc": "The `<kai-setting-item>` rows in this group."
|
|
7178
|
+
}
|
|
7179
|
+
],
|
|
6165
7180
|
"parts": [
|
|
6166
7181
|
{
|
|
6167
7182
|
"name": "header",
|
|
@@ -6180,6 +7195,16 @@
|
|
|
6180
7195
|
"className": "KaiSkeletonElement",
|
|
6181
7196
|
"displayName": "Skeleton",
|
|
6182
7197
|
"props": [
|
|
7198
|
+
{
|
|
7199
|
+
"name": "theme",
|
|
7200
|
+
"type": "\"light\" | \"dark\" | \"auto\"",
|
|
7201
|
+
"optional": true,
|
|
7202
|
+
"scalar": true,
|
|
7203
|
+
"description": "Color mode (`auto` follows prefers-color-scheme).",
|
|
7204
|
+
"default": "'auto'",
|
|
7205
|
+
"universal": true,
|
|
7206
|
+
"displayType": "\"light\" | \"dark\" | \"auto\""
|
|
7207
|
+
},
|
|
6183
7208
|
{
|
|
6184
7209
|
"name": "variant",
|
|
6185
7210
|
"type": "undefined | \"text\" | \"rect\" | \"circle\"",
|
|
@@ -6237,16 +7262,27 @@
|
|
|
6237
7262
|
"className": "KaiSkillsElement",
|
|
6238
7263
|
"displayName": "Skills",
|
|
6239
7264
|
"props": [
|
|
7265
|
+
{
|
|
7266
|
+
"name": "theme",
|
|
7267
|
+
"type": "\"light\" | \"dark\" | \"auto\"",
|
|
7268
|
+
"optional": true,
|
|
7269
|
+
"scalar": true,
|
|
7270
|
+
"description": "Color mode (`auto` follows prefers-color-scheme).",
|
|
7271
|
+
"default": "'auto'",
|
|
7272
|
+
"universal": true,
|
|
7273
|
+
"displayType": "\"light\" | \"dark\" | \"auto\""
|
|
7274
|
+
},
|
|
6240
7275
|
{
|
|
6241
7276
|
"name": "skills",
|
|
6242
|
-
"type": "{ id: string; name: string }[]",
|
|
6243
|
-
"optional":
|
|
7277
|
+
"type": "undefined | { id: string; name: string }[]",
|
|
7278
|
+
"optional": true,
|
|
6244
7279
|
"scalar": false,
|
|
6245
|
-
"description": "The active skills to badge. Set as a JS property.",
|
|
7280
|
+
"description": "The active skills to badge. Set as a JS property. Omit to supply them as `<kai-skill>` light-DOM children instead; when both are present the property's skills come first. Nothing renders when there are none.",
|
|
6246
7281
|
"typeName": "Skill[]",
|
|
6247
7282
|
"typeShape": "{ id: string; name: string }[]",
|
|
6248
7283
|
"default": "[]",
|
|
6249
|
-
"
|
|
7284
|
+
"typeImport": "Skill",
|
|
7285
|
+
"displayType": "undefined | { id: string; name: string }[]"
|
|
6250
7286
|
}
|
|
6251
7287
|
],
|
|
6252
7288
|
"events": [],
|
|
@@ -6258,13 +7294,33 @@
|
|
|
6258
7294
|
"storyId": "solid-advanced-elements-messageskills--docs"
|
|
6259
7295
|
}
|
|
6260
7296
|
],
|
|
6261
|
-
"tokens": []
|
|
7297
|
+
"tokens": [],
|
|
7298
|
+
"declarativeChildren": [
|
|
7299
|
+
{
|
|
7300
|
+
"tag": "kai-skill",
|
|
7301
|
+
"attributes": [
|
|
7302
|
+
"id"
|
|
7303
|
+
],
|
|
7304
|
+
"text": true,
|
|
7305
|
+
"description": "Parse a single light-DOM `<kai-skill>` element into a `Skill` descriptor. Attribute / content mapping: - `id` → Skill.id (falls back to `name` when absent) - `textContent` → Skill.name (the human-readable badge label) Example: `<kai-skill id=\"web-search\">Web Search</kai-skill>`"
|
|
7306
|
+
}
|
|
7307
|
+
]
|
|
6262
7308
|
},
|
|
6263
7309
|
{
|
|
6264
7310
|
"tag": "kai-source",
|
|
6265
7311
|
"className": "KaiSourceElement",
|
|
6266
7312
|
"displayName": "Source",
|
|
6267
7313
|
"props": [
|
|
7314
|
+
{
|
|
7315
|
+
"name": "theme",
|
|
7316
|
+
"type": "\"light\" | \"dark\" | \"auto\"",
|
|
7317
|
+
"optional": true,
|
|
7318
|
+
"scalar": true,
|
|
7319
|
+
"description": "Color mode (`auto` follows prefers-color-scheme).",
|
|
7320
|
+
"default": "'auto'",
|
|
7321
|
+
"universal": true,
|
|
7322
|
+
"displayType": "\"light\" | \"dark\" | \"auto\""
|
|
7323
|
+
},
|
|
6268
7324
|
{
|
|
6269
7325
|
"name": "href",
|
|
6270
7326
|
"type": "undefined | string",
|
|
@@ -6287,7 +7343,7 @@
|
|
|
6287
7343
|
"type": "undefined | string",
|
|
6288
7344
|
"optional": true,
|
|
6289
7345
|
"scalar": true,
|
|
6290
|
-
"description": "Hover-card headline. Attribute: `headline` (`title` is avoided
|
|
7346
|
+
"description": "Hover-card headline. Attribute: `headline` (`title` is avoided because it is a global HTML attribute that reflects in a CE constructor and breaks it).",
|
|
6291
7347
|
"default": "''",
|
|
6292
7348
|
"displayType": "undefined | string"
|
|
6293
7349
|
},
|
|
@@ -6341,16 +7397,27 @@
|
|
|
6341
7397
|
"className": "KaiSourcesElement",
|
|
6342
7398
|
"displayName": "Sources",
|
|
6343
7399
|
"props": [
|
|
7400
|
+
{
|
|
7401
|
+
"name": "theme",
|
|
7402
|
+
"type": "\"light\" | \"dark\" | \"auto\"",
|
|
7403
|
+
"optional": true,
|
|
7404
|
+
"scalar": true,
|
|
7405
|
+
"description": "Color mode (`auto` follows prefers-color-scheme).",
|
|
7406
|
+
"default": "'auto'",
|
|
7407
|
+
"universal": true,
|
|
7408
|
+
"displayType": "\"light\" | \"dark\" | \"auto\""
|
|
7409
|
+
},
|
|
6344
7410
|
{
|
|
6345
7411
|
"name": "sources",
|
|
6346
|
-
"type": "{ href: string; title?: undefined | string; description?: undefined | string; label?: undefined | string; showFavicon?: undefined | false | true }[]",
|
|
6347
|
-
"optional":
|
|
7412
|
+
"type": "undefined | { href: string; title?: undefined | string; description?: undefined | string; label?: undefined | string; showFavicon?: undefined | false | true }[]",
|
|
7413
|
+
"optional": true,
|
|
6348
7414
|
"scalar": false,
|
|
6349
|
-
"description": "The sources to render. Set as a JS property.",
|
|
6350
|
-
"typeName": "
|
|
7415
|
+
"description": "The sources to render. Set as a JS property. Omit to supply them as `<kai-source>` light-DOM children instead; when both are present the property's sources come first.",
|
|
7416
|
+
"typeName": "KaiSourceItem[]",
|
|
6351
7417
|
"typeShape": "{ href: string; title?: undefined | string; description?: undefined | string; label?: undefined | string; showFavicon?: undefined | false | true }[]",
|
|
6352
7418
|
"default": "[]",
|
|
6353
|
-
"
|
|
7419
|
+
"typeImport": "KaiSourceItem",
|
|
7420
|
+
"displayType": "undefined | { href: string; title?: undefined | string; description?: undefined | string; label?: undefined | string; showFavicon?: undefined | false | true }[]"
|
|
6354
7421
|
},
|
|
6355
7422
|
{
|
|
6356
7423
|
"name": "showFavicon",
|
|
@@ -6366,7 +7433,7 @@
|
|
|
6366
7433
|
"type": "undefined | false | true",
|
|
6367
7434
|
"optional": true,
|
|
6368
7435
|
"scalar": true,
|
|
6369
|
-
"description": "When true, each citation chip is labelled with its 1-based index in the merged (prop + declarative-children) list (`[1]`, `[2]`, …) instead of the per-item `label` or domain fallback. HTML attribute: `numbered` (boolean
|
|
7436
|
+
"description": "When true, each citation chip is labelled with its 1-based index in the merged (prop + declarative-children) list (`[1]`, `[2]`, …) instead of the per-item `label` or domain fallback. HTML attribute: `numbered` (boolean: a bare attribute or `numbered=\"true\"`). JS property: `el.numbered = true`.",
|
|
6370
7437
|
"default": "false",
|
|
6371
7438
|
"displayType": "undefined | false | true"
|
|
6372
7439
|
}
|
|
@@ -6395,13 +7462,37 @@
|
|
|
6395
7462
|
"storyId": "solid-advanced-elements-sourcelist--docs"
|
|
6396
7463
|
}
|
|
6397
7464
|
],
|
|
6398
|
-
"tokens": []
|
|
7465
|
+
"tokens": [],
|
|
7466
|
+
"declarativeChildren": [
|
|
7467
|
+
{
|
|
7468
|
+
"tag": "kai-source",
|
|
7469
|
+
"attributes": [
|
|
7470
|
+
"description",
|
|
7471
|
+
"headline",
|
|
7472
|
+
"href",
|
|
7473
|
+
"label",
|
|
7474
|
+
"show-favicon"
|
|
7475
|
+
],
|
|
7476
|
+
"text": false,
|
|
7477
|
+
"description": "Parse a single light-DOM `<kai-source>` element into a `KaiSourceItem` descriptor. Attribute mapping: - `href` → KaiSourceItem.href - `label` → KaiSourceItem.label - `headline` → KaiSourceItem.title (matches kai-source's prop name; \"title\" is a reserved HTMLElement attribute so kai-source uses \"headline\") - `description` → KaiSourceItem.description - `show-favicon`→ KaiSourceItem.showFavicon (bare boolean attribute)"
|
|
7478
|
+
}
|
|
7479
|
+
]
|
|
6399
7480
|
},
|
|
6400
7481
|
{
|
|
6401
7482
|
"tag": "kai-status",
|
|
6402
7483
|
"className": "KaiStatusElement",
|
|
6403
7484
|
"displayName": "Status",
|
|
6404
7485
|
"props": [
|
|
7486
|
+
{
|
|
7487
|
+
"name": "theme",
|
|
7488
|
+
"type": "\"light\" | \"dark\" | \"auto\"",
|
|
7489
|
+
"optional": true,
|
|
7490
|
+
"scalar": true,
|
|
7491
|
+
"description": "Color mode (`auto` follows prefers-color-scheme).",
|
|
7492
|
+
"default": "'auto'",
|
|
7493
|
+
"universal": true,
|
|
7494
|
+
"displayType": "\"light\" | \"dark\" | \"auto\""
|
|
7495
|
+
},
|
|
6405
7496
|
{
|
|
6406
7497
|
"name": "status",
|
|
6407
7498
|
"type": "undefined | \"new\" | \"online\" | \"busy\" | \"away\" | \"offline\"",
|
|
@@ -6461,23 +7552,33 @@
|
|
|
6461
7552
|
"className": "KaiSuggestionsElement",
|
|
6462
7553
|
"displayName": "Suggestions",
|
|
6463
7554
|
"props": [
|
|
7555
|
+
{
|
|
7556
|
+
"name": "theme",
|
|
7557
|
+
"type": "\"light\" | \"dark\" | \"auto\"",
|
|
7558
|
+
"optional": true,
|
|
7559
|
+
"scalar": true,
|
|
7560
|
+
"description": "Color mode (`auto` follows prefers-color-scheme).",
|
|
7561
|
+
"default": "'auto'",
|
|
7562
|
+
"universal": true,
|
|
7563
|
+
"displayType": "\"light\" | \"dark\" | \"auto\""
|
|
7564
|
+
},
|
|
6464
7565
|
{
|
|
6465
7566
|
"name": "suggestions",
|
|
6466
|
-
"type": "(string | { label: string; value?: undefined | string; icon?: undefined | string })[]",
|
|
6467
|
-
"optional":
|
|
7567
|
+
"type": "undefined | (string | { label: string; value?: undefined | string; icon?: undefined | string })[]",
|
|
7568
|
+
"optional": true,
|
|
6468
7569
|
"scalar": false,
|
|
6469
|
-
"description": "The suggestions. Strings, or `{ label, value }` when the displayed text and the emitted value differ. Set as a JS property.",
|
|
7570
|
+
"description": "The suggestions. Strings, or `{ label, value }` when the displayed text and the emitted value differ. Set as a JS property. Omit to supply them as `<kai-suggestion>` light-DOM children instead; when both are present the property's suggestions come first.",
|
|
6470
7571
|
"default": "[]",
|
|
6471
|
-
"displayType": "(string | { label: string; value?: undefined | string; icon?: undefined | string })[]"
|
|
7572
|
+
"displayType": "undefined | (string | { label: string; value?: undefined | string; icon?: undefined | string })[]"
|
|
6472
7573
|
},
|
|
6473
7574
|
{
|
|
6474
7575
|
"name": "variant",
|
|
6475
|
-
"type": "undefined | \"
|
|
7576
|
+
"type": "undefined | \"outline\" | \"ghost\" | \"default\"",
|
|
6476
7577
|
"optional": true,
|
|
6477
7578
|
"scalar": true,
|
|
6478
7579
|
"description": "Chip style: `'outline'` (default), `'ghost'`, or `'default'` (filled).",
|
|
6479
7580
|
"default": "'outline'",
|
|
6480
|
-
"displayType": "undefined | \"
|
|
7581
|
+
"displayType": "undefined | \"outline\" | \"ghost\" | \"default\""
|
|
6481
7582
|
},
|
|
6482
7583
|
{
|
|
6483
7584
|
"name": "size",
|
|
@@ -6490,12 +7591,12 @@
|
|
|
6490
7591
|
},
|
|
6491
7592
|
{
|
|
6492
7593
|
"name": "layout",
|
|
6493
|
-
"type": "undefined | \"
|
|
7594
|
+
"type": "undefined | \"chips\" | \"list\"",
|
|
6494
7595
|
"optional": true,
|
|
6495
7596
|
"scalar": true,
|
|
6496
|
-
"description": "Layout: `'chips'` (default) renders a wrapping row of rounded pills; `'list'` renders a vertical, full-width \"Ideas for you\" list
|
|
7597
|
+
"description": "Layout: `'chips'` (default) renders a wrapping row of rounded pills; `'list'` renders a vertical, full-width \"Ideas for you\" list where each row is left-aligned with a leading `icon`, a label, and a hover background.",
|
|
6497
7598
|
"default": "'chips'",
|
|
6498
|
-
"displayType": "undefined | \"
|
|
7599
|
+
"displayType": "undefined | \"chips\" | \"list\""
|
|
6499
7600
|
},
|
|
6500
7601
|
{
|
|
6501
7602
|
"name": "block",
|
|
@@ -6531,19 +7632,40 @@
|
|
|
6531
7632
|
"storyId": "solid-advanced-elements-promptsuggestion--docs"
|
|
6532
7633
|
}
|
|
6533
7634
|
],
|
|
6534
|
-
"tokens": []
|
|
7635
|
+
"tokens": [],
|
|
7636
|
+
"declarativeChildren": [
|
|
7637
|
+
{
|
|
7638
|
+
"tag": "kai-suggestion",
|
|
7639
|
+
"attributes": [
|
|
7640
|
+
"icon",
|
|
7641
|
+
"value"
|
|
7642
|
+
],
|
|
7643
|
+
"text": true,
|
|
7644
|
+
"description": "Parse a single `<kai-suggestion>` node into an `Item` descriptor."
|
|
7645
|
+
}
|
|
7646
|
+
]
|
|
6535
7647
|
},
|
|
6536
7648
|
{
|
|
6537
7649
|
"tag": "kai-switch",
|
|
6538
7650
|
"className": "KaiSwitchElement",
|
|
6539
7651
|
"displayName": "Switch",
|
|
6540
7652
|
"props": [
|
|
7653
|
+
{
|
|
7654
|
+
"name": "theme",
|
|
7655
|
+
"type": "\"light\" | \"dark\" | \"auto\"",
|
|
7656
|
+
"optional": true,
|
|
7657
|
+
"scalar": true,
|
|
7658
|
+
"description": "Color mode (`auto` follows prefers-color-scheme).",
|
|
7659
|
+
"default": "'auto'",
|
|
7660
|
+
"universal": true,
|
|
7661
|
+
"displayType": "\"light\" | \"dark\" | \"auto\""
|
|
7662
|
+
},
|
|
6541
7663
|
{
|
|
6542
7664
|
"name": "checked",
|
|
6543
7665
|
"type": "undefined | false | true",
|
|
6544
7666
|
"optional": true,
|
|
6545
7667
|
"scalar": true,
|
|
6546
|
-
"description": "Controlled checked state
|
|
7668
|
+
"description": "Controlled checked state. Settable and reflected to the `checked` attribute. `el.checked = true` (or `<kai-switch checked>`) drives it; the toggle UI updates it and fires `kai-change`. Read `el.checked` for live state.",
|
|
6547
7669
|
"displayType": "undefined | false | true"
|
|
6548
7670
|
},
|
|
6549
7671
|
{
|
|
@@ -6623,12 +7745,25 @@
|
|
|
6623
7745
|
"className": "KaiTabsElement",
|
|
6624
7746
|
"displayName": "Tabs",
|
|
6625
7747
|
"props": [
|
|
7748
|
+
{
|
|
7749
|
+
"name": "theme",
|
|
7750
|
+
"type": "\"light\" | \"dark\" | \"auto\"",
|
|
7751
|
+
"optional": true,
|
|
7752
|
+
"scalar": true,
|
|
7753
|
+
"description": "Color mode (`auto` follows prefers-color-scheme).",
|
|
7754
|
+
"default": "'auto'",
|
|
7755
|
+
"universal": true,
|
|
7756
|
+
"displayType": "\"light\" | \"dark\" | \"auto\""
|
|
7757
|
+
},
|
|
6626
7758
|
{
|
|
6627
7759
|
"name": "items",
|
|
6628
7760
|
"type": "undefined | { id: string; label?: undefined | string; icon?: undefined | string; disabled?: undefined | false | true }[]",
|
|
6629
7761
|
"optional": true,
|
|
6630
7762
|
"scalar": false,
|
|
6631
7763
|
"description": "Tabs to render. Set as a JS property, not an HTML attribute.",
|
|
7764
|
+
"typeName": "KaiTabItem[]",
|
|
7765
|
+
"typeShape": "{ id: string; label?: undefined | string; icon?: undefined | string; disabled?: undefined | false | true }[]",
|
|
7766
|
+
"typeImport": "KaiTabItem",
|
|
6632
7767
|
"displayType": "undefined | { id: string; label?: undefined | string; icon?: undefined | string; disabled?: undefined | false | true }[]"
|
|
6633
7768
|
},
|
|
6634
7769
|
{
|
|
@@ -6721,13 +7856,26 @@
|
|
|
6721
7856
|
"className": "KaiTasksElement",
|
|
6722
7857
|
"displayName": "Tasks",
|
|
6723
7858
|
"props": [
|
|
7859
|
+
{
|
|
7860
|
+
"name": "theme",
|
|
7861
|
+
"type": "\"light\" | \"dark\" | \"auto\"",
|
|
7862
|
+
"optional": true,
|
|
7863
|
+
"scalar": true,
|
|
7864
|
+
"description": "Color mode (`auto` follows prefers-color-scheme).",
|
|
7865
|
+
"default": "'auto'",
|
|
7866
|
+
"universal": true,
|
|
7867
|
+
"displayType": "\"light\" | \"dark\" | \"auto\""
|
|
7868
|
+
},
|
|
6724
7869
|
{
|
|
6725
7870
|
"name": "data",
|
|
6726
|
-
"type": "undefined |
|
|
7871
|
+
"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 }",
|
|
6727
7872
|
"optional": true,
|
|
6728
7873
|
"scalar": false,
|
|
6729
7874
|
"description": "The tasks definition (the CardEnvelope.data). Set as a JS PROPERTY: `el.data = { tasks:[…], selectAll, confirmLabel, … }`. Import `TasksCardData` from `@kitn.ai/ui` for the full shape.",
|
|
6730
|
-
"
|
|
7875
|
+
"typeName": "TasksCardData",
|
|
7876
|
+
"typeShape": "{ 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 }",
|
|
7877
|
+
"typeImport": "TasksCardData",
|
|
7878
|
+
"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 }"
|
|
6731
7879
|
},
|
|
6732
7880
|
{
|
|
6733
7881
|
"name": "cardId",
|
|
@@ -6792,7 +7940,7 @@
|
|
|
6792
7940
|
{
|
|
6793
7941
|
"name": "kai-value-change",
|
|
6794
7942
|
"detail": "{ value: string[] }",
|
|
6795
|
-
"description": "The selection changed on a toggle
|
|
7943
|
+
"description": "The selection changed on a toggle. Carries the selected ids in input order.",
|
|
6796
7944
|
"displayDetail": "{ value: string[] }"
|
|
6797
7945
|
}
|
|
6798
7946
|
],
|
|
@@ -6813,7 +7961,7 @@
|
|
|
6813
7961
|
"name": "send",
|
|
6814
7962
|
"params": "",
|
|
6815
7963
|
"returns": "void",
|
|
6816
|
-
"description": "Confirm the current selection
|
|
7964
|
+
"description": "Confirm the current selection: emits the `submit` CardEvent + resolves (only when the min/max gate passes). Named `send`, not `submit`."
|
|
6817
7965
|
},
|
|
6818
7966
|
{
|
|
6819
7967
|
"name": "focus",
|
|
@@ -6848,6 +7996,16 @@
|
|
|
6848
7996
|
"className": "KaiTextShimmerElement",
|
|
6849
7997
|
"displayName": "TextShimmer",
|
|
6850
7998
|
"props": [
|
|
7999
|
+
{
|
|
8000
|
+
"name": "theme",
|
|
8001
|
+
"type": "\"light\" | \"dark\" | \"auto\"",
|
|
8002
|
+
"optional": true,
|
|
8003
|
+
"scalar": true,
|
|
8004
|
+
"description": "Color mode (`auto` follows prefers-color-scheme).",
|
|
8005
|
+
"default": "'auto'",
|
|
8006
|
+
"universal": true,
|
|
8007
|
+
"displayType": "\"light\" | \"dark\" | \"auto\""
|
|
8008
|
+
},
|
|
6851
8009
|
{
|
|
6852
8010
|
"name": "text",
|
|
6853
8011
|
"type": "undefined | string",
|
|
@@ -6901,6 +8059,16 @@
|
|
|
6901
8059
|
"className": "KaiThinkingBarElement",
|
|
6902
8060
|
"displayName": "ThinkingBar",
|
|
6903
8061
|
"props": [
|
|
8062
|
+
{
|
|
8063
|
+
"name": "theme",
|
|
8064
|
+
"type": "\"light\" | \"dark\" | \"auto\"",
|
|
8065
|
+
"optional": true,
|
|
8066
|
+
"scalar": true,
|
|
8067
|
+
"description": "Color mode (`auto` follows prefers-color-scheme).",
|
|
8068
|
+
"default": "'auto'",
|
|
8069
|
+
"universal": true,
|
|
8070
|
+
"displayType": "\"light\" | \"dark\" | \"auto\""
|
|
8071
|
+
},
|
|
6904
8072
|
{
|
|
6905
8073
|
"name": "text",
|
|
6906
8074
|
"type": "undefined | string",
|
|
@@ -6952,31 +8120,44 @@
|
|
|
6952
8120
|
"className": "KaiThreadElement",
|
|
6953
8121
|
"displayName": "Thread",
|
|
6954
8122
|
"props": [
|
|
8123
|
+
{
|
|
8124
|
+
"name": "theme",
|
|
8125
|
+
"type": "\"light\" | \"dark\" | \"auto\"",
|
|
8126
|
+
"optional": true,
|
|
8127
|
+
"scalar": true,
|
|
8128
|
+
"description": "Color mode (`auto` follows prefers-color-scheme).",
|
|
8129
|
+
"default": "'auto'",
|
|
8130
|
+
"universal": true,
|
|
8131
|
+
"displayType": "\"light\" | \"dark\" | \"auto\""
|
|
8132
|
+
},
|
|
6955
8133
|
{
|
|
6956
8134
|
"name": "messages",
|
|
6957
|
-
"type": "undefined | { id: string; role: \"user\" | \"assistant\";
|
|
8135
|
+
"type": "undefined | { id: string; role: \"user\" | \"assistant\"; parts: ({ type: \"text\"; text: string; raw?: undefined | { source: string; payload: unknown } } | { type: \"reasoning\"; text: string; label?: undefined | string; index?: undefined | number; streamId?: undefined | string; signature?: undefined | string; raw?: undefined | { source: string; payload: unknown } } | { type: \"tool\"; tool: { type: string; kind?: undefined | \"command\" | \"file-change\" | \"search\" | \"fetch\" | \"mcp\" | \"image\" | \"generic\"; state: \"input-streaming\" | \"input-available\" | \"output-available\" | \"output-error\"; input?: undefined | Record<string, unknown>; rawInput?: undefined | string; output?: undefined | Record<string, unknown>; toolCallId?: undefined | string; errorText?: undefined | string; raw?: undefined | { source: string; payload: unknown } }; raw?: undefined | { source: string; payload: unknown } } | { type: \"card\"; envelope: { 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 } }; raw?: undefined | { source: string; payload: unknown } } | { type: \"source\"; source: { id?: undefined | string; url?: undefined | string; title?: undefined | string; snippet?: undefined | string; index?: undefined | number }; raw?: undefined | { source: string; payload: unknown } } | { type: \"file\"; attachment: { id: string; type: \"file\" | \"source-document\"; filename?: undefined | string; mediaType?: undefined | string; url?: undefined | string; title?: undefined | string }; raw?: undefined | { source: string; payload: unknown } })[]; actions?: undefined | (\"copy\" | \"like\" | \"dislike\" | \"regenerate\" | \"edit\" | { id: string; label: string; icon?: undefined | string; tooltip?: undefined | string })[]; avatar?: undefined | { src?: undefined | string; fallback?: undefined | string; alt?: undefined | string }; feedback?: undefined | \"like\" | \"dislike\" }[]",
|
|
6958
8136
|
"optional": true,
|
|
6959
8137
|
"scalar": false,
|
|
6960
|
-
"description": "The full message thread to render, newest last. Each entry carries its role,
|
|
6961
|
-
"
|
|
8138
|
+
"description": "The full message thread to render, newest last. Each entry carries its role, ordered `parts`, and optional actions/avatar/feedback. Set as a JS property (`el.messages = [...]`); a NEW array reference per streaming chunk re-renders (mutating in place does not).",
|
|
8139
|
+
"typeName": "ChatMessage[]",
|
|
8140
|
+
"typeShape": "{ id: string; role: \"user\" | \"assistant\"; parts: ({ type: \"text\"; text: string; raw?: undefined | { source: string; payload: unknown } } | { type: \"reasoning\"; text: string; label?: undefined | string; index?: undefined | number; streamId?: undefined | string; signature?: undefined | string; raw?: undefined | { source: string; payload: unknown } } | { type: \"tool\"; tool: { type: string; kind?: undefined | \"command\" | \"file-change\" | \"search\" | \"fetch\" | \"mcp\" | \"image\" | \"generic\"; state: \"input-streaming\" | \"input-available\" | \"output-available\" | \"output-error\"; input?: undefined | Record<string, unknown>; rawInput?: undefined | string; output?: undefined | Record<string, unknown>; toolCallId?: undefined | string; errorText?: undefined | string; raw?: undefined | { source: string; payload: unknown } }; raw?: undefined | { source: string; payload: unknown } } | { type: \"card\"; envelope: { 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 } }; raw?: undefined | { source: string; payload: unknown } } | { type: \"source\"; source: { id?: undefined | string; url?: undefined | string; title?: undefined | string; snippet?: undefined | string; index?: undefined | number }; raw?: undefined | { source: string; payload: unknown } } | { type: \"file\"; attachment: { id: string; type: \"file\" | \"source-document\"; filename?: undefined | string; mediaType?: undefined | string; url?: undefined | string; title?: undefined | string }; raw?: undefined | { source: string; payload: unknown } })[]; actions?: undefined | (\"copy\" | \"like\" | \"dislike\" | \"regenerate\" | \"edit\" | { id: string; label: string; icon?: undefined | string; tooltip?: undefined | string })[]; avatar?: undefined | { src?: undefined | string; fallback?: undefined | string; alt?: undefined | string }; feedback?: undefined | \"like\" | \"dislike\" }[]",
|
|
8141
|
+
"typeImport": "ChatMessage",
|
|
8142
|
+
"displayType": "undefined | { id: string; role: \"user\" | \"assistant\"; parts: ({ type: \"text\"; text: string; raw?: undefined | { source: string; payload: unknown } } | { type: \"reasoning\"; text: string; label?: undefined | string; index?: undefined | number; streamId?: undefined | string; signature?: undefined | string; raw?: undefined | { source: string; payload: unknown } } | { type: \"tool\"; tool: { type: string; kind?: undefined | \"command\" | \"file-change\" | \"search\" | \"fetch\" | \"mcp\" | \"image\" | \"generic\"; state: \"input-streaming\" | \"input-available\" | \"output-available\" | \"output-error\"; input?: undefined | Record<string, unknown>; rawInput?: undefined | string; output?: undefined | Record<string, unknown>; toolCallId?: undefined | string; errorText?: undefined | string; raw?: undefined | { source: string; payload: unknown } }; raw?: undefined | { source: string; payload: unknown } } | { type: \"card\"; envelope: { 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 } }; raw?: undefined | { source: string; payload: unknown } } | { type: \"source\"; source: { id?: undefined | string; url?: undefined | string; title?: undefined | string; snippet?: undefined | string; index?: undefined | number }; raw?: undefined | { source: string; payload: unknown } } | { type: \"file\"; attachment: { id: string; type: \"file\" | \"source-document\"; filename?: undefined | string; mediaType?: undefined | string; url?: undefined | string; title?: undefined | string }; raw?: undefined | { source: string; payload: unknown } })[]; actions?: undefined | (\"copy\" | \"like\" | \"dislike\" | \"regenerate\" | \"edit\" | { id: string; label: string; icon?: undefined | string; tooltip?: undefined | string })[]; avatar?: undefined | { src?: undefined | string; fallback?: undefined | string; alt?: undefined | string }; feedback?: undefined | \"like\" | \"dislike\" }[]"
|
|
6962
8143
|
},
|
|
6963
8144
|
{
|
|
6964
8145
|
"name": "loading",
|
|
6965
8146
|
"type": "undefined | false | true",
|
|
6966
8147
|
"optional": true,
|
|
6967
8148
|
"scalar": true,
|
|
6968
|
-
"description": "Show a typing indicator on the pending assistant turn
|
|
8149
|
+
"description": "Show a typing indicator on the pending assistant turn. Set it while awaiting the assistant's reply.",
|
|
6969
8150
|
"default": "false",
|
|
6970
8151
|
"displayType": "undefined | false | true"
|
|
6971
8152
|
},
|
|
6972
8153
|
{
|
|
6973
8154
|
"name": "proseSize",
|
|
6974
|
-
"type": "undefined | \"
|
|
8155
|
+
"type": "undefined | \"xs\" | \"sm\" | \"base\" | \"lg\"",
|
|
6975
8156
|
"optional": true,
|
|
6976
8157
|
"scalar": true,
|
|
6977
8158
|
"description": "Body/prose font scale for rendered markdown (`'xs' | 'sm' | 'base' | 'lg'`). Defaults to `'sm'`.",
|
|
6978
8159
|
"default": "'sm'",
|
|
6979
|
-
"displayType": "undefined | \"
|
|
8160
|
+
"displayType": "undefined | \"xs\" | \"sm\" | \"base\" | \"lg\""
|
|
6980
8161
|
},
|
|
6981
8162
|
{
|
|
6982
8163
|
"name": "codeTheme",
|
|
@@ -7021,6 +8202,22 @@
|
|
|
7021
8202
|
"scalar": true,
|
|
7022
8203
|
"description": "Extra classes applied to the thread's inner root.",
|
|
7023
8204
|
"displayType": "undefined | string"
|
|
8205
|
+
},
|
|
8206
|
+
{
|
|
8207
|
+
"name": "cardTypes",
|
|
8208
|
+
"type": "undefined | Record<string, string>",
|
|
8209
|
+
"optional": true,
|
|
8210
|
+
"scalar": false,
|
|
8211
|
+
"description": "Optional card type -> custom-element tag overrides/additions for `card` parts (merged over the built-ins). Property: `el.cardTypes`. Typed as a plain string map (not the `CardTagMap` alias) so the generated React wrapper inlines it instead of emitting an unresolved named type.",
|
|
8212
|
+
"displayType": "undefined | Record<string, string>"
|
|
8213
|
+
},
|
|
8214
|
+
{
|
|
8215
|
+
"name": "cardSchemas",
|
|
8216
|
+
"type": "undefined | Record<string, object>",
|
|
8217
|
+
"optional": true,
|
|
8218
|
+
"scalar": false,
|
|
8219
|
+
"description": "JSON Schemas for the card types this app renders, keyed by envelope type. The companion of `cardTypes`, which says what DRAWS a card while this says what a VALID one looks like. An OBJECT, so it is a JS property only: `el.cardSchemas = { 'pricing-table': pricingSchema }`, never an attribute. `createCardRegistry(...).validationSchemas` is exactly this shape. Without it the kit validates its own seven built-ins and leaves your own card type, the one your app actually cares about, as the only unchecked thing on screen. A schema here WINS over a built-in of the same name. Typed `Record<string, object>` rather than `Record<string, JsonSchema>` deliberately: an imported `.json` schema widens `\"type\"` to `string`, and an authored one carries `$schema`/`title`/`description`/`additionalProperties`, so the tighter type would reject both of the normal ways to supply one.",
|
|
8220
|
+
"displayType": "undefined | Record<string, object>"
|
|
7024
8221
|
}
|
|
7025
8222
|
],
|
|
7026
8223
|
"events": [
|
|
@@ -7060,17 +8257,27 @@
|
|
|
7060
8257
|
"className": "KaiToastRegionElement",
|
|
7061
8258
|
"displayName": "ToastRegion",
|
|
7062
8259
|
"props": [
|
|
8260
|
+
{
|
|
8261
|
+
"name": "theme",
|
|
8262
|
+
"type": "\"light\" | \"dark\" | \"auto\"",
|
|
8263
|
+
"optional": true,
|
|
8264
|
+
"scalar": true,
|
|
8265
|
+
"description": "Color mode (`auto` follows prefers-color-scheme).",
|
|
8266
|
+
"default": "'auto'",
|
|
8267
|
+
"universal": true,
|
|
8268
|
+
"displayType": "\"light\" | \"dark\" | \"auto\""
|
|
8269
|
+
},
|
|
7063
8270
|
{
|
|
7064
8271
|
"name": "toasts",
|
|
7065
|
-
"type": "{ id: string; message: string; variant?: undefined | \"
|
|
7066
|
-
"optional":
|
|
8272
|
+
"type": "undefined | { 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 }[]",
|
|
8273
|
+
"optional": true,
|
|
7067
8274
|
"scalar": false,
|
|
7068
|
-
"description": "The toasts to render. Newest is shown on top. Set as a JS property (array); pass a new array reference to update.",
|
|
8275
|
+
"description": "The toasts to render. Newest is shown on top. Set as a JS property (array); pass a new array reference to update. Omit for an empty region, which is the normal resting state and how the imperative `toast()` API starts.",
|
|
7069
8276
|
"typeName": "ToastItem[]",
|
|
7070
|
-
"typeShape": "{ id: string; message: string; variant?: undefined | \"
|
|
8277
|
+
"typeShape": "{ 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 }[]",
|
|
7071
8278
|
"default": "[]",
|
|
7072
8279
|
"typeImport": "ToastItem",
|
|
7073
|
-
"displayType": "{ id: string; message: string; variant?: undefined | \"
|
|
8280
|
+
"displayType": "undefined | { 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 }[]"
|
|
7074
8281
|
},
|
|
7075
8282
|
{
|
|
7076
8283
|
"name": "position",
|
|
@@ -7135,9 +8342,9 @@
|
|
|
7135
8342
|
},
|
|
7136
8343
|
{
|
|
7137
8344
|
"name": "kai-dismiss",
|
|
7138
|
-
"detail": "{ id: string; reason: \"
|
|
8345
|
+
"detail": "{ id: string; reason: \"timeout\" | \"close\" | \"action\" }",
|
|
7139
8346
|
"description": "A toast left the stack. `reason` is `'timeout' | 'close' | 'action'`.",
|
|
7140
|
-
"displayDetail": "{ id: string; reason: \"
|
|
8347
|
+
"displayDetail": "{ id: string; reason: \"timeout\" | \"close\" | \"action\" }"
|
|
7141
8348
|
}
|
|
7142
8349
|
],
|
|
7143
8350
|
"methods": [],
|
|
@@ -7155,13 +8362,26 @@
|
|
|
7155
8362
|
"className": "KaiToolElement",
|
|
7156
8363
|
"displayName": "Tool",
|
|
7157
8364
|
"props": [
|
|
8365
|
+
{
|
|
8366
|
+
"name": "theme",
|
|
8367
|
+
"type": "\"light\" | \"dark\" | \"auto\"",
|
|
8368
|
+
"optional": true,
|
|
8369
|
+
"scalar": true,
|
|
8370
|
+
"description": "Color mode (`auto` follows prefers-color-scheme).",
|
|
8371
|
+
"default": "'auto'",
|
|
8372
|
+
"universal": true,
|
|
8373
|
+
"displayType": "\"light\" | \"dark\" | \"auto\""
|
|
8374
|
+
},
|
|
7158
8375
|
{
|
|
7159
8376
|
"name": "tool",
|
|
7160
|
-
"type": "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 }",
|
|
8377
|
+
"type": "undefined | { type: string; kind?: undefined | \"command\" | \"file-change\" | \"search\" | \"fetch\" | \"mcp\" | \"image\" | \"generic\"; state: \"input-streaming\" | \"input-available\" | \"output-available\" | \"output-error\"; input?: undefined | Record<string, unknown>; rawInput?: undefined | string; output?: undefined | Record<string, unknown>; toolCallId?: undefined | string; errorText?: undefined | string; raw?: undefined | { source: string; payload: unknown } }",
|
|
7161
8378
|
"optional": true,
|
|
7162
8379
|
"scalar": false,
|
|
7163
8380
|
"description": "The tool-call to display. Set as a JS property.",
|
|
7164
|
-
"
|
|
8381
|
+
"typeName": "ToolPart",
|
|
8382
|
+
"typeShape": "{ type: string; kind?: undefined | \"command\" | \"file-change\" | \"search\" | \"fetch\" | \"mcp\" | \"image\" | \"generic\"; state: \"input-streaming\" | \"input-available\" | \"output-available\" | \"output-error\"; input?: undefined | Record<string, unknown>; rawInput?: undefined | string; output?: undefined | Record<string, unknown>; toolCallId?: undefined | string; errorText?: undefined | string; raw?: undefined | { source: string; payload: unknown } }",
|
|
8383
|
+
"typeImport": "ToolPart",
|
|
8384
|
+
"displayType": "undefined | { type: string; kind?: undefined | \"command\" | \"file-change\" | \"search\" | \"fetch\" | \"mcp\" | \"image\" | \"generic\"; state: \"input-streaming\" | \"input-available\" | \"output-available\" | \"output-error\"; input?: undefined | Record<string, unknown>; rawInput?: undefined | string; output?: undefined | Record<string, unknown>; toolCallId?: undefined | string; errorText?: undefined | string; raw?: undefined | { source: string; payload: unknown } }"
|
|
7165
8385
|
},
|
|
7166
8386
|
{
|
|
7167
8387
|
"name": "open",
|
|
@@ -7184,7 +8404,7 @@
|
|
|
7184
8404
|
"type": "undefined | false | true",
|
|
7185
8405
|
"optional": true,
|
|
7186
8406
|
"scalar": true,
|
|
7187
|
-
"description": "Gate the disclosure trigger
|
|
8407
|
+
"description": "Gate the disclosure trigger: programmatic `show()/hide()/toggle()` still work, but the trigger click no longer toggles.",
|
|
7188
8408
|
"displayType": "undefined | false | true"
|
|
7189
8409
|
}
|
|
7190
8410
|
],
|
|
@@ -7235,6 +8455,16 @@
|
|
|
7235
8455
|
"className": "KaiTooltipElement",
|
|
7236
8456
|
"displayName": "Tooltip",
|
|
7237
8457
|
"props": [
|
|
8458
|
+
{
|
|
8459
|
+
"name": "theme",
|
|
8460
|
+
"type": "\"light\" | \"dark\" | \"auto\"",
|
|
8461
|
+
"optional": true,
|
|
8462
|
+
"scalar": true,
|
|
8463
|
+
"description": "Color mode (`auto` follows prefers-color-scheme).",
|
|
8464
|
+
"default": "'auto'",
|
|
8465
|
+
"universal": true,
|
|
8466
|
+
"displayType": "\"light\" | \"dark\" | \"auto\""
|
|
8467
|
+
},
|
|
7238
8468
|
{
|
|
7239
8469
|
"name": "content",
|
|
7240
8470
|
"type": "undefined | string",
|
|
@@ -7328,19 +8558,36 @@
|
|
|
7328
8558
|
"storyId": "solid-advanced-primitives-tooltip--docs"
|
|
7329
8559
|
}
|
|
7330
8560
|
],
|
|
7331
|
-
"tokens": []
|
|
8561
|
+
"tokens": [],
|
|
8562
|
+
"slots": [
|
|
8563
|
+
{
|
|
8564
|
+
"name": "",
|
|
8565
|
+
"mode": "inject",
|
|
8566
|
+
"doc": "The TRIGGER the tooltip describes. The tip text is the `text` prop."
|
|
8567
|
+
}
|
|
8568
|
+
]
|
|
7332
8569
|
},
|
|
7333
8570
|
{
|
|
7334
8571
|
"tag": "kai-voice-input",
|
|
7335
8572
|
"className": "KaiVoiceInputElement",
|
|
7336
8573
|
"displayName": "VoiceInput",
|
|
7337
8574
|
"props": [
|
|
8575
|
+
{
|
|
8576
|
+
"name": "theme",
|
|
8577
|
+
"type": "\"light\" | \"dark\" | \"auto\"",
|
|
8578
|
+
"optional": true,
|
|
8579
|
+
"scalar": true,
|
|
8580
|
+
"description": "Color mode (`auto` follows prefers-color-scheme).",
|
|
8581
|
+
"default": "'auto'",
|
|
8582
|
+
"universal": true,
|
|
8583
|
+
"displayType": "\"light\" | \"dark\" | \"auto\""
|
|
8584
|
+
},
|
|
7338
8585
|
{
|
|
7339
8586
|
"name": "transcribe",
|
|
7340
8587
|
"type": "undefined | (audio: Blob) => Promise<string>",
|
|
7341
8588
|
"optional": true,
|
|
7342
8589
|
"scalar": false,
|
|
7343
|
-
"description": "Transcriber the host supplies
|
|
8590
|
+
"description": "Transcriber the host supplies: records audio, returns the text. This is a **function-valued property** (`el.transcribe = async blob => '...'`) because a value-returning callback can't be modelled as a fire-and-forget event.",
|
|
7344
8591
|
"displayType": "undefined | (audio: Blob) => Promise<string>"
|
|
7345
8592
|
},
|
|
7346
8593
|
{
|
|
@@ -7374,13 +8621,13 @@
|
|
|
7374
8621
|
{
|
|
7375
8622
|
"name": "kai-audio-captured",
|
|
7376
8623
|
"detail": "{ blob: Blob }",
|
|
7377
|
-
"description": "Raw audio captured (before transcription)
|
|
8624
|
+
"description": "Raw audio captured (before transcription), for hosts that prefer to handle transcription themselves instead of via the `transcribe` property. Also the unsupported-fallback signal: no `transcribe`, no SpeechRecognition, so only the blob is produced (no text).",
|
|
7378
8625
|
"displayDetail": "{ blob: Blob }"
|
|
7379
8626
|
},
|
|
7380
8627
|
{
|
|
7381
8628
|
"name": "kai-recording-change",
|
|
7382
8629
|
"detail": "{ recording: false | true }",
|
|
7383
|
-
"description": "Recording started or stopped
|
|
8630
|
+
"description": "Recording started or stopped. Lets the host drive its own UI (waveform, push-to-talk indicator) in sync with the mic. Fires on real transitions only (manual click and programmatic start()/stop()), never on mount.",
|
|
7384
8631
|
"displayDetail": "{ recording: false | true }"
|
|
7385
8632
|
},
|
|
7386
8633
|
{
|
|
@@ -7392,7 +8639,7 @@
|
|
|
7392
8639
|
{
|
|
7393
8640
|
"name": "kai-transcription",
|
|
7394
8641
|
"detail": "{ text: string }",
|
|
7395
|
-
"description": "Final transcript
|
|
8642
|
+
"description": "Final transcript: the `transcribe` property resolved, OR native `SpeechRecognition` produced final text (no `transcribe` set).",
|
|
7396
8643
|
"displayDetail": "{ text: string }"
|
|
7397
8644
|
}
|
|
7398
8645
|
],
|
|
@@ -7424,6 +8671,16 @@
|
|
|
7424
8671
|
"className": "KaiVoiceOutputElement",
|
|
7425
8672
|
"displayName": "VoiceOutput",
|
|
7426
8673
|
"props": [
|
|
8674
|
+
{
|
|
8675
|
+
"name": "theme",
|
|
8676
|
+
"type": "\"light\" | \"dark\" | \"auto\"",
|
|
8677
|
+
"optional": true,
|
|
8678
|
+
"scalar": true,
|
|
8679
|
+
"description": "Color mode (`auto` follows prefers-color-scheme).",
|
|
8680
|
+
"default": "'auto'",
|
|
8681
|
+
"universal": true,
|
|
8682
|
+
"displayType": "\"light\" | \"dark\" | \"auto\""
|
|
8683
|
+
},
|
|
7427
8684
|
{
|
|
7428
8685
|
"name": "text",
|
|
7429
8686
|
"type": "undefined | string",
|
|
@@ -7447,7 +8704,7 @@
|
|
|
7447
8704
|
"type": "undefined | (text: string) => Promise<Blob>",
|
|
7448
8705
|
"optional": true,
|
|
7449
8706
|
"scalar": false,
|
|
7450
|
-
"description": "TTS model seam the host supplies
|
|
8707
|
+
"description": "TTS model seam the host supplies: given text, returns an audio `Blob` to play. This is a **function-valued property** (`el.synthesize = async text => blob`); when set, the native `speechSynthesis` path is bypassed. Mirrors `<kai-voice-input>`'s `transcribe`. A value-returning callback can't be modelled as a fire-and-forget event, hence a property.",
|
|
7451
8708
|
"displayType": "undefined | (text: string) => Promise<Blob>"
|
|
7452
8709
|
},
|
|
7453
8710
|
{
|
|
@@ -7464,13 +8721,13 @@
|
|
|
7464
8721
|
{
|
|
7465
8722
|
"name": "kai-speaking-change",
|
|
7466
8723
|
"detail": "{ speaking: false | true }",
|
|
7467
|
-
"description": "Playback started or stopped
|
|
8724
|
+
"description": "Playback started or stopped. Drive your own UI in sync. Fires on real transitions only (manual click and programmatic speak()/stop()), never on mount.",
|
|
7468
8725
|
"displayDetail": "{ speaking: false | true }"
|
|
7469
8726
|
},
|
|
7470
8727
|
{
|
|
7471
8728
|
"name": "kai-synthesized",
|
|
7472
8729
|
"detail": "{ blob: Blob }",
|
|
7473
|
-
"description": "The model path (`synthesize`) resolved audio
|
|
8730
|
+
"description": "The model path (`synthesize`) resolved audio: the raw `Blob` before playback.",
|
|
7474
8731
|
"displayDetail": "{ blob: Blob }"
|
|
7475
8732
|
}
|
|
7476
8733
|
],
|
|
@@ -7521,29 +8778,39 @@
|
|
|
7521
8778
|
"className": "KaiWorkspaceElement",
|
|
7522
8779
|
"displayName": "Workspace",
|
|
7523
8780
|
"props": [
|
|
8781
|
+
{
|
|
8782
|
+
"name": "theme",
|
|
8783
|
+
"type": "\"light\" | \"dark\" | \"auto\"",
|
|
8784
|
+
"optional": true,
|
|
8785
|
+
"scalar": true,
|
|
8786
|
+
"description": "Color mode (`auto` follows prefers-color-scheme).",
|
|
8787
|
+
"default": "'auto'",
|
|
8788
|
+
"universal": true,
|
|
8789
|
+
"displayType": "\"light\" | \"dark\" | \"auto\""
|
|
8790
|
+
},
|
|
7524
8791
|
{
|
|
7525
8792
|
"name": "groups",
|
|
7526
|
-
"type": "{ id: string; userId?: undefined | string; teamId?: undefined | string; name: string; sortOrder: number; createdAt: string }[]",
|
|
7527
|
-
"optional":
|
|
8793
|
+
"type": "undefined | { id: string; userId?: undefined | string; teamId?: undefined | string; name: string; sortOrder: number; createdAt: string }[]",
|
|
8794
|
+
"optional": true,
|
|
7528
8795
|
"scalar": false,
|
|
7529
|
-
"description": "
|
|
8796
|
+
"description": "The sidebar's section headers, rendered in array order. A group carries no conversations of its own; it is matched against `conversations` by id, so the two props are complementary rather than alternatives. Omit for an ungrouped sidebar. Set as a JS property.",
|
|
7530
8797
|
"typeName": "ConversationGroup[]",
|
|
7531
8798
|
"typeShape": "{ id: string; userId?: undefined | string; teamId?: undefined | string; name: string; sortOrder: number; createdAt: string }[]",
|
|
7532
8799
|
"default": "[]",
|
|
7533
8800
|
"typeImport": "ConversationGroup",
|
|
7534
|
-
"displayType": "
|
|
8801
|
+
"displayType": "undefined | { id: string; userId?: undefined | string; teamId?: undefined | string; name: string; sortOrder: number; createdAt: string }[]"
|
|
7535
8802
|
},
|
|
7536
8803
|
{
|
|
7537
8804
|
"name": "conversations",
|
|
7538
|
-
"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 }[]",
|
|
7539
|
-
"optional":
|
|
8805
|
+
"type": "undefined | { 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 }[]",
|
|
8806
|
+
"optional": true,
|
|
7540
8807
|
"scalar": false,
|
|
7541
|
-
"description": "
|
|
8808
|
+
"description": "Every conversation in the sidebar, flat. Each one is filed under the group whose `id` equals its `groupId`; one with no `groupId`, or with a `groupId` matching no entry in `groups`, falls into a trailing ungrouped section (headerless when `compact`), so nothing you pass in is ever dropped. There is no recency bucketing. Set as a JS property. Omit for an empty sidebar, or when `no-conversations` replaces the built-in list with your own `sidebar-header` content.",
|
|
7542
8809
|
"typeName": "ConversationSummary[]",
|
|
7543
8810
|
"typeShape": "{ 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 }[]",
|
|
7544
8811
|
"default": "[]",
|
|
7545
8812
|
"typeImport": "ConversationSummary",
|
|
7546
|
-
"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 }[]"
|
|
8813
|
+
"displayType": "undefined | { 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 }[]"
|
|
7547
8814
|
},
|
|
7548
8815
|
{
|
|
7549
8816
|
"name": "activeId",
|
|
@@ -7555,15 +8822,15 @@
|
|
|
7555
8822
|
},
|
|
7556
8823
|
{
|
|
7557
8824
|
"name": "messages",
|
|
7558
|
-
"type": "{ id: string; role: \"user\" | \"assistant\";
|
|
7559
|
-
"optional":
|
|
8825
|
+
"type": "undefined | { id: string; role: \"user\" | \"assistant\"; parts: ({ type: \"text\"; text: string; raw?: undefined | { source: string; payload: unknown } } | { type: \"reasoning\"; text: string; label?: undefined | string; index?: undefined | number; streamId?: undefined | string; signature?: undefined | string; raw?: undefined | { source: string; payload: unknown } } | { type: \"tool\"; tool: { type: string; kind?: undefined | \"command\" | \"file-change\" | \"search\" | \"fetch\" | \"mcp\" | \"image\" | \"generic\"; state: \"input-streaming\" | \"input-available\" | \"output-available\" | \"output-error\"; input?: undefined | Record<string, unknown>; rawInput?: undefined | string; output?: undefined | Record<string, unknown>; toolCallId?: undefined | string; errorText?: undefined | string; raw?: undefined | { source: string; payload: unknown } }; raw?: undefined | { source: string; payload: unknown } } | { type: \"card\"; envelope: { 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 } }; raw?: undefined | { source: string; payload: unknown } } | { type: \"source\"; source: { id?: undefined | string; url?: undefined | string; title?: undefined | string; snippet?: undefined | string; index?: undefined | number }; raw?: undefined | { source: string; payload: unknown } } | { type: \"file\"; attachment: { id: string; type: \"file\" | \"source-document\"; filename?: undefined | string; mediaType?: undefined | string; url?: undefined | string; title?: undefined | string }; raw?: undefined | { source: string; payload: unknown } })[]; actions?: undefined | (\"copy\" | \"like\" | \"dislike\" | \"regenerate\" | \"edit\" | { id: string; label: string; icon?: undefined | string; tooltip?: undefined | string })[]; avatar?: undefined | { src?: undefined | string; fallback?: undefined | string; alt?: undefined | string }; feedback?: undefined | \"like\" | \"dislike\" }[]",
|
|
8826
|
+
"optional": true,
|
|
7560
8827
|
"scalar": false,
|
|
7561
|
-
"description": "The active conversation's message thread, newest last. Set as a JS property.",
|
|
8828
|
+
"description": "The active conversation's message thread, newest last. Set as a JS property (`el.messages = [...]`); a NEW array reference per streaming chunk re-renders (mutating in place does not). Omit for an empty thread.",
|
|
7562
8829
|
"typeName": "ChatMessage[]",
|
|
7563
|
-
"typeShape": "{ id: string; role: \"user\" | \"assistant\";
|
|
8830
|
+
"typeShape": "{ id: string; role: \"user\" | \"assistant\"; parts: ({ type: \"text\"; text: string; raw?: undefined | { source: string; payload: unknown } } | { type: \"reasoning\"; text: string; label?: undefined | string; index?: undefined | number; streamId?: undefined | string; signature?: undefined | string; raw?: undefined | { source: string; payload: unknown } } | { type: \"tool\"; tool: { type: string; kind?: undefined | \"command\" | \"file-change\" | \"search\" | \"fetch\" | \"mcp\" | \"image\" | \"generic\"; state: \"input-streaming\" | \"input-available\" | \"output-available\" | \"output-error\"; input?: undefined | Record<string, unknown>; rawInput?: undefined | string; output?: undefined | Record<string, unknown>; toolCallId?: undefined | string; errorText?: undefined | string; raw?: undefined | { source: string; payload: unknown } }; raw?: undefined | { source: string; payload: unknown } } | { type: \"card\"; envelope: { 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 } }; raw?: undefined | { source: string; payload: unknown } } | { type: \"source\"; source: { id?: undefined | string; url?: undefined | string; title?: undefined | string; snippet?: undefined | string; index?: undefined | number }; raw?: undefined | { source: string; payload: unknown } } | { type: \"file\"; attachment: { id: string; type: \"file\" | \"source-document\"; filename?: undefined | string; mediaType?: undefined | string; url?: undefined | string; title?: undefined | string }; raw?: undefined | { source: string; payload: unknown } })[]; actions?: undefined | (\"copy\" | \"like\" | \"dislike\" | \"regenerate\" | \"edit\" | { id: string; label: string; icon?: undefined | string; tooltip?: undefined | string })[]; avatar?: undefined | { src?: undefined | string; fallback?: undefined | string; alt?: undefined | string }; feedback?: undefined | \"like\" | \"dislike\" }[]",
|
|
7564
8831
|
"default": "[]",
|
|
7565
8832
|
"typeImport": "ChatMessage",
|
|
7566
|
-
"displayType": "{ id: string; role: \"user\" | \"assistant\";
|
|
8833
|
+
"displayType": "undefined | { id: string; role: \"user\" | \"assistant\"; parts: ({ type: \"text\"; text: string; raw?: undefined | { source: string; payload: unknown } } | { type: \"reasoning\"; text: string; label?: undefined | string; index?: undefined | number; streamId?: undefined | string; signature?: undefined | string; raw?: undefined | { source: string; payload: unknown } } | { type: \"tool\"; tool: { type: string; kind?: undefined | \"command\" | \"file-change\" | \"search\" | \"fetch\" | \"mcp\" | \"image\" | \"generic\"; state: \"input-streaming\" | \"input-available\" | \"output-available\" | \"output-error\"; input?: undefined | Record<string, unknown>; rawInput?: undefined | string; output?: undefined | Record<string, unknown>; toolCallId?: undefined | string; errorText?: undefined | string; raw?: undefined | { source: string; payload: unknown } }; raw?: undefined | { source: string; payload: unknown } } | { type: \"card\"; envelope: { 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 } }; raw?: undefined | { source: string; payload: unknown } } | { type: \"source\"; source: { id?: undefined | string; url?: undefined | string; title?: undefined | string; snippet?: undefined | string; index?: undefined | number }; raw?: undefined | { source: string; payload: unknown } } | { type: \"file\"; attachment: { id: string; type: \"file\" | \"source-document\"; filename?: undefined | string; mediaType?: undefined | string; url?: undefined | string; title?: undefined | string }; raw?: undefined | { source: string; payload: unknown } })[]; actions?: undefined | (\"copy\" | \"like\" | \"dislike\" | \"regenerate\" | \"edit\" | { id: string; label: string; icon?: undefined | string; tooltip?: undefined | string })[]; avatar?: undefined | { src?: undefined | string; fallback?: undefined | string; alt?: undefined | string }; feedback?: undefined | \"like\" | \"dislike\" }[]"
|
|
7567
8834
|
},
|
|
7568
8835
|
{
|
|
7569
8836
|
"name": "value",
|
|
@@ -7610,12 +8877,12 @@
|
|
|
7610
8877
|
},
|
|
7611
8878
|
{
|
|
7612
8879
|
"name": "proseSize",
|
|
7613
|
-
"type": "undefined | \"
|
|
8880
|
+
"type": "undefined | \"xs\" | \"sm\" | \"base\" | \"lg\"",
|
|
7614
8881
|
"optional": true,
|
|
7615
8882
|
"scalar": true,
|
|
7616
8883
|
"description": "",
|
|
7617
8884
|
"default": "'sm'",
|
|
7618
|
-
"displayType": "undefined | \"
|
|
8885
|
+
"displayType": "undefined | \"xs\" | \"sm\" | \"base\" | \"lg\""
|
|
7619
8886
|
},
|
|
7620
8887
|
{
|
|
7621
8888
|
"name": "codeTheme",
|
|
@@ -7649,6 +8916,9 @@
|
|
|
7649
8916
|
"optional": true,
|
|
7650
8917
|
"scalar": false,
|
|
7651
8918
|
"description": "",
|
|
8919
|
+
"typeName": "ModelOption[]",
|
|
8920
|
+
"typeShape": "{ id: string; name: string; provider?: undefined | string; description?: undefined | string; group?: undefined | string }[]",
|
|
8921
|
+
"typeImport": "ModelOption",
|
|
7652
8922
|
"displayType": "undefined | { id: string; name: string; provider?: undefined | string; description?: undefined | string; group?: undefined | string }[]"
|
|
7653
8923
|
},
|
|
7654
8924
|
{
|
|
@@ -7665,6 +8935,9 @@
|
|
|
7665
8935
|
"optional": true,
|
|
7666
8936
|
"scalar": false,
|
|
7667
8937
|
"description": "",
|
|
8938
|
+
"typeName": "ChatThreadContextUsage",
|
|
8939
|
+
"typeShape": "{ usedTokens: number; maxTokens: number; inputTokens?: undefined | number; outputTokens?: undefined | number; estimatedCost?: undefined | number }",
|
|
8940
|
+
"typeImport": "ChatThreadContextUsage",
|
|
7668
8941
|
"displayType": "ContextData | undefined"
|
|
7669
8942
|
},
|
|
7670
8943
|
{
|
|
@@ -7700,6 +8973,9 @@
|
|
|
7700
8973
|
"optional": true,
|
|
7701
8974
|
"scalar": false,
|
|
7702
8975
|
"description": "Rich entity triggers (`/` skills, `@` agents/plugins) forwarded to the input.",
|
|
8976
|
+
"typeName": "TriggerDef[]",
|
|
8977
|
+
"typeShape": "{ 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> }[] }[]",
|
|
8978
|
+
"typeImport": "TriggerDef",
|
|
7703
8979
|
"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> }[] }[]"
|
|
7704
8980
|
},
|
|
7705
8981
|
{
|
|
@@ -7776,6 +9052,22 @@
|
|
|
7776
9052
|
"scalar": true,
|
|
7777
9053
|
"description": "Suppress the built-in ConversationList so the `sidebar-header` slot owns the whole rail flex region (for apps that supply their own rail nav). Default false. Attribute: `no-conversations`.",
|
|
7778
9054
|
"displayType": "undefined | false | true"
|
|
9055
|
+
},
|
|
9056
|
+
{
|
|
9057
|
+
"name": "cardTypes",
|
|
9058
|
+
"type": "undefined | Record<string, string>",
|
|
9059
|
+
"optional": true,
|
|
9060
|
+
"scalar": false,
|
|
9061
|
+
"description": "Optional card type -> custom-element tag overrides/additions for `card` parts (merged over the built-ins). Property: `el.cardTypes`. Typed as a plain string map (not the `CardTagMap` alias) so the generated React wrapper inlines it instead of emitting an unresolved named type.",
|
|
9062
|
+
"displayType": "undefined | Record<string, string>"
|
|
9063
|
+
},
|
|
9064
|
+
{
|
|
9065
|
+
"name": "cardSchemas",
|
|
9066
|
+
"type": "undefined | Record<string, object>",
|
|
9067
|
+
"optional": true,
|
|
9068
|
+
"scalar": false,
|
|
9069
|
+
"description": "JSON Schemas for the card types this app renders, keyed by envelope type. The companion of `cardTypes`, which says what DRAWS a card while this says what a VALID one looks like. An OBJECT, so it is a JS property only: `el.cardSchemas = { 'pricing-table': pricingSchema }`, never an attribute. `createCardRegistry(...).validationSchemas` is exactly this shape. Without it the kit validates its own seven built-ins and leaves your own card type, the one your app actually cares about, as the only unchecked thing on screen. A schema here WINS over a built-in of the same name. Typed `Record<string, object>` rather than `Record<string, JsonSchema>` deliberately: an imported `.json` schema widens `\"type\"` to `string`, and an authored one carries `$schema`/`title`/`description`/`additionalProperties`, so the tighter type would reject both of the normal ways to supply one.",
|
|
9070
|
+
"displayType": "undefined | Record<string, object>"
|
|
7779
9071
|
}
|
|
7780
9072
|
],
|
|
7781
9073
|
"events": [
|