@kitn.ai/ui 0.17.0 → 0.18.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +28 -5
- package/dist/components/artifact.d.ts +39 -1
- package/dist/components/attachment-types.d.ts +12 -0
- package/dist/components/attachments.d.ts +2 -10
- package/dist/components/card.d.ts +27 -0
- package/dist/components/chain-of-thought.d.ts +78 -2
- package/dist/components/chat-scope-picker.d.ts +7 -0
- package/dist/components/chat-thread.d.ts +37 -12
- package/dist/components/choice-card.d.ts +26 -0
- package/dist/components/coachmark.d.ts +49 -0
- package/dist/components/composer-dom.d.ts +35 -0
- package/dist/components/composer-highlight.d.ts +48 -0
- package/dist/components/composer-history.d.ts +34 -0
- package/dist/components/composer.d.ts +86 -0
- package/dist/components/confirm-card.d.ts +17 -0
- package/dist/components/conversation-item.d.ts +9 -0
- package/dist/components/conversation-list.d.ts +36 -1
- package/dist/components/file-tree.d.ts +15 -0
- package/dist/components/form.d.ts +34 -0
- package/dist/components/markdown.d.ts +3 -0
- package/dist/components/message.d.ts +12 -0
- package/dist/components/model-switcher.d.ts +7 -0
- package/dist/components/prompt-input.d.ts +13 -4
- package/dist/components/prompt-suggestion.d.ts +9 -1
- package/dist/components/reasoning.d.ts +14 -1
- package/dist/components/response-compare.d.ts +14 -0
- package/dist/components/screen.d.ts +46 -0
- package/dist/components/tasks-card.d.ts +49 -1
- package/dist/components/toast.d.ts +12 -2
- package/dist/components/tool-types.d.ts +10 -0
- package/dist/components/tool.d.ts +8 -8
- package/dist/components/voice-input.d.ts +27 -0
- package/dist/components/voice-output.d.ts +33 -0
- package/dist/core-C8fzo39E.js +12 -0
- package/dist/custom-elements.json +8392 -1860
- package/dist/elements/agent-card.d.ts +1 -0
- package/dist/elements/agent-card.js +1 -0
- package/dist/elements/artifact.js +1 -1
- package/dist/elements/attachments.js +1 -1
- package/dist/elements/autoloader.js +1 -1
- package/dist/elements/avatar.d.ts +1 -0
- package/dist/elements/avatar.js +1 -0
- package/dist/elements/badge.d.ts +1 -0
- package/dist/elements/badge.js +1 -0
- package/dist/elements/button.d.ts +1 -0
- package/dist/elements/button.js +1 -0
- package/dist/elements/card.js +1 -1
- package/dist/elements/cards.js +1 -1
- package/dist/elements/chain-of-thought.js +1 -1
- package/dist/elements/chat-scope-picker.js +1 -1
- package/dist/elements/chat-types.d.ts +47 -0
- package/dist/elements/chat-workspace.js +1 -1
- package/dist/elements/chat.js +1 -1
- package/dist/elements/checkpoint.js +1 -1
- package/dist/elements/choice.js +1 -1
- package/dist/elements/chunks/Icon-C2LTALdM.js +1 -0
- package/dist/elements/chunks/action-icons-Dtl8Ox5D.js +1 -0
- package/dist/elements/chunks/arrow-left-GbBceGBE.js +1 -0
- package/dist/elements/chunks/attachments-DLJcWCDV.js +1 -0
- package/dist/elements/chunks/badge-BTNZTODL.js +1 -0
- package/dist/elements/chunks/button-DBDZebGr.js +1 -0
- package/dist/elements/chunks/card-YfCyI4fH.js +1 -0
- package/dist/elements/chunks/chat-thread-Dz2qbzvI.js +1 -0
- package/dist/elements/chunks/check-fhmRksq_.js +1 -0
- package/dist/elements/chunks/chevron-down-DcRg1aRU.js +1 -0
- package/dist/elements/chunks/chevron-right-ChzBcNJ-.js +1 -0
- package/dist/elements/chunks/circle-B4fTe9v6.js +1 -0
- package/dist/elements/chunks/circle-check-CJV-3Rem.js +1 -0
- package/dist/elements/chunks/circle-x-pDtzlghQ.js +1 -0
- package/dist/elements/chunks/cn-CU7UAWzk.js +1 -0
- package/dist/elements/chunks/code-block-DZ6mz6vs.js +1 -0
- package/dist/elements/chunks/collapsible-CWUAShMC.js +1 -0
- package/dist/elements/chunks/composer-BZyPU6gD.js +65 -0
- package/dist/elements/chunks/context-Cx6eQA_G.js +1 -0
- package/dist/elements/chunks/conversation-list-C4xTQSpT.js +1 -0
- package/dist/elements/chunks/default-input-BZcwyKcP.js +1 -0
- package/dist/elements/chunks/define-CNSKFZCd.js +1 -0
- package/dist/elements/chunks/disclosure-BcBs--Jf.js +1 -0
- package/dist/elements/chunks/download-BDQwcFav.js +1 -0
- package/dist/elements/chunks/dropdown-wgs8xCJZ.js +1 -0
- package/dist/elements/chunks/ellipsis-CUiEJ6R1.js +1 -0
- package/dist/elements/chunks/external-link-DJUmC7g2.js +1 -0
- package/dist/elements/chunks/file-text-DOYfYvrh.js +1 -0
- package/dist/elements/chunks/file-tree-DQzNQrbr.js +1 -0
- package/dist/elements/chunks/folder-DBDUBANz.js +1 -0
- package/dist/elements/chunks/hover-card-BQGdGAQ3.js +1 -0
- package/dist/elements/chunks/icon-CAyRqVrg.js +1 -0
- package/dist/elements/chunks/{index-CTBEJeo6.js → index-BCRhi84a.js} +1 -1
- package/dist/elements/chunks/info-DBQl-m6e.js +1 -0
- package/dist/elements/chunks/input-DZD67EvW.js +1 -0
- package/dist/elements/chunks/kbd-DbyVrlnU.js +1 -0
- package/dist/elements/chunks/link-vko7AttA.js +1 -0
- package/dist/elements/chunks/loader-Cg6rO8tQ.js +1 -0
- package/dist/elements/chunks/{markdown-CMTGx9r8.js → markdown-n3Xbj3PR.js} +9 -9
- package/dist/elements/chunks/message-CgKytiSB.js +1 -0
- package/dist/elements/chunks/message-feedback-Ds3-US0e.js +1 -0
- package/dist/elements/chunks/message-square-MmRkvc-M.js +1 -0
- package/dist/elements/chunks/minimize-2-3kCdE0q3.js +1 -0
- package/dist/elements/chunks/model-switcher-BMtXGwLU.js +1 -0
- package/dist/elements/chunks/overlay-B1-MBI6h.js +1 -0
- package/dist/elements/chunks/paperclip-DDEfmkHc.js +1 -0
- package/dist/elements/chunks/progress-bar-Dwbiyv3s.js +1 -0
- package/dist/elements/chunks/prompt-suggestion-9lvgFcEa.js +1 -0
- package/dist/elements/chunks/reasoning-DzHWsdAJ.js +1 -0
- package/dist/elements/chunks/resizable-Bq_eHxUm.js +1 -0
- package/dist/elements/chunks/rotate-cw-jpisOdOV.js +1 -0
- package/dist/elements/chunks/scroll-area-g5Ze3K6f.js +1 -0
- package/dist/elements/chunks/separator-Bmjc5XyX.js +1 -0
- package/dist/elements/chunks/settings-Cz1bMJP9.js +1 -0
- package/dist/elements/chunks/settings-group-9imY3kRA.js +1 -0
- package/dist/elements/chunks/share-BdenF0wQ.js +1 -0
- package/dist/elements/chunks/skeleton-Pjc5jiaY.js +1 -0
- package/dist/elements/chunks/slots-DkZ-Cmha.js +1 -0
- package/dist/elements/chunks/star-DY6z1UUH.js +1 -0
- package/dist/elements/chunks/store-th4VyJXM.js +1 -0
- package/dist/elements/chunks/text-shimmer-CEi-tlXr.js +1 -0
- package/dist/elements/chunks/textarea-CboigarR.js +1 -0
- package/dist/elements/chunks/thumbs-up-BR33KLfA.js +1 -0
- package/dist/elements/chunks/toast-store-BEMda0fv.js +1 -0
- package/dist/elements/chunks/tool-TMued3WO.js +1 -0
- package/dist/elements/chunks/tooltip-Cft_Rxiw.js +1 -0
- package/dist/elements/chunks/triangle-alert-B07fX3Q8.js +1 -0
- package/dist/elements/chunks/use-card-resolution-M36zVciB.js +1 -0
- package/dist/elements/chunks/video-MKp3LmNT.js +1 -0
- package/dist/elements/chunks/x-Ckwicf6g.js +1 -0
- package/dist/elements/coachmark.d.ts +1 -0
- package/dist/elements/coachmark.js +1 -0
- package/dist/elements/code-block.js +1 -1
- package/dist/elements/command.d.ts +1 -0
- package/dist/elements/command.js +1 -0
- package/dist/elements/compare.js +1 -1
- package/dist/elements/composer.d.ts +1 -0
- package/dist/elements/composer.js +1 -0
- package/dist/elements/confirm-card.js +1 -1
- package/dist/elements/context-meter.js +1 -1
- package/dist/elements/conversation-list.js +1 -1
- package/dist/elements/css.d.ts +1 -0
- package/dist/elements/default-input.d.ts +51 -0
- package/dist/elements/define.d.ts +53 -0
- package/dist/elements/dialog.d.ts +1 -0
- package/dist/elements/dialog.js +1 -0
- package/dist/elements/disclosure.d.ts +37 -0
- package/dist/elements/editable-label.d.ts +1 -0
- package/dist/elements/editable-label.js +1 -0
- package/dist/elements/embed.js +1 -1
- package/dist/elements/empty.js +1 -1
- package/dist/elements/feedback-bar.js +1 -1
- package/dist/elements/file-tree.js +1 -1
- package/dist/elements/file-upload.js +1 -1
- package/dist/elements/form.js +1 -1
- package/dist/elements/hover-card.d.ts +1 -0
- package/dist/elements/hover-card.js +1 -0
- package/dist/elements/icon.d.ts +1 -0
- package/dist/elements/icon.js +1 -0
- package/dist/elements/image.js +1 -1
- package/dist/elements/input.d.ts +1 -0
- package/dist/elements/input.js +1 -0
- package/dist/elements/kbd.d.ts +1 -0
- package/dist/elements/kbd.js +1 -0
- package/dist/elements/link-preview.js +1 -1
- package/dist/elements/loader.js +1 -1
- package/dist/elements/markdown.js +1 -1
- package/dist/elements/menu.d.ts +1 -0
- package/dist/elements/menu.js +1 -0
- package/dist/elements/message-skills.js +1 -1
- package/dist/elements/message.js +1 -1
- package/dist/elements/model-switcher.js +1 -1
- package/dist/elements/nav.d.ts +1 -0
- package/dist/elements/nav.js +1 -0
- package/dist/elements/notice.d.ts +1 -0
- package/dist/elements/notice.js +1 -0
- package/dist/elements/pane-group.d.ts +1 -0
- package/dist/elements/pane-group.js +1 -0
- package/dist/elements/pane.d.ts +1 -0
- package/dist/elements/pane.js +1 -0
- package/dist/elements/popover.js +1 -1
- package/dist/elements/progress-bar.d.ts +1 -0
- package/dist/elements/progress-bar.js +1 -0
- package/dist/elements/prompt-dock.d.ts +1 -0
- package/dist/elements/prompt-dock.js +1 -0
- package/dist/elements/prompt-input.js +1 -1
- package/dist/elements/prompt-suggestions.js +1 -1
- package/dist/elements/reasoning.js +1 -1
- package/dist/elements/register-impl.d.ts +0 -0
- package/dist/elements/register.d.ts +13 -0
- package/dist/elements/remote.d.ts +1 -0
- package/dist/elements/remote.js +1 -0
- package/dist/elements/resizable.js +1 -1
- package/dist/elements/response-stream.js +2 -2
- package/dist/elements/screen.d.ts +1 -0
- package/dist/elements/screen.js +1 -0
- package/dist/elements/scroll-area.d.ts +1 -0
- package/dist/elements/scroll-area.js +1 -0
- package/dist/elements/scroll-button.js +1 -1
- package/dist/elements/search.d.ts +1 -0
- package/dist/elements/search.js +1 -0
- package/dist/elements/segmented.d.ts +1 -0
- package/dist/elements/segmented.js +1 -0
- package/dist/elements/separator.d.ts +1 -0
- package/dist/elements/separator.js +1 -0
- package/dist/elements/setting-item.d.ts +1 -0
- package/dist/elements/setting-item.js +1 -0
- package/dist/elements/settings-group.d.ts +1 -0
- package/dist/elements/settings-group.js +1 -0
- package/dist/elements/skeleton.d.ts +1 -0
- package/dist/elements/skeleton.js +1 -0
- package/dist/elements/slots.d.ts +176 -0
- package/dist/elements/source.js +1 -1
- package/dist/elements/status.d.ts +1 -0
- package/dist/elements/status.js +1 -0
- package/dist/elements/switch.js +1 -1
- package/dist/elements/tabs.d.ts +1 -0
- package/dist/elements/tabs.js +1 -0
- package/dist/elements/tasks.js +1 -1
- package/dist/elements/text-shimmer.js +1 -1
- package/dist/elements/thinking-bar.js +1 -1
- package/dist/elements/toast.js +1 -1
- package/dist/elements/tool.js +1 -1
- package/dist/elements/tooltip.d.ts +1 -0
- package/dist/elements/tooltip.js +1 -0
- package/dist/elements/voice-input.js +1 -1
- package/dist/elements/voice-output.d.ts +1 -0
- package/dist/elements/voice-output.js +1 -0
- package/dist/elements.d.ts +733 -58
- package/dist/engine-javascript-C1x7zo1_.js +141 -0
- package/dist/index.d.ts +3 -2
- package/dist/index.js +8255 -5703
- package/dist/kai.es.js +1 -0
- package/dist/llms/llms-full.txt +1146 -64
- package/dist/llms/llms.txt +4 -4
- package/dist/mcp.es.js +62 -7
- package/dist/primitives/composer-model.d.ts +22 -0
- package/dist/primitives/composer-triggers.d.ts +19 -0
- package/dist/primitives/create-kai-chat.d.ts +38 -0
- package/dist/primitives/toast-store.d.ts +32 -2
- package/dist/primitives/use-speech-recognition.d.ts +26 -0
- package/dist/react/index.d.ts +1085 -97
- package/dist/react/runtime.d.ts +9 -2
- package/dist/react/use-kai-chat.d.ts +41 -0
- package/dist/react.js +572 -193
- package/dist/register-impl-cKscku5m.js +141 -0
- package/dist/schemas/tasks.schema.json +2 -2
- package/dist/state/index.d.ts +4 -0
- package/dist/state/messages.d.ts +11 -0
- package/dist/state/stream.d.ts +22 -0
- package/dist/state/suggestions.d.ts +4 -0
- package/dist/state.js +117 -0
- package/dist/theme.tokens.css +87 -0
- package/dist/types.d.ts +4 -0
- package/dist/ui/agent-card.d.ts +61 -0
- package/dist/ui/button.d.ts +5 -2
- package/dist/ui/card.d.ts +61 -0
- package/dist/ui/collapsible.d.ts +15 -1
- package/dist/ui/command.d.ts +33 -0
- package/dist/ui/dialog.d.ts +42 -0
- package/dist/ui/dropdown.d.ts +95 -1
- package/dist/ui/editable-label.d.ts +26 -0
- package/dist/ui/hover-card.d.ts +13 -1
- package/dist/ui/icon.d.ts +18 -0
- package/dist/ui/input.d.ts +33 -0
- package/dist/ui/kbd.d.ts +21 -0
- package/dist/ui/nav.d.ts +62 -0
- package/dist/ui/notice.d.ts +31 -0
- package/dist/ui/overlay.d.ts +12 -0
- package/dist/ui/pane-grid.d.ts +58 -0
- package/dist/ui/pane-group.d.ts +77 -0
- package/dist/ui/pane.d.ts +78 -0
- package/dist/ui/popover.d.ts +11 -1
- package/dist/ui/progress-bar.d.ts +23 -0
- package/dist/ui/prompt-dock.d.ts +96 -0
- package/dist/ui/resizable.d.ts +12 -0
- package/dist/ui/scroll-area.d.ts +4 -0
- package/dist/ui/segmented.d.ts +28 -0
- package/dist/ui/settings-group.d.ts +32 -0
- package/dist/ui/skeleton.d.ts +12 -0
- package/dist/ui/stat.d.ts +16 -0
- package/dist/ui/status.d.ts +13 -0
- package/dist/ui/switch.d.ts +8 -1
- package/dist/ui/tabs.d.ts +35 -0
- package/dist/ui/tooltip.d.ts +19 -1
- package/frameworks/react/index.tsx +1042 -157
- package/frameworks/react/runtime.tsx +30 -1
- package/frameworks/react/use-kai-chat.tsx +87 -0
- package/llms-full.txt +1146 -64
- package/llms.txt +4 -4
- package/package.json +31 -10
- package/src/agent-tooling/mcp/manifest.ts +14 -0
- package/src/agent-tooling/mcp/tools/debug.ts +11 -7
- package/src/agent-tooling/mcp/tools/reference.ts +32 -0
- package/src/agent-tooling/mcp/tools/scaffold.ts +30 -1
- package/src/components/artifact.tsx +98 -13
- package/src/components/attachment-types.ts +13 -0
- package/src/components/attachments.tsx +4 -14
- package/src/components/card.tsx +109 -15
- package/src/components/chain-of-thought.tsx +210 -1
- package/src/components/chat-scope-picker.tsx +13 -3
- package/src/components/chat-thread.tsx +225 -116
- package/src/components/choice-card.tsx +103 -11
- package/src/components/coachmark.tsx +249 -0
- package/src/components/component-meta.json +699 -110
- package/src/components/composer-dom.ts +159 -0
- package/src/components/composer-highlight.ts +242 -0
- package/src/components/composer-history.ts +82 -0
- package/src/components/composer.tsx +979 -0
- package/src/components/confirm-card.tsx +54 -1
- package/src/components/conversation-item.tsx +69 -7
- package/src/components/conversation-list.tsx +134 -37
- package/src/components/file-tree.tsx +197 -47
- package/src/components/form-widgets.tsx +9 -7
- package/src/components/form.tsx +140 -17
- package/src/components/image.tsx +3 -5
- package/src/components/link-preview.tsx +5 -4
- package/src/components/markdown.tsx +5 -2
- package/src/components/message.tsx +23 -4
- package/src/components/model-switcher.tsx +19 -4
- package/src/components/prompt-input.tsx +46 -75
- package/src/components/prompt-suggestion.tsx +48 -16
- package/src/components/reasoning.tsx +29 -6
- package/src/components/response-compare.tsx +31 -2
- package/src/components/screen.tsx +176 -0
- package/src/components/tasks-card.tsx +341 -21
- package/src/components/toast.tsx +119 -31
- package/src/components/tool-types.ts +10 -0
- package/src/components/tool.tsx +22 -16
- package/src/components/voice-input.tsx +102 -19
- package/src/components/voice-output.tsx +202 -0
- package/src/elements/agent-card.tsx +67 -0
- package/src/elements/artifact.tsx +53 -4
- package/src/elements/attachments.tsx +1 -0
- package/src/elements/avatar.tsx +33 -0
- package/src/elements/badge.tsx +32 -0
- package/src/elements/button.tsx +126 -0
- package/src/elements/card-media.jpg +0 -0
- package/src/elements/card.tsx +124 -31
- package/src/elements/cards.tsx +81 -7
- package/src/elements/chain-of-thought.tsx +77 -32
- package/src/elements/chat-scope-picker.tsx +35 -8
- package/src/elements/chat-types.ts +2 -2
- package/src/elements/chat-workspace.tsx +153 -41
- package/src/elements/chat.tsx +45 -23
- package/src/elements/choice.tsx +71 -19
- package/src/elements/coachmark.tsx +90 -0
- package/src/elements/command.tsx +209 -0
- package/src/elements/compare.tsx +24 -2
- package/src/elements/compiled.css +2 -2
- package/src/elements/composer.tsx +151 -0
- package/src/elements/confirm-card.tsx +36 -11
- package/src/elements/conversation-list.tsx +80 -11
- package/src/elements/default-input.tsx +75 -53
- package/src/elements/define.tsx +87 -7
- package/src/elements/dialog.tsx +98 -0
- package/src/elements/disclosure.ts +73 -0
- package/src/elements/editable-label.tsx +125 -0
- package/src/elements/element-manifest.json +129 -1
- package/src/elements/element-meta.json +5562 -1336
- package/src/elements/element-types.d.ts +732 -57
- package/src/elements/file-tree.tsx +12 -2
- package/src/elements/file-upload.tsx +1 -1
- package/src/elements/form.tsx +54 -11
- package/src/elements/hover-card.tsx +80 -0
- package/src/elements/icon-names.json +48 -0
- package/src/elements/icon.tsx +41 -0
- package/src/elements/input.tsx +203 -0
- package/src/elements/kbd.tsx +45 -0
- package/src/elements/menu.tsx +217 -0
- package/src/elements/message.tsx +58 -11
- package/src/elements/model-switcher.tsx +27 -1
- package/src/elements/nav.tsx +87 -0
- package/src/elements/notice.tsx +53 -0
- package/src/elements/pane-group.tsx +119 -0
- package/src/elements/pane.tsx +129 -0
- package/src/elements/popover.tsx +39 -17
- package/src/elements/progress-bar.tsx +39 -0
- package/src/elements/prompt-dock.tsx +81 -0
- package/src/elements/prompt-input.tsx +112 -63
- package/src/elements/prompt-suggestions.tsx +25 -9
- package/src/elements/reasoning.tsx +30 -9
- package/src/elements/register-impl.ts +38 -3
- package/src/elements/register.ts +11 -3
- package/src/elements/resizable.tsx +48 -11
- package/src/elements/screen.tsx +90 -0
- package/src/elements/scroll-area.tsx +33 -0
- package/src/elements/search.tsx +180 -0
- package/src/elements/segmented.tsx +135 -0
- package/src/elements/separator.tsx +36 -0
- package/src/elements/setting-item.tsx +50 -0
- package/src/elements/settings-group.tsx +37 -0
- package/src/elements/skeleton.tsx +45 -0
- package/src/elements/slots.ts +607 -0
- package/src/elements/source.tsx +13 -6
- package/src/elements/status.tsx +42 -0
- package/src/elements/switch.tsx +89 -14
- package/src/elements/tabs.tsx +95 -0
- package/src/elements/tasks.tsx +70 -14
- package/src/elements/toast.tsx +17 -2
- package/src/elements/tool.tsx +43 -9
- package/src/elements/tooltip.tsx +85 -0
- package/src/elements/video-poster.jpg +0 -0
- package/src/elements/voice-input.tsx +66 -16
- package/src/elements/voice-output.tsx +69 -0
- package/src/index.ts +5 -2
- package/src/primitives/card-schemas/tasks.schema.json +2 -2
- package/src/primitives/composer-model.ts +49 -0
- package/src/primitives/composer-triggers.ts +35 -0
- package/src/primitives/create-kai-chat.ts +66 -0
- package/src/primitives/toast-store.ts +43 -2
- package/src/primitives/use-speech-recognition.ts +135 -0
- package/src/state/index.ts +6 -0
- package/src/state/messages.ts +36 -0
- package/src/state/stream.ts +92 -0
- package/src/state/suggestions.ts +9 -0
- package/src/types.ts +4 -0
- package/src/ui/agent-card.tsx +218 -0
- package/src/ui/button.tsx +16 -5
- package/src/ui/card.tsx +245 -0
- package/src/ui/collapsible.tsx +30 -4
- package/src/ui/command.tsx +99 -0
- package/src/ui/dialog.tsx +217 -0
- package/src/ui/dropdown.tsx +375 -13
- package/src/ui/editable-label.tsx +112 -0
- package/src/ui/hover-card.tsx +28 -5
- package/src/ui/icon.tsx +110 -0
- package/src/ui/input.tsx +132 -0
- package/src/ui/kbd.tsx +118 -0
- package/src/ui/nav.tsx +282 -0
- package/src/ui/notice.tsx +84 -0
- package/src/ui/overlay.tsx +108 -2
- package/src/ui/pane-grid.tsx +117 -0
- package/src/ui/pane-group.tsx +291 -0
- package/src/ui/pane.tsx +193 -0
- package/src/ui/popover.tsx +16 -2
- package/src/ui/progress-bar.tsx +83 -0
- package/src/ui/prompt-dock.tsx +145 -0
- package/src/ui/resizable.tsx +69 -1
- package/src/ui/scroll-area.tsx +14 -3
- package/src/ui/segmented.tsx +109 -0
- package/src/ui/settings-group.tsx +67 -0
- package/src/ui/skeleton.tsx +62 -5
- package/src/ui/stat.tsx +41 -0
- package/src/ui/status.tsx +48 -0
- package/src/ui/switch.tsx +49 -23
- package/src/ui/tabs.tsx +168 -0
- package/src/ui/tooltip.tsx +52 -8
- package/theme.css +113 -0
- package/dist/components/slash-command.d.ts +0 -15
- package/dist/elements/chunks/Icon-D_Zmwmwh.js +0 -1
- package/dist/elements/chunks/action-icons-PVfIvcuG.js +0 -1
- package/dist/elements/chunks/attachments-Dp6vqtrc.js +0 -1
- package/dist/elements/chunks/button-CKyYD9G4.js +0 -1
- package/dist/elements/chunks/card-Cjho-PYk.js +0 -1
- package/dist/elements/chunks/chat-thread-RT808iPf.js +0 -1
- package/dist/elements/chunks/check-CDYaMYrM.js +0 -1
- package/dist/elements/chunks/chevron-down-3SBiq8HF.js +0 -1
- package/dist/elements/chunks/chevron-right-k2UFlIVK.js +0 -1
- package/dist/elements/chunks/cn-Dogu6PbV.js +0 -1
- package/dist/elements/chunks/code-block-BYUmfFSd.js +0 -1
- package/dist/elements/chunks/collapsible-BiNwdOn6.js +0 -1
- package/dist/elements/chunks/context-18g6oi4J.js +0 -1
- package/dist/elements/chunks/conversation-list-D9Y0NVdo.js +0 -1
- package/dist/elements/chunks/default-input-CSAoYYMd.js +0 -1
- package/dist/elements/chunks/download-D8K0Je8r.js +0 -1
- package/dist/elements/chunks/dropdown-bUs2iTia.js +0 -1
- package/dist/elements/chunks/external-link-6mA0wxab.js +0 -1
- package/dist/elements/chunks/file-text-DnaYk3Dm.js +0 -1
- package/dist/elements/chunks/file-tree-CgtRLlxK.js +0 -1
- package/dist/elements/chunks/hover-card-CIGw62gP.js +0 -1
- package/dist/elements/chunks/link-BlGSeoPy.js +0 -1
- package/dist/elements/chunks/loader-DvhR4qa0.js +0 -1
- package/dist/elements/chunks/message-CDZwXjhL.js +0 -1
- package/dist/elements/chunks/message-feedback-CYx81QiA.js +0 -1
- package/dist/elements/chunks/model-switcher-O_tUhoOT.js +0 -1
- package/dist/elements/chunks/overlay-DydXYMQW.js +0 -1
- package/dist/elements/chunks/prompt-suggestion-ldlWV5kd.js +0 -1
- package/dist/elements/chunks/reasoning-2PUnHlmr.js +0 -1
- package/dist/elements/chunks/resizable-B5WNbSeb.js +0 -1
- package/dist/elements/chunks/star-t9tI-P0q.js +0 -1
- package/dist/elements/chunks/store-C6rIooZz.js +0 -1
- package/dist/elements/chunks/text-shimmer-uh9V_KUh.js +0 -1
- package/dist/elements/chunks/textarea-3nm6Ia9U.js +0 -1
- package/dist/elements/chunks/thumbs-up-BBtguGld.js +0 -1
- package/dist/elements/chunks/toast-store-D8cL3fWl.js +0 -1
- package/dist/elements/chunks/tool-GJ3vwp1U.js +0 -1
- package/dist/elements/chunks/tooltip-DwKAz4XR.js +0 -1
- package/dist/elements/chunks/triangle-alert-Ct1zt2JL.js +0 -1
- package/dist/elements/chunks/use-card-resolution-D-_0Alzy.js +0 -1
- package/dist/elements/chunks/video-mVYiM99-.js +0 -1
- package/dist/elements/chunks/x-CzxL27Ch.js +0 -1
- package/dist/kitn-chat.es.js +0 -1
- package/dist/register-JyTglR6m.js +0 -1
- package/dist/register-impl-C6wlSsts.js +0 -77
- package/src/components/slash-command.tsx +0 -232
- package/src/elements/framework-usage.json +0 -588
- /package/dist/{kitn-chat-provider.d.ts → kai-provider.d.ts} +0 -0
- /package/dist/{kitn-chat-provider.es.js → kai-provider.es.js} +0 -0
package/dist/llms/llms.txt
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<!-- AUTO-GENERATED by scripts/gen-llms.mjs — do not edit by hand. Run `npm run build`. -->
|
|
2
2
|
# @kitn.ai/ui
|
|
3
3
|
|
|
4
|
-
> Framework-agnostic, Shadow-DOM web components for building AI chat interfaces — works in React, Vue, Angular, Svelte, or plain HTML.
|
|
4
|
+
> Framework-agnostic, Shadow-DOM web components for building AI chat interfaces — works in React, Vue, Angular, Svelte, or plain HTML. 78 custom elements, every one prefixed `kai-` (e.g. `<kai-chat>`, `<kai-artifact>`): streaming responses, markdown + code rendering, reasoning/tool panels, attachments, conversation sidebar, voice input. Zero framework dependency for consumers; the SolidJS runtime it is authored in is bundled in, so the host needs nothing.
|
|
5
5
|
|
|
6
6
|
## Install
|
|
7
7
|
|
|
@@ -13,7 +13,7 @@ npm install solid-js
|
|
|
13
13
|
|
|
14
14
|
## #1 rule: array/object data goes on JS PROPERTIES, not HTML attributes
|
|
15
15
|
|
|
16
|
-
This is the single most common mistake. Arrays and objects (`messages`, `models`, `context`, `suggestions`, `
|
|
16
|
+
This is the single most common mistake. Arrays and objects (`messages`, `models`, `context`, `suggestions`, `triggers`, …) MUST be assigned as JavaScript properties on the element. They CANNOT be passed as HTML attributes — an HTML attribute is always a string and will be ignored or mis-parsed.
|
|
17
17
|
|
|
18
18
|
```js
|
|
19
19
|
const chat = document.querySelector('kai-chat');
|
|
@@ -35,7 +35,7 @@ Drop an element into any framework (React, Vue, plain HTML). Data in via JS prop
|
|
|
35
35
|
- `<kai-prompt-input>` — standalone composer with send button.
|
|
36
36
|
|
|
37
37
|
**Layer 2 — composable primitives** (`import { … } from '@kitn.ai/ui'`):
|
|
38
|
-
All
|
|
38
|
+
All 78 elements are also exported individually. Use them for custom layouts or features `<kai-chat>` does not expose (ChainOfThought, FeedbackBar, ThinkingBar, VoiceInput, …). Your bundler tree-shakes the rest.
|
|
39
39
|
|
|
40
40
|
## Key rules for the web components
|
|
41
41
|
|
|
@@ -97,7 +97,7 @@ For Tailwind builds: `@import "@kitn.ai/ui/theme.css"` in your CSS.
|
|
|
97
97
|
|
|
98
98
|
## Docs
|
|
99
99
|
|
|
100
|
-
- Full element reference (all
|
|
100
|
+
- Full element reference (all 78 elements, every prop/event): ./llms-full.txt — https://kitn.dev/llms-full.txt
|
|
101
101
|
- Machine-readable Custom Elements Manifest: https://unpkg.com/@kitn.ai/ui/dist/custom-elements.json
|
|
102
102
|
- Working examples: https://github.com/kitn-ai/ui/tree/main/examples
|
|
103
103
|
- Storybook: https://storybook.kitn.dev
|
package/dist/mcp.es.js
CHANGED
|
@@ -113,6 +113,33 @@ Call component_reference with no name (or name: "list") to list all ${all.length
|
|
|
113
113
|
lines.push(`- **${prop.name}**${def}${desc ? ` — ${desc}` : ""}`);
|
|
114
114
|
}
|
|
115
115
|
}
|
|
116
|
+
const slots = el.slots ?? [];
|
|
117
|
+
if (slots.length > 0) {
|
|
118
|
+
lines.push(
|
|
119
|
+
"",
|
|
120
|
+
"### Composition slots",
|
|
121
|
+
'Project your own markup into these named regions — add a light-DOM child with a `slot="…"` attribute (e.g. `<div slot="sidebar">…</div>`).'
|
|
122
|
+
);
|
|
123
|
+
for (const slot of slots) {
|
|
124
|
+
const desc = slot.description?.trim() ?? "";
|
|
125
|
+
lines.push(`- **${slot.name}**${desc ? ` — ${desc}` : ""}`);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
const parts = el.cssParts ?? [];
|
|
129
|
+
if (parts.length > 0) {
|
|
130
|
+
lines.push(
|
|
131
|
+
"",
|
|
132
|
+
"### Styleable parts (`::part`)",
|
|
133
|
+
"Restyle these from outside the Shadow DOM via `" + tag + "::part(name) { … }`."
|
|
134
|
+
);
|
|
135
|
+
for (const part of parts) {
|
|
136
|
+
const desc = part.description?.trim() ?? "";
|
|
137
|
+
lines.push(`- **${part.name}**${desc ? ` — ${desc}` : ""}`);
|
|
138
|
+
if (part.recipe) {
|
|
139
|
+
lines.push(" ```css", ` ${part.recipe}`, " ```");
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
116
143
|
return lines.join("\n");
|
|
117
144
|
}
|
|
118
145
|
const reference = {
|
|
@@ -1771,17 +1798,45 @@ function interactionPatternsBlock() {
|
|
|
1771
1798
|
` recordPreference({ prompt, chosen: chosenId, rejected: rejectedIds });`,
|
|
1772
1799
|
`});`
|
|
1773
1800
|
].join("\n");
|
|
1801
|
+
const statePattern = [
|
|
1802
|
+
`--- Pattern: State helpers + streaming (new-array contract) ---`,
|
|
1803
|
+
`// Setter contract: always (prev) => next — every helper returns a new array.`,
|
|
1804
|
+
`// Vanilla adapter (works with any element ref):`,
|
|
1805
|
+
`// const set = (fn) => { el.messages = fn(el.messages ?? []); };`,
|
|
1806
|
+
``,
|
|
1807
|
+
`// Low-level helpers from @kitn.ai/ui/state:`,
|
|
1808
|
+
`// import { appendMessage, updateMessage, appendContent, createAssistantStream } from '@kitn.ai/ui/state';`,
|
|
1809
|
+
``,
|
|
1810
|
+
`// Streaming loop (framework-agnostic):`,
|
|
1811
|
+
`// const stream = createAssistantStream(set);`,
|
|
1812
|
+
`// stream.appendText(chunk); // text delta`,
|
|
1813
|
+
`// stream.appendReasoning(chunk); // reasoning delta`,
|
|
1814
|
+
`// stream.upsertTool(toolCall); // tool call delta`,
|
|
1815
|
+
`// stream.done(); // seal the message`,
|
|
1816
|
+
``,
|
|
1817
|
+
`// One-liner for React (batteries-included):`,
|
|
1818
|
+
`// import { useKaiChat } from '@kitn.ai/ui/react';`,
|
|
1819
|
+
`// const chat = useKaiChat();`,
|
|
1820
|
+
`// <Chat {...chat.bind} />`,
|
|
1821
|
+
``,
|
|
1822
|
+
`// One-liner for Solid (batteries-included):`,
|
|
1823
|
+
`// import { createKaiChat } from '@kitn.ai/ui';`,
|
|
1824
|
+
`// const chat = createKaiChat();`,
|
|
1825
|
+
`// <kai-chat {...chat.bind} on:kai-submit={chat.handleSubmit} />`
|
|
1826
|
+
].join("\n");
|
|
1774
1827
|
return [
|
|
1775
1828
|
`=== INTERACTION PATTERNS ===`,
|
|
1776
1829
|
``,
|
|
1777
|
-
`Optional snippets for confirmations, card recovery, and
|
|
1830
|
+
`Optional snippets for confirmations, card recovery, preference capture, and state/streaming helpers.`,
|
|
1778
1831
|
`Drop in the one(s) you need; all imports resolve from @kitn.ai/ui.`,
|
|
1779
1832
|
``,
|
|
1780
1833
|
toastPattern,
|
|
1781
1834
|
``,
|
|
1782
1835
|
recoveryPattern,
|
|
1783
1836
|
``,
|
|
1784
|
-
preferencePattern
|
|
1837
|
+
preferencePattern,
|
|
1838
|
+
``,
|
|
1839
|
+
statePattern
|
|
1785
1840
|
].join("\n");
|
|
1786
1841
|
}
|
|
1787
1842
|
function rejectIntegration(id) {
|
|
@@ -2081,9 +2136,9 @@ const RULES = [
|
|
|
2081
2136
|
// Rule 1 — array/object data set as an HTML attribute
|
|
2082
2137
|
// Source: for-ai-agents.mdx §1; context7.json rule 2
|
|
2083
2138
|
id: "array-as-attribute",
|
|
2084
|
-
test: (t) => /\b(messages|models|context|suggestions|
|
|
2139
|
+
test: (t) => /\b(messages|models|context|suggestions|triggers)\s*=\s*["']/.test(t),
|
|
2085
2140
|
title: "Array/object prop set as an HTML attribute (silent failure)",
|
|
2086
|
-
cause: "An HTML attribute is always a string. Passing `messages`, `models`, `context`, `suggestions`, or `
|
|
2141
|
+
cause: "An HTML attribute is always a string. Passing `messages`, `models`, `context`, `suggestions`, or `triggers` as an HTML attribute silently fails — the element receives a stringified value it cannot parse.",
|
|
2087
2142
|
fix: "Set the property in JavaScript, not as an HTML attribute. Only scalar props (`placeholder`, `loading`, `theme`) work as attributes.\n\n```js\n// ✅ Works — set messages in JavaScript as a property\nconst chat = document.querySelector('kai-chat');\nchat.messages = [{ id: '1', role: 'assistant', content: 'Hello!' }];\n```\n\n```html\n<!-- ❌ Fails — messages cannot be an HTML attribute -->\n<kai-chat messages=\"[...]\"></kai-chat>\n```"
|
|
2088
2143
|
},
|
|
2089
2144
|
{
|
|
@@ -2093,7 +2148,7 @@ const RULES = [
|
|
|
2093
2148
|
test: (t) => /don'?t\s+update|doesn'?t\s+re.?render|no\s+re.?render|\.push\(|\bpush(?:es|ing)?\s+(?:to|into|onto)\b|mutate|in.place/.test(t),
|
|
2094
2149
|
title: "In-place mutation does not trigger a re-render",
|
|
2095
2150
|
cause: "Mutating an existing message object or array in place (e.g. `chat.messages.push(…)` or `chat.messages[i].content = …`) does not trigger a re-render. The element only reacts when it detects a new array/object reference.",
|
|
2096
|
-
fix: "Assign a NEW array (and a new object) on every change — never mutate in place.\n\n```js\n// ✅ Triggers re-render — new array + new object reference\nchat.messages = [\n ...chat.messages,\n { id: crypto.randomUUID(), role: 'user', content: userText },\n];\n\n// ✅ During streaming — replace with a new array + new object on every chunk\nchat.messages = chat.messages.map((m) =>\n m.id === assistantId ? { ...m, content: accumulated } : m\n);\n\n// ❌ Does NOT trigger re-render\nchat.messages.push(newMsg);\nchat.messages[i].content = accumulated;\n
|
|
2151
|
+
fix: "Assign a NEW array (and a new object) on every change — never mutate in place.\n\n```js\n// ✅ Triggers re-render — new array + new object reference\nchat.messages = [\n ...chat.messages,\n { id: crypto.randomUUID(), role: 'user', content: userText },\n];\n\n// ✅ During streaming — replace with a new array + new object on every chunk\nchat.messages = chat.messages.map((m) =>\n m.id === assistantId ? { ...m, content: accumulated } : m\n);\n\n// ❌ Does NOT trigger re-render\nchat.messages.push(newMsg);\nchat.messages[i].content = accumulated;\n```\n\nThe ergonomic path: helpers in `@kitn.ai/ui/state` (`appendMessage`, `updateMessage`, `appendContent`) and `createAssistantStream` handle the new-reference contract for you. `useKaiChat` (React) and `createKaiChat` (Solid) own state entirely so mutation is never an option.\n\n// setMessages((m) => appendMessage(m, msg)) // new array, no footgun"
|
|
2097
2152
|
},
|
|
2098
2153
|
{
|
|
2099
2154
|
// Rule 3 — listening for events on a parent / wrong element
|
|
@@ -2112,8 +2167,8 @@ const RULES = [
|
|
|
2112
2167
|
id: "wrong-prefix",
|
|
2113
2168
|
test: (t) => /\bkitn-/.test(t),
|
|
2114
2169
|
title: "Wrong element prefix `kitn-` (should be `kai-`)",
|
|
2115
|
-
cause: "The custom element prefix is `kai-` (e.g. `<kai-chat>`, `<kai-artifact>`). `kitn
|
|
2116
|
-
fix: "Replace the `kitn-` prefix with `kai-` everywhere.\n\n```html\n<!-- ✅ Correct element prefix -->\n<kai-chat></kai-chat>\n<kai-artifact></kai-artifact>\n\n<!-- ❌ Wrong — kitn-chat is
|
|
2170
|
+
cause: "The custom element prefix is `kai-` (e.g. `<kai-chat>`, `<kai-artifact>`). `kitn-` is a legacy name (the register-all bundle is `kai.es.js`) — it is not a registered element name. Using `<kitn-chat>` results in an unknown element that renders nothing.",
|
|
2171
|
+
fix: "Replace the `kitn-` prefix with `kai-` everywhere.\n\n```html\n<!-- ✅ Correct element prefix -->\n<kai-chat></kai-chat>\n<kai-artifact></kai-artifact>\n\n<!-- ❌ Wrong — kitn-chat is not an element (the bundle is kai.es.js) -->\n<kitn-chat></kitn-chat>\n```"
|
|
2117
2172
|
},
|
|
2118
2173
|
{
|
|
2119
2174
|
// Rule 6 — custom elements not registered / renders nothing (React #1 failure)
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export interface EntityRef {
|
|
2
|
+
kind: string;
|
|
3
|
+
id: string;
|
|
4
|
+
label: string;
|
|
5
|
+
icon?: string;
|
|
6
|
+
promptText?: string;
|
|
7
|
+
data?: Record<string, unknown>;
|
|
8
|
+
}
|
|
9
|
+
export type Segment = {
|
|
10
|
+
type: 'text';
|
|
11
|
+
text: string;
|
|
12
|
+
} | {
|
|
13
|
+
type: 'entity';
|
|
14
|
+
entity: EntityRef;
|
|
15
|
+
};
|
|
16
|
+
export type ComposerDoc = Segment[];
|
|
17
|
+
export declare function normalizeValue(value: string | ComposerDoc | null | undefined): ComposerDoc;
|
|
18
|
+
export declare function serializeToText(doc: ComposerDoc, opts?: {
|
|
19
|
+
entity?: (e: EntityRef) => string;
|
|
20
|
+
}): string;
|
|
21
|
+
export declare function entitiesOf(doc: ComposerDoc): EntityRef[];
|
|
22
|
+
export declare function docIsEmpty(doc: ComposerDoc): boolean;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export interface ActiveTrigger {
|
|
2
|
+
char: string;
|
|
3
|
+
query: string;
|
|
4
|
+
start: number;
|
|
5
|
+
}
|
|
6
|
+
export declare function detectTrigger(text: string, caret: number, chars: string[]): ActiveTrigger | null;
|
|
7
|
+
/**
|
|
8
|
+
* Wraps detectTrigger with a list of trigger definitions.
|
|
9
|
+
* Returns { def, query, start } when a trigger is active, else null.
|
|
10
|
+
* Accepts generic defs so it does not import from composer.tsx (no cycle).
|
|
11
|
+
*/
|
|
12
|
+
export declare function activeTriggerFor<T extends {
|
|
13
|
+
char: string;
|
|
14
|
+
kind: string;
|
|
15
|
+
}>(text: string, caret: number, defs: T[]): {
|
|
16
|
+
def: T;
|
|
17
|
+
query: string;
|
|
18
|
+
start: number;
|
|
19
|
+
} | null;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { ChatMessage } from '../elements/chat-types';
|
|
2
|
+
import { AttachmentData } from '../components/attachments';
|
|
3
|
+
import { AssistantStream, SetMessages } from '../state';
|
|
4
|
+
export interface CreateKaiChatOptions {
|
|
5
|
+
/** Seed messages, read once at creation and copied. Later changes are ignored — drive updates through the returned ops. */
|
|
6
|
+
initialMessages?: ChatMessage[];
|
|
7
|
+
/** Seed suggestions, read once at creation and copied. Later changes are ignored. */
|
|
8
|
+
initialSuggestions?: string[];
|
|
9
|
+
onSubmit?: (detail: {
|
|
10
|
+
value: string;
|
|
11
|
+
attachments: AttachmentData[];
|
|
12
|
+
}) => void | Promise<void>;
|
|
13
|
+
}
|
|
14
|
+
/** Solid store: consumer-owned chat state + the same ergonomic ops as `useKaiChat`. */
|
|
15
|
+
export interface KaiChatStore {
|
|
16
|
+
messages: () => ChatMessage[];
|
|
17
|
+
setMessages: SetMessages;
|
|
18
|
+
suggestions: () => string[];
|
|
19
|
+
loading: () => boolean;
|
|
20
|
+
append: (msg: ChatMessage) => void;
|
|
21
|
+
update: (id: string, patch: Partial<ChatMessage> | ((m: ChatMessage) => ChatMessage)) => void;
|
|
22
|
+
remove: (id: string) => void;
|
|
23
|
+
addSuggestion: (s: string) => void;
|
|
24
|
+
removeSuggestion: (s: string) => void;
|
|
25
|
+
clearSuggestions: () => void;
|
|
26
|
+
streamAssistant: (init?: Partial<ChatMessage>) => AssistantStream;
|
|
27
|
+
handleSubmit: (event: CustomEvent<{
|
|
28
|
+
value: string;
|
|
29
|
+
attachments: AttachmentData[];
|
|
30
|
+
}>) => void;
|
|
31
|
+
/** Spread onto `<kai-chat {...chat.bind} />` (reactive getters). Wire submit via `on:kai-submit={chat.handleSubmit}`. */
|
|
32
|
+
bind: {
|
|
33
|
+
readonly messages: ChatMessage[];
|
|
34
|
+
readonly loading: boolean;
|
|
35
|
+
readonly suggestions: string[];
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
export declare function createKaiChat(options?: CreateKaiChatOptions): KaiChatStore;
|
|
@@ -1,9 +1,17 @@
|
|
|
1
1
|
import { ToastPosition } from '../components/toast';
|
|
2
|
-
export type ToastVariant = 'neutral' | 'success';
|
|
2
|
+
export type ToastVariant = 'neutral' | 'success' | 'warning' | 'error' | 'info';
|
|
3
|
+
/** Visual treatment: `'pill'` (default, compact single-line) or `'card'` (richer
|
|
4
|
+
* rounded card with an optional description line). */
|
|
5
|
+
export type ToastAppearance = 'pill' | 'card';
|
|
3
6
|
export interface ToastConfig {
|
|
4
7
|
stack?: 'expanded' | 'collapsed';
|
|
5
8
|
position?: ToastPosition;
|
|
6
9
|
max?: number;
|
|
10
|
+
/** Default appearance for imperatively-raised toasts. Defaults to `'pill'`. */
|
|
11
|
+
appearance?: ToastAppearance;
|
|
12
|
+
/** Default high-contrast inverse treatment for imperatively-raised toasts.
|
|
13
|
+
* Defaults to `false`. */
|
|
14
|
+
inverse?: boolean;
|
|
7
15
|
}
|
|
8
16
|
/**
|
|
9
17
|
* Configure the imperative `toast()` singleton — call once at app start.
|
|
@@ -23,6 +31,15 @@ export interface ToastItem {
|
|
|
23
31
|
id: string;
|
|
24
32
|
message: string;
|
|
25
33
|
variant?: ToastVariant;
|
|
34
|
+
/** Visual treatment: `'pill'` (default, compact single-line) or `'card'` (richer
|
|
35
|
+
* rounded card with an optional description line). */
|
|
36
|
+
appearance?: ToastAppearance;
|
|
37
|
+
/** High-contrast inverse surface — works on either appearance, popping in light
|
|
38
|
+
* AND dark. Defaults to `false`. */
|
|
39
|
+
inverse?: boolean;
|
|
40
|
+
/** Secondary line shown below the message in the `'card'` appearance. The
|
|
41
|
+
* `'pill'` appearance ignores it. */
|
|
42
|
+
description?: string;
|
|
26
43
|
action?: ToastAction;
|
|
27
44
|
/** Auto-dismiss delay in ms. `0` = sticky (never auto-dismisses). When an
|
|
28
45
|
* `action` is present the effective floor is 4000ms so it stays long enough
|
|
@@ -40,6 +57,13 @@ export interface ToastItem {
|
|
|
40
57
|
export interface ToastOptions {
|
|
41
58
|
id?: string;
|
|
42
59
|
variant?: ToastVariant;
|
|
60
|
+
/** Visual treatment: `'pill'` (default) or `'card'`. Falls back to the value set
|
|
61
|
+
* via `configureToasts`, then `'pill'`. */
|
|
62
|
+
appearance?: ToastAppearance;
|
|
63
|
+
/** High-contrast inverse surface. Falls back to `configureToasts`, then `false`. */
|
|
64
|
+
inverse?: boolean;
|
|
65
|
+
/** Secondary line shown below the message in the `'card'` appearance. */
|
|
66
|
+
description?: string;
|
|
43
67
|
action?: ToastAction;
|
|
44
68
|
duration?: number;
|
|
45
69
|
dismissible?: boolean;
|
|
@@ -67,8 +91,14 @@ export declare function ensureMounted(target?: HTMLElement | null): HTMLElement
|
|
|
67
91
|
export declare function isToastRegionMounted(): boolean;
|
|
68
92
|
export interface ToastFn {
|
|
69
93
|
(message: string, opts?: ToastOptions): ToastHandle;
|
|
70
|
-
/** Raise a success (
|
|
94
|
+
/** Raise a success (green check) toast. */
|
|
71
95
|
success: (message: string, opts?: ToastOptions) => ToastHandle;
|
|
96
|
+
/** Raise a warning (amber) toast — e.g. an agent needs your input. */
|
|
97
|
+
warning: (message: string, opts?: ToastOptions) => ToastHandle;
|
|
98
|
+
/** Raise an error (destructive/red) toast — e.g. an agent failed. */
|
|
99
|
+
error: (message: string, opts?: ToastOptions) => ToastHandle;
|
|
100
|
+
/** Raise an info (blue) toast. */
|
|
101
|
+
info: (message: string, opts?: ToastOptions) => ToastHandle;
|
|
72
102
|
/** Dismiss a toast by id. */
|
|
73
103
|
dismiss: (id: string) => void;
|
|
74
104
|
/** Dismiss every active toast. */
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export interface UseSpeechRecognitionOptions {
|
|
2
|
+
/** Emit live, non-final partials via the `onInterim` callback passed to start(). */
|
|
3
|
+
interim?: boolean;
|
|
4
|
+
}
|
|
5
|
+
export interface SpeechRecognitionStartOptions {
|
|
6
|
+
/** BCP-47 language tag, e.g. `en-US`. */
|
|
7
|
+
lang?: string;
|
|
8
|
+
/** Called with each interim (non-final) transcript when `interim` is enabled. */
|
|
9
|
+
onInterim?: (text: string) => void;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Wrap the browser's Web Speech `SpeechRecognition` (Chrome/Safari; no Firefox).
|
|
13
|
+
* Mirrors `useVoiceRecorder`'s shape: an `isListening` signal, an `error` signal,
|
|
14
|
+
* and `start`/`stop` controls. `start()` resolves with the final transcript when
|
|
15
|
+
* recognition ends; `stop()` ends the in-progress session (resolving start()).
|
|
16
|
+
*
|
|
17
|
+
* Caveat (documented at the element): in Chrome this is cloud-based — audio is
|
|
18
|
+
* sent to Google — so it is "native to the browser," not on-device/private.
|
|
19
|
+
*/
|
|
20
|
+
export declare function useSpeechRecognition(options?: UseSpeechRecognitionOptions): {
|
|
21
|
+
isSupported: boolean;
|
|
22
|
+
isListening: import('solid-js').Accessor<boolean>;
|
|
23
|
+
error: import('solid-js').Accessor<string | null>;
|
|
24
|
+
start: (opts?: SpeechRecognitionStartOptions) => Promise<string>;
|
|
25
|
+
stop: () => void;
|
|
26
|
+
};
|