[
  {
    "tag": "kc-artifact",
    "className": "KcArtifactElement",
    "displayName": "Artifact",
    "props": [
      {
        "name": "src",
        "type": "undefined | string",
        "optional": true,
        "scalar": true,
        "description": "URL the preview iframe frames. Consumer-controlled.",
        "displayType": "undefined | string"
      },
      {
        "name": "files",
        "type": "{ path: string; url?: undefined | string; code?: undefined | string; language?: undefined | string; type?: undefined | \"html\" | \"pdf\" | \"image\" | \"other\" }[]",
        "optional": false,
        "scalar": false,
        "description": "Files for the Code tab tree + each file's preview `url`. Set as a JS property (array).",
        "typeName": "FileTreeFile[]",
        "typeShape": "{ path: string; url?: undefined | string; code?: undefined | string; language?: undefined | string; type?: undefined | \"html\" | \"pdf\" | \"image\" | \"other\" }[]",
        "default": "[]",
        "typeImport": "FileTreeFile",
        "displayType": "{ path: string; url?: undefined | string; code?: undefined | string; language?: undefined | string; type?: undefined | \"html\" | \"pdf\" | \"image\" | \"other\" }[]"
      },
      {
        "name": "tab",
        "type": "undefined | \"preview\" | \"code\"",
        "optional": true,
        "scalar": true,
        "description": "Active tab: `preview` (default) or `code`.",
        "default": "'preview'",
        "displayType": "undefined | \"preview\" | \"code\""
      },
      {
        "name": "activeFile",
        "type": "undefined | string",
        "optional": true,
        "scalar": true,
        "description": "Selected file path — syncs the tree highlight, Code source, and preview.",
        "displayType": "undefined | string"
      },
      {
        "name": "sandbox",
        "type": "undefined | string",
        "optional": true,
        "scalar": true,
        "description": "iframe `sandbox` override. Secure default `allow-scripts allow-forms` (NOT `allow-same-origin`).",
        "default": "'allow-scripts allow-forms'",
        "displayType": "undefined | string"
      },
      {
        "name": "iframeTitle",
        "type": "undefined | string",
        "optional": true,
        "scalar": true,
        "description": "Accessible title for the preview iframe.",
        "displayType": "undefined | string"
      },
      {
        "name": "maximized",
        "type": "undefined | false | true",
        "optional": true,
        "scalar": true,
        "description": "Reflects the artifact's own maximized view-state (usually driven by the protocol).",
        "default": "false",
        "displayType": "undefined | false | true"
      },
      {
        "name": "expandable",
        "type": "undefined | false | true",
        "optional": true,
        "scalar": true,
        "description": "Show the expand-to-fill button (OPT-IN).",
        "default": "false",
        "displayType": "undefined | false | true"
      },
      {
        "name": "openInTab",
        "type": "undefined | false | true",
        "optional": true,
        "scalar": true,
        "description": "Show the open-in-new-tab button (OPT-IN).",
        "default": "false",
        "displayType": "undefined | false | true"
      },
      {
        "name": "noNav",
        "type": "undefined | false | true",
        "optional": true,
        "scalar": true,
        "description": "Hide back/forward.",
        "default": "false",
        "displayType": "undefined | false | true"
      },
      {
        "name": "noReload",
        "type": "undefined | false | true",
        "optional": true,
        "scalar": true,
        "description": "Hide reload.",
        "default": "false",
        "displayType": "undefined | false | true"
      },
      {
        "name": "noHome",
        "type": "undefined | false | true",
        "optional": true,
        "scalar": true,
        "description": "Hide home.",
        "default": "false",
        "displayType": "undefined | false | true"
      },
      {
        "name": "noPathField",
        "type": "undefined | false | true",
        "optional": true,
        "scalar": true,
        "description": "Hide the address field.",
        "default": "false",
        "displayType": "undefined | false | true"
      },
      {
        "name": "noTabs",
        "type": "undefined | false | true",
        "optional": true,
        "scalar": true,
        "description": "Hide the Preview|Code toggle.",
        "default": "false",
        "displayType": "undefined | false | true"
      },
      {
        "name": "standalone",
        "type": "undefined | false | true",
        "optional": true,
        "scalar": true,
        "description": "Standalone chrome: rounded corners + border (else square, borderless in-panel).",
        "default": "false",
        "displayType": "undefined | false | true"
      },
      {
        "name": "readonlyPath",
        "type": "undefined | false | true",
        "optional": true,
        "scalar": true,
        "description": "Show the address but make it read-only (visible, nav-tracking, non-editable).",
        "default": "false",
        "displayType": "undefined | false | true"
      }
    ],
    "events": [
      {
        "name": "kc-file-select",
        "detail": "{ path: string }",
        "description": "Fired when a file is selected. `detail.path`.",
        "displayDetail": "{ path: string }"
      },
      {
        "name": "kc-maximize-change",
        "detail": "{ maximized: false | true }",
        "description": "Artifact's own maximize button toggled (consumer-observable; non-bubbling).",
        "displayDetail": "{ maximized: false | true }"
      },
      {
        "name": "kc-navigate",
        "detail": "{ url: string }",
        "description": "Fired when the preview navigates. `detail.url` = the new location.",
        "displayDetail": "{ url: string }"
      },
      {
        "name": "kc-tab-change",
        "detail": "{ tab: \"preview\" | \"code\" }",
        "description": "Fired when the Preview|Code tab changes. `detail.tab`.",
        "displayDetail": "{ tab: \"preview\" | \"code\" }"
      }
    ],
    "composedFrom": [
      {
        "name": "Artifact",
        "group": "Components",
        "storyId": "solid-advanced-elements-artifact--docs"
      }
    ],
    "tokens": []
  },
  {
    "tag": "kc-attachments",
    "className": "KcAttachmentsElement",
    "displayName": "Attachments",
    "props": [
      {
        "name": "items",
        "type": "{ id: string; type: \"file\" | \"source-document\"; filename?: undefined | string; mediaType?: undefined | string; url?: undefined | string; title?: undefined | string }[]",
        "optional": false,
        "scalar": false,
        "description": "The attachments to render. Set as a JS property (array).",
        "typeName": "AttachmentData[]",
        "typeShape": "{ id: string; type: \"file\" | \"source-document\"; filename?: undefined | string; mediaType?: undefined | string; url?: undefined | string; title?: undefined | string }[]",
        "default": "[]",
        "typeImport": "AttachmentData",
        "displayType": "AttachmentData[]"
      },
      {
        "name": "variant",
        "type": "undefined | \"grid\" | \"inline\" | \"list\"",
        "optional": true,
        "scalar": true,
        "description": "Layout: `grid` = visual tiles, `inline` = icon + label chips, `list` = rows.",
        "default": "'grid'",
        "displayType": "undefined | \"grid\" | \"inline\" | \"list\""
      },
      {
        "name": "hoverCard",
        "type": "undefined | false | true",
        "optional": true,
        "scalar": true,
        "description": "Wrap each item in a hover card that previews its details.",
        "default": "false",
        "displayType": "undefined | false | true"
      },
      {
        "name": "removable",
        "type": "undefined | false | true",
        "optional": true,
        "scalar": true,
        "description": "Show a remove button per item; clicking it fires a `kc-remove` event.",
        "default": "false",
        "displayType": "undefined | false | true"
      },
      {
        "name": "showMediaType",
        "type": "undefined | false | true",
        "optional": true,
        "scalar": true,
        "description": "Also show the media type beneath the filename (non-grid variants).",
        "default": "false",
        "displayType": "undefined | false | true"
      },
      {
        "name": "emptyText",
        "type": "undefined | string",
        "optional": true,
        "scalar": true,
        "description": "Text shown when `items` is empty.",
        "displayType": "undefined | string"
      }
    ],
    "events": [
      {
        "name": "kc-remove",
        "detail": "{ id: string }",
        "description": "A remove button was clicked.",
        "displayDetail": "{ id: string }"
      }
    ],
    "composedFrom": [
      {
        "name": "Attachments",
        "group": "Components",
        "storyId": "solid-advanced-elements-attachments--docs"
      },
      {
        "name": "Attachment",
        "group": "Components",
        "storyId": "solid-advanced-elements-attachment--docs"
      },
      {
        "name": "AttachmentPreview",
        "group": "Components",
        "storyId": "solid-advanced-elements-attachmentpreview--docs"
      },
      {
        "name": "AttachmentInfo",
        "group": "Components",
        "storyId": "solid-advanced-elements-attachmentinfo--docs"
      },
      {
        "name": "AttachmentRemove",
        "group": "Components",
        "storyId": "solid-advanced-elements-attachmentremove--docs"
      },
      {
        "name": "AttachmentHoverCard",
        "group": "Components",
        "storyId": "solid-advanced-elements-attachmenthovercard--docs"
      },
      {
        "name": "AttachmentHoverCardTrigger",
        "group": "Components",
        "storyId": "solid-advanced-elements-attachmenthovercardtrigger--docs"
      },
      {
        "name": "AttachmentHoverCardContent",
        "group": "Components",
        "storyId": "solid-advanced-elements-attachmenthovercardcontent--docs"
      },
      {
        "name": "AttachmentEmpty",
        "group": "Components",
        "storyId": "solid-advanced-elements-attachmentempty--docs"
      }
    ],
    "tokens": []
  },
  {
    "tag": "kc-card",
    "className": "KcCardElement",
    "displayName": "Card",
    "props": [
      {
        "name": "heading",
        "type": "undefined | string",
        "optional": true,
        "scalar": true,
        "description": "Heading rendered in the card chrome (= CardEnvelope.title). Attribute: `heading`.",
        "displayType": "undefined | string"
      },
      {
        "name": "description",
        "type": "undefined | string",
        "optional": true,
        "scalar": true,
        "description": "Supporting text under the heading. Attribute: `description`.",
        "displayType": "undefined | string"
      },
      {
        "name": "errorMessage",
        "type": "undefined | string",
        "optional": true,
        "scalar": true,
        "description": "When set, the card renders its inline error state instead of the body. Attribute: `error-message`.",
        "displayType": "undefined | string"
      },
      {
        "name": "dense",
        "type": "undefined | false | true",
        "optional": true,
        "scalar": true,
        "description": "Compact spacing for dense lists. Attribute: `dense`.",
        "default": "false",
        "displayType": "undefined | false | true"
      }
    ],
    "events": [],
    "composedFrom": [
      {
        "name": "Card",
        "group": "Components",
        "storyId": "solid-advanced-elements-card--docs"
      }
    ],
    "tokens": []
  },
  {
    "tag": "kc-cards",
    "className": "KcCardsElement",
    "displayName": "Cards",
    "props": [
      {
        "name": "cards",
        "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 } }[]",
        "optional": true,
        "scalar": false,
        "description": "The stream of card envelopes to render. Set as a JS PROPERTY: `el.cards = [...]`.",
        "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 } }[]"
      },
      {
        "name": "types",
        "type": "undefined | Record<string, string>",
        "optional": true,
        "scalar": false,
        "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.",
        "displayType": "undefined | Record<string, string>"
      },
      {
        "name": "policy",
        "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; onError?: undefined | (cardId: string, message: string) => void; maxSendPromptMode?: undefined | \"compose\" | \"send\" }",
        "optional": true,
        "scalar": false,
        "description": "Optional CardPolicy handling child events. Property: `el.policy`.",
        "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; onError?: undefined | (cardId: string, message: string) => void; maxSendPromptMode?: undefined | \"compose\" | \"send\" }"
      }
    ],
    "events": [],
    "composedFrom": [
      {
        "name": "CardFallback",
        "group": "Components",
        "storyId": "solid-advanced-elements-cardfallback--docs"
      }
    ],
    "tokens": []
  },
  {
    "tag": "kc-chain-of-thought",
    "className": "KcChainOfThoughtElement",
    "displayName": "ChainOfThought",
    "props": [
      {
        "name": "steps",
        "type": "{ label: string; content?: undefined | string }[]",
        "optional": false,
        "scalar": false,
        "description": "The reasoning steps. Set as a JS property. Compound sub-parts collapse to this one data model (Route 1).",
        "typeName": "Step[]",
        "typeShape": "{ label: string; content?: undefined | string }[]",
        "default": "[]",
        "displayType": "{ label: string; content?: undefined | string }[]"
      }
    ],
    "events": [],
    "composedFrom": [
      {
        "name": "ChainOfThought",
        "group": "Components",
        "storyId": "solid-advanced-elements-chainofthought--docs"
      },
      {
        "name": "ChainOfThoughtStep",
        "group": "Components",
        "storyId": "solid-advanced-elements-chainofthoughtstep--docs"
      },
      {
        "name": "ChainOfThoughtTrigger",
        "group": "Components",
        "storyId": "solid-advanced-elements-chainofthoughttrigger--docs"
      },
      {
        "name": "ChainOfThoughtContent",
        "group": "Components",
        "storyId": "solid-advanced-elements-chainofthoughtcontent--docs"
      },
      {
        "name": "ChainOfThoughtItem",
        "group": "Components",
        "storyId": "solid-advanced-elements-chainofthoughtitem--docs"
      }
    ],
    "tokens": []
  },
  {
    "tag": "kc-chat",
    "className": "KcChatElement",
    "displayName": "Chat",
    "props": [
      {
        "name": "messages",
        "type": "{ id: string; role: \"user\" | \"assistant\"; content: string; reasoning?: undefined | { text: string; label?: undefined | string }; tools?: undefined | { type: string; state: \"input-streaming\" | \"input-available\" | \"output-available\" | \"output-error\"; input?: undefined | Record<string, unknown>; output?: undefined | Record<string, unknown>; toolCallId?: undefined | string; errorText?: undefined | string }[]; attachments?: undefined | { id: string; type: \"file\" | \"source-document\"; filename?: undefined | string; mediaType?: undefined | string; url?: undefined | string; title?: undefined | string }[]; 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 } }[]",
        "optional": false,
        "scalar": false,
        "description": "The full message thread to render, newest last. Each entry carries its role, content, and optional reasoning/tools/attachments/actions. Set as a JS property (`el.messages = [...]`).",
        "typeName": "ChatMessage[]",
        "typeShape": "{ id: string; role: \"user\" | \"assistant\"; content: string; reasoning?: undefined | { text: string; label?: undefined | string }; tools?: undefined | { type: string; state: \"input-streaming\" | \"input-available\" | \"output-available\" | \"output-error\"; input?: undefined | Record<string, unknown>; output?: undefined | Record<string, unknown>; toolCallId?: undefined | string; errorText?: undefined | string }[]; attachments?: undefined | { id: string; type: \"file\" | \"source-document\"; filename?: undefined | string; mediaType?: undefined | string; url?: undefined | string; title?: undefined | string }[]; 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 } }[]",
        "default": "[]",
        "displayType": "{ id: string; role: \"user\" | \"assistant\"; content: string; reasoning?: undefined | { text: string; label?: undefined | string }; tools?: undefined | { type: string; state: \"input-streaming\" | \"input-available\" | \"output-available\" | \"output-error\"; input?: undefined | Record<string, unknown>; output?: undefined | Record<string, unknown>; toolCallId?: undefined | string; errorText?: undefined | string }[]; attachments?: undefined | { id: string; type: \"file\" | \"source-document\"; filename?: undefined | string; mediaType?: undefined | string; url?: undefined | string; title?: undefined | string }[]; 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 } }[]"
      },
      {
        "name": "value",
        "type": "undefined | string",
        "optional": true,
        "scalar": true,
        "description": "Controlled value of the input. When set, the host owns the input text and must update it on `kc-value-change`; leave unset for uncontrolled behavior.",
        "displayType": "undefined | string"
      },
      {
        "name": "placeholder",
        "type": "undefined | string",
        "optional": true,
        "scalar": true,
        "description": "Placeholder text shown in the empty input.",
        "default": "'Send a message...'",
        "displayType": "undefined | string"
      },
      {
        "name": "loading",
        "type": "undefined | false | true",
        "optional": true,
        "scalar": true,
        "description": "When true, shows the loading/streaming state and disables submit (use while awaiting the assistant's reply).",
        "default": "false",
        "displayType": "undefined | false | true"
      },
      {
        "name": "suggestions",
        "type": "undefined | string[]",
        "optional": true,
        "scalar": false,
        "description": "Starter prompts shown above the input when the thread is empty. Clicking one follows `suggestionMode`. Set as a JS property.",
        "displayType": "undefined | string[]"
      },
      {
        "name": "suggestionMode",
        "type": "undefined | \"submit\" | \"fill\"",
        "optional": true,
        "scalar": true,
        "description": "What clicking a suggestion does: `'submit'` (default) sends it immediately as if typed and submitted; `'fill'` just places it in the input.",
        "default": "'submit'",
        "displayType": "undefined | \"submit\" | \"fill\""
      },
      {
        "name": "persistSuggestions",
        "type": "undefined | false | true",
        "optional": true,
        "scalar": true,
        "description": "Keep suggestions visible after the conversation starts. By default suggestions are conversation starters and hide once `messages` is non-empty; set this to keep them always shown. Default false.",
        "default": "false",
        "displayType": "undefined | false | true"
      },
      {
        "name": "proseSize",
        "type": "undefined | \"xs\" | \"sm\" | \"base\" | \"lg\"",
        "optional": true,
        "scalar": true,
        "description": "Body/prose font scale for rendered markdown (`'xs' | 'sm' | 'base' | 'lg'`). Defaults to `'sm'`.",
        "default": "'sm'",
        "displayType": "undefined | \"xs\" | \"sm\" | \"base\" | \"lg\""
      },
      {
        "name": "codeTheme",
        "type": "undefined | string",
        "optional": true,
        "scalar": true,
        "description": "Shiki theme name for syntax-highlighted code blocks (e.g. `'github-dark-dimmed'`).",
        "default": "'github-dark-dimmed'",
        "displayType": "undefined | string"
      },
      {
        "name": "codeHighlight",
        "type": "undefined | false | true",
        "optional": true,
        "scalar": true,
        "description": "Enable Shiki syntax highlighting in code blocks. Turn off to render plain `<pre>` blocks (lighter, no highlighter load). Default true.",
        "default": "true",
        "displayType": "undefined | false | true"
      },
      {
        "name": "chatTitle",
        "type": "undefined | string",
        "optional": true,
        "scalar": true,
        "description": "Optional header title shown on the left of the header.",
        "displayType": "undefined | string"
      },
      {
        "name": "models",
        "type": "undefined | { id: string; name: string; provider?: undefined | string; description?: undefined | string; group?: undefined | string }[]",
        "optional": true,
        "scalar": false,
        "description": "Optional model list. When set (>1 model) a ModelSwitcher is shown in the header and a `kc-model-change` event fires on selection.",
        "displayType": "undefined | { id: string; name: string; provider?: undefined | string; description?: undefined | string; group?: undefined | string }[]"
      },
      {
        "name": "currentModel",
        "type": "undefined | string",
        "optional": true,
        "scalar": true,
        "description": "The currently selected model id (pairs with `models`).",
        "displayType": "undefined | string"
      },
      {
        "name": "context",
        "type": "undefined | { usedTokens: number; maxTokens: number; inputTokens?: undefined | number; outputTokens?: undefined | number; estimatedCost?: undefined | number }",
        "optional": true,
        "scalar": false,
        "description": "Optional context-window token usage. When set, a Context token meter is shown in the header.",
        "displayType": "ContextData | undefined"
      },
      {
        "name": "scrollButton",
        "type": "undefined | false | true",
        "optional": true,
        "scalar": true,
        "description": "Show the scroll-to-bottom button inside the scroll area. Default true.",
        "default": "true",
        "displayType": "undefined | false | true"
      },
      {
        "name": "headerStart",
        "type": "undefined | false | true",
        "optional": true,
        "scalar": true,
        "description": "Whether the host has `slot=\"header-start\"` content (left of the title) — set by the `<kc-chat>` facade so a custom control forces the header open.",
        "displayType": "undefined | false | true"
      },
      {
        "name": "headerEnd",
        "type": "undefined | false | true",
        "optional": true,
        "scalar": true,
        "description": "Whether the host has `slot=\"header-end\"` content (right of the controls).",
        "displayType": "undefined | false | true"
      },
      {
        "name": "search",
        "type": "undefined | false | true",
        "optional": true,
        "scalar": true,
        "description": "Show a Search (Globe) button in the input toolbar; fires a `search` event.",
        "default": "false",
        "displayType": "undefined | false | true"
      },
      {
        "name": "voice",
        "type": "undefined | false | true",
        "optional": true,
        "scalar": true,
        "description": "Show a Voice (Mic) button in the input toolbar; fires a `voice` event.",
        "default": "false",
        "displayType": "undefined | false | true"
      },
      {
        "name": "slashCommands",
        "type": "undefined | { id: string; label: string; description?: undefined | string; category?: undefined | string }[]",
        "optional": true,
        "scalar": false,
        "description": "Slash commands — when set, typing `/` in the input opens the command palette and fires `kc-slash-select`. Set as a JS property.",
        "displayType": "SlashCommandItem[] | undefined"
      },
      {
        "name": "slashActiveIds",
        "type": "undefined | string[]",
        "optional": true,
        "scalar": false,
        "description": "Command ids to highlight as active in the palette.",
        "displayType": "undefined | string[]"
      },
      {
        "name": "slashCompact",
        "type": "undefined | false | true",
        "optional": true,
        "scalar": true,
        "description": "Single-line palette rows.",
        "default": "false",
        "displayType": "undefined | false | true"
      },
      {
        "name": "actionsReveal",
        "type": "undefined | \"always\" | \"hover\"",
        "optional": true,
        "scalar": true,
        "description": "Whether each message's action bar is always visible (`'always'`, default) or only revealed on hover of that message row (`'hover'`).",
        "default": "'always'",
        "displayType": "undefined | \"always\" | \"hover\""
      }
    ],
    "events": [
      {
        "name": "kc-message-action",
        "detail": "{ messageId: string; action: string }",
        "description": "An action button on a message was clicked. `action` is the built-in name or custom id.",
        "displayDetail": "{ messageId: string; action: string }"
      },
      {
        "name": "kc-model-change",
        "detail": "{ modelId: string }",
        "description": "The header model switcher changed.",
        "displayDetail": "{ modelId: string }"
      },
      {
        "name": "kc-search",
        "detail": "Record<string, never>",
        "description": "The Search button was clicked.",
        "displayDetail": "Record<string, never>"
      },
      {
        "name": "kc-slash-select",
        "detail": "{ command: { id: string; label: string; description?: undefined | string; category?: undefined | string } }",
        "description": "A slash command was chosen from the palette.",
        "displayDetail": "{ command: SlashCommandItem }"
      },
      {
        "name": "kc-submit",
        "detail": "{ value: string; attachments: { id: string; type: \"file\" | \"source-document\"; filename?: undefined | string; mediaType?: undefined | string; url?: undefined | string; title?: undefined | string }[] }",
        "description": "User submitted a message.",
        "displayDetail": "{ value: string; attachments: AttachmentData[] }"
      },
      {
        "name": "kc-suggestion-click",
        "detail": "{ value: string }",
        "description": "A suggestion chip was clicked (only in `suggestion-mode=\"fill\"`).",
        "displayDetail": "{ value: string }"
      },
      {
        "name": "kc-value-change",
        "detail": "{ value: string }",
        "description": "Fired on every input change.",
        "displayDetail": "{ value: string }"
      },
      {
        "name": "kc-voice",
        "detail": "Record<string, never>",
        "description": "The Mic / voice button was clicked.",
        "displayDetail": "Record<string, never>"
      }
    ],
    "composedFrom": [
      {
        "name": "ChatThread",
        "group": "Components",
        "storyId": "solid-advanced-elements-chatthread--docs"
      }
    ],
    "tokens": []
  },
  {
    "tag": "kc-checkpoint",
    "className": "KcCheckpointElement",
    "displayName": "Checkpoint",
    "props": [
      {
        "name": "label",
        "type": "undefined | string",
        "optional": true,
        "scalar": true,
        "description": "Optional text beside the icon.",
        "displayType": "undefined | string"
      },
      {
        "name": "tooltip",
        "type": "undefined | string",
        "optional": true,
        "scalar": true,
        "description": "Tooltip on hover.",
        "displayType": "undefined | string"
      },
      {
        "name": "variant",
        "type": "undefined | \"ghost\" | \"default\" | \"outline\"",
        "optional": true,
        "scalar": true,
        "description": "Visual button style.",
        "default": "'ghost'",
        "displayType": "undefined | \"ghost\" | \"default\" | \"outline\""
      },
      {
        "name": "size",
        "type": "undefined | \"sm\" | \"lg\" | \"md\" | \"icon\" | \"icon-sm\"",
        "optional": true,
        "scalar": true,
        "description": "Button size (use an `icon*` size for an icon-only checkpoint).",
        "default": "'sm'",
        "displayType": "undefined | \"sm\" | \"lg\" | \"md\" | \"icon\" | \"icon-sm\""
      }
    ],
    "events": [
      {
        "name": "kc-select",
        "detail": null,
        "description": "The checkpoint was clicked.",
        "displayDetail": null
      }
    ],
    "composedFrom": [
      {
        "name": "Checkpoint",
        "group": "Components",
        "storyId": "solid-advanced-elements-checkpoint--docs"
      },
      {
        "name": "CheckpointIcon",
        "group": "Components",
        "storyId": "solid-advanced-elements-checkpointicon--docs"
      },
      {
        "name": "CheckpointTrigger",
        "group": "Components",
        "storyId": "solid-advanced-elements-checkpointtrigger--docs"
      }
    ],
    "tokens": []
  },
  {
    "tag": "kc-choice",
    "className": "KcChoiceElement",
    "displayName": "Choice",
    "props": [
      {
        "name": "data",
        "type": "undefined | Record<string, unknown>",
        "optional": true,
        "scalar": false,
        "description": "The choice definition (the CardEnvelope.data). Set as a JS PROPERTY: `el.data = { prompt, options:[…], allowOther?, submitLabel? }`. Import `ChoiceCardData` from `@kitn.ai/chat` for the full shape.",
        "displayType": "undefined | Record<string, unknown>"
      },
      {
        "name": "cardId",
        "type": "undefined | string",
        "optional": true,
        "scalar": true,
        "description": "Stable card id correlating every emitted CardEvent. Attribute: `card-id`.",
        "displayType": "undefined | string"
      },
      {
        "name": "heading",
        "type": "undefined | string",
        "optional": true,
        "scalar": true,
        "description": "Heading rendered in the card chrome (= CardEnvelope.title). Attribute: `heading`.",
        "displayType": "undefined | string"
      },
      {
        "name": "resolution",
        "type": "undefined | Record<string, unknown>",
        "optional": true,
        "scalar": false,
        "description": "Set when the user resolved this card; renders the read-only view. Property: `el.resolution = { kind:'action', action:'…' }`.",
        "displayType": "undefined | Record<string, unknown>"
      }
    ],
    "events": [],
    "composedFrom": [
      {
        "name": "ChoiceCard",
        "group": "Components",
        "storyId": "solid-advanced-elements-choicecard--docs"
      }
    ],
    "tokens": []
  },
  {
    "tag": "kc-code-block",
    "className": "KcCodeBlockElement",
    "displayName": "CodeBlock",
    "props": [
      {
        "name": "code",
        "type": "string",
        "optional": false,
        "scalar": true,
        "description": "The source code to render.",
        "default": "''",
        "displayType": "string"
      },
      {
        "name": "language",
        "type": "undefined | string",
        "optional": true,
        "scalar": true,
        "description": "Language grammar (e.g. `js`, `python`). Defaults to `tsx`.",
        "displayType": "undefined | string"
      },
      {
        "name": "codeTheme",
        "type": "undefined | string",
        "optional": true,
        "scalar": true,
        "description": "Shiki theme name.",
        "default": "'github-dark-dimmed'",
        "displayType": "undefined | string"
      },
      {
        "name": "codeHighlight",
        "type": "undefined | false | true",
        "optional": true,
        "scalar": true,
        "description": "Disable syntax highlighting (renders plain text, no Shiki).",
        "default": "true",
        "displayType": "undefined | false | true"
      },
      {
        "name": "proseSize",
        "type": "undefined | \"xs\" | \"sm\" | \"base\" | \"lg\"",
        "optional": true,
        "scalar": true,
        "description": "Code text sizing.",
        "default": "'sm'",
        "displayType": "undefined | \"xs\" | \"sm\" | \"base\" | \"lg\""
      }
    ],
    "events": [],
    "composedFrom": [
      {
        "name": "CodeBlock",
        "group": "Components",
        "storyId": "solid-advanced-elements-codeblock--docs"
      },
      {
        "name": "CodeBlockCode",
        "group": "Components",
        "storyId": "solid-advanced-elements-codeblockcode--docs"
      }
    ],
    "tokens": [
      "--color-code-foreground"
    ]
  },
  {
    "tag": "kc-confirm",
    "className": "KcConfirmElement",
    "displayName": "Confirm",
    "props": [
      {
        "name": "data",
        "type": "undefined | Record<string, unknown>",
        "optional": true,
        "scalar": false,
        "description": "The confirm definition (the CardEnvelope.data). Set as a JS PROPERTY: `el.data = { body, tone, actions:[…] }`. Import `ConfirmCardData` from `@kitn.ai/chat` for the full shape.",
        "displayType": "undefined | Record<string, unknown>"
      },
      {
        "name": "cardId",
        "type": "undefined | string",
        "optional": true,
        "scalar": true,
        "description": "Stable card id correlating every emitted CardEvent. Attribute: `card-id`.",
        "displayType": "undefined | string"
      },
      {
        "name": "heading",
        "type": "undefined | string",
        "optional": true,
        "scalar": true,
        "description": "Heading rendered in the card chrome (= CardEnvelope.title). Attribute: `heading`.",
        "displayType": "undefined | string"
      },
      {
        "name": "autofocus",
        "type": "undefined | false | true",
        "optional": true,
        "scalar": true,
        "description": "Focus the default action on mount (off by default — no focus-stealing). Attribute: `autofocus`.",
        "default": "false",
        "displayType": "undefined | false | true"
      },
      {
        "name": "resolution",
        "type": "undefined | Record<string, unknown>",
        "optional": true,
        "scalar": false,
        "description": "Set when the user resolved this card; renders the read-only view. Property: `el.resolution = { kind:'action', action:'…' }`.",
        "displayType": "undefined | Record<string, unknown>"
      }
    ],
    "events": [],
    "composedFrom": [
      {
        "name": "ConfirmCard",
        "group": "Components",
        "storyId": "solid-advanced-elements-confirmcard--docs"
      }
    ],
    "tokens": []
  },
  {
    "tag": "kc-context",
    "className": "KcContextElement",
    "displayName": "Context",
    "props": [
      {
        "name": "context",
        "type": "undefined | { usedTokens: number; maxTokens: number; inputTokens?: undefined | number; outputTokens?: undefined | number; reasoningTokens?: undefined | number; cacheTokens?: undefined | number; estimatedCost?: undefined | number }",
        "optional": true,
        "scalar": false,
        "description": "Token-usage data. Set as a JS property.",
        "displayType": "ContextData | undefined"
      },
      {
        "name": "warnThreshold",
        "type": "undefined | number",
        "optional": true,
        "scalar": true,
        "description": "Fraction (0–1) above which the meter turns yellow. Defaults to `0.7` (70%).",
        "displayType": "undefined | number"
      },
      {
        "name": "dangerThreshold",
        "type": "undefined | number",
        "optional": true,
        "scalar": true,
        "description": "Fraction (0–1) above which the meter turns red. Defaults to `0.9` (90%).",
        "displayType": "undefined | number"
      }
    ],
    "events": [
      {
        "name": "kc-threshold-change",
        "detail": "{ level: \"ok\" | \"warn\" | \"danger\" }",
        "description": "Fires when the computed severity level changes (ok → warn → danger or back). `detail.level` is `'ok'`, `'warn'`, or `'danger'`.",
        "displayDetail": "{ level: \"ok\" | \"warn\" | \"danger\" }"
      }
    ],
    "composedFrom": [
      {
        "name": "Context",
        "group": "Components",
        "storyId": "solid-advanced-elements-context--docs"
      },
      {
        "name": "ContextTrigger",
        "group": "Components",
        "storyId": "solid-advanced-elements-contexttrigger--docs"
      },
      {
        "name": "ContextContent",
        "group": "Components",
        "storyId": "solid-advanced-elements-contextcontent--docs"
      },
      {
        "name": "ContextContentHeader",
        "group": "Components",
        "storyId": "solid-advanced-elements-contextcontentheader--docs"
      },
      {
        "name": "ContextContentBody",
        "group": "Components",
        "storyId": "solid-advanced-elements-contextcontentbody--docs"
      },
      {
        "name": "ContextContentFooter",
        "group": "Components",
        "storyId": "solid-advanced-elements-contextcontentfooter--docs"
      },
      {
        "name": "ContextInputUsage",
        "group": "Components",
        "storyId": "solid-advanced-elements-contextinputusage--docs"
      },
      {
        "name": "ContextOutputUsage",
        "group": "Components",
        "storyId": "solid-advanced-elements-contextoutputusage--docs"
      },
      {
        "name": "ContextReasoningUsage",
        "group": "Components",
        "storyId": "solid-advanced-elements-contextreasoningusage--docs"
      },
      {
        "name": "ContextCacheUsage",
        "group": "Components",
        "storyId": "solid-advanced-elements-contextcacheusage--docs"
      },
      {
        "name": "DEFAULT_WARN_THRESHOLD",
        "group": "Components",
        "storyId": "solid-advanced-elements-defaultwarnthreshold--docs"
      },
      {
        "name": "DEFAULT_DANGER_THRESHOLD",
        "group": "Components",
        "storyId": "solid-advanced-elements-defaultdangerthreshold--docs"
      }
    ],
    "tokens": []
  },
  {
    "tag": "kc-conversations",
    "className": "KcConversationsElement",
    "displayName": "Conversations",
    "props": [
      {
        "name": "groups",
        "type": "{ id: string; userId?: undefined | string; teamId?: undefined | string; name: string; sortOrder: number; createdAt: string }[]",
        "optional": false,
        "scalar": false,
        "description": "Pre-bucketed conversation groups (e.g. \"Today\", \"Yesterday\"), each with its own conversations. Use this when you want to control the grouping/headers yourself; otherwise pass a flat `conversations` array. Set as a JS property.",
        "typeName": "ConversationGroup[]",
        "typeShape": "{ id: string; userId?: undefined | string; teamId?: undefined | string; name: string; sortOrder: number; createdAt: string }[]",
        "default": "[]",
        "typeImport": "ConversationGroup",
        "displayType": "ConversationGroup[]"
      },
      {
        "name": "conversations",
        "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 }[]",
        "optional": false,
        "scalar": false,
        "description": "A flat list of conversation summaries; the component buckets them by recency for you. Ignored when `groups` is provided. Set as a JS property.",
        "typeName": "ConversationSummary[]",
        "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 }[]",
        "default": "[]",
        "typeImport": "ConversationSummary",
        "displayType": "ConversationSummary[]"
      },
      {
        "name": "activeId",
        "type": "undefined | string",
        "optional": true,
        "scalar": true,
        "description": "The id of the currently-open conversation, highlighted in the list.",
        "displayType": "undefined | string"
      }
    ],
    "events": [
      {
        "name": "kc-conversation-select",
        "detail": "{ id: string }",
        "description": "A conversation was selected.",
        "displayDetail": "{ id: string }"
      },
      {
        "name": "kc-new-chat",
        "detail": "Record<string, never>",
        "description": "The \"New chat\" button was clicked.",
        "displayDetail": "Record<string, never>"
      },
      {
        "name": "kc-toggle-sidebar",
        "detail": "Record<string, never>",
        "description": "The sidebar toggle was clicked.",
        "displayDetail": "Record<string, never>"
      }
    ],
    "composedFrom": [
      {
        "name": "ConversationList",
        "group": "Components",
        "storyId": "solid-advanced-elements-conversationlist--docs"
      }
    ],
    "tokens": [
      "--color-sidebar",
      "--color-scrollbar-thumb"
    ]
  },
  {
    "tag": "kc-embed",
    "className": "KcEmbedElement",
    "displayName": "Embed",
    "props": [
      {
        "name": "cardId",
        "type": "undefined | string",
        "optional": true,
        "scalar": true,
        "description": "Stable card id correlating every emitted event. Set as an attribute or property.",
        "displayType": "undefined | string"
      },
      {
        "name": "data",
        "type": "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\" }",
        "optional": true,
        "scalar": false,
        "description": "The embed payload (provider + id/url + options). Set as a JS **property** (object).",
        "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\" }"
      }
    ],
    "events": [],
    "composedFrom": [
      {
        "name": "Embed",
        "group": "Components",
        "storyId": "solid-advanced-elements-embed--docs"
      }
    ],
    "tokens": []
  },
  {
    "tag": "kc-empty",
    "className": "KcEmptyElement",
    "displayName": "Empty",
    "props": [
      {
        "name": "emptyTitle",
        "type": "undefined | string",
        "optional": true,
        "scalar": true,
        "description": "Title text. Attribute: `empty-title` (`title` is a global HTML attribute).",
        "default": "''",
        "displayType": "undefined | string"
      },
      {
        "name": "description",
        "type": "undefined | string",
        "optional": true,
        "scalar": true,
        "description": "Description text.",
        "default": "''",
        "displayType": "undefined | string"
      }
    ],
    "events": [],
    "composedFrom": [
      {
        "name": "Empty",
        "group": "Components",
        "storyId": "solid-advanced-elements-empty--docs"
      },
      {
        "name": "EmptyHeader",
        "group": "Components",
        "storyId": "solid-advanced-elements-emptyheader--docs"
      },
      {
        "name": "EmptyMedia",
        "group": "Components",
        "storyId": "solid-advanced-elements-emptymedia--docs"
      },
      {
        "name": "EmptyTitle",
        "group": "Components",
        "storyId": "solid-advanced-elements-emptytitle--docs"
      },
      {
        "name": "EmptyDescription",
        "group": "Components",
        "storyId": "solid-advanced-elements-emptydescription--docs"
      },
      {
        "name": "EmptyContent",
        "group": "Components",
        "storyId": "solid-advanced-elements-emptycontent--docs"
      }
    ],
    "tokens": []
  },
  {
    "tag": "kc-feedback-bar",
    "className": "KcFeedbackBarElement",
    "displayName": "FeedbackBar",
    "props": [
      {
        "name": "barTitle",
        "type": "undefined | string",
        "optional": true,
        "scalar": true,
        "description": "The banner label (e.g. \"Was this helpful?\"). Attribute: `bar-title` (`title` is avoided — it's a global HTML attribute).",
        "default": "'Was this helpful?'",
        "displayType": "undefined | string"
      },
      {
        "name": "collectDetail",
        "type": "undefined | false | true",
        "optional": true,
        "scalar": true,
        "description": "When set, a not-helpful vote opens an optional detail form before the thank-you confirmation. Attribute: `collect-detail`.",
        "displayType": "undefined | false | true"
      },
      {
        "name": "categories",
        "type": "undefined | string[]",
        "optional": true,
        "scalar": false,
        "description": "Optional category chips for the detail form. Set as a JS property (array).",
        "displayType": "undefined | string[]"
      },
      {
        "name": "detailTitle",
        "type": "undefined | string",
        "optional": true,
        "scalar": true,
        "description": "Heading for the detail form. Attribute: `detail-title`.",
        "displayType": "undefined | string"
      },
      {
        "name": "detailPlaceholder",
        "type": "undefined | string",
        "optional": true,
        "scalar": true,
        "description": "Placeholder for the detail comment box. Attribute: `detail-placeholder`.",
        "displayType": "undefined | string"
      },
      {
        "name": "submitLabel",
        "type": "undefined | string",
        "optional": true,
        "scalar": true,
        "description": "Submit button label in the detail form. Attribute: `submit-label`.",
        "displayType": "undefined | string"
      },
      {
        "name": "thanksMessage",
        "type": "undefined | string",
        "optional": true,
        "scalar": true,
        "description": "Confirmation copy shown after a vote/submit. Attribute: `thanks-message`.",
        "displayType": "undefined | string"
      }
    ],
    "events": [
      {
        "name": "kc-close",
        "detail": null,
        "description": "The user dismissed the banner.",
        "displayDetail": null
      },
      {
        "name": "kc-feedback",
        "detail": "{ value: \"helpful\" | \"not-helpful\" }",
        "description": "The user rated the response. `value` is `'helpful'` or `'not-helpful'`.",
        "displayDetail": "{ value: \"helpful\" | \"not-helpful\" }"
      },
      {
        "name": "kc-feedback-detail",
        "detail": "{ value: \"helpful\" | \"not-helpful\"; category?: undefined | string; comment?: undefined | string }",
        "description": "The user submitted the optional detail form (`collect-detail`).",
        "displayDetail": "{ value: \"helpful\" | \"not-helpful\"; category?: undefined | string; comment?: undefined | string }"
      }
    ],
    "composedFrom": [
      {
        "name": "FeedbackBar",
        "group": "Components",
        "storyId": "solid-advanced-elements-feedbackbar--docs"
      }
    ],
    "tokens": []
  },
  {
    "tag": "kc-file-tree",
    "className": "KcFileTreeElement",
    "displayName": "FileTree",
    "props": [
      {
        "name": "files",
        "type": "{ path: string; url?: undefined | string; code?: undefined | string; language?: undefined | string; type?: undefined | \"html\" | \"pdf\" | \"image\" | \"other\" }[]",
        "optional": false,
        "scalar": false,
        "description": "The files to render. Set as a JS property (array of `{ path, url?, code?, language?, type? }`).",
        "typeName": "FileTreeFile[]",
        "typeShape": "{ path: string; url?: undefined | string; code?: undefined | string; language?: undefined | string; type?: undefined | \"html\" | \"pdf\" | \"image\" | \"other\" }[]",
        "default": "[]",
        "typeImport": "FileTreeFile",
        "displayType": "{ path: string; url?: undefined | string; code?: undefined | string; language?: undefined | string; type?: undefined | \"html\" | \"pdf\" | \"image\" | \"other\" }[]"
      },
      {
        "name": "activeFile",
        "type": "undefined | string",
        "optional": true,
        "scalar": true,
        "description": "Selected file path — highlighted in the tree.",
        "displayType": "undefined | string"
      },
      {
        "name": "defaultExpanded",
        "type": "undefined | string[]",
        "optional": true,
        "scalar": false,
        "description": "Folder paths expanded initially. Omit to start with all folders open.",
        "displayType": "undefined | string[]"
      }
    ],
    "events": [
      {
        "name": "kc-select",
        "detail": "{ path: string }",
        "description": "Fired when a file is selected. `detail.path` = the file's path.",
        "displayDetail": "{ path: string }"
      }
    ],
    "composedFrom": [
      {
        "name": "FileTree",
        "group": "Components",
        "storyId": "solid-advanced-elements-filetree--docs"
      }
    ],
    "tokens": []
  },
  {
    "tag": "kc-file-upload",
    "className": "KcFileUploadElement",
    "displayName": "FileUpload",
    "props": [
      {
        "name": "multiple",
        "type": "undefined | false | true",
        "optional": true,
        "scalar": true,
        "description": "Allow selecting multiple files (default true).",
        "default": "true",
        "displayType": "undefined | false | true"
      },
      {
        "name": "accept",
        "type": "undefined | string",
        "optional": true,
        "scalar": true,
        "description": "`accept` attribute for the file picker (e.g. `image/*`).",
        "displayType": "undefined | string"
      },
      {
        "name": "disabled",
        "type": "undefined | false | true",
        "optional": true,
        "scalar": true,
        "description": "Disable the dropzone — no clicking, no drag-and-drop.",
        "default": "false",
        "displayType": "undefined | false | true"
      },
      {
        "name": "label",
        "type": "undefined | string",
        "optional": true,
        "scalar": true,
        "description": "Default dropzone label (overridable via the default slot).",
        "default": "'Click or drop files to upload'",
        "displayType": "undefined | string"
      }
    ],
    "events": [
      {
        "name": "kc-files-added",
        "detail": "{ files: File[] }",
        "description": "Files were picked or dropped.",
        "displayDetail": "{ files: File[] }"
      }
    ],
    "composedFrom": [
      {
        "name": "FileUpload",
        "group": "Components",
        "storyId": "solid-advanced-elements-fileupload--docs"
      },
      {
        "name": "FileUploadTrigger",
        "group": "Components",
        "storyId": "solid-advanced-elements-fileuploadtrigger--docs"
      }
    ],
    "tokens": []
  },
  {
    "tag": "kc-form",
    "className": "KcFormElement",
    "displayName": "Form",
    "props": [
      {
        "name": "data",
        "type": "undefined | Record<string, unknown>",
        "optional": true,
        "scalar": false,
        "description": "The form definition — a JSON Schema (`type:'object'`) + `x-kc-*` UI hints (the CardEnvelope.data). Set as a JS PROPERTY: `el.data = { type:'object', properties:{…} }`. Import the `FormDefinition` type from `@kitn.ai/chat` for the full shape (it is self-referential, so the element types it loosely).",
        "displayType": "undefined | Record<string, unknown>"
      },
      {
        "name": "cardId",
        "type": "undefined | string",
        "optional": true,
        "scalar": true,
        "description": "Stable card id correlating every emitted CardEvent. Attribute: `card-id`.",
        "displayType": "undefined | string"
      },
      {
        "name": "heading",
        "type": "undefined | string",
        "optional": true,
        "scalar": true,
        "description": "Heading rendered in the card chrome (= CardEnvelope.title). Attribute: `heading`.",
        "displayType": "undefined | string"
      },
      {
        "name": "resolution",
        "type": "undefined | Record<string, unknown>",
        "optional": true,
        "scalar": false,
        "description": "Set when the user resolved this card; renders the read-only view. Property: `el.resolution = { kind:'submit', data:{…} }`.",
        "displayType": "undefined | Record<string, unknown>"
      }
    ],
    "events": [],
    "composedFrom": [
      {
        "name": "Form",
        "group": "Components",
        "storyId": "solid-advanced-elements-form--docs"
      }
    ],
    "tokens": []
  },
  {
    "tag": "kc-image",
    "className": "KcImageElement",
    "displayName": "Image",
    "props": [
      {
        "name": "base64",
        "type": "undefined | string",
        "optional": true,
        "scalar": true,
        "description": "Base64-encoded image data (pair with `media-type`).",
        "displayType": "undefined | string"
      },
      {
        "name": "bytes",
        "type": "undefined | Uint8Array<ArrayBufferLike>",
        "optional": true,
        "scalar": false,
        "description": "Raw image bytes (set as a JS property).",
        "displayType": "undefined | Uint8Array<ArrayBufferLike>"
      },
      {
        "name": "alt",
        "type": "undefined | string",
        "optional": true,
        "scalar": true,
        "description": "Alt text.",
        "default": "''",
        "displayType": "undefined | string"
      },
      {
        "name": "mediaType",
        "type": "undefined | string",
        "optional": true,
        "scalar": true,
        "description": "MIME type (default `image/png`).",
        "displayType": "undefined | string"
      }
    ],
    "events": [],
    "composedFrom": [
      {
        "name": "Image",
        "group": "Components",
        "storyId": "solid-advanced-elements-image--docs"
      }
    ],
    "tokens": []
  },
  {
    "tag": "kc-link-preview",
    "className": "KcLinkPreviewElement",
    "displayName": "LinkPreview",
    "props": [
      {
        "name": "cardId",
        "type": "undefined | string",
        "optional": true,
        "scalar": true,
        "description": "Stable card id correlating every emitted event. Set as an attribute or property.",
        "displayType": "undefined | string"
      },
      {
        "name": "data",
        "type": "undefined | { url: string; title?: undefined | string; description?: undefined | string; image?: undefined | string; imageAlt?: undefined | string; favicon?: undefined | string; domain?: undefined | string; siteName?: undefined | string }",
        "optional": true,
        "scalar": false,
        "description": "The link payload (OG metadata). Set as a JS **property** (object).",
        "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 }"
      }
    ],
    "events": [],
    "composedFrom": [
      {
        "name": "LinkPreview",
        "group": "Components",
        "storyId": "solid-advanced-elements-linkpreview--docs"
      }
    ],
    "tokens": []
  },
  {
    "tag": "kc-loader",
    "className": "KcLoaderElement",
    "displayName": "Loader",
    "props": [
      {
        "name": "variant",
        "type": "undefined | \"circular\" | \"classic\" | \"pulse\" | \"pulse-dot\" | \"dots\" | \"typing\" | \"wave\" | \"bars\" | \"terminal\" | \"text-blink\" | \"text-shimmer\" | \"loading-dots\"",
        "optional": true,
        "scalar": true,
        "description": "The animation style: `'circular' | 'classic' | 'pulse' | 'pulse-dot' | 'dots' | 'typing' | 'wave' | 'bars' | 'terminal' | 'text-blink' | 'text-shimmer' | 'loading-dots'`. Defaults to `'circular'`.",
        "default": "'circular'",
        "displayType": "LoaderVariant | undefined"
      },
      {
        "name": "size",
        "type": "undefined | \"sm\" | \"lg\" | \"md\"",
        "optional": true,
        "scalar": true,
        "description": "Loader size: `'sm' | 'md' | 'lg'`. Defaults to `'md'`.",
        "default": "'md'",
        "displayType": "undefined | \"sm\" | \"lg\" | \"md\""
      },
      {
        "name": "text",
        "type": "undefined | string",
        "optional": true,
        "scalar": true,
        "description": "Label for the text-based variants.",
        "displayType": "undefined | string"
      }
    ],
    "events": [],
    "composedFrom": [
      {
        "name": "Loader",
        "group": "Components",
        "storyId": "solid-advanced-elements-loader--docs"
      }
    ],
    "tokens": []
  },
  {
    "tag": "kc-markdown",
    "className": "KcMarkdownElement",
    "displayName": "Markdown",
    "props": [
      {
        "name": "content",
        "type": "string",
        "optional": false,
        "scalar": true,
        "description": "The markdown source to render.",
        "default": "''",
        "displayType": "string"
      },
      {
        "name": "proseSize",
        "type": "undefined | \"xs\" | \"sm\" | \"base\" | \"lg\"",
        "optional": true,
        "scalar": true,
        "description": "Text/markdown sizing.",
        "default": "'sm'",
        "displayType": "undefined | \"xs\" | \"sm\" | \"base\" | \"lg\""
      },
      {
        "name": "codeTheme",
        "type": "undefined | string",
        "optional": true,
        "scalar": true,
        "description": "Shiki theme for fenced code blocks.",
        "default": "'github-dark-dimmed'",
        "displayType": "undefined | string"
      },
      {
        "name": "codeHighlight",
        "type": "undefined | false | true",
        "optional": true,
        "scalar": true,
        "description": "Disable syntax highlighting (no Shiki loads).",
        "default": "true",
        "displayType": "undefined | false | true"
      }
    ],
    "events": [],
    "composedFrom": [
      {
        "name": "Markdown",
        "group": "Components",
        "storyId": "solid-advanced-elements-markdown--docs"
      }
    ],
    "tokens": []
  },
  {
    "tag": "kc-message",
    "className": "KcMessageElement",
    "displayName": "Message",
    "props": [
      {
        "name": "message",
        "type": "undefined | { id: string; role: \"user\" | \"assistant\"; content: string; reasoning?: undefined | { text: string; label?: undefined | string }; tools?: undefined | { type: string; state: \"input-streaming\" | \"input-available\" | \"output-available\" | \"output-error\"; input?: undefined | Record<string, unknown>; output?: undefined | Record<string, unknown>; toolCallId?: undefined | string; errorText?: undefined | string }[]; attachments?: undefined | { id: string; type: \"file\" | \"source-document\"; filename?: undefined | string; mediaType?: undefined | string; url?: undefined | string; title?: undefined | string }[]; 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 } }",
        "optional": true,
        "scalar": false,
        "description": "The full message object. Set as a JS property.",
        "displayType": "undefined | { id: string; role: \"user\" | \"assistant\"; content: string; reasoning?: undefined | { text: string; label?: undefined | string }; tools?: undefined | { type: string; state: \"input-streaming\" | \"input-available\" | \"output-available\" | \"output-error\"; input?: undefined | Record<string, unknown>; output?: undefined | Record<string, unknown>; toolCallId?: undefined | string; errorText?: undefined | string }[]; attachments?: undefined | { id: string; type: \"file\" | \"source-document\"; filename?: undefined | string; mediaType?: undefined | string; url?: undefined | string; title?: undefined | string }[]; 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 } }"
      },
      {
        "name": "role",
        "type": "undefined | \"user\" | \"assistant\"",
        "optional": true,
        "scalar": true,
        "description": "Convenience for simple cases when not passing a `message` object.",
        "default": "'assistant'",
        "displayType": "undefined | \"user\" | \"assistant\""
      },
      {
        "name": "content",
        "type": "undefined | string",
        "optional": true,
        "scalar": true,
        "description": "Convenience content (used when `message` is not set).",
        "displayType": "undefined | string"
      },
      {
        "name": "markdown",
        "type": "undefined | false | true",
        "optional": true,
        "scalar": true,
        "description": "Force markdown on/off. Defaults to on for assistant, off for user.",
        "displayType": "undefined | false | true"
      },
      {
        "name": "proseSize",
        "type": "undefined | \"xs\" | \"sm\" | \"base\" | \"lg\"",
        "optional": true,
        "scalar": true,
        "description": "Text/markdown sizing for the message body.",
        "default": "'sm'",
        "displayType": "undefined | \"xs\" | \"sm\" | \"base\" | \"lg\""
      },
      {
        "name": "codeTheme",
        "type": "undefined | string",
        "optional": true,
        "scalar": true,
        "description": "Shiki theme name used for fenced code blocks in the content.",
        "default": "'github-dark-dimmed'",
        "displayType": "undefined | string"
      },
      {
        "name": "codeHighlight",
        "type": "undefined | false | true",
        "optional": true,
        "scalar": true,
        "description": "Disable syntax highlighting for code blocks (no Shiki loads).",
        "default": "true",
        "displayType": "undefined | false | true"
      },
      {
        "name": "actionsReveal",
        "type": "undefined | \"always\" | \"hover\"",
        "optional": true,
        "scalar": true,
        "description": "Whether the action bar is always visible (`'always'`, default) or only revealed on hover of the message row (`'hover'`).",
        "default": "'always'",
        "displayType": "undefined | \"always\" | \"hover\""
      },
      {
        "name": "avatarSrc",
        "type": "undefined | string",
        "optional": true,
        "scalar": true,
        "description": "Convenience avatar image URL (used when `message.avatar` is not set).",
        "displayType": "undefined | string"
      },
      {
        "name": "avatarFallback",
        "type": "undefined | string",
        "optional": true,
        "scalar": true,
        "description": "Convenience avatar fallback text (used when `message.avatar` is not set).",
        "displayType": "undefined | string"
      }
    ],
    "events": [
      {
        "name": "kc-message-action",
        "detail": "{ messageId: string; action: string }",
        "description": "An action button was clicked. `action` is the built-in name or custom id.",
        "displayDetail": "{ messageId: string; action: string }"
      }
    ],
    "composedFrom": [
      {
        "name": "Message",
        "group": "Components",
        "storyId": "solid-advanced-elements-message--docs"
      },
      {
        "name": "MessageAvatar",
        "group": "Components",
        "storyId": "solid-advanced-elements-messageavatar--docs"
      },
      {
        "name": "MessageContent",
        "group": "Components",
        "storyId": "solid-advanced-elements-messagecontent--docs"
      },
      {
        "name": "MessageActionBar",
        "group": "Components",
        "storyId": "solid-advanced-elements-messageactionbar--docs"
      },
      {
        "name": "Reasoning",
        "group": "Components",
        "storyId": "solid-advanced-elements-reasoning--docs"
      },
      {
        "name": "ReasoningTrigger",
        "group": "Components",
        "storyId": "solid-advanced-elements-reasoningtrigger--docs"
      },
      {
        "name": "ReasoningContent",
        "group": "Components",
        "storyId": "solid-advanced-elements-reasoningcontent--docs"
      },
      {
        "name": "Tool",
        "group": "Components",
        "storyId": "solid-advanced-elements-tool--docs"
      },
      {
        "name": "Attachments",
        "group": "Components",
        "storyId": "solid-advanced-elements-attachments--docs"
      },
      {
        "name": "Attachment",
        "group": "Components",
        "storyId": "solid-advanced-elements-attachment--docs"
      },
      {
        "name": "AttachmentPreview",
        "group": "Components",
        "storyId": "solid-advanced-elements-attachmentpreview--docs"
      },
      {
        "name": "AttachmentInfo",
        "group": "Components",
        "storyId": "solid-advanced-elements-attachmentinfo--docs"
      }
    ],
    "tokens": []
  },
  {
    "tag": "kc-model-switcher",
    "className": "KcModelSwitcherElement",
    "displayName": "ModelSwitcher",
    "props": [
      {
        "name": "models",
        "type": "{ id: string; name: string; provider?: undefined | string; description?: undefined | string; group?: undefined | string }[]",
        "optional": false,
        "scalar": false,
        "description": "The selectable models. Set as a JS property (array).",
        "typeName": "ModelOption[]",
        "typeShape": "{ id: string; name: string; provider?: undefined | string; description?: undefined | string; group?: undefined | string }[]",
        "default": "[]",
        "typeImport": "ModelOption",
        "displayType": "{ id: string; name: string; provider?: undefined | string; description?: undefined | string; group?: undefined | string }[]"
      },
      {
        "name": "currentModel",
        "type": "undefined | string",
        "optional": true,
        "scalar": true,
        "description": "The currently-selected model id. Defaults to the first model.",
        "displayType": "undefined | string"
      }
    ],
    "events": [
      {
        "name": "kc-model-change",
        "detail": "{ modelId: string }",
        "description": "A model was selected.",
        "displayDetail": "{ modelId: string }"
      }
    ],
    "composedFrom": [
      {
        "name": "ModelSwitcher",
        "group": "Components",
        "storyId": "solid-advanced-elements-modelswitcher--docs"
      }
    ],
    "tokens": []
  },
  {
    "tag": "kc-popover",
    "className": "KcPopoverElement",
    "displayName": "Popover",
    "props": [
      {
        "name": "placement",
        "type": "undefined | \"top\" | \"right\" | \"bottom\" | \"left\" | \"top-start\" | \"top-end\" | \"right-start\" | \"right-end\" | \"bottom-start\" | \"bottom-end\" | \"left-start\" | \"left-end\"",
        "optional": true,
        "scalar": true,
        "description": "Floating placement relative to the trigger (floating-ui placement).",
        "default": "'bottom-start'",
        "displayType": "undefined | \"top\" | \"right\" | \"bottom\" | \"left\" | \"top-start\" | \"top-end\" | \"right-start\" | \"right-end\" | \"bottom-start\" | \"bottom-end\" | \"left-start\" | \"left-end\""
      },
      {
        "name": "gutter",
        "type": "undefined | number",
        "optional": true,
        "scalar": true,
        "description": "Gap in px between the trigger and the panel.",
        "default": "6",
        "displayType": "undefined | number"
      },
      {
        "name": "open",
        "type": "undefined | false | true",
        "optional": true,
        "scalar": true,
        "description": "Controlled open state. Set as a JS property (`el.open = true`) to drive the popover from your app; omit for the default click-to-toggle behaviour.",
        "displayType": "undefined | false | true"
      }
    ],
    "events": [
      {
        "name": "kc-open-change",
        "detail": "{ open: false | true }",
        "description": "The popover wants to open or close (click, Escape, or outside-click).",
        "displayDetail": "{ open: false | true }"
      }
    ],
    "composedFrom": [
      {
        "name": "Popover",
        "group": "UI",
        "storyId": "solid-advanced-primitives-popover--docs"
      }
    ],
    "tokens": []
  },
  {
    "tag": "kc-prompt-input",
    "className": "KcPromptInputElement",
    "displayName": "PromptInput",
    "props": [
      {
        "name": "value",
        "type": "undefined | string",
        "optional": true,
        "scalar": true,
        "description": "Controlled value of the input. When set, the host owns the text and must update it on `kc-value-change`; leave unset for uncontrolled behavior.",
        "displayType": "undefined | string"
      },
      {
        "name": "placeholder",
        "type": "undefined | string",
        "optional": true,
        "scalar": true,
        "description": "Placeholder text shown in the empty input.",
        "default": "'Send a message...'",
        "displayType": "undefined | string"
      },
      {
        "name": "disabled",
        "type": "undefined | false | true",
        "optional": true,
        "scalar": true,
        "description": "Disable the input and submit button entirely (non-interactive).",
        "default": "false",
        "displayType": "undefined | false | true"
      },
      {
        "name": "loading",
        "type": "undefined | false | true",
        "optional": true,
        "scalar": true,
        "description": "Show the loading/streaming state and block submit (use while awaiting a reply).",
        "default": "false",
        "displayType": "undefined | false | true"
      },
      {
        "name": "suggestions",
        "type": "undefined | string[]",
        "optional": true,
        "scalar": false,
        "description": "Starter prompts shown above the input. Clicking one follows `suggestionMode`. Set as a JS property.",
        "displayType": "undefined | string[]"
      },
      {
        "name": "suggestionMode",
        "type": "undefined | \"submit\" | \"fill\"",
        "optional": true,
        "scalar": true,
        "description": "What clicking a suggestion does: `'submit'` (default) sends it immediately as if typed and submitted; `'fill'` just places it in the input.",
        "default": "'submit'",
        "displayType": "undefined | \"submit\" | \"fill\""
      },
      {
        "name": "slashCommands",
        "type": "undefined | { id: string; label: string; description?: undefined | string; category?: undefined | string }[]",
        "optional": true,
        "scalar": false,
        "description": "Slash commands — when set, typing `/` opens the command palette. Set as a JS property.",
        "displayType": "SlashCommandItem[] | undefined"
      },
      {
        "name": "slashActiveIds",
        "type": "undefined | string[]",
        "optional": true,
        "scalar": false,
        "description": "Command ids to highlight as active.",
        "displayType": "undefined | string[]"
      },
      {
        "name": "slashCompact",
        "type": "undefined | false | true",
        "optional": true,
        "scalar": true,
        "description": "Single-line palette rows.",
        "default": "false",
        "displayType": "undefined | false | true"
      },
      {
        "name": "search",
        "type": "undefined | false | true",
        "optional": true,
        "scalar": true,
        "description": "Show a Search (Globe) button in the left toolbar; clicking it fires a `search` event.",
        "default": "false",
        "displayType": "undefined | false | true"
      },
      {
        "name": "voice",
        "type": "undefined | false | true",
        "optional": true,
        "scalar": true,
        "description": "Show a Voice (Mic) button in the left toolbar; clicking it fires a `voice` event.",
        "default": "false",
        "displayType": "undefined | false | true"
      },
      {
        "name": "stoppable",
        "type": "undefined | false | true",
        "optional": true,
        "scalar": true,
        "description": "When set and `loading` is true, the send button is replaced by a Stop button (square icon, \"Stop\" aria-label). Clicking it fires `kc-stop`.",
        "default": "false",
        "displayType": "undefined | false | true"
      },
      {
        "name": "attachments",
        "type": "undefined | { id: string; type: \"file\" | \"source-document\"; filename?: undefined | string; mediaType?: undefined | string; url?: undefined | string; title?: undefined | string }[]",
        "optional": true,
        "scalar": false,
        "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).",
        "displayType": "AttachmentData[] | undefined"
      }
    ],
    "events": [
      {
        "name": "kc-search",
        "detail": "Record<string, never>",
        "description": "The Search (Globe) toolbar button was clicked.",
        "displayDetail": "Record<string, never>"
      },
      {
        "name": "kc-slash-select",
        "detail": "{ command: { id: string; label: string; description?: undefined | string; category?: undefined | string } }",
        "description": "A slash command was chosen from the palette.",
        "displayDetail": "{ command: SlashCommandItem }"
      },
      {
        "name": "kc-stop",
        "detail": "Record<string, never>",
        "description": "The Stop button was clicked while `stoppable` and `loading` are both true.",
        "displayDetail": "Record<string, never>"
      },
      {
        "name": "kc-submit",
        "detail": "{ value: string; attachments: { id: string; type: \"file\" | \"source-document\"; filename?: undefined | string; mediaType?: undefined | string; url?: undefined | string; title?: undefined | string }[] }",
        "description": "The user submitted the prompt (Enter or send button) with its attachments.",
        "displayDetail": "{ value: string; attachments: AttachmentData[] }"
      },
      {
        "name": "kc-suggestion-click",
        "detail": "{ value: string }",
        "description": "A suggestion was clicked while `suggestion-mode=\"fill\"`.",
        "displayDetail": "{ value: string }"
      },
      {
        "name": "kc-toolbar-action",
        "detail": "{ action: string }",
        "description": "A custom `<kc-action>` toolbar button was clicked. `action` is the `id` of the `<kc-action>` element that was clicked.",
        "displayDetail": "{ action: string }"
      },
      {
        "name": "kc-value-change",
        "detail": "{ value: string }",
        "description": "The input text changed (fires on every keystroke).",
        "displayDetail": "{ value: string }"
      },
      {
        "name": "kc-voice",
        "detail": "Record<string, never>",
        "description": "The Voice (Mic) toolbar button was clicked.",
        "displayDetail": "Record<string, never>"
      }
    ],
    "composedFrom": [],
    "tokens": []
  },
  {
    "tag": "kc-reasoning",
    "className": "KcReasoningElement",
    "displayName": "Reasoning",
    "props": [
      {
        "name": "text",
        "type": "string",
        "optional": false,
        "scalar": true,
        "description": "The reasoning text to display.",
        "default": "''",
        "displayType": "string"
      },
      {
        "name": "label",
        "type": "undefined | string",
        "optional": true,
        "scalar": true,
        "description": "Trigger label.",
        "default": "'Reasoning'",
        "displayType": "undefined | string"
      },
      {
        "name": "open",
        "type": "undefined | false | true",
        "optional": true,
        "scalar": true,
        "description": "Controlled open state — set as a property (`el.open = true`). Omit for uncontrolled (the trigger toggles it).",
        "displayType": "undefined | false | true"
      },
      {
        "name": "streaming",
        "type": "undefined | false | true",
        "optional": true,
        "scalar": true,
        "description": "While true, auto-expands (and re-collapses when it flips false).",
        "default": "false",
        "displayType": "undefined | false | true"
      },
      {
        "name": "markdown",
        "type": "undefined | false | true",
        "optional": true,
        "scalar": true,
        "description": "Render `text` as markdown.",
        "default": "true",
        "displayType": "undefined | false | true"
      }
    ],
    "events": [
      {
        "name": "kc-open-change",
        "detail": "{ open: false | true }",
        "description": "Open state changed (via the trigger or streaming auto-open).",
        "displayDetail": "{ open: false | true }"
      }
    ],
    "composedFrom": [
      {
        "name": "Reasoning",
        "group": "Components",
        "storyId": "solid-advanced-elements-reasoning--docs"
      },
      {
        "name": "ReasoningTrigger",
        "group": "Components",
        "storyId": "solid-advanced-elements-reasoningtrigger--docs"
      },
      {
        "name": "ReasoningContent",
        "group": "Components",
        "storyId": "solid-advanced-elements-reasoningcontent--docs"
      }
    ],
    "tokens": []
  },
  {
    "tag": "kc-remote",
    "className": "KcRemoteElement",
    "displayName": "Remote",
    "props": [
      {
        "name": "src",
        "type": "undefined | string",
        "optional": true,
        "scalar": true,
        "description": "The remote card URL. Attribute: `src`.",
        "displayType": "undefined | string"
      },
      {
        "name": "providerOrigin",
        "type": "undefined | string",
        "optional": true,
        "scalar": true,
        "description": "Exact provider origin (https: or http://localhost for dev). Attribute: `provider-origin`.",
        "displayType": "undefined | string"
      },
      {
        "name": "envelope",
        "type": "undefined | Record<string, unknown>",
        "optional": true,
        "scalar": false,
        "description": "The card envelope to render. JS property only.",
        "displayType": "undefined | Record<string, unknown>"
      },
      {
        "name": "policy",
        "type": "undefined | Record<string, unknown>",
        "optional": true,
        "scalar": false,
        "description": "Optional routing policy. JS property only.",
        "displayType": "undefined | Record<string, unknown>"
      }
    ],
    "events": [],
    "composedFrom": [],
    "tokens": []
  },
  {
    "tag": "kc-resizable",
    "className": "KcResizableElement",
    "displayName": "Resizable",
    "props": [
      {
        "name": "orientation",
        "type": "undefined | \"horizontal\" | \"vertical\"",
        "optional": true,
        "scalar": true,
        "description": "Layout axis: `horizontal` (row, default) or `vertical` (column).",
        "default": "'horizontal'",
        "displayType": "undefined | \"horizontal\" | \"vertical\""
      },
      {
        "name": "maximizedIndex",
        "type": "undefined | null | number",
        "optional": true,
        "scalar": false,
        "description": "Which item index is maximized (null = none). Declarative source of truth.",
        "default": "null",
        "displayType": "undefined | null | number"
      }
    ],
    "events": [
      {
        "name": "kc-change",
        "detail": "{ sizes: number[] }",
        "description": "Fired on drag-end / keyboard resize / visibility change. `detail.sizes` = panel sizes in percent.",
        "displayDetail": "{ sizes: number[] }"
      },
      {
        "name": "kc-maximize-change",
        "detail": "{ maximized: false | true; index: null | number }",
        "description": "Observe layout maximize state.",
        "displayDetail": "{ maximized: false | true; index: null | number }"
      }
    ],
    "composedFrom": [
      {
        "name": "ResizableHandle",
        "group": "UI",
        "storyId": "solid-advanced-primitives-resizablehandle--docs"
      }
    ],
    "tokens": []
  },
  {
    "tag": "kc-resizable-item",
    "className": "KcResizableItemElement",
    "displayName": "ResizableItem",
    "props": [
      {
        "name": "size",
        "type": "undefined | string",
        "optional": true,
        "scalar": true,
        "description": "Initial main-axis size: `\"280px\"` (fixed) or `\"25%\"`/`25` (percent). Omitted → flexible.",
        "displayType": "undefined | string"
      },
      {
        "name": "min",
        "type": "undefined | string",
        "optional": true,
        "scalar": true,
        "description": "Minimum size during resize (px or %).",
        "displayType": "undefined | string"
      },
      {
        "name": "max",
        "type": "undefined | string",
        "optional": true,
        "scalar": true,
        "description": "Maximum size during resize (px or %).",
        "displayType": "undefined | string"
      },
      {
        "name": "locked",
        "type": "undefined | false | true",
        "optional": true,
        "scalar": true,
        "description": "Fix this panel's size; adjacent dividers become non-draggable.",
        "default": "false",
        "displayType": "undefined | false | true"
      },
      {
        "name": "hidden",
        "type": "undefined | false | true",
        "optional": true,
        "scalar": true,
        "description": "Hide this panel; its divider is dropped and the rest reflow.",
        "default": "false",
        "displayType": "undefined | false | true"
      }
    ],
    "events": [
      {
        "name": "kc-change",
        "detail": "unknown",
        "description": "",
        "displayDetail": "unknown"
      },
      {
        "name": "kc-maximize-change",
        "detail": "unknown",
        "description": "",
        "displayDetail": "unknown"
      }
    ],
    "composedFrom": [
      {
        "name": "ResizableHandle",
        "group": "UI",
        "storyId": "solid-advanced-primitives-resizablehandle--docs"
      }
    ],
    "tokens": []
  },
  {
    "tag": "kc-response-stream",
    "className": "KcResponseStreamElement",
    "displayName": "ResponseStream",
    "props": [
      {
        "name": "text",
        "type": "undefined | string | AsyncIterable<string>",
        "optional": true,
        "scalar": false,
        "description": "Text to stream. A string, or an `AsyncIterable<string>` (set as a JS property — async iterables can't be HTML attributes).",
        "default": "''",
        "displayType": "undefined | string | AsyncIterable<string>"
      },
      {
        "name": "mode",
        "type": "undefined | \"typewriter\" | \"fade\"",
        "optional": true,
        "scalar": true,
        "description": "Reveal animation.",
        "default": "'typewriter'",
        "displayType": "undefined | \"typewriter\" | \"fade\""
      },
      {
        "name": "speed",
        "type": "undefined | number",
        "optional": true,
        "scalar": true,
        "description": "Characters/segments per tick.",
        "default": "20",
        "displayType": "undefined | number"
      },
      {
        "name": "as",
        "type": "undefined | string",
        "optional": true,
        "scalar": true,
        "description": "Element tag to render as.",
        "displayType": "undefined | string"
      }
    ],
    "events": [
      {
        "name": "kc-complete",
        "detail": null,
        "description": "Streaming finished.",
        "displayDetail": null
      }
    ],
    "composedFrom": [
      {
        "name": "ResponseStream",
        "group": "Components",
        "storyId": "solid-advanced-elements-responsestream--docs"
      }
    ],
    "tokens": []
  },
  {
    "tag": "kc-scope-picker",
    "className": "KcScopePickerElement",
    "displayName": "ScopePicker",
    "props": [
      {
        "name": "availableAuthors",
        "type": "string[]",
        "optional": false,
        "scalar": false,
        "description": "Authors to offer as scope filters. Set as a JS property.",
        "default": "[]",
        "displayType": "string[]"
      },
      {
        "name": "availableTags",
        "type": "string[]",
        "optional": false,
        "scalar": false,
        "description": "Tags to offer as scope filters. Set as a JS property.",
        "default": "[]",
        "displayType": "string[]"
      },
      {
        "name": "currentLabel",
        "type": "undefined | string",
        "optional": true,
        "scalar": true,
        "description": "The label shown on the trigger for the active scope.",
        "default": "'All Content'",
        "displayType": "undefined | string"
      }
    ],
    "events": [
      {
        "name": "kc-scope-change",
        "detail": "{ filters: undefined | { tags?: undefined | string[]; authors?: undefined | string[]; contentType?: undefined | \"transcript\" | \"markdown\"; dateRange?: undefined | { from: string; to: string } } }",
        "description": "A scope was chosen (`undefined` filters = \"All Content\").",
        "displayDetail": "{ filters: SearchFilters | undefined }"
      }
    ],
    "composedFrom": [
      {
        "name": "ChatScopePicker",
        "group": "Components",
        "storyId": "solid-advanced-elements-chatscopepicker--docs"
      }
    ],
    "tokens": []
  },
  {
    "tag": "kc-scroll-button",
    "className": "KcScrollButtonElement",
    "displayName": "ScrollButton",
    "props": [
      {
        "name": "for",
        "type": "undefined | string",
        "optional": true,
        "scalar": true,
        "description": "CSS id of the scroll container to control. When omitted the element walks up the DOM (outside its own shadow root) to find the nearest scrollable ancestor. Mirrors the `for` convention of `<label for=\"...\">`.",
        "displayType": "undefined | string"
      },
      {
        "name": "variant",
        "type": "undefined | \"ghost\" | \"default\" | \"outline\"",
        "optional": true,
        "scalar": true,
        "description": "Button visual variant: `'outline' | 'ghost' | 'default'`. Defaults to `'outline'`.",
        "default": "'outline'",
        "displayType": "undefined | \"ghost\" | \"default\" | \"outline\""
      },
      {
        "name": "size",
        "type": "undefined | \"sm\" | \"lg\" | \"md\" | \"icon\" | \"icon-sm\"",
        "optional": true,
        "scalar": true,
        "description": "Button size token. Defaults to `'icon'` (square).",
        "default": "'icon'",
        "displayType": "undefined | \"sm\" | \"lg\" | \"md\" | \"icon\" | \"icon-sm\""
      }
    ],
    "events": [
      {
        "name": "kc-scroll",
        "detail": null,
        "description": "Emitted when the user clicks the button and `scrollToBottom()` is called. Carries no detail — consumers use it to know a manual scroll occurred.",
        "displayDetail": null
      }
    ],
    "composedFrom": [
      {
        "name": "Button",
        "group": "UI",
        "storyId": "solid-advanced-primitives-button--docs"
      }
    ],
    "tokens": []
  },
  {
    "tag": "kc-skills",
    "className": "KcSkillsElement",
    "displayName": "Skills",
    "props": [
      {
        "name": "skills",
        "type": "{ id: string; name: string }[]",
        "optional": false,
        "scalar": false,
        "description": "The active skills to badge. Set as a JS property.",
        "typeName": "Skill[]",
        "typeShape": "{ id: string; name: string }[]",
        "default": "[]",
        "displayType": "{ id: string; name: string }[]"
      }
    ],
    "events": [],
    "composedFrom": [
      {
        "name": "MessageSkills",
        "group": "Components",
        "storyId": "solid-advanced-elements-messageskills--docs"
      }
    ],
    "tokens": []
  },
  {
    "tag": "kc-source",
    "className": "KcSourceElement",
    "displayName": "Source",
    "props": [
      {
        "name": "href",
        "type": "undefined | string",
        "optional": true,
        "scalar": true,
        "description": "The URL this citation links to (the domain also seeds the default label/favicon).",
        "default": "''",
        "displayType": "undefined | string"
      },
      {
        "name": "label",
        "type": "undefined | string",
        "optional": true,
        "scalar": true,
        "description": "Trigger label (defaults to the domain).",
        "displayType": "undefined | string"
      },
      {
        "name": "headline",
        "type": "undefined | string",
        "optional": true,
        "scalar": true,
        "description": "Hover-card headline. Attribute: `headline` (`title` is avoided — it's a global HTML attribute that reflects in a CE constructor and breaks it).",
        "default": "''",
        "displayType": "undefined | string"
      },
      {
        "name": "description",
        "type": "undefined | string",
        "optional": true,
        "scalar": true,
        "description": "Hover-card body text describing the source.",
        "default": "''",
        "displayType": "undefined | string"
      },
      {
        "name": "showFavicon",
        "type": "undefined | false | true",
        "optional": true,
        "scalar": true,
        "description": "Show the source's favicon next to the trigger label.",
        "default": "false",
        "displayType": "undefined | false | true"
      }
    ],
    "events": [],
    "composedFrom": [
      {
        "name": "Source",
        "group": "Components",
        "storyId": "solid-advanced-elements-source--docs"
      },
      {
        "name": "SourceTrigger",
        "group": "Components",
        "storyId": "solid-advanced-elements-sourcetrigger--docs"
      },
      {
        "name": "SourceContent",
        "group": "Components",
        "storyId": "solid-advanced-elements-sourcecontent--docs"
      },
      {
        "name": "SourceList",
        "group": "Components",
        "storyId": "solid-advanced-elements-sourcelist--docs"
      }
    ],
    "tokens": []
  },
  {
    "tag": "kc-sources",
    "className": "KcSourcesElement",
    "displayName": "Sources",
    "props": [
      {
        "name": "sources",
        "type": "{ href: string; title?: undefined | string; description?: undefined | string; label?: undefined | string; showFavicon?: undefined | false | true }[]",
        "optional": false,
        "scalar": false,
        "description": "The sources to render. Set as a JS property.",
        "typeName": "SourceItem[]",
        "typeShape": "{ href: string; title?: undefined | string; description?: undefined | string; label?: undefined | string; showFavicon?: undefined | false | true }[]",
        "default": "[]",
        "displayType": "SourceItem[]"
      },
      {
        "name": "showFavicon",
        "type": "undefined | false | true",
        "optional": true,
        "scalar": true,
        "description": "Show favicons on all items (per-item `showFavicon` overrides).",
        "default": "false",
        "displayType": "undefined | false | true"
      },
      {
        "name": "numbered",
        "type": "undefined | false | true",
        "optional": true,
        "scalar": true,
        "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 — bare attribute or `numbered=\"true\"`). JS property: `el.numbered = true`.",
        "default": "false",
        "displayType": "undefined | false | true"
      }
    ],
    "events": [],
    "composedFrom": [
      {
        "name": "Source",
        "group": "Components",
        "storyId": "solid-advanced-elements-source--docs"
      },
      {
        "name": "SourceTrigger",
        "group": "Components",
        "storyId": "solid-advanced-elements-sourcetrigger--docs"
      },
      {
        "name": "SourceContent",
        "group": "Components",
        "storyId": "solid-advanced-elements-sourcecontent--docs"
      },
      {
        "name": "SourceList",
        "group": "Components",
        "storyId": "solid-advanced-elements-sourcelist--docs"
      }
    ],
    "tokens": []
  },
  {
    "tag": "kc-suggestions",
    "className": "KcSuggestionsElement",
    "displayName": "Suggestions",
    "props": [
      {
        "name": "suggestions",
        "type": "(string | { label: string; value?: undefined | string })[]",
        "optional": false,
        "scalar": false,
        "description": "The suggestions. Strings, or `{ label, value }` when the displayed text and the emitted value differ. Set as a JS property.",
        "default": "[]",
        "displayType": "(string | { label: string; value?: undefined | string })[]"
      },
      {
        "name": "variant",
        "type": "undefined | \"ghost\" | \"default\" | \"outline\"",
        "optional": true,
        "scalar": true,
        "description": "Chip style: `'outline'` (default), `'ghost'`, or `'default'` (filled).",
        "default": "'outline'",
        "displayType": "undefined | \"ghost\" | \"default\" | \"outline\""
      },
      {
        "name": "size",
        "type": "undefined | \"sm\" | \"lg\" | \"md\" | \"icon\" | \"icon-sm\"",
        "optional": true,
        "scalar": true,
        "description": "Size preset for each chip. Defaults to the pill default (`'lg'`); pass `'sm'` for smaller pills (or `'md'`).",
        "displayType": "undefined | \"sm\" | \"lg\" | \"md\" | \"icon\" | \"icon-sm\""
      },
      {
        "name": "block",
        "type": "undefined | false | true",
        "optional": true,
        "scalar": true,
        "description": "Full-width left-aligned rows instead of pills.",
        "default": "false",
        "displayType": "undefined | false | true"
      },
      {
        "name": "highlight",
        "type": "undefined | string",
        "optional": true,
        "scalar": true,
        "description": "Substring to highlight within each suggestion.",
        "displayType": "undefined | string"
      }
    ],
    "events": [
      {
        "name": "kc-select",
        "detail": "{ value: string }",
        "description": "A suggestion was clicked.",
        "displayDetail": "{ value: string }"
      }
    ],
    "composedFrom": [
      {
        "name": "PromptSuggestion",
        "group": "Components",
        "storyId": "solid-advanced-elements-promptsuggestion--docs"
      }
    ],
    "tokens": []
  },
  {
    "tag": "kc-switch",
    "className": "KcSwitchElement",
    "displayName": "Switch",
    "props": [
      {
        "name": "checked",
        "type": "undefined | false | true",
        "optional": true,
        "scalar": true,
        "description": "Initial checked state. Bare attribute (`<kc-switch checked>`) turns it on.",
        "displayType": "undefined | false | true"
      },
      {
        "name": "disabled",
        "type": "undefined | false | true",
        "optional": true,
        "scalar": true,
        "description": "Disable interaction.",
        "displayType": "undefined | false | true"
      },
      {
        "name": "label",
        "type": "undefined | string",
        "optional": true,
        "scalar": true,
        "description": "Accessible label.",
        "displayType": "undefined | string"
      }
    ],
    "events": [
      {
        "name": "kc-change",
        "detail": "{ checked: false | true }",
        "description": "The toggle changed.",
        "displayDetail": "{ checked: false | true }"
      }
    ],
    "composedFrom": [
      {
        "name": "Switch",
        "group": "UI",
        "storyId": "solid-advanced-primitives-switch--docs"
      }
    ],
    "tokens": []
  },
  {
    "tag": "kc-tasks",
    "className": "KcTasksElement",
    "displayName": "Tasks",
    "props": [
      {
        "name": "data",
        "type": "undefined | Record<string, unknown>",
        "optional": true,
        "scalar": false,
        "description": "The tasks definition (the CardEnvelope.data). Set as a JS PROPERTY: `el.data = { tasks:[…], selectAll, confirmLabel, … }`. Import `TasksCardData` from `@kitn.ai/chat` for the full shape.",
        "displayType": "undefined | Record<string, unknown>"
      },
      {
        "name": "cardId",
        "type": "undefined | string",
        "optional": true,
        "scalar": true,
        "description": "Stable card id correlating every emitted CardEvent. Attribute: `card-id`.",
        "displayType": "undefined | string"
      },
      {
        "name": "heading",
        "type": "undefined | string",
        "optional": true,
        "scalar": true,
        "description": "Heading rendered in the card chrome (= CardEnvelope.title). Attribute: `heading`.",
        "displayType": "undefined | string"
      },
      {
        "name": "resolution",
        "type": "undefined | Record<string, unknown>",
        "optional": true,
        "scalar": false,
        "description": "Set when the user resolved this card; renders the read-only view. Property: `el.resolution = { kind:'submit', data:{ selected:[…] } }`.",
        "displayType": "undefined | Record<string, unknown>"
      }
    ],
    "events": [],
    "composedFrom": [
      {
        "name": "TasksCard",
        "group": "Components",
        "storyId": "solid-advanced-elements-taskscard--docs"
      }
    ],
    "tokens": []
  },
  {
    "tag": "kc-text-shimmer",
    "className": "KcTextShimmerElement",
    "displayName": "TextShimmer",
    "props": [
      {
        "name": "text",
        "type": "undefined | string",
        "optional": true,
        "scalar": true,
        "description": "The text to shimmer.",
        "default": "''",
        "displayType": "undefined | string"
      },
      {
        "name": "as",
        "type": "undefined | string",
        "optional": true,
        "scalar": true,
        "description": "Element tag to render as (default `span`).",
        "default": "'span'",
        "displayType": "undefined | string"
      },
      {
        "name": "duration",
        "type": "undefined | number",
        "optional": true,
        "scalar": true,
        "description": "Animation duration in seconds.",
        "default": "4",
        "displayType": "undefined | number"
      },
      {
        "name": "spread",
        "type": "undefined | number",
        "optional": true,
        "scalar": true,
        "description": "Gradient spread (5–45).",
        "default": "20",
        "displayType": "undefined | number"
      }
    ],
    "events": [],
    "composedFrom": [
      {
        "name": "TextShimmer",
        "group": "Components",
        "storyId": "solid-advanced-elements-textshimmer--docs"
      }
    ],
    "tokens": []
  },
  {
    "tag": "kc-thinking-bar",
    "className": "KcThinkingBarElement",
    "displayName": "ThinkingBar",
    "props": [
      {
        "name": "text",
        "type": "undefined | string",
        "optional": true,
        "scalar": true,
        "description": "The shimmering label, e.g. \"Thinking…\".",
        "default": "'Thinking'",
        "displayType": "undefined | string"
      },
      {
        "name": "stoppable",
        "type": "undefined | false | true",
        "optional": true,
        "scalar": true,
        "description": "When true, show a \"stop\" affordance that fires a `stop` event.",
        "default": "false",
        "displayType": "undefined | false | true"
      },
      {
        "name": "stopLabel",
        "type": "undefined | string",
        "optional": true,
        "scalar": true,
        "description": "Label for the stop affordance.",
        "default": "'Answer now'",
        "displayType": "undefined | string"
      }
    ],
    "events": [
      {
        "name": "kc-stop",
        "detail": null,
        "description": "The \"stop / answer now\" affordance was clicked.",
        "displayDetail": null
      }
    ],
    "composedFrom": [
      {
        "name": "ThinkingBar",
        "group": "Components",
        "storyId": "solid-advanced-elements-thinkingbar--docs"
      }
    ],
    "tokens": []
  },
  {
    "tag": "kc-tool",
    "className": "KcToolElement",
    "displayName": "Tool",
    "props": [
      {
        "name": "tool",
        "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 }",
        "optional": true,
        "scalar": false,
        "description": "The tool-call to display. Set as a JS property.",
        "displayType": "ToolPart | undefined"
      },
      {
        "name": "open",
        "type": "undefined | false | true",
        "optional": true,
        "scalar": true,
        "description": "Start expanded.",
        "default": "false",
        "displayType": "undefined | false | true"
      }
    ],
    "events": [],
    "composedFrom": [
      {
        "name": "Tool",
        "group": "Components",
        "storyId": "solid-advanced-elements-tool--docs"
      }
    ],
    "tokens": [
      "--color-tool-blue",
      "--color-tool-amber",
      "--color-tool-green",
      "--color-tool-red"
    ]
  },
  {
    "tag": "kc-voice-input",
    "className": "KcVoiceInputElement",
    "displayName": "VoiceInput",
    "props": [
      {
        "name": "transcribe",
        "type": "undefined | (audio: Blob) => Promise<string>",
        "optional": true,
        "scalar": false,
        "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.",
        "displayType": "undefined | (audio: Blob) => Promise<string>"
      },
      {
        "name": "disabled",
        "type": "undefined | false | true",
        "optional": true,
        "scalar": true,
        "description": "Disable the mic button (non-interactive).",
        "default": "false",
        "displayType": "undefined | false | true"
      }
    ],
    "events": [
      {
        "name": "kc-audio-captured",
        "detail": "{ blob: Blob }",
        "description": "Raw audio captured (before transcription) — for hosts that prefer to handle transcription themselves instead of via the `transcribe` property.",
        "displayDetail": "{ blob: Blob }"
      },
      {
        "name": "kc-transcription",
        "detail": "{ text: string }",
        "description": "Transcription completed (the `transcribe` property resolved).",
        "displayDetail": "{ text: string }"
      }
    ],
    "composedFrom": [
      {
        "name": "VoiceInput",
        "group": "Components",
        "storyId": "solid-advanced-elements-voiceinput--docs"
      }
    ],
    "tokens": []
  },
  {
    "tag": "kc-workspace",
    "className": "KcWorkspaceElement",
    "displayName": "Workspace",
    "props": [
      {
        "name": "groups",
        "type": "{ id: string; userId?: undefined | string; teamId?: undefined | string; name: string; sortOrder: number; createdAt: string }[]",
        "optional": false,
        "scalar": false,
        "description": "Pre-bucketed conversation groups for the sidebar. Set as a JS property.",
        "typeName": "ConversationGroup[]",
        "typeShape": "{ id: string; userId?: undefined | string; teamId?: undefined | string; name: string; sortOrder: number; createdAt: string }[]",
        "default": "[]",
        "typeImport": "ConversationGroup",
        "displayType": "ConversationGroup[]"
      },
      {
        "name": "conversations",
        "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 }[]",
        "optional": false,
        "scalar": false,
        "description": "Flat conversation list (auto-bucketed if `groups` is empty). Set as a JS property.",
        "typeName": "ConversationSummary[]",
        "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 }[]",
        "default": "[]",
        "typeImport": "ConversationSummary",
        "displayType": "ConversationSummary[]"
      },
      {
        "name": "activeId",
        "type": "undefined | string",
        "optional": true,
        "scalar": true,
        "description": "Id of the open conversation, highlighted in the sidebar.",
        "displayType": "undefined | string"
      },
      {
        "name": "messages",
        "type": "{ id: string; role: \"user\" | \"assistant\"; content: string; reasoning?: undefined | { text: string; label?: undefined | string }; tools?: undefined | { type: string; state: \"input-streaming\" | \"input-available\" | \"output-available\" | \"output-error\"; input?: undefined | Record<string, unknown>; output?: undefined | Record<string, unknown>; toolCallId?: undefined | string; errorText?: undefined | string }[]; attachments?: undefined | { id: string; type: \"file\" | \"source-document\"; filename?: undefined | string; mediaType?: undefined | string; url?: undefined | string; title?: undefined | string }[]; 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 } }[]",
        "optional": false,
        "scalar": false,
        "description": "The active conversation's message thread, newest last. Set as a JS property.",
        "typeName": "ChatMessage[]",
        "typeShape": "{ id: string; role: \"user\" | \"assistant\"; content: string; reasoning?: undefined | { text: string; label?: undefined | string }; tools?: undefined | { type: string; state: \"input-streaming\" | \"input-available\" | \"output-available\" | \"output-error\"; input?: undefined | Record<string, unknown>; output?: undefined | Record<string, unknown>; toolCallId?: undefined | string; errorText?: undefined | string }[]; attachments?: undefined | { id: string; type: \"file\" | \"source-document\"; filename?: undefined | string; mediaType?: undefined | string; url?: undefined | string; title?: undefined | string }[]; 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 } }[]",
        "default": "[]",
        "displayType": "{ id: string; role: \"user\" | \"assistant\"; content: string; reasoning?: undefined | { text: string; label?: undefined | string }; tools?: undefined | { type: string; state: \"input-streaming\" | \"input-available\" | \"output-available\" | \"output-error\"; input?: undefined | Record<string, unknown>; output?: undefined | Record<string, unknown>; toolCallId?: undefined | string; errorText?: undefined | string }[]; attachments?: undefined | { id: string; type: \"file\" | \"source-document\"; filename?: undefined | string; mediaType?: undefined | string; url?: undefined | string; title?: undefined | string }[]; 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 } }[]"
      },
      {
        "name": "value",
        "type": "undefined | string",
        "optional": true,
        "scalar": true,
        "description": "",
        "displayType": "undefined | string"
      },
      {
        "name": "placeholder",
        "type": "undefined | string",
        "optional": true,
        "scalar": true,
        "description": "",
        "default": "'Send a message...'",
        "displayType": "undefined | string"
      },
      {
        "name": "loading",
        "type": "undefined | false | true",
        "optional": true,
        "scalar": true,
        "description": "",
        "default": "false",
        "displayType": "undefined | false | true"
      },
      {
        "name": "suggestions",
        "type": "undefined | string[]",
        "optional": true,
        "scalar": false,
        "description": "",
        "displayType": "undefined | string[]"
      },
      {
        "name": "suggestionMode",
        "type": "undefined | \"submit\" | \"fill\"",
        "optional": true,
        "scalar": true,
        "description": "",
        "default": "'submit'",
        "displayType": "undefined | \"submit\" | \"fill\""
      },
      {
        "name": "proseSize",
        "type": "undefined | \"xs\" | \"sm\" | \"base\" | \"lg\"",
        "optional": true,
        "scalar": true,
        "description": "",
        "default": "'sm'",
        "displayType": "undefined | \"xs\" | \"sm\" | \"base\" | \"lg\""
      },
      {
        "name": "codeTheme",
        "type": "undefined | string",
        "optional": true,
        "scalar": true,
        "description": "",
        "default": "'github-dark-dimmed'",
        "displayType": "undefined | string"
      },
      {
        "name": "codeHighlight",
        "type": "undefined | false | true",
        "optional": true,
        "scalar": true,
        "description": "",
        "default": "true",
        "displayType": "undefined | false | true"
      },
      {
        "name": "chatTitle",
        "type": "undefined | string",
        "optional": true,
        "scalar": true,
        "description": "",
        "displayType": "undefined | string"
      },
      {
        "name": "models",
        "type": "undefined | { id: string; name: string; provider?: undefined | string; description?: undefined | string; group?: undefined | string }[]",
        "optional": true,
        "scalar": false,
        "description": "",
        "displayType": "undefined | { id: string; name: string; provider?: undefined | string; description?: undefined | string; group?: undefined | string }[]"
      },
      {
        "name": "currentModel",
        "type": "undefined | string",
        "optional": true,
        "scalar": true,
        "description": "",
        "displayType": "undefined | string"
      },
      {
        "name": "context",
        "type": "undefined | { usedTokens: number; maxTokens: number; inputTokens?: undefined | number; outputTokens?: undefined | number; estimatedCost?: undefined | number }",
        "optional": true,
        "scalar": false,
        "description": "",
        "displayType": "ContextData | undefined"
      },
      {
        "name": "scrollButton",
        "type": "undefined | false | true",
        "optional": true,
        "scalar": true,
        "description": "",
        "default": "true",
        "displayType": "undefined | false | true"
      },
      {
        "name": "search",
        "type": "undefined | false | true",
        "optional": true,
        "scalar": true,
        "description": "",
        "default": "false",
        "displayType": "undefined | false | true"
      },
      {
        "name": "voice",
        "type": "undefined | false | true",
        "optional": true,
        "scalar": true,
        "description": "",
        "default": "false",
        "displayType": "undefined | false | true"
      },
      {
        "name": "slashCommands",
        "type": "undefined | { id: string; label: string; description?: undefined | string; category?: undefined | string }[]",
        "optional": true,
        "scalar": false,
        "description": "",
        "displayType": "SlashCommandItem[] | undefined"
      },
      {
        "name": "slashActiveIds",
        "type": "undefined | string[]",
        "optional": true,
        "scalar": false,
        "description": "",
        "displayType": "undefined | string[]"
      },
      {
        "name": "slashCompact",
        "type": "undefined | false | true",
        "optional": true,
        "scalar": true,
        "description": "",
        "default": "false",
        "displayType": "undefined | false | true"
      },
      {
        "name": "sidebarWidth",
        "type": "undefined | number",
        "optional": true,
        "scalar": true,
        "description": "Sidebar default width as a percent of the workspace (default 22).",
        "default": "22",
        "displayType": "undefined | number"
      },
      {
        "name": "sidebarMinWidth",
        "type": "undefined | number",
        "optional": true,
        "scalar": true,
        "description": "Sidebar min width in px (default 200).",
        "default": "200",
        "displayType": "undefined | number"
      },
      {
        "name": "sidebarMaxWidth",
        "type": "undefined | number",
        "optional": true,
        "scalar": true,
        "description": "Sidebar max width in px (default 420).",
        "default": "420",
        "displayType": "undefined | number"
      },
      {
        "name": "sidebarCollapsed",
        "type": "undefined | false | true",
        "optional": true,
        "scalar": true,
        "description": "Controlled collapsed state. Set this as a JS property (`el.sidebarCollapsed = true`) to drive the sidebar from your app, updating it in response to the `kc-sidebar-toggle` event. Omit for uncontrolled (the element manages it).",
        "displayType": "undefined | false | true"
      },
      {
        "name": "defaultSidebarCollapsed",
        "type": "undefined | false | true",
        "optional": true,
        "scalar": true,
        "description": "Initial collapsed state when uncontrolled (default false). Use the `default-sidebar-collapsed` attribute to start collapsed in plain HTML.",
        "displayType": "undefined | false | true"
      }
    ],
    "events": [
      {
        "name": "kc-conversation-select",
        "detail": "{ id: string }",
        "description": "A conversation was selected in the sidebar.",
        "displayDetail": "{ id: string }"
      },
      {
        "name": "kc-message-action",
        "detail": "{ messageId: string; action: string }",
        "description": "An action button on a message was clicked.",
        "displayDetail": "{ messageId: string; action: string }"
      },
      {
        "name": "kc-model-change",
        "detail": "{ modelId: string }",
        "description": "The header model switcher changed.",
        "displayDetail": "{ modelId: string }"
      },
      {
        "name": "kc-new-chat",
        "detail": "Record<string, never>",
        "description": "The \"New chat\" button was clicked.",
        "displayDetail": "Record<string, never>"
      },
      {
        "name": "kc-search",
        "detail": "Record<string, never>",
        "description": "The Search button was clicked.",
        "displayDetail": "Record<string, never>"
      },
      {
        "name": "kc-sidebar-toggle",
        "detail": "{ collapsed: false | true }",
        "description": "The sidebar was collapsed or expanded.",
        "displayDetail": "{ collapsed: false | true }"
      },
      {
        "name": "kc-slash-select",
        "detail": "{ command: { id: string; label: string; description?: undefined | string; category?: undefined | string } }",
        "description": "A slash command was chosen from the palette.",
        "displayDetail": "{ command: SlashCommandItem }"
      },
      {
        "name": "kc-submit",
        "detail": "{ value: string; attachments: { id: string; type: \"file\" | \"source-document\"; filename?: undefined | string; mediaType?: undefined | string; url?: undefined | string; title?: undefined | string }[] }",
        "description": "User submitted a message.",
        "displayDetail": "{ value: string; attachments: AttachmentData[] }"
      },
      {
        "name": "kc-suggestion-click",
        "detail": "{ value: string }",
        "description": "A suggestion chip was clicked (only in `suggestion-mode=\"fill\"`).",
        "displayDetail": "{ value: string }"
      },
      {
        "name": "kc-value-change",
        "detail": "{ value: string }",
        "description": "Fired on every input change.",
        "displayDetail": "{ value: string }"
      },
      {
        "name": "kc-voice",
        "detail": "Record<string, never>",
        "description": "The Mic / voice button was clicked.",
        "displayDetail": "Record<string, never>"
      }
    ],
    "composedFrom": [
      {
        "name": "ChatThread",
        "group": "Components",
        "storyId": "solid-advanced-elements-chatthread--docs"
      },
      {
        "name": "ConversationList",
        "group": "Components",
        "storyId": "solid-advanced-elements-conversationlist--docs"
      },
      {
        "name": "ResizablePanelGroup",
        "group": "UI",
        "storyId": "solid-advanced-primitives-resizablepanelgroup--docs"
      },
      {
        "name": "ResizablePanel",
        "group": "UI",
        "storyId": "solid-advanced-primitives-resizablepanel--docs"
      },
      {
        "name": "ResizableHandle",
        "group": "UI",
        "storyId": "solid-advanced-primitives-resizablehandle--docs"
      },
      {
        "name": "Button",
        "group": "UI",
        "storyId": "solid-advanced-primitives-button--docs"
      }
    ],
    "tokens": []
  }
]
