@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/elements/form.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{d as de,f as S,m as b,j as I,i as o,c as l,S as v,n as oe,g as L,h as y,F as C,k as T,a as se,t as f,s as ce,e as M,b as K,o as Z,E as ge,I as me,q as fe}from"./chunks/cn-Dogu6PbV.js";import{c as G,p as D,u as pe}from"./chunks/store-C6rIooZz.js";import{B as E}from"./chunks/button-CKyYD9G4.js";import{C as R}from"./chunks/card-Cjho-PYk.js";import{u as he,a as be,D as ve}from"./chunks/use-card-resolution-D-_0Alzy.js";import{e as xe}from"./chunks/card-routing-C986KuUA.js";import{T as ye}from"./chunks/textarea-3nm6Ia9U.js";import{s as ke}from"./chunks/star-t9tI-P0q.js";import{c as we}from"./chunks/check-CDYaMYrM.js";function J(e){return e===null?"null":Array.isArray(e)?"array":typeof e}function $e(e,r){switch(r){case"integer":return typeof e=="number"&&Number.isInteger(e);case"number":return typeof e=="number"&&Number.isFinite(e);case"array":return Array.isArray(e);case"null":return e===null;case"object":return J(e)==="object";default:return typeof e===r}}function _(e,r,t,n){const i=t||"(root)";if(e.type&&!$e(r,e.type)){n.push(`${i}: expected ${e.type}, got ${J(r)}`);return}if("const"in e&&JSON.stringify(r)!==JSON.stringify(e.const)&&n.push(`${i}: must equal const ${JSON.stringify(e.const)}`),e.enum&&!e.enum.some(a=>JSON.stringify(a)===JSON.stringify(r))&&n.push(`${i}: must be one of ${JSON.stringify(e.enum)}`),typeof r=="number"&&(e.minimum!==void 0&&r<e.minimum&&n.push(`${i}: < minimum ${e.minimum}`),e.maximum!==void 0&&r>e.maximum&&n.push(`${i}: > maximum ${e.maximum}`),e.exclusiveMinimum!==void 0&&r<=e.exclusiveMinimum&&n.push(`${i}: <= exclusiveMinimum`),e.exclusiveMaximum!==void 0&&r>=e.exclusiveMaximum&&n.push(`${i}: >= exclusiveMaximum`)),typeof r=="string"&&(e.minLength!==void 0&&r.length<e.minLength&&n.push(`${i}: shorter than minLength ${e.minLength}`),e.maxLength!==void 0&&r.length>e.maxLength&&n.push(`${i}: longer than maxLength ${e.maxLength}`),e.pattern!==void 0&&!new RegExp(e.pattern).test(r)&&n.push(`${i}: does not match pattern`)),Array.isArray(r)&&(e.minItems!==void 0&&r.length<e.minItems&&n.push(`${i}: fewer than minItems ${e.minItems}`),e.maxItems!==void 0&&r.length>e.maxItems&&n.push(`${i}: more than maxItems ${e.maxItems}`),e.uniqueItems&&new Set(r.map(a=>JSON.stringify(a))).size!==r.length&&n.push(`${i}: items not unique`),e.items&&r.forEach((a,u)=>_(e.items,a,`${i}[${u}]`,n))),J(r)==="object"){const a=r;for(const u of e.required??[])(!(u in a)||a[u]===void 0)&&n.push(`${i}.${u}: required`);if(e.properties)for(const[u,d]of Object.entries(e.properties))u in a&&a[u]!==void 0&&_(d,a[u],`${i}.${u}`,n)}}function Ie(e,r){const t=[];return _(e,r,"",t),{valid:t.length===0,errors:t}}var Ae=f("<input data-control>"),Se=f('<span class="self-end text-xs text-muted-foreground">/'),Le=f('<div class="flex flex-col gap-1">'),Ce=f("<input data-control type=number>"),je=f('<div class="flex items-center gap-3"><input data-control type=range class=kai-range><span class="min-w-9 shrink-0 rounded-md bg-background px-2 py-1 text-center text-sm font-medium tabular-nums text-foreground shadow-sm">'),Be=f('<div role=radiogroup data-control tabindex=0 class="flex items-center gap-1 rounded-md focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring">'),qe=f('<button type=button role=radio tabindex=-1 class="rounded p-0.5 text-muted-foreground hover:text-foreground">'),Oe=f("<button data-control type=button role=switch><span>"),Me=f('<label class="-mx-1.5 inline-flex cursor-pointer items-center gap-2.5 rounded-md px-1.5 py-1.5 text-sm text-foreground transition-colors hover:bg-muted/60"><input data-control type=checkbox class=kai-checkbox><span>'),Ne=f('<div role=radiogroup data-control class="divide-y divide-border overflow-hidden rounded-lg border border-input">'),Ee=f("<label><input type=radio class=kai-radio><span>"),Te=f("<select data-control><option value disabled>"),H=f("<option>"),Ke=f('<div role=group data-control class="divide-y divide-border overflow-hidden rounded-lg border border-input">'),De=f("<label><input type=checkbox class=kai-checkbox><span>"),Re=f("<select data-control multiple>"),Je=f('<div class="flex flex-col gap-2"role=group><div class="flex flex-wrap gap-1.5"></div><div class="flex items-center gap-2"><input data-control type=text><button type=button class="rounded-md border border-input px-3 py-2 text-sm text-foreground hover:bg-muted disabled:opacity-50">Add'),_e=f('<span class="inline-flex items-center gap-1 rounded-full bg-muted px-2 py-0.5 text-xs text-foreground"><button type=button class="text-muted-foreground hover:text-foreground">\u2715');const N="w-full rounded-md border border-input bg-background px-3 py-2 text-sm text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:opacity-50 disabled:pointer-events-none";function A(e){return{"aria-required":e.required||void 0,"aria-invalid":e.invalid||void 0,"aria-describedby":e.describedBy}}function ze(e){const r=()=>{switch(e.variant){case"email":return"email";case"url":return"url";case"date":return"date";case"datetime":return"datetime-local";case"time":return"time";case"password":return"password";default:return"text"}};return(()=>{var t=Ae();return S(t,b({get id(){return e.id},get type(){return r()},get class(){return I(N,e.invalid&&"border-destructive dark:border-red-400/70")},get value(){return e.value??""},get placeholder(){return e.placeholder},get disabled(){return e.disabled},get minLength(){return e.field.minLength},get maxLength(){return e.field.maxLength}},()=>A(e),{onInput:n=>e.onInput(n.currentTarget.value),get onBlur(){return e.onBlur}}),!1,!1),t})()}function Ue(e){const r=()=>(e.value??"").length;return(()=>{var t=Le();return o(t,l(ye,b({get id(){return e.id},"data-control":!0,get class(){return I(N,e.invalid&&"border-destructive dark:border-red-400/70")},get value(){return e.value??""},get placeholder(){return e.placeholder},get disabled(){return e.disabled},get maxLength(){return e.field.maxLength}},()=>A(e),{onInput:n=>e.onInput(n.currentTarget.value),get onBlur(){return e.onBlur}})),null),o(t,l(v,{get when(){return e.field.maxLength!==void 0},get children(){var n=Se(),i=n.firstChild;return o(n,r,i),o(n,()=>e.field.maxLength,null),n}}),null),t})()}function Fe(e){const r=()=>e.field["x-kai-step"]??(e.field.type==="integer"?1:void 0);return(()=>{var t=Ce();return S(t,b({get id(){return e.id},get class(){return I(N,e.invalid&&"border-destructive dark:border-red-400/70")},get value(){return oe(()=>e.value===void 0||e.value===null)()?"":String(e.value)},get placeholder(){return e.placeholder},get disabled(){return e.disabled},get min(){return e.field.minimum},get max(){return e.field.maximum},get step(){return r()}},()=>A(e),{onInput:n=>e.onInput(n.currentTarget.value),get onBlur(){return e.onBlur}}),!1,!1),t})()}function Ye(e){const r=()=>e.field.minimum??0,t=()=>e.field.maximum??100,n=()=>e.field["x-kai-step"]??(e.field.type==="integer"?1:void 0),i=()=>e.value===void 0||e.value===null?r():Number(e.value),a=()=>{const u=r(),d=t();return d>u?`${(i()-u)/(d-u)*100}%`:"0%"};return(()=>{var u=je(),d=u.firstChild,h=d.nextSibling;return S(d,b({get id(){return e.id},get style(){return{"--kai-range-fill":a()}},get value(){return i()},get min(){return r()},get max(){return t()},get step(){return n()},get disabled(){return e.disabled},get"aria-valuetext"(){return String(i())}},()=>A(e),{onInput:m=>e.onInput(Number(m.currentTarget.value)),get onBlur(){return e.onBlur}}),!1,!1),o(h,i),u})()}function Ze(e){const r=()=>e.field.maximum??5,t=()=>Number(e.value??0),n=()=>Array.from({length:r()},(a,u)=>u+1),i=a=>{a.key==="ArrowRight"||a.key==="ArrowUp"?(a.preventDefault(),e.onInput(Math.min(r(),t()+1))):(a.key==="ArrowLeft"||a.key==="ArrowDown")&&(a.preventDefault(),e.onInput(Math.max(e.field.minimum??1,t()-1)))};return(()=>{var a=Be();return S(a,b({get"aria-label"(){return e.label}},()=>A(e),{onKeyDown:i}),!1,!0),o(a,l(C,{get each(){return n()},children:u=>(()=>{var d=qe();return d.$$click=()=>e.onInput(u),L(d,"aria-label",`${u} ${u===1?"star":"stars"}`),o(d,l(ke,{size:20,get class(){return I(u<=t()?"fill-current text-[var(--color-primary)]":"")},"aria-hidden":"true"})),y(h=>{var m=t()===u,p=e.disabled;return m!==h.e&&L(d,"aria-checked",h.e=m),p!==h.t&&(d.disabled=h.t=p),h},{e:void 0,t:void 0}),d})()})),a})()}function Ge(e){const r=()=>e.value===!0,t=()=>{e.disabled||(e.onInput(!r()),e.onBlur())};return(()=>{var n=Oe(),i=n.firstChild;return S(n,b({get id(){return e.id},get"aria-checked"(){return r()},get"aria-label"(){return e.label},get disabled(){return e.disabled},get class(){return I("relative inline-flex h-6 w-11 shrink-0 items-center rounded-full transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",r()?"bg-[var(--color-primary)]":"bg-muted")}},()=>A(e),{onClick:t}),!1,!0),y(()=>T(i,I("inline-block h-5 w-5 transform rounded-full bg-background shadow transition-transform",r()?"translate-x-5":"translate-x-0.5"))),n})()}function He(e){return(()=>{var r=Me(),t=r.firstChild,n=t.nextSibling;return S(t,b({get id(){return e.id},get checked(){return e.value===!0},get disabled(){return e.disabled}},()=>A(e),{onChange:i=>{e.onInput(i.currentTarget.checked),e.onBlur()}}),!1,!1),o(n,()=>e.label),r})()}function Pe(e){const r=()=>e.field.enum??[];return(()=>{var t=Ne();return S(t,b({get"aria-label"(){return e.label}},()=>A(e)),!1,!0),o(t,l(C,{get each(){return r()},children:n=>(()=>{var i=Ee(),a=i.firstChild,u=a.nextSibling;return a.addEventListener("change",()=>{e.onInput(n),e.onBlur()}),o(u,()=>String(n)),y(d=>{var h=I("flex cursor-pointer items-center gap-3 px-3 py-2.5 text-sm transition-colors",e.value===n?"bg-accent font-medium text-accent-foreground":"text-foreground hover:bg-muted/50"),m=e.id,p=e.disabled;return h!==d.e&&T(i,d.e=h),m!==d.t&&L(a,"name",d.t=m),p!==d.a&&(a.disabled=d.a=p),d},{e:void 0,t:void 0,a:void 0}),y(()=>a.value=String(n)),y(()=>a.checked=e.value===n),i})()})),t})()}function Qe(e){const r=()=>e.field.enum??[];return(()=>{var t=Te(),n=t.firstChild;return S(t,b({get id(){return e.id},get class(){return I(N,e.invalid&&"border-destructive dark:border-red-400/70")},get disabled(){return e.disabled}},()=>A(e),{onChange:i=>{e.onInput(i.currentTarget.value),e.onBlur()}}),!1,!0),o(n,()=>e.placeholder??"Select\u2026"),o(t,l(C,{get each(){return r()},children:i=>(()=>{var a=H();return o(a,()=>String(i)),y(()=>a.selected=e.value===i),y(()=>a.value=String(i)),a})()}),null),y(()=>n.selected=e.value===void 0||e.value===""),t})()}function P(e){const r=e.items;return r&&"enum"in r&&Array.isArray(r.enum)?r.enum:[]}function Ve(e){const r=()=>Array.isArray(e.value)?e.value:[],t=n=>{const i=r(),a=i.includes(n)?i.filter(u=>u!==n):[...i,n];e.onInput(a),e.onBlur()};return(()=>{var n=Ke();return S(n,b({get"aria-label"(){return e.label}},()=>A(e)),!1,!0),o(n,l(C,{get each(){return P(e.field)},children:i=>(()=>{var a=De(),u=a.firstChild,d=u.nextSibling;return u.addEventListener("change",()=>t(i)),o(d,()=>String(i)),y(h=>{var m=I("flex cursor-pointer items-center gap-3 px-3 py-2.5 text-sm transition-colors",r().includes(i)?"bg-accent font-medium text-accent-foreground":"text-foreground hover:bg-muted/50"),p=e.disabled;return m!==h.e&&T(a,h.e=m),p!==h.t&&(u.disabled=h.t=p),h},{e:void 0,t:void 0}),y(()=>u.checked=r().includes(i)),a})()})),n})()}function We(e){const r=()=>Array.isArray(e.value)?e.value:[];return(()=>{var t=Re();return S(t,b({get id(){return e.id},get"aria-label"(){return e.label},get class(){return I(N,"min-h-[6rem]",e.invalid&&"border-destructive dark:border-red-400/70")},get disabled(){return e.disabled}},()=>A(e),{onChange:n=>{const i=Array.from(n.currentTarget.selectedOptions).map(a=>a.value);e.onInput(i),e.onBlur()}}),!1,!0),o(t,l(C,{get each(){return P(e.field)},children:n=>(()=>{var i=H();return o(i,()=>String(n)),y(()=>i.selected=r().includes(n)),y(()=>i.value=String(n)),i})()})),t})()}function Xe(e){const r=()=>Array.isArray(e.value)?e.value:[],[t,n]=se(""),i=()=>{const u=t().trim();u&&(e.onInput([...r(),u]),n(""),e.onBlur())},a=u=>{e.onInput(r().filter((d,h)=>h!==u)),e.onBlur()};return(()=>{var u=Je(),d=u.firstChild,h=d.nextSibling,m=h.firstChild,p=m.nextSibling;return o(d,l(C,{get each(){return r()},children:(g,j)=>(()=>{var k=_e(),$=k.firstChild;return o(k,g,$),$.$$click=()=>a(j()),L($,"aria-label",`Remove ${g}`),y(()=>$.disabled=e.disabled),k})()})),S(m,b({get id(){return e.id},get class(){return I(N)},get value(){return t()},get placeholder(){return e.placeholder??"Add\u2026"},get disabled(){return e.disabled}},()=>A(e),{onInput:g=>n(g.currentTarget.value),onKeyDown:g=>{g.key==="Enter"&&(g.preventDefault(),i())}}),!1,!1),p.$$click=i,y(g=>{var j=e.label,k=e.disabled;return j!==g.e&&L(u,"aria-label",g.e=j),k!==g.t&&(p.disabled=g.t=k),g},{e:void 0,t:void 0}),u})()}de(["click"]);var er=f("<form novalidate>"),rr=f('<div class="flex w-full flex-wrap items-center justify-between gap-2"><div class="ml-auto flex flex-wrap items-center gap-2">'),tr=f('<div class="flex flex-col gap-3"><p class="flex items-center gap-2 text-sm font-medium text-foreground"><span>Submitted</span></p><dl class="grid grid-cols-[max-content_1fr] gap-x-4 gap-y-1.5">'),nr=f('<dt class="text-xs text-muted-foreground">'),ir=f('<dd class="m-0 text-sm font-medium text-foreground">'),ar=f('<span class="text-destructive dark:text-red-400"aria-hidden=true> *'),ur=f('<label class="text-sm font-medium text-foreground">'),lr=f('<p class="text-xs text-muted-foreground">'),dr=f('<p role=alert class="text-xs text-destructive dark:text-red-400">'),or=f('<div class="flex flex-col gap-2 rounded-xl bg-muted/40 p-3.5">'),sr=f('<p class="rounded-md border border-dashed border-border p-2 text-xs text-muted-foreground">Unsupported field "<!>".'),cr=f('<fieldset class="flex flex-col gap-3 rounded-lg border border-border p-3"><legend class="px-1 text-sm font-medium text-foreground">'),gr=f('<fieldset class="flex flex-col gap-3 rounded-lg border border-border p-3"data-control><legend class="px-1 text-sm font-medium text-foreground">'),mr=f('<div class="flex flex-col gap-2 rounded-md border border-border/60 p-2"><div class="flex items-center justify-between"><span class="text-xs text-muted-foreground">Item ');const z=4,fr=new Set(["textarea","slider","rating","radio","select","checkbox","password","switch"]);function pr(e,r){const t=e["x-kai-widget"];if(t&&fr.has(t))switch(t){case"textarea":return"textarea";case"slider":return"slider";case"rating":return"rating";case"radio":return"radio";case"select":return"select";case"checkbox":return"checkbox";case"password":return"password";case"switch":return"switch"}switch(e.type){case"string":{if(Array.isArray(e.enum))return e.enum.length<=r?"radio":"select";switch(e.format){case"email":return"email";case"uri":case"url":return"url";case"date":return"date";case"date-time":return"datetime";case"time":return"time"}return e.maxLength!==void 0&&e.maxLength>120?"textarea":"text"}case"number":case"integer":return"number";case"boolean":return"switch";case"array":{const n=e.items;return n&&"enum"in n&&Array.isArray(n.enum)?n.enum.length<=r?"checkbox-group":"multiselect":n&&"type"in n&&n.type==="object"?"repeater":(n&&"type"in n&&n.type,"taglist")}case"object":return"fieldset";default:return"unsupported"}}function U(e){return e.replace(/[_-]+/g," ").replace(/([a-z0-9])([A-Z])/g,"$1 $2").trim().replace(/\b\w/g,r=>r.toUpperCase())}function hr(e){const r=Object.keys(e.properties??{}),t=e["x-kai-order"];if(Array.isArray(t)){const a=t.filter(d=>r.includes(d)),u=r.filter(d=>!a.includes(d));return[...a,...u]}const n=(e.required??[]).filter(a=>r.includes(a)),i=r.filter(a=>!n.includes(a));return[...n,...i]}function br(e,r){if(e.type==="number"||e.type==="integer"){if(r===""||r===null||r===void 0)return;const t=typeof r=="number"?r:Number(r);return Number.isNaN(t)?r:t}return e.type==="boolean"?!!r:r}const vr="^[^@\\s]+@[^@\\s]+\\.[^@\\s]+$";function xr(e){const r={type:e.type};return e.enum&&(r.enum=e.enum),e.minimum!==void 0&&(r.minimum=e.minimum),e.maximum!==void 0&&(r.maximum=e.maximum),e.minLength!==void 0&&(r.minLength=e.minLength),e.maxLength!==void 0&&(r.maxLength=e.maxLength),e.minItems!==void 0&&(r.minItems=e.minItems),e.maxItems!==void 0&&(r.maxItems=e.maxItems),e.pattern!==void 0?r.pattern=e.pattern:e.format==="email"&&(r.pattern=vr),r}function Q(e){return e==null||e===""||Array.isArray(e)&&e.length===0}function V(e,r){const t={},n=new Set(e.required??[]);for(const[i,a]of Object.entries(e.properties??{})){const u=r[i];if(n.has(i)&&Q(u)){t[i]=`${a.title??U(i)} is required.`;continue}if(Q(u))continue;const d=Ie(xr(a),u);d.valid||(t[i]=yr(a,i,d.errors[0]))}return{valid:Object.keys(t).length===0,fieldErrors:t}}function yr(e,r,t){const n=e.title??U(r);return t?t.includes("minimum")?`${n} must be at least ${e.minimum}.`:t.includes("maximum")?`${n} must be at most ${e.maximum}.`:t.includes("minLength")?`${n} must be at least ${e.minLength} characters.`:t.includes("maxLength")?`${n} must be at most ${e.maxLength} characters.`:t.includes("pattern")?e.format==="email"?`${n} must be a valid email address.`:`${n} is not in the expected format.`:t.includes("one of")?`${n} must be one of the allowed options.`:t.includes("expected integer")?`${n} must be a whole number.`:t.includes("expected")?`${n} is invalid.`:t.includes("minItems")?`${n}: choose at least ${e.minItems}.`:t.includes("maxItems")?`${n}: choose at most ${e.maxItems}.`:`${n} is invalid.`:`${n} is invalid.`}function kr(e,r){return e?.["x-kai-widget"]==="password"?r==null||r===""?"\u2014":"\u2022\u2022\u2022\u2022":typeof r=="boolean"?r?"Yes":"No":r==null||r===""?"\u2014":Array.isArray(r)?r.length?r.map(t=>String(t)).join(", "):"\u2014":String(r)}function wr(e,r){const t=e.properties??{};return(Array.isArray(e["x-kai-order"])&&e["x-kai-order"].length>0?e["x-kai-order"].filter(n=>n in t):Object.keys(t)).map(n=>{const i=t[n];return{key:n,label:i?.title??n,value:kr(i,r[n])}})}function $r(e,r){const t={};for(const n of Object.keys(e.properties??{})){const i=e.properties[n],a=br(i,r[n]);a===void 0||a===""||Array.isArray(a)&&a.length===0||(t[n]=a)}return t}const W={type:"object",properties:{}};function Ir(e){const r=b({cardId:"kai-form"},e),[t]=ce(r,["data","cardId","heading","host","hostElement","class","resolution"]),n=he(),i=s=>{const c=t.host??n;c?c.emit(s):t.hostElement&&xe(t.hostElement,s)},a=M(()=>{const s=t.data;return s?s.type!=="object"||typeof s.properties!="object"||s.properties===null?{ok:!1,message:"This form couldn't be displayed."}:{ok:!0,message:""}:{ok:!1,message:"No form definition provided."}}),u=M(()=>a().ok?t.data??W:W),d=()=>u()["x-kai-inlineMax"]??z,h=M(()=>hr(u())),m=be({prop:()=>t.resolution,data:()=>t.data}),[p,g]=G({}),[j,k]=G({}),$=s=>{const c={};for(const[x,w]of Object.entries(s.properties??{}))w.default!==void 0?c[x]=w.default:w.type==="array"&&(c[x]=[]);g(D(x=>{for(const w of Object.keys(x))delete x[w];Object.assign(x,c)})),k(D(x=>{for(const w of Object.keys(x))delete x[w]}))};K(Z(()=>t.data,()=>{a().ok&&$(u())})),K(Z(a,s=>{s.ok?i({kind:"ready",cardId:t.cardId}):i({kind:"error",cardId:t.cardId,message:s.message})})),K(()=>{var s;const c=t.hostElement;c&&(((s=m.resolution())==null?void 0:s.kind)==="submit"?c.setAttribute("data-kai-resolved","submitted"):c.removeAttribute("data-kai-resolved"))});const B=(s,c)=>{g(s,c),j[s]&&k(s,void 0)},ee=s=>{const c=u().properties[s];if(!c)return;const x=V({required:u().required,properties:{[s]:c}},{[s]:p[s]});k(s,x.fieldErrors[s])},re=s=>{if(s.preventDefault(),m.isResolved())return;const c=s.currentTarget,x=pe(p),w=V(u(),x);if(k(D(q=>{for(const O of Object.keys(q))delete q[O];Object.assign(q,w.fieldErrors)})),!w.valid){const q=h().find(O=>w.fieldErrors[O]);q&&t.hostElement&&queueMicrotask(()=>{var O;(O=(c?.closest("form")??c??document).querySelector(`[data-field="${qr(q)}"] [data-control]`))==null||O.focus()});return}const Y=$r(u(),x);i({kind:"submit",cardId:t.cardId,data:Y}),m.setLocal({kind:"submit",data:Y})},te=()=>{m.isResolved()||(i({kind:"dismiss",cardId:t.cardId}),m.setLocal({kind:"dismissed"}))},ne=()=>i({kind:"reopen",cardId:t.cardId}),ie=M(()=>u()["x-kai-actions"]??[]),ae=()=>u()["x-kai-submitLabel"]??"Submit",ue=()=>u()["x-kai-dismissible"]===!0,le=M(()=>{const s=m.resolution();return!s||s.kind!=="submit"?[]:wr(u(),s.data??{})});return l(v,{get when(){return a().ok},get fallback(){return l(R,{get heading(){return t.heading},get errorMessage(){return a().message}})},get children(){return l(ge,{fallback:()=>(i({kind:"error",cardId:t.cardId,message:"The form failed to render."}),l(R,{get heading(){return t.heading},errorMessage:"The form failed to render."})),get children(){return l(v,{get when(){return!m.isDeferred()},get fallback(){return l(ve,{type:"form",get title(){return t.heading??u().title},onReopen:ne})},get children(){return l(R,{get heading(){return t.heading??u().title},get description(){return u().description},get actions(){return l(v,{get when(){return!m.isResolved()},fallback:void 0,get children(){var s=rr(),c=s.firstChild;return o(s,l(v,{get when(){return ue()},get children(){return l(E,{type:"button",variant:"ghost",onClick:te,children:"Dismiss"})}}),c),o(c,l(C,{get each(){return ie()},children:x=>l(E,{type:"button",get variant(){return x.variant??"ghost"},onClick:()=>i({kind:"action",cardId:t.cardId,action:x.id}),get children(){return x.label}})}),null),o(c,l(E,{type:"submit",get form(){return X()},get children(){return ae()}}),null),s}})},get children(){return l(v,{get when(){return!m.isResolved()},get fallback(){return l(Lr,{get rows(){return le()},get optimistic(){return m.isOptimistic()}})},get children(){var s=er();return s.addEventListener("submit",re),o(s,l(C,{get each(){return h()},children:c=>l(F,{fieldKey:c,get field(){return u().properties[c]},get required(){return(u().required??[]).includes(c)},get inlineMax(){return d()},value:()=>p[c],error:()=>j[c],disabled:!1,onInput:x=>B(c,x),onBlur:()=>ee(c)})})),y(c=>{var x=X(),w=I("flex flex-col gap-3",t.class);return x!==c.e&&L(s,"id",c.e=x),w!==c.t&&T(s,c.t=w),c},{e:void 0,t:void 0}),s}})}})}})}})}})}let Ar=0;const Sr=`kai-form-${++Ar}`;function X(){return Sr}function Lr(e){return(()=>{var r=tr(),t=r.firstChild,n=t.firstChild,i=t.nextSibling;return o(t,l(we,{size:16,"aria-hidden":"true"}),n),o(i,l(C,{get each(){return e.rows},children:a=>[(()=>{var u=nr();return o(u,()=>a.label),u})(),(()=>{var u=ir();return o(u,()=>a.value),u})()]})),y(()=>L(r,"role",e.optimistic?"status":void 0)),r})()}function F(e){const r=`f-${e.fieldKey}-${Math.random().toString(36).slice(2,8)}`,t=`${r}-err`,n=`${r}-desc`,i=()=>e.field.title??U(e.fieldKey),a=M(()=>pr(e.field,e.inlineMax)),u=()=>e.field["x-kai-placeholder"],d=()=>[e.field.description?n:"",e.error()?t:""].filter(Boolean).join(" ")||void 0,h=()=>({id:r,value:e.value(),field:e.field,disabled:e.disabled||e.field.readOnly===!0,placeholder:u(),required:e.required,invalid:!!e.error(),describedBy:d(),label:i(),onInput:e.onInput,onBlur:e.onBlur}),m=()=>["fieldset","repeater","checkbox-group","multiselect","radio","taglist"].includes(a());return(()=>{var p=or();return o(p,l(v,{get when(){return!m()},get children(){var g=ur();return L(g,"for",r),o(g,i,null),o(g,l(v,{get when(){return e.required},get children(){return ar()}}),null),g}}),null),o(p,l(v,{get when(){return e.field.description},get children(){var g=lr();return L(g,"id",n),o(g,()=>e.field.description),g}}),null),o(p,l(Cr,{get widget(){return a()},get common(){return h()},get fieldKey(){return e.fieldKey}}),null),o(p,l(v,{get when(){return e.error()},get children(){var g=dr();return L(g,"id",t),o(g,()=>e.error()),g}}),null),y(()=>L(p,"data-field",e.fieldKey)),p})()}function Cr(e){const r=()=>e.widget,t=()=>e.common;return[l(v,{get when(){return r()==="text"||r()==="email"||r()==="url"||r()==="date"||r()==="datetime"||r()==="time"||r()==="password"},get children(){return l(ze,b(t,{get variant(){return r()}}))}}),l(v,{get when(){return r()==="textarea"},get children(){return l(Ue,b(t))}}),l(v,{get when(){return r()==="number"},get children(){return l(Fe,b(t))}}),l(v,{get when(){return r()==="slider"},get children(){return l(Ye,b(t))}}),l(v,{get when(){return r()==="rating"},get children(){return l(Ze,b(t))}}),l(v,{get when(){return r()==="switch"},get children(){return l(Ge,b(t))}}),l(v,{get when(){return r()==="checkbox"},get children(){return l(He,b(t))}}),l(v,{get when(){return r()==="radio"},get children(){return l(Pe,b(t))}}),l(v,{get when(){return r()==="select"},get children(){return l(Qe,b(t))}}),l(v,{get when(){return r()==="checkbox-group"},get children(){return l(Ve,b(t))}}),l(v,{get when(){return r()==="multiselect"},get children(){return l(We,b(t))}}),l(v,{get when(){return r()==="taglist"},get children(){return l(Xe,b(t))}}),l(v,{get when(){return r()==="repeater"},get children(){return l(Br,b(t,{inlineMax:z}))}}),l(v,{get when(){return r()==="fieldset"},get children(){return l(jr,b(t,{inlineMax:z}))}}),l(v,{get when(){return r()==="unsupported"},get children(){var n=sr(),i=n.firstChild,a=i.nextSibling;return a.nextSibling,o(n,()=>e.fieldKey,a),n}})]}function jr(e){const r=()=>e.field.properties??{},t=()=>e.value&&typeof e.value=="object"?e.value:{},n=(i,a)=>{e.onInput({...t(),[i]:a})};return(()=>{var i=cr(),a=i.firstChild;return o(a,()=>e.label),o(i,l(C,{get each(){return Object.keys(r())},children:u=>l(F,{fieldKey:u,get field(){return r()[u]},get required(){return(e.field.required??[]).includes(u)},get inlineMax(){return e.inlineMax},value:()=>t()[u],error:()=>{},get disabled(){return e.disabled},onInput:d=>n(u,d),get onBlur(){return e.onBlur}})}),null),i})()}function Br(e){const r=()=>e.field.items??{type:"object",properties:{}},t=()=>Array.isArray(e.value)?e.value:[],n=d=>e.onInput(d),i=()=>n([...t(),{}]),a=d=>n(t().filter((h,m)=>m!==d)),u=(d,h,m)=>{const p=t().slice();p[d]={...p[d],[h]:m},n(p)};return(()=>{var d=gr(),h=d.firstChild;return o(h,()=>e.label),o(d,l(me,{get each(){return t()},children:(m,p)=>(()=>{var g=mr(),j=g.firstChild,k=j.firstChild;return k.firstChild,o(k,p+1,null),o(j,l(E,{type:"button",size:"icon-sm",variant:"ghost","aria-label":`Remove row ${p+1}`,get disabled(){return e.disabled},onClick:()=>a(p),children:"\u2715"}),null),o(g,l(C,{get each(){return Object.keys(r().properties??{})},children:$=>l(F,{fieldKey:$,get field(){return r().properties[$]},get required(){return(r().required??[]).includes($)},get inlineMax(){return e.inlineMax},value:()=>{var B;return(B=m())==null?void 0:B[$]},error:()=>{},get disabled(){return e.disabled},onInput:B=>u(p,$,B),get onBlur(){return e.onBlur}})}),null),g})()}),null),o(d,l(E,{type:"button",variant:"outline",size:"sm",get disabled(){return e.disabled},onClick:i,children:"Add item"}),null),d})()}function qr(e){return typeof CSS<"u"&&typeof CSS.escape=="function"?CSS.escape(e):e.replace(/["\\]/g,"\\$&")}fe("kai-form",{data:void 0,cardId:void 0,heading:void 0,resolution:void 0},(e,{element:r})=>l(Ir,{get data(){return e.data},get cardId(){return e.cardId??(r.id||"kai-form")},get heading(){return e.heading},get resolution(){return e.resolution},hostElement:r}));
|
|
1
|
+
import{c as u,m as x,i as m,S as y,k as L,n as pe,d as j,a as k,F as C,b as T,g as he,t as b,e as ve,s as be,j as E,h as K,l as D,o as xe,E as ye,I as ke,f as we}from"./chunks/define-CNSKFZCd.js";import{c as ee,p as q,u as J}from"./chunks/store-th4VyJXM.js";import{c as O}from"./chunks/cn-CU7UAWzk.js";import{B as N}from"./chunks/button-DBDZebGr.js";import{C as z}from"./chunks/card-YfCyI4fH.js";import{u as Ie,a as $e,D as Ae}from"./chunks/use-card-resolution-M36zVciB.js";import{e as Se}from"./chunks/card-routing-C986KuUA.js";import{T as je}from"./chunks/textarea-CboigarR.js";import{I as Ce,F as R}from"./chunks/input-DZD67EvW.js";import{s as Oe}from"./chunks/star-DY6z1UUH.js";import{c as Le}from"./chunks/check-fhmRksq_.js";function _(e){return e===null?"null":Array.isArray(e)?"array":typeof e}function Be(e,r){switch(r){case"integer":return typeof e=="number"&&Number.isInteger(e);case"number":return typeof e=="number"&&Number.isFinite(e);case"array":return Array.isArray(e);case"null":return e===null;case"object":return _(e)==="object";default:return typeof e===r}}function F(e,r,t,n){const a=t||"(root)";if(e.type&&!Be(r,e.type)){n.push(`${a}: expected ${e.type}, got ${_(r)}`);return}if("const"in e&&JSON.stringify(r)!==JSON.stringify(e.const)&&n.push(`${a}: must equal const ${JSON.stringify(e.const)}`),e.enum&&!e.enum.some(i=>JSON.stringify(i)===JSON.stringify(r))&&n.push(`${a}: must be one of ${JSON.stringify(e.enum)}`),typeof r=="number"&&(e.minimum!==void 0&&r<e.minimum&&n.push(`${a}: < minimum ${e.minimum}`),e.maximum!==void 0&&r>e.maximum&&n.push(`${a}: > maximum ${e.maximum}`),e.exclusiveMinimum!==void 0&&r<=e.exclusiveMinimum&&n.push(`${a}: <= exclusiveMinimum`),e.exclusiveMaximum!==void 0&&r>=e.exclusiveMaximum&&n.push(`${a}: >= exclusiveMaximum`)),typeof r=="string"&&(e.minLength!==void 0&&r.length<e.minLength&&n.push(`${a}: shorter than minLength ${e.minLength}`),e.maxLength!==void 0&&r.length>e.maxLength&&n.push(`${a}: longer than maxLength ${e.maxLength}`),e.pattern!==void 0&&!new RegExp(e.pattern).test(r)&&n.push(`${a}: does not match pattern`)),Array.isArray(r)&&(e.minItems!==void 0&&r.length<e.minItems&&n.push(`${a}: fewer than minItems ${e.minItems}`),e.maxItems!==void 0&&r.length>e.maxItems&&n.push(`${a}: more than maxItems ${e.maxItems}`),e.uniqueItems&&new Set(r.map(i=>JSON.stringify(i))).size!==r.length&&n.push(`${a}: items not unique`),e.items&&r.forEach((i,l)=>F(e.items,i,`${a}[${l}]`,n))),_(r)==="object"){const i=r;for(const l of e.required??[])(!(l in i)||i[l]===void 0)&&n.push(`${a}.${l}: required`);if(e.properties)for(const[l,d]of Object.entries(e.properties))l in i&&i[l]!==void 0&&F(d,i[l],`${a}.${l}`,n)}}function qe(e,r){const t=[];return F(e,r,"",t),{valid:t.length===0,errors:t}}var Me=b('<span class="self-end text-xs text-muted-foreground">/'),Ee=b('<div class="flex flex-col gap-1">'),Ne=b("<input data-control type=number>"),Re=b('<div class="flex items-center gap-3"><input data-control type=range class=kai-range><span class="min-w-9 shrink-0 rounded-md bg-background px-2 py-1 text-center text-sm font-medium tabular-nums text-foreground shadow-sm">'),Te=b('<div role=radiogroup data-control tabindex=0 class="flex items-center gap-1 rounded-md focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring">'),Ke=b('<button type=button role=radio tabindex=-1 class="rounded p-0.5 text-muted-foreground hover:text-foreground">'),Ve=b("<button data-control type=button role=switch><span>"),De=b('<label class="-mx-1.5 inline-flex cursor-pointer items-center gap-2.5 rounded-md px-1.5 py-1.5 text-sm text-foreground transition-colors hover:bg-muted/60"><input data-control type=checkbox class=kai-checkbox><span>'),Je=b('<div role=radiogroup data-control class="divide-y divide-border overflow-hidden rounded-lg border border-input">'),ze=b("<label><input type=radio class=kai-radio><span>"),_e=b("<select data-control><option value disabled>"),re=b("<option>"),Fe=b('<div role=group data-control class="divide-y divide-border overflow-hidden rounded-lg border border-input">'),Ue=b("<label><input type=checkbox class=kai-checkbox><span>"),Ye=b("<select data-control multiple>"),Ze=b('<div class="flex flex-col gap-2"role=group><div class="flex flex-wrap gap-1.5"></div><div class="flex items-center gap-2"><input data-control type=text><button type=button class="rounded-md border border-input px-3 py-2 text-sm text-foreground hover:bg-muted disabled:opacity-50">Add'),Ge=b('<span class="inline-flex items-center gap-1 rounded-full bg-muted px-2 py-0.5 text-xs text-foreground"><button type=button class="text-muted-foreground hover:text-foreground">\u2715');function A(e){return{"aria-required":e.required||void 0,"aria-invalid":e.invalid||void 0,"aria-describedby":e.describedBy}}function He(e){const r=()=>{switch(e.variant){case"email":return"email";case"url":return"url";case"date":return"date";case"datetime":return"datetime-local";case"time":return"time";case"password":return"password";default:return"text"}};return u(Ce,x({get id(){return e.id},"data-control":!0,get type(){return r()},get value(){return e.value??""},get placeholder(){return e.placeholder},get invalid(){return e.invalid},get disabled(){return e.disabled},get minLength(){return e.field.minLength},get maxLength(){return e.field.maxLength}},()=>A(e),{onValueInput:t=>e.onInput(t),onValueChange:()=>e.onBlur()}))}function Pe(e){const r=()=>(e.value??"").length;return(()=>{var t=Ee();return m(t,u(je,x({get id(){return e.id},"data-control":!0,get class(){return O(R,e.invalid&&"border-destructive dark:border-red-400/70")},get value(){return e.value??""},get placeholder(){return e.placeholder},get disabled(){return e.disabled},get maxLength(){return e.field.maxLength}},()=>A(e),{onInput:n=>e.onInput(n.currentTarget.value),get onBlur(){return e.onBlur}})),null),m(t,u(y,{get when(){return e.field.maxLength!==void 0},get children(){var n=Me(),a=n.firstChild;return m(n,r,a),m(n,()=>e.field.maxLength,null),n}}),null),t})()}function Qe(e){const r=()=>e.field["x-kai-step"]??(e.field.type==="integer"?1:void 0);return(()=>{var t=Ne();return L(t,x({get id(){return e.id},get class(){return O(R,e.invalid&&"border-destructive dark:border-red-400/70")},get value(){return pe(()=>e.value===void 0||e.value===null)()?"":String(e.value)},get placeholder(){return e.placeholder},get disabled(){return e.disabled},get min(){return e.field.minimum},get max(){return e.field.maximum},get step(){return r()}},()=>A(e),{onInput:n=>e.onInput(n.currentTarget.value),get onBlur(){return e.onBlur}}),!1,!1),t})()}function We(e){const r=()=>e.field.minimum??0,t=()=>e.field.maximum??100,n=()=>e.field["x-kai-step"]??(e.field.type==="integer"?1:void 0),a=()=>e.value===void 0||e.value===null?r():Number(e.value),i=()=>{const l=r(),d=t();return d>l?`${(a()-l)/(d-l)*100}%`:"0%"};return(()=>{var l=Re(),d=l.firstChild,h=d.nextSibling;return L(d,x({get id(){return e.id},get style(){return{"--kai-range-fill":i()}},get value(){return a()},get min(){return r()},get max(){return t()},get step(){return n()},get disabled(){return e.disabled},get"aria-valuetext"(){return String(a())}},()=>A(e),{onInput:v=>e.onInput(Number(v.currentTarget.value)),get onBlur(){return e.onBlur}}),!1,!1),m(h,a),l})()}function Xe(e){const r=()=>e.field.maximum??5,t=()=>Number(e.value??0),n=()=>Array.from({length:r()},(i,l)=>l+1),a=i=>{i.key==="ArrowRight"||i.key==="ArrowUp"?(i.preventDefault(),e.onInput(Math.min(r(),t()+1))):(i.key==="ArrowLeft"||i.key==="ArrowDown")&&(i.preventDefault(),e.onInput(Math.max(e.field.minimum??1,t()-1)))};return(()=>{var i=Te();return L(i,x({get"aria-label"(){return e.label}},()=>A(e),{onKeyDown:a}),!1,!0),m(i,u(C,{get each(){return n()},children:l=>(()=>{var d=Ke();return d.$$click=()=>e.onInput(l),j(d,"aria-label",`${l} ${l===1?"star":"stars"}`),m(d,u(Oe,{size:20,get class(){return O(l<=t()?"fill-current text-[var(--color-primary)]":"")},"aria-hidden":"true"})),k(h=>{var v=t()===l,p=e.disabled;return v!==h.e&&j(d,"aria-checked",h.e=v),p!==h.t&&(d.disabled=h.t=p),h},{e:void 0,t:void 0}),d})()})),i})()}function er(e){const r=()=>e.value===!0,t=()=>{e.disabled||(e.onInput(!r()),e.onBlur())};return(()=>{var n=Ve(),a=n.firstChild;return L(n,x({get id(){return e.id},get"aria-checked"(){return r()},get"aria-label"(){return e.label},get disabled(){return e.disabled},get class(){return O("relative inline-flex h-6 w-11 shrink-0 items-center rounded-full transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",r()?"bg-[var(--color-primary)]":"bg-muted")}},()=>A(e),{onClick:t}),!1,!0),k(()=>T(a,O("inline-block h-5 w-5 transform rounded-full bg-background shadow transition-transform",r()?"translate-x-5":"translate-x-0.5"))),n})()}function rr(e){return(()=>{var r=De(),t=r.firstChild,n=t.nextSibling;return L(t,x({get id(){return e.id},get checked(){return e.value===!0},get disabled(){return e.disabled}},()=>A(e),{onChange:a=>{e.onInput(a.currentTarget.checked),e.onBlur()}}),!1,!1),m(n,()=>e.label),r})()}function tr(e){const r=()=>e.field.enum??[];return(()=>{var t=Je();return L(t,x({get"aria-label"(){return e.label}},()=>A(e)),!1,!0),m(t,u(C,{get each(){return r()},children:n=>(()=>{var a=ze(),i=a.firstChild,l=i.nextSibling;return i.addEventListener("change",()=>{e.onInput(n),e.onBlur()}),m(l,()=>String(n)),k(d=>{var h=O("flex cursor-pointer items-center gap-3 px-3 py-2.5 text-sm transition-colors",e.value===n?"bg-accent font-medium text-accent-foreground":"text-foreground hover:bg-muted/50"),v=e.id,p=e.disabled;return h!==d.e&&T(a,d.e=h),v!==d.t&&j(i,"name",d.t=v),p!==d.a&&(i.disabled=d.a=p),d},{e:void 0,t:void 0,a:void 0}),k(()=>i.value=String(n)),k(()=>i.checked=e.value===n),a})()})),t})()}function nr(e){const r=()=>e.field.enum??[];return(()=>{var t=_e(),n=t.firstChild;return L(t,x({get id(){return e.id},get class(){return O(R,e.invalid&&"border-destructive dark:border-red-400/70")},get disabled(){return e.disabled}},()=>A(e),{onChange:a=>{e.onInput(a.currentTarget.value),e.onBlur()}}),!1,!0),m(n,()=>e.placeholder??"Select\u2026"),m(t,u(C,{get each(){return r()},children:a=>(()=>{var i=re();return m(i,()=>String(a)),k(()=>i.selected=e.value===a),k(()=>i.value=String(a)),i})()}),null),k(()=>n.selected=e.value===void 0||e.value===""),t})()}function te(e){const r=e.items;return r&&"enum"in r&&Array.isArray(r.enum)?r.enum:[]}function ir(e){const r=()=>Array.isArray(e.value)?e.value:[],t=n=>{const a=r(),i=a.includes(n)?a.filter(l=>l!==n):[...a,n];e.onInput(i),e.onBlur()};return(()=>{var n=Fe();return L(n,x({get"aria-label"(){return e.label}},()=>A(e)),!1,!0),m(n,u(C,{get each(){return te(e.field)},children:a=>(()=>{var i=Ue(),l=i.firstChild,d=l.nextSibling;return l.addEventListener("change",()=>t(a)),m(d,()=>String(a)),k(h=>{var v=O("flex cursor-pointer items-center gap-3 px-3 py-2.5 text-sm transition-colors",r().includes(a)?"bg-accent font-medium text-accent-foreground":"text-foreground hover:bg-muted/50"),p=e.disabled;return v!==h.e&&T(i,h.e=v),p!==h.t&&(l.disabled=h.t=p),h},{e:void 0,t:void 0}),k(()=>l.checked=r().includes(a)),i})()})),n})()}function ar(e){const r=()=>Array.isArray(e.value)?e.value:[];return(()=>{var t=Ye();return L(t,x({get id(){return e.id},get"aria-label"(){return e.label},get class(){return O(R,"min-h-[6rem]",e.invalid&&"border-destructive dark:border-red-400/70")},get disabled(){return e.disabled}},()=>A(e),{onChange:n=>{const a=Array.from(n.currentTarget.selectedOptions).map(i=>i.value);e.onInput(a),e.onBlur()}}),!1,!0),m(t,u(C,{get each(){return te(e.field)},children:n=>(()=>{var a=re();return m(a,()=>String(n)),k(()=>a.selected=r().includes(n)),k(()=>a.value=String(n)),a})()})),t})()}function lr(e){const r=()=>Array.isArray(e.value)?e.value:[],[t,n]=he(""),a=()=>{const l=t().trim();l&&(e.onInput([...r(),l]),n(""),e.onBlur())},i=l=>{e.onInput(r().filter((d,h)=>h!==l)),e.onBlur()};return(()=>{var l=Ze(),d=l.firstChild,h=d.nextSibling,v=h.firstChild,p=v.nextSibling;return m(d,u(C,{get each(){return r()},children:(g,S)=>(()=>{var w=Ge(),I=w.firstChild;return m(w,g,I),I.$$click=()=>i(S()),j(I,"aria-label",`Remove ${g}`),k(()=>I.disabled=e.disabled),w})()})),L(v,x({get id(){return e.id},get class(){return O(R)},get value(){return t()},get placeholder(){return e.placeholder??"Add\u2026"},get disabled(){return e.disabled}},()=>A(e),{onInput:g=>n(g.currentTarget.value),onKeyDown:g=>{g.key==="Enter"&&(g.preventDefault(),a())}}),!1,!1),p.$$click=a,k(g=>{var S=e.label,w=e.disabled;return S!==g.e&&j(l,"aria-label",g.e=S),w!==g.t&&(p.disabled=g.t=w),g},{e:void 0,t:void 0}),l})()}ve(["click"]);var ur=b("<form novalidate>"),sr=b('<div class="flex w-full flex-wrap items-center justify-between gap-2"><div class="ml-auto flex flex-wrap items-center gap-2">'),or=b('<div class="flex flex-col gap-3"><p class="flex items-center gap-2 text-sm font-medium text-foreground"><span>Submitted</span></p><dl class="grid grid-cols-[max-content_1fr] gap-x-4 gap-y-1.5">'),dr=b('<dt class="text-xs text-muted-foreground">'),cr=b('<dd class="m-0 text-sm font-medium text-foreground">'),mr=b('<span class="text-destructive dark:text-red-400"aria-hidden=true> *'),gr=b('<label class="text-sm font-medium text-foreground">'),fr=b('<p class="text-xs text-muted-foreground">'),pr=b('<p role=alert class="text-xs text-destructive dark:text-red-400">'),hr=b('<div class="flex flex-col gap-2 rounded-xl bg-surface p-3.5">'),vr=b('<p class="rounded-md border border-dashed border-border p-2 text-xs text-muted-foreground">Unsupported field "<!>".'),br=b('<fieldset class="flex flex-col gap-3 rounded-lg border border-border p-3"><legend class="px-1 text-sm font-medium text-foreground">'),xr=b('<fieldset class="flex flex-col gap-3 rounded-lg border border-border p-3"data-control><legend class="px-1 text-sm font-medium text-foreground">'),yr=b('<div class="flex flex-col gap-2 rounded-md border border-border/60 p-2"><div class="flex items-center justify-between"><span class="text-xs text-muted-foreground">Item ');const U=4,kr=new Set(["textarea","slider","rating","radio","select","checkbox","password","switch"]);function wr(e,r){const t=e["x-kai-widget"];if(t&&kr.has(t))switch(t){case"textarea":return"textarea";case"slider":return"slider";case"rating":return"rating";case"radio":return"radio";case"select":return"select";case"checkbox":return"checkbox";case"password":return"password";case"switch":return"switch"}switch(e.type){case"string":{if(Array.isArray(e.enum))return e.enum.length<=r?"radio":"select";switch(e.format){case"email":return"email";case"uri":case"url":return"url";case"date":return"date";case"date-time":return"datetime";case"time":return"time"}return e.maxLength!==void 0&&e.maxLength>120?"textarea":"text"}case"number":case"integer":return"number";case"boolean":return"switch";case"array":{const n=e.items;return n&&"enum"in n&&Array.isArray(n.enum)?n.enum.length<=r?"checkbox-group":"multiselect":n&&"type"in n&&n.type==="object"?"repeater":(n&&"type"in n&&n.type,"taglist")}case"object":return"fieldset";default:return"unsupported"}}function Y(e){return e.replace(/[_-]+/g," ").replace(/([a-z0-9])([A-Z])/g,"$1 $2").trim().replace(/\b\w/g,r=>r.toUpperCase())}function Ir(e){const r=Object.keys(e.properties??{}),t=e["x-kai-order"];if(Array.isArray(t)){const i=t.filter(d=>r.includes(d)),l=r.filter(d=>!i.includes(d));return[...i,...l]}const n=(e.required??[]).filter(i=>r.includes(i)),a=r.filter(i=>!n.includes(i));return[...n,...a]}function $r(e,r){if(e.type==="number"||e.type==="integer"){if(r===""||r===null||r===void 0)return;const t=typeof r=="number"?r:Number(r);return Number.isNaN(t)?r:t}return e.type==="boolean"?!!r:r}const Ar="^[^@\\s]+@[^@\\s]+\\.[^@\\s]+$";function Sr(e){const r={type:e.type};return e.enum&&(r.enum=e.enum),e.minimum!==void 0&&(r.minimum=e.minimum),e.maximum!==void 0&&(r.maximum=e.maximum),e.minLength!==void 0&&(r.minLength=e.minLength),e.maxLength!==void 0&&(r.maxLength=e.maxLength),e.minItems!==void 0&&(r.minItems=e.minItems),e.maxItems!==void 0&&(r.maxItems=e.maxItems),e.pattern!==void 0?r.pattern=e.pattern:e.format==="email"&&(r.pattern=Ar),r}function ne(e){return e==null||e===""||Array.isArray(e)&&e.length===0}function V(e,r){const t={},n=new Set(e.required??[]);for(const[a,i]of Object.entries(e.properties??{})){const l=r[a];if(n.has(a)&&ne(l)){t[a]=`${i.title??Y(a)} is required.`;continue}if(ne(l))continue;const d=qe(Sr(i),l);d.valid||(t[a]=jr(i,a,d.errors[0]))}return{valid:Object.keys(t).length===0,fieldErrors:t}}function jr(e,r,t){const n=e.title??Y(r);return t?t.includes("minimum")?`${n} must be at least ${e.minimum}.`:t.includes("maximum")?`${n} must be at most ${e.maximum}.`:t.includes("minLength")?`${n} must be at least ${e.minLength} characters.`:t.includes("maxLength")?`${n} must be at most ${e.maxLength} characters.`:t.includes("pattern")?e.format==="email"?`${n} must be a valid email address.`:`${n} is not in the expected format.`:t.includes("one of")?`${n} must be one of the allowed options.`:t.includes("expected integer")?`${n} must be a whole number.`:t.includes("expected")?`${n} is invalid.`:t.includes("minItems")?`${n}: choose at least ${e.minItems}.`:t.includes("maxItems")?`${n}: choose at most ${e.maxItems}.`:`${n} is invalid.`:`${n} is invalid.`}function Cr(e,r){return e?.["x-kai-widget"]==="password"?r==null||r===""?"\u2014":"\u2022\u2022\u2022\u2022":typeof r=="boolean"?r?"Yes":"No":r==null||r===""?"\u2014":Array.isArray(r)?r.length?r.map(t=>String(t)).join(", "):"\u2014":String(r)}function Or(e,r){const t=e.properties??{};return(Array.isArray(e["x-kai-order"])&&e["x-kai-order"].length>0?e["x-kai-order"].filter(n=>n in t):Object.keys(t)).map(n=>{const a=t[n];return{key:n,label:a?.title??n,value:Cr(a,r[n])}})}function ie(e,r){const t={};for(const n of Object.keys(e.properties??{})){const a=e.properties[n],i=$r(a,r[n]);i===void 0||i===""||Array.isArray(i)&&i.length===0||(t[n]=i)}return t}const ae={type:"object",properties:{}};function Lr(e){const r=x({cardId:"kai-form"},e),[t]=be(r,["data","cardId","heading","host","hostElement","class","resolution","values","defaultValues","disabled","onValuesChange","controllerRef"]),n=Ie(),a=s=>{const o=t.host??n;o?o.emit(s):t.hostElement&&Se(t.hostElement,s)},i=E(()=>{const s=t.data;return s?s.type!=="object"||typeof s.properties!="object"||s.properties===null?{ok:!1,message:"This form couldn't be displayed."}:{ok:!0,message:""}:{ok:!1,message:"No form definition provided."}}),l=E(()=>i().ok?t.data??ae:ae),d=()=>l()["x-kai-inlineMax"]??U,h=E(()=>Ir(l())),v=$e({prop:()=>t.resolution,data:()=>t.data}),[p,g]=ee({}),[S,w]=ee({}),I=s=>{const o={};for(const[c,f]of Object.entries(s.properties??{}))f.default!==void 0?o[c]=f.default:f.type==="array"&&(o[c]=[]);return t.defaultValues&&Object.assign(o,t.defaultValues),t.values&&Object.assign(o,t.values),o},M=s=>{const o=I(s);g(q(c=>{for(const f of Object.keys(c))delete c[f];Object.assign(c,o)})),w(q(c=>{for(const f of Object.keys(c))delete c[f]}))},ue=()=>{const s=l(),o={};for(const[c,f]of Object.entries(s.properties??{}))f.default!==void 0?o[c]=f.default:f.type==="array"&&(o[c]=[]);g(q(c=>{for(const f of Object.keys(c))delete c[f];Object.assign(c,o)})),w(q(c=>{for(const f of Object.keys(c))delete c[f]}))};K(D(()=>t.data,()=>{i().ok&&M(l())})),K(D(()=>t.values,s=>{s&&g(q(o=>{for(const c of Object.keys(o))delete o[c];Object.assign(o,s)}))},{defer:!0})),K(D(i,s=>{s.ok?a({kind:"ready",cardId:t.cardId}):a({kind:"error",cardId:t.cardId,message:s.message})})),K(()=>{var s;const o=t.hostElement;o&&(((s=v.resolution())==null?void 0:s.kind)==="submit"?o.setAttribute("data-kai-resolved","submitted"):o.removeAttribute("data-kai-resolved"))});const se=(s,o)=>{var c;g(s,o),S[s]&&w(s,void 0);const f=J(p),$=ie(l(),f),{valid:B}=V(l(),f);(c=t.onValuesChange)==null||c.call(t,{values:$,valid:B})},oe=s=>{const o=l().properties[s];if(!o)return;const c=V({required:l().required,properties:{[s]:o}},{[s]:p[s]});w(s,c.fieldErrors[s])},G=s=>{var o;return s?.closest("form")??s??((o=t.hostElement)==null?void 0:o.shadowRoot)??document},H=(s,o,c)=>{var f;(f=o.querySelector(`[data-field="${Tr(s)}"] [data-control]`))==null||f.focus(c)},P=s=>{if(v.isResolved())return!1;const o=J(p),c=V(l(),o);if(w(q($=>{for(const B of Object.keys($))delete $[B];Object.assign($,c.fieldErrors)})),!c.valid){const $=h().find(B=>c.fieldErrors[B]);if($){const B=G(s);queueMicrotask(()=>H($,B))}return!1}const f=ie(l(),o);return a({kind:"submit",cardId:t.cardId,data:f}),v.setLocal({kind:"submit",data:f}),!0},de=s=>{s.preventDefault(),P(s.currentTarget)},Q=()=>{v.isResolved()||(a({kind:"dismiss",cardId:t.cardId}),v.setLocal({kind:"dismissed"}))},W=()=>a({kind:"reopen",cardId:t.cardId}),X=()=>t.disabled===!0;xe(()=>{var s;(s=t.controllerRef)==null||s.call(t,{focus:o=>{const c=G(),f=h().find($=>S[$])??h()[0];f&&H(f,c,o)},send:()=>{P()},validate:()=>{const o=J(p),c=V(l(),o);return w(q(f=>{for(const $ of Object.keys(f))delete f[$];Object.assign(f,c.fieldErrors)})),c.valid?{valid:!0}:{valid:!1,errors:c.fieldErrors}},reset:()=>ue(),dismiss:()=>Q(),reopen:()=>W()})});const ce=E(()=>l()["x-kai-actions"]??[]),me=()=>l()["x-kai-submitLabel"]??"Submit",ge=()=>l()["x-kai-dismissible"]===!0,fe=E(()=>{const s=v.resolution();return!s||s.kind!=="submit"?[]:Or(l(),s.data??{})});return u(y,{get when(){return i().ok},get fallback(){return u(z,{get heading(){return t.heading},get errorMessage(){return i().message}})},get children(){return u(ye,{fallback:()=>(a({kind:"error",cardId:t.cardId,message:"The form failed to render."}),u(z,{get heading(){return t.heading},errorMessage:"The form failed to render."})),get children(){return u(y,{get when(){return!v.isDeferred()},get fallback(){return u(Ae,{type:"form",get title(){return t.heading??l().title},onReopen:W})},get children(){return u(z,{get heading(){return t.heading??l().title},get description(){return l().description},get actions(){return u(y,{get when(){return!v.isResolved()},fallback:void 0,get children(){var s=sr(),o=s.firstChild;return m(s,u(y,{get when(){return ge()},get children(){return u(N,{type:"button",variant:"ghost",onClick:Q,children:"Dismiss"})}}),o),m(o,u(C,{get each(){return ce()},children:c=>u(N,{type:"button",get variant(){return c.variant??"ghost"},onClick:()=>a({kind:"action",cardId:t.cardId,action:c.id}),get children(){return c.label}})}),null),m(o,u(N,{type:"submit",get form(){return le()},get disabled(){return X()},get children(){return me()}}),null),s}})},get children(){return u(y,{get when(){return!v.isResolved()},get fallback(){return u(Mr,{get rows(){return fe()},get optimistic(){return v.isOptimistic()}})},get children(){var s=ur();return s.addEventListener("submit",de),m(s,u(C,{get each(){return h()},children:o=>u(Z,{fieldKey:o,get field(){return l().properties[o]},get required(){return(l().required??[]).includes(o)},get inlineMax(){return d()},value:()=>p[o],error:()=>S[o],get disabled(){return X()},onInput:c=>se(o,c),onBlur:()=>oe(o)})})),k(o=>{var c=le(),f=O("flex flex-col gap-3",t.class);return c!==o.e&&j(s,"id",o.e=c),f!==o.t&&T(s,o.t=f),o},{e:void 0,t:void 0}),s}})}})}})}})}})}let Br=0;const qr=`kai-form-${++Br}`;function le(){return qr}function Mr(e){return(()=>{var r=or(),t=r.firstChild,n=t.firstChild,a=t.nextSibling;return m(t,u(Le,{size:16,"aria-hidden":"true"}),n),m(a,u(C,{get each(){return e.rows},children:i=>[(()=>{var l=dr();return m(l,()=>i.label),l})(),(()=>{var l=cr();return m(l,()=>i.value),l})()]})),k(()=>j(r,"role",e.optimistic?"status":void 0)),r})()}function Z(e){const r=`f-${e.fieldKey}-${Math.random().toString(36).slice(2,8)}`,t=`${r}-err`,n=`${r}-desc`,a=()=>e.field.title??Y(e.fieldKey),i=E(()=>wr(e.field,e.inlineMax)),l=()=>e.field["x-kai-placeholder"],d=()=>[e.field.description?n:"",e.error()?t:""].filter(Boolean).join(" ")||void 0,h=()=>({id:r,value:e.value(),field:e.field,disabled:e.disabled||e.field.readOnly===!0,placeholder:l(),required:e.required,invalid:!!e.error(),describedBy:d(),label:a(),onInput:e.onInput,onBlur:e.onBlur}),v=()=>["fieldset","repeater","checkbox-group","multiselect","radio","taglist"].includes(i());return(()=>{var p=hr();return m(p,u(y,{get when(){return!v()},get children(){var g=gr();return j(g,"for",r),m(g,a,null),m(g,u(y,{get when(){return e.required},get children(){return mr()}}),null),g}}),null),m(p,u(y,{get when(){return e.field.description},get children(){var g=fr();return j(g,"id",n),m(g,()=>e.field.description),g}}),null),m(p,u(Er,{get widget(){return i()},get common(){return h()},get fieldKey(){return e.fieldKey}}),null),m(p,u(y,{get when(){return e.error()},get children(){var g=pr();return j(g,"id",t),m(g,()=>e.error()),g}}),null),k(()=>j(p,"data-field",e.fieldKey)),p})()}function Er(e){const r=()=>e.widget,t=()=>e.common;return[u(y,{get when(){return r()==="text"||r()==="email"||r()==="url"||r()==="date"||r()==="datetime"||r()==="time"||r()==="password"},get children(){return u(He,x(t,{get variant(){return r()}}))}}),u(y,{get when(){return r()==="textarea"},get children(){return u(Pe,x(t))}}),u(y,{get when(){return r()==="number"},get children(){return u(Qe,x(t))}}),u(y,{get when(){return r()==="slider"},get children(){return u(We,x(t))}}),u(y,{get when(){return r()==="rating"},get children(){return u(Xe,x(t))}}),u(y,{get when(){return r()==="switch"},get children(){return u(er,x(t))}}),u(y,{get when(){return r()==="checkbox"},get children(){return u(rr,x(t))}}),u(y,{get when(){return r()==="radio"},get children(){return u(tr,x(t))}}),u(y,{get when(){return r()==="select"},get children(){return u(nr,x(t))}}),u(y,{get when(){return r()==="checkbox-group"},get children(){return u(ir,x(t))}}),u(y,{get when(){return r()==="multiselect"},get children(){return u(ar,x(t))}}),u(y,{get when(){return r()==="taglist"},get children(){return u(lr,x(t))}}),u(y,{get when(){return r()==="repeater"},get children(){return u(Rr,x(t,{inlineMax:U}))}}),u(y,{get when(){return r()==="fieldset"},get children(){return u(Nr,x(t,{inlineMax:U}))}}),u(y,{get when(){return r()==="unsupported"},get children(){var n=vr(),a=n.firstChild,i=a.nextSibling;return i.nextSibling,m(n,()=>e.fieldKey,i),n}})]}function Nr(e){const r=()=>e.field.properties??{},t=()=>e.value&&typeof e.value=="object"?e.value:{},n=(a,i)=>{e.onInput({...t(),[a]:i})};return(()=>{var a=br(),i=a.firstChild;return m(i,()=>e.label),m(a,u(C,{get each(){return Object.keys(r())},children:l=>u(Z,{fieldKey:l,get field(){return r()[l]},get required(){return(e.field.required??[]).includes(l)},get inlineMax(){return e.inlineMax},value:()=>t()[l],error:()=>{},get disabled(){return e.disabled},onInput:d=>n(l,d),get onBlur(){return e.onBlur}})}),null),a})()}function Rr(e){const r=()=>e.field.items??{type:"object",properties:{}},t=()=>Array.isArray(e.value)?e.value:[],n=d=>e.onInput(d),a=()=>n([...t(),{}]),i=d=>n(t().filter((h,v)=>v!==d)),l=(d,h,v)=>{const p=t().slice();p[d]={...p[d],[h]:v},n(p)};return(()=>{var d=xr(),h=d.firstChild;return m(h,()=>e.label),m(d,u(ke,{get each(){return t()},children:(v,p)=>(()=>{var g=yr(),S=g.firstChild,w=S.firstChild;return w.firstChild,m(w,p+1,null),m(S,u(N,{type:"button",size:"icon-sm",variant:"ghost","aria-label":`Remove row ${p+1}`,get disabled(){return e.disabled},onClick:()=>i(p),children:"\u2715"}),null),m(g,u(C,{get each(){return Object.keys(r().properties??{})},children:I=>u(Z,{fieldKey:I,get field(){return r().properties[I]},get required(){return(r().required??[]).includes(I)},get inlineMax(){return e.inlineMax},value:()=>{var M;return(M=v())==null?void 0:M[I]},error:()=>{},get disabled(){return e.disabled},onInput:M=>l(p,I,M),get onBlur(){return e.onBlur}})}),null),g})()}),null),m(d,u(N,{type:"button",variant:"outline",size:"sm",get disabled(){return e.disabled},onClick:a,children:"Add item"}),null),d})()}function Tr(e){return typeof CSS<"u"&&typeof CSS.escape=="function"?CSS.escape(e):e.replace(/["\\]/g,"\\$&")}we("kai-form",{data:void 0,cardId:void 0,heading:void 0,resolution:void 0,values:void 0,defaultValues:void 0,disabled:!1},(e,{element:r,dispatch:t,flag:n,expose:a})=>{let i;return a({focus:l=>i?.focus(l),send:()=>i?.send(),validate:()=>i?.validate()??{valid:!1},reset:()=>i?.reset(),dismiss:()=>i?.dismiss(),reopen:()=>i?.reopen()}),u(Lr,{get data(){return e.data},get cardId(){return e.cardId??(r.id||"kai-form")},get heading(){return e.heading},get resolution(){return e.resolution},get values(){return e.values},get defaultValues(){return e.defaultValues},get disabled(){return n("disabled")},onValuesChange:l=>t("kai-values-change",l),controllerRef:l=>i=l,hostElement:r})});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{f as s,c as o,q as d,n as i,t as n}from"./chunks/define-CNSKFZCd.js";import{b as c,c as p,a as u}from"./chunks/hover-card-BQGdGAQ3.js";import{w as v}from"./chunks/disclosure-BcBs--Jf.js";var m=n("<style>:host{display:inline-block}"),f=n("<slot>"),g=n("<slot name=card>");s("kai-hover-card",{openDelay:void 0,closeDelay:void 0,placement:void 0,open:void 0,defaultOpen:void 0,disabled:void 0},(l,r)=>{const{flag:t}=r;let a;return v(r,()=>a,()=>l.open),[m(),o(u,{get openDelay(){return i(()=>l.openDelay!=null)()?Number(l.openDelay):void 0},get closeDelay(){return i(()=>l.closeDelay!=null)()?Number(l.closeDelay):void 0},get defaultOpen(){return t("defaultOpen")},get disabled(){return t("disabled")},controllerRef:e=>a=e,get children(){return[o(c,{get children(){var e=f();return e._$owner=d(),e}}),o(p,{get placement(){return l.placement??void 0},get children(){var e=g();return e._$owner=d(),e}})]}})]});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{f as l,i as m,a as n,b as r,t as a}from"./chunks/define-CNSKFZCd.js";import{r as o}from"./chunks/icon-CAyRqVrg.js";import{c as f}from"./chunks/cn-CU7UAWzk.js";var t=a("<style>:host{display:inline-flex}"),z=a("<span part=icon>");const e={sm:"size-3.5",md:"size-4",lg:"size-5"};l("kai-icon",{name:"",size:"md"},i=>[t(),(()=>{var s=z();return m(s,()=>o(i.name,{class:"size-full",imgClass:"size-full",spanClass:"size-full"})),n(()=>r(s,f("inline-flex shrink-0",e[i.size??"md"]??e.md))),s})()]);
|
package/dist/elements/image.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{s as
|
|
1
|
+
import{s as b,g as v,h as f,p,c as o,a as y,d as m,b as h,S as w,t as T,f as R}from"./chunks/define-CNSKFZCd.js";import{c}from"./chunks/cn-CU7UAWzk.js";import{S as U}from"./chunks/skeleton-Pjc5jiaY.js";var k=T("<img role=img>");function A(r,e){if(r&&e)return`data:${e};base64,${r}`}function L(r){const[e,j]=b(r,["base64","uint8Array","mediaType","class","alt"]),[g,n]=v(void 0),l=()=>e.mediaType??"image/png";f(()=>{const t=e.uint8Array,a=l();if(t&&a){const i=new Blob([t],{type:a}),s=URL.createObjectURL(i);n(s),p(()=>URL.revokeObjectURL(s))}else n(void 0)});const d=()=>A(e.base64,l())??g();return o(w,{get when(){return d()},get fallback(){return o(U,{get"aria-label"(){return e.alt},role:"img",get class(){return c("h-auto max-w-full overflow-hidden",e.class)}})},get children(){var t=k();return y(a=>{var i=d(),s=e.alt,u=c("h-auto max-w-full overflow-hidden rounded-md",e.class);return i!==a.e&&m(t,"src",a.e=i),s!==a.t&&m(t,"alt",a.t=s),u!==a.a&&h(t,a.a=u),a},{e:void 0,t:void 0,a:void 0}),t}})}R("kai-image",{base64:void 0,bytes:void 0,alt:"",mediaType:void 0},r=>o(L,{get alt(){return r.alt??""},get base64(){return r.base64},get uint8Array(){return r.bytes},get mediaType(){return r.mediaType}}));
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{f as x,g as l,h as O,o as S,c as I,A as M,d as V,q as $,t as m,p as h}from"./chunks/define-CNSKFZCd.js";import{I as C}from"./chunks/input-DZD67EvW.js";var F=m("<slot>"),_=m("<style>:host{display:block}");const j=["leading","trailing"];x("kai-input",{type:"text",value:void 0,placeholder:void 0,label:void 0,hint:void 0,error:void 0,size:"md",disabled:void 0,readonly:void 0,required:void 0,invalid:void 0,name:void 0,autocomplete:void 0,inputmode:void 0},(r,y)=>{const{element:t,dispatch:a,flag:n,expose:f}=y,[o,u]=l(r.value??t.getAttribute("value")??""),A=e=>e==null?t.getAttribute("value")??"":String(e),d=e=>{M(o)!==e&&u(e)};Object.defineProperty(t,"value",{get:()=>o(),set:e=>d(A(e)),configurable:!0,enumerable:!0}),O(()=>{const e=o();e?t.getAttribute("value")!==e&&t.setAttribute("value",e):t.hasAttribute("value")&&t.removeAttribute("value")});const[z,q]=l(t.getAttribute("autocapitalize")??void 0),[k,w]=l({leading:!1,trailing:!1});S(()=>{const e=()=>{const p={};for(const b of j)p[b]=!!t.querySelector(`:scope > [slot="${b}"]`);w(p)};e();const i=new MutationObserver(e);i.observe(t,{childList:!0,subtree:!1}),h(()=>i.disconnect());const c=()=>q(t.getAttribute("autocapitalize")??void 0);c();const g=new MutationObserver(c);g.observe(t,{attributes:!0,attributeFilter:["autocapitalize"]}),h(()=>g.disconnect())});const s=e=>k()[e]?(()=>{var i=F();return V(i,"name",e),i._$owner=$(),i})():void 0,v=()=>{var e;return((e=t.shadowRoot)==null?void 0:e.querySelector("input"))??null};return f({focus:e=>{var i;return(i=v())==null?void 0:i.focus(e)},select:()=>{var e;return(e=v())==null?void 0:e.select()},clear:()=>{u(""),a("kai-change",{value:""})}}),[_(),I(C,{get type(){return r.type??"text"},get value(){return o()},get placeholder(){return r.placeholder},get label(){return r.label},get hint(){return r.hint},get error(){return r.error},get size(){return r.size??"md"},get invalid(){return n("invalid")},get disabled(){return n("disabled")},get readonly(){return n("readonly")},get required(){return n("required")},get name(){return r.name},get autocomplete(){return r.autocomplete},get inputmode(){return r.inputmode},get autocapitalize(){return z()},get leading(){return s("leading")},get trailing(){return s("trailing")},onValueInput:e=>{u(e),a("kai-input",{value:e})},onValueChange:e=>{d(e),a("kai-change",{value:e})}})]});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{f as s,c as a,q as o,t as e}from"./chunks/define-CNSKFZCd.js";import{K as i}from"./chunks/kbd-DbyVrlnU.js";var l=e("<style>:host{display:inline-flex}"),m=e("<slot>");s("kai-kbd",{keys:void 0,platform:"auto",size:"md"},r=>[l(),a(i,{get keys(){return r.keys},get platform(){return r.platform??"auto"},get size(){return r.size??"md"},get children(){var t=m();return t._$owner=o(),t}})]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{s as q,g as x,j as v,o as B,h as C,l as L,c as t,i,S as g,a as w,d as f,b as S,t as c,e as F,f as G}from"./chunks/define-CNSKFZCd.js";import{c as j}from"./chunks/cn-CU7UAWzk.js";import{S as k}from"./chunks/skeleton-Pjc5jiaY.js";import{l as z}from"./chunks/link-vko7AttA.js";import{e as H}from"./chunks/card-routing-C986KuUA.js";function J(a){try{return new URL(a).hostname.replace(/^www\./,"")}catch{return}}const K=["http:","https:"];function M(a){try{return K.includes(new URL(a).protocol)}catch{return!1}}var P=c('<div class="space-y-2 p-3">'),Q=c('<img role=img class="aspect-[16/9] w-full object-cover">'),T=c('<img alt class="h-3.5 w-3.5 shrink-0 rounded-sm">'),V=c('<div class="line-clamp-3 text-xs text-muted-foreground">'),W=c('<div class="space-y-1 p-3"><div class="flex items-center gap-1.5 text-xs text-muted-foreground"><span class=truncate></span></div><div class="line-clamp-2 text-sm font-semibold text-foreground">'),X=c('<a rel="noopener noreferrer">'),Y=c('<div role=img aria-label="Invalid link"><span class=truncate>Invalid link');function Z(a){return!!(a.title||a.description||a.image)}function _(a){const[n]=q(a,["cardId","data","onEmit","class"]),m=r=>{var e;return(e=n.onEmit)==null?void 0:e.call(n,r)},[D,ee]=x(),[I,re]=x(!1),[R,y]=x(!1),u=()=>n.data.url,h=v(()=>M(u())),s=v(()=>({...n.data,...D()}));B(()=>m({kind:"ready",cardId:n.cardId})),C(L(h,r=>{r||m({kind:"error",cardId:n.cardId,message:`Invalid link url: ${u()}`})})),C(L(()=>[n.data,h()],([r,e])=>{y(!1),!e||Z(r)}));const b=v(()=>s().domain??J(u())??u()),U=v(()=>s().siteName??b()),$=v(()=>s().title??b()),A=v(()=>!!s().image&&!R()),E=()=>{h()&&m({kind:"open",cardId:n.cardId,url:u(),target:"tab"})},N=r=>{r.preventDefault(),E()},O=r=>{(r.key==="Enter"||r.key===" ")&&(r.preventDefault(),E())};return t(g,{get when(){return h()},get fallback(){return(()=>{var r=Y(),e=r.firstChild;return i(r,t(z,{size:16,"aria-hidden":"true"}),e),w(()=>S(r,j("flex items-center gap-2 rounded-xl border border-destructive/40 bg-destructive/10 px-3 py-2 text-sm text-destructive dark:border-red-400/50 dark:bg-destructive/20 dark:text-red-400",n.class))),r})()},get children(){var r=X();return r.$$keydown=O,r.$$click=N,i(r,t(g,{get when(){return I()},get children(){return[t(k,{class:"aspect-[16/9] w-full rounded-none"}),(()=>{var e=P();return i(e,t(k,{class:"h-3 w-1/3"}),null),i(e,t(k,{class:"h-4 w-2/3"}),null),i(e,t(k,{class:"h-3 w-full"}),null),e})()]}}),null),i(r,t(g,{get when(){return!I()},get children(){return[t(g,{get when(){return A()},get children(){var e=Q();return e.addEventListener("error",()=>y(!0)),w(d=>{var l=s().image,o=s().imageAlt??"";return l!==d.e&&f(e,"src",d.e=l),o!==d.t&&f(e,"alt",d.t=o),d},{e:void 0,t:void 0}),e}}),(()=>{var e=W(),d=e.firstChild,l=d.firstChild,o=d.nextSibling;return i(d,t(g,{get when(){return s().favicon},get fallback(){return t(z,{size:12,class:"shrink-0 opacity-70","aria-hidden":"true"})},get children(){var p=T();return w(()=>f(p,"src",s().favicon)),p}}),l),i(l,U),i(o,$),i(e,t(g,{get when(){return s().description},get children(){var p=V();return i(p,()=>s().description),p}}),null),e})()]}}),null),w(e=>{var d=u(),l=`Open ${$()} on ${b()}`,o=j("group block overflow-hidden rounded-xl border border-border bg-card text-card-foreground no-underline outline-none transition-shadow","cursor-pointer hover:shadow-md focus-visible:ring-2 focus-visible:ring-ring",n.class);return d!==e.e&&f(r,"href",e.e=d),l!==e.t&&f(r,"aria-label",e.t=l),o!==e.a&&S(r,e.a=o),e},{e:void 0,t:void 0,a:void 0}),r}})}F(["click","keydown"]),G("kai-link-preview",{cardId:void 0,data:void 0},(a,{element:n})=>t(_,{get cardId(){return a.cardId??""},get data(){return a.data??{url:""}},onEmit:m=>H(n,m)}));
|
package/dist/elements/loader.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{f as r,c as a}from"./chunks/define-CNSKFZCd.js";import{L as e}from"./chunks/loader-Cg6rO8tQ.js";r("kai-loader",{variant:"circular",size:"md",text:void 0},t=>a(e,{get variant(){return t.variant},get size(){return t.size},get text(){return t.text}}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{f as n,x as i,c as t,C as g}from"./chunks/define-CNSKFZCd.js";import{M as a}from"./chunks/markdown-n3Xbj3PR.js";n("kai-markdown",{content:"",proseSize:"sm",codeTheme:"github-dark-dimmed",codeHighlight:!0},(e,{flag:r})=>{const o=i();return t(g,{get proseSize(){return e.proseSize},get codeTheme(){return e.codeTheme},get codeHighlight(){return r("codeHighlight")},get portalMount(){return o.portalMount()},get children(){return t(a,{get content(){return e.content}})}})});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{f,c as r,q as p,i as l,S as n,n as a,F as b,t as m}from"./chunks/define-CNSKFZCd.js";import{D as k,a as v,c as w,d as x,e as y,f as z,g as C,h as I,i as j,j as L,b as O}from"./chunks/dropdown-wgs8xCJZ.js";import{r as s}from"./chunks/icon-CAyRqVrg.js";import{K as S}from"./chunks/kbd-DbyVrlnU.js";import{c as G}from"./chunks/cn-CU7UAWzk.js";import{w as T}from"./chunks/disclosure-BcBs--Jf.js";import{e as D}from"./chunks/ellipsis-CUiEJ6R1.js";var _=m('<span part=shortcut class="ml-auto pl-4 text-muted-foreground">'),$=m("<slot name=trigger>");f("kai-menu",{items:void 0,placement:void 0,triggerIcon:void 0,triggerLabel:void 0,triggerIconTrailing:void 0,label:void 0,open:void 0,defaultOpen:void 0,disabled:void 0},(t,g)=>{const{dispatch:c,flag:o}=g;let d;T(g,()=>d,()=>t.open);function u(i){return r(b,{each:i,children:e=>e.separator?r(x,{}):e.heading?r(y,{get children(){return e.label}}):e.items&&e.items.length>0?r(z,{get children(){return[r(C,{get children(){return[r(n,{get when(){return e.icon},get children(){return s(e.icon,{imgClass:"mr-2 size-4 shrink-0",spanClass:"mr-2 flex h-4 w-4 shrink-0 items-center justify-center text-sm"})}}),a(()=>e.label)]}}),r(I,{get children(){return u(e.items)}})]}}):e.radioGroup!==void 0?r(j,{get checked(){return e.checked},get disabled(){return e.disabled},onSelect:()=>{e.id&&c("kai-select",{id:e.id,radioGroup:e.radioGroup})},get children(){return[r(n,{get when(){return e.icon},get children(){return s(e.icon,{imgClass:"mr-2 size-4 shrink-0",spanClass:"mr-2 flex h-4 w-4 shrink-0 items-center justify-center text-sm"})}}),a(()=>e.label)]}}):e.checked!==void 0?r(L,{get checked(){return e.checked},get disabled(){return e.disabled},onSelect:()=>{e.id&&c("kai-select",{id:e.id,checked:!e.checked})},get children(){return[r(n,{get when(){return e.icon},get children(){return s(e.icon,{imgClass:"mr-2 size-4 shrink-0",spanClass:"mr-2 flex h-4 w-4 shrink-0 items-center justify-center text-sm"})}}),a(()=>e.label)]}}):r(O,{get disabled(){return e.disabled},onSelect:()=>{e.id&&c("kai-select",{id:e.id})},get children(){return[r(n,{get when(){return e.icon},get children(){return s(e.icon,{imgClass:"mr-2 size-4 shrink-0",spanClass:"mr-2 flex h-4 w-4 shrink-0 items-center justify-center text-sm"})}}),a(()=>e.label),r(n,{get when(){return e.shortcut},get children(){var h=_();return l(h,r(S,{get keys(){return e.shortcut},platform:"auto",size:"sm"})),h}})]}})})}return r(w,{get defaultOpen(){return o("defaultOpen")},get disabled(){return o("disabled")},controllerRef:i=>d=i,get children(){return[r(k,{get class(){return G("inline-flex items-center rounded-md transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",t.triggerLabel?"gap-1.5 px-2 py-1.5 text-sm font-medium text-muted-foreground hover:bg-accent hover:text-foreground":"justify-center p-1.5 text-foreground hover:bg-muted")},get"aria-label"(){return t.label??(t.triggerLabel?void 0:"Open menu")},get children(){var i=$();return i._$owner=p(),l(i,r(n,{get when(){return t.triggerIcon},get children(){return s(t.triggerIcon,{class:"size-4 shrink-0"})}}),null),l(i,r(n,{get when(){return t.triggerLabel},get children(){return t.triggerLabel}}),null),l(i,r(n,{get when(){return t.triggerIconTrailing},get children(){return s(t.triggerIconTrailing,{class:"size-3.5 shrink-0 opacity-60"})}}),null),l(i,r(n,{get when(){return a(()=>!t.triggerIcon)()&&!t.triggerLabel},get children(){return r(D,{class:"size-4"})}}),null),i}}),r(v,{class:"min-w-[15rem]",get children(){return u(t.items??[])}})]}})});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as
|
|
1
|
+
import{c as n,i as a,F as d,a as p,b as k,S as v,t as o,f as x,g as f,o as g,p as b}from"./chunks/define-CNSKFZCd.js";import{c as h}from"./chunks/cn-CU7UAWzk.js";var w=o("<div>"),S=o('<span class="inline-flex items-center px-1.5 py-0.5 rounded text-[10px] font-medium bg-violet-400/10 text-violet-600 dark:text-violet-400">');function y(t){return n(v,{get when(){return t.skills.length>0},get children(){var e=w();return a(e,n(d,{get each(){return t.skills},children:s=>(()=>{var r=S();return a(r,()=>s.name),r})()})),p(()=>k(e,h("flex items-center gap-1 flex-wrap",t.class))),e}})}function c(t){var e;const s=((e=t.textContent)==null?void 0:e.trim())??"";return{id:t.getAttribute("id")??s,name:s}}x("kai-skills",{skills:[]},(t,{element:e})=>{const[s,r]=f([]);g(()=>{const i=()=>{const m=[...e.querySelectorAll("kai-skill")];r(m.map(c))};i();const l=new MutationObserver(i);l.observe(e,{childList:!0,attributes:!0,subtree:!0}),b(()=>l.disconnect())});const u=()=>[...t.skills??[],...s()];return n(y,{get skills(){return u()}})});export{c as parseKaiSkillElement};
|
package/dist/elements/message.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{f as L,x as O,g as y,o as U,c as a,S as g,n as u,i as j,a as D,b as E,C as G,q as v,t as l,p as I}from"./chunks/define-CNSKFZCd.js";import{r as J,M as K}from"./chunks/slots-DkZ-Cmha.js";import{a as A,M as N,b as P}from"./chunks/message-CgKytiSB.js";import{c as Q}from"./chunks/message-feedback-Ds3-US0e.js";var V=l("<slot name=before-body>"),W=l("<slot name=after-body>"),X=l("<div part=avatar class=shrink-0><slot name=avatar>"),Y=l("<div>");L("kai-message",{message:void 0,role:"assistant",content:void 0,markdown:void 0,proseSize:"sm",codeTheme:"github-dark-dimmed",codeHighlight:!0,actionsReveal:"always",avatarSrc:void 0,avatarFallback:void 0,avatar:void 0},(t,{dispatch:x,flag:m,element:o,expose:S})=>{const $=O(),r=()=>t.message??{id:"message",role:t.role??"assistant",content:t.content??""},s=Q({emit:e=>x("kai-message-action",e)});S({copy:()=>s.handleAction(r(),"copy")});const[F,M]=y([]),[d,C]=y({});U(()=>{const e=()=>{const _=[...o.querySelectorAll("kai-action")];M(_.map(n=>{var w;return{id:n.id||n.getAttribute("action")||"",label:((w=n.textContent)==null?void 0:w.trim())||n.getAttribute("label")||n.id||"",icon:n.getAttribute("icon")??void 0,tooltip:n.getAttribute("tooltip")??void 0}})),C(J(o,K))};e();const c=new MutationObserver(e);c.observe(o,{childList:!0,attributes:!0,subtree:!0}),I(()=>c.disconnect())});const i=()=>r().role==="user",b=()=>r().avatar??(t.avatarSrc||t.avatarFallback?{src:t.avatarSrc,fallback:t.avatarFallback}:void 0),z=()=>t.avatar==="none",h=()=>!!d().avatar,H=()=>!z()&&(h()||!!b()),f=()=>t.actionsReveal==="hover"?"hover":"always",R=()=>o.hasAttribute("markdown")||t.markdown===!0||t.markdown===!1,T=()=>R()?m("markdown"):!i(),q=()=>[...r().actions??[],...F()],k=()=>a(N,{get content(){return r().content},get reasoning(){return r().reasoning},get tools(){return r().tools},get attachments(){return r().attachments},get isUser(){return i()},get markdown(){return T()},get actions(){return q()},get actionsReveal(){return f()},get activeFeedback(){return s.resolveFeedback(r())},get copied(){return s.isCopied(r().id)},onAction:e=>s.handleAction(r(),e),get beforeBody(){return u(()=>!!d()["before-body"])()?(()=>{var e=V();return e._$owner=v(),e})():void 0},get afterBody(){return u(()=>!!d()["after-body"])()?(()=>{var e=W();return e._$owner=v(),e})():void 0}}),p=()=>f()==="hover"?"group ":"",B=()=>a(g,{get when(){return h()},get fallback(){return a(g,{get when(){return b()},children:e=>a(P,{get src(){return e().src??""},get alt(){return e().alt??""},get fallback(){return e().fallback}})})},get children(){var e=X(),c=e.firstChild;return c._$owner=v(),e}});return a(G,{get proseSize(){return t.proseSize},get codeTheme(){return t.codeTheme},get codeHighlight(){return m("codeHighlight")},get portalMount(){return $.portalMount()},get children(){return a(g,{get when(){return H()},get fallback(){return a(A,{get class(){return`${p()}${i()?"flex-col items-end":"flex-col items-start"}`},get children(){return k()}})},get children(){return a(A,{get class(){return p()},get children(){return[u(()=>B()),(()=>{var e=Y();return j(e,k),D(()=>E(e,`flex min-w-0 flex-1 flex-col ${i()?"items-end":"items-start"}`)),e})()]}})}})}})});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{f as m,g as v,o as g,c as b,p as f}from"./chunks/define-CNSKFZCd.js";import{M}from"./chunks/model-switcher-BMtXGwLU.js";import{w as h}from"./chunks/disclosure-BcBs--Jf.js";function s(e){var o;return{id:e.getAttribute("id")??"",name:((o=e.textContent)==null?void 0:o.trim())??"",provider:e.getAttribute("provider")??void 0,description:e.getAttribute("description")??void 0,group:e.getAttribute("group")??void 0}}m("kai-model-switcher",{models:[],currentModel:void 0,open:void 0,defaultOpen:void 0,disabled:void 0},(e,o)=>{const{dispatch:a,element:r,flag:d}=o;let i;h(o,()=>i,()=>e.open);const[u,c]=v([]);g(()=>{const t=()=>{const p=[...r.querySelectorAll("kai-model")];c(p.map(s))};t();const l=new MutationObserver(t);l.observe(r,{childList:!0,attributes:!0,subtree:!0}),f(()=>l.disconnect())});const n=()=>[...e.models??[],...u()];return b(M,{get models(){return n()},get currentModelId(){var t;return e.currentModel??((t=n()[0])==null?void 0:t.id)??""},onModelChange:t=>a("kai-model-change",{modelId:t}),get defaultOpen(){return d("defaultOpen")},get disabled(){return d("disabled")},controllerRef:t=>i=t})});export{s as parseKaiModelElement};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{s as q,g as E,k as D,m as G,i as l,c as s,t as v,S as m,a as y,b as x,n as j,d as I,G as L,F,e as H,f as J}from"./chunks/define-CNSKFZCd.js";import{c as f}from"./chunks/cn-CU7UAWzk.js";import{r as C}from"./chunks/icon-CAyRqVrg.js";import{B as K}from"./chunks/badge-BTNZTODL.js";import{c as M}from"./chunks/chevron-right-ChzBcNJ-.js";var N=v("<nav>"),O=v("<span part=chevron aria-hidden=true>"),P=v("<span>"),Q=v('<span class="text-xs text-muted-foreground">'),T=v('<span part=status class="flex shrink-0 items-center gap-1.5"aria-hidden=true><span class="relative inline-flex"><span>'),U=v('<span part=meta class="shrink-0 text-xs tabular-nums text-muted-foreground"aria-hidden=true>'),W=v("<button part=item-action data-nav-action=action type=button>"),X=v("<button part=item-action data-nav-action=close type=button>"),Y=v('<div><button part=item type=button><span class="min-w-0 flex-1 truncate">'),Z=v("<div part=group role=group>"),_=v('<span class="size-4 shrink-0"aria-hidden=true>');const R={primary:"bg-primary",info:"bg-tool-blue",success:"bg-tool-green",warning:"bg-tool-amber",error:"bg-tool-red",neutral:"bg-muted-foreground"};function ee(r){const[d,e]=q(r,["items","value","onItemSelect","onItemAction","onItemClose","defaultCollapsed","class"]),[c,p]=E(new Set(d.defaultCollapsed??[]),{equals:!1}),h=a=>!c().has(a),b=a=>p(w=>{const k=new Set(w);return k.has(a)?k.delete(a):k.add(a),k});return(()=>{var a=N();return D(a,G(e,{get class(){return f("flex flex-col gap-0.5",d.class)}}),!1,!0),l(a,s(B,{get items(){return d.items??[]},depth:0,get value(){return d.value},get onItemSelect(){return d.onItemSelect},get onItemAction(){return d.onItemAction},get onItemClose(){return d.onItemClose},isExpanded:h,toggle:b})),a})()}function B(r){const d=()=>r.items.some(e=>{var c;return(((c=e.children)==null?void 0:c.length)??0)>0});return s(F,{get each(){return r.items},children:e=>{const c=()=>{var n;return(((n=e.children)==null?void 0:n.length)??0)>0},p=()=>r.isExpanded(e.id),h=()=>r.value===e.id,b=()=>{var n;return((n=e.status)==null?void 0:n.tone)??"neutral"},a=()=>{var n,o;if(!(!((n=e.status)!=null&&n.label)&&!e.meta))return[e.label,(o=e.status)==null?void 0:o.label,e.meta].filter(Boolean).join(", ")},w=()=>{var n;e.disabled||(c()?r.toggle(e.id):(n=r.onItemSelect)==null||n.call(r,e.id))},k=n=>{!c()||e.disabled||(n.key==="ArrowRight"&&!p()||n.key==="ArrowLeft"&&p())&&(n.preventDefault(),r.toggle(e.id))};return[(()=>{var n=Y(),o=n.firstChild,S=o.firstChild;return o.$$keydown=k,o.$$click=w,l(o,s(m,{get when(){return c()},get fallback(){return j(()=>!!d())()?_():null},get children(){var t=O();return l(t,s(M,{size:16})),y(()=>x(t,f("flex shrink-0 items-center opacity-60 transition-transform",p()&&"rotate-90"))),t}}),S),l(o,s(m,{get when(){return e.icon},get children(){return C(e.icon,{class:"size-4 shrink-0"})}}),S),l(S,()=>e.label),l(o,s(m,{get when(){return e.status},get children(){var t=T(),i=t.firstChild,g=i.firstChild;return l(i,s(m,{get when(){return e.status.pulse},get children(){var u=P();return y(()=>x(u,f("absolute inline-flex h-full w-full animate-ping rounded-full opacity-75 motion-reduce:hidden",R[b()]))),u}}),g),l(t,s(m,{get when(){return e.status.label},get children(){var u=Q();return l(u,()=>e.status.label),u}}),null),y(()=>x(g,f("relative inline-block size-2 rounded-full",R[b()]))),t}}),null),l(o,s(m,{get when(){return e.meta},get children(){var t=U();return l(t,()=>e.meta),t}}),null),l(o,s(m,{get when(){return e.badge},get children(){return s(K,{variant:"default",class:"px-1.5 py-0 text-[0.625rem] font-medium uppercase tracking-wide",get children(){return e.badge}})}}),null),l(o,s(m,{get when(){return e.trailing},get children(){return C(e.trailing,{class:"size-4 shrink-0 opacity-0 transition-opacity group-hover:opacity-60"})}}),null),l(n,s(m,{get when(){return e.action},get children(){var t=W();return t.$$click=()=>{var i;return(i=r.onItemAction)==null?void 0:i.call(r,e.id,e.action)},l(t,()=>C(e.action.icon,{class:"size-4"})),y(i=>{var g=e.action.label,u=f("mr-1 flex size-6 shrink-0 items-center justify-center rounded text-muted-foreground","opacity-0 transition-opacity hover:bg-background/70 hover:text-foreground","focus-visible:opacity-100 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring","group-hover:opacity-100");return g!==i.e&&I(t,"aria-label",i.e=g),u!==i.t&&x(t,i.t=u),i},{e:void 0,t:void 0}),t}}),null),l(n,s(m,{get when(){return e.closable},get children(){var t=X();return t.$$click=()=>{var i;return(i=r.onItemClose)==null?void 0:i.call(r,e.id)},l(t,()=>C("x",{class:"size-4"})),y(i=>{var g=e.label?`Remove ${e.label}`:"Remove",u=f("mr-1 flex size-6 shrink-0 items-center justify-center rounded text-muted-foreground","opacity-0 transition-opacity hover:bg-background/70 hover:text-foreground","focus-visible:opacity-100 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring","group-hover:opacity-100");return g!==i.e&&I(t,"aria-label",i.e=g),u!==i.t&&x(t,i.t=u),i},{e:void 0,t:void 0}),t}}),null),y(t=>{var i=f("group relative flex items-center rounded-md transition-colors","hover:bg-accent",h()&&"bg-accent",e.disabled&&"pointer-events-none opacity-50"),g=e.disabled,u=h()?"page":void 0,$=c()?p():void 0,z=a(),V=r.depth>0?{"padding-left":`${10+r.depth*16}px`}:void 0,A=f("flex min-w-0 flex-1 items-center gap-2.5 rounded-md px-2.5 py-1.5 text-left text-sm transition-colors","text-muted-foreground group-hover:text-foreground","focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring","disabled:pointer-events-none",h()&&"font-medium text-foreground");return i!==t.e&&x(n,t.e=i),g!==t.t&&(o.disabled=t.t=g),u!==t.a&&I(o,"aria-current",t.a=u),$!==t.o&&I(o,"aria-expanded",t.o=$),z!==t.i&&I(o,"aria-label",t.i=z),t.n=L(o,V,t.n),A!==t.s&&x(o,t.s=A),t},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),n})(),s(m,{get when(){return j(()=>!!c())()&&p()},get children(){var n=Z();return l(n,s(B,{get items(){return e.children},get depth(){return r.depth+1},get value(){return r.value},get onItemSelect(){return r.onItemSelect},get onItemAction(){return r.onItemAction},get onItemClose(){return r.onItemClose},get isExpanded(){return r.isExpanded},get toggle(){return r.toggle}})),n}})]}})}H(["click","keydown"]),J("kai-nav",{items:void 0,value:void 0,defaultValue:void 0,defaultCollapsed:void 0},(r,{dispatch:d,expose:e})=>{const[c,p]=E(r.defaultValue),h=()=>r.value??c(),b=a=>{p(a),d("kai-nav-select",{id:a})};return e({select:a=>b(a)}),s(ee,{get items(){return r.items},get value(){return h()},get defaultCollapsed(){return r.defaultCollapsed},onItemSelect:b,onItemAction:(a,w)=>d("kai-nav-item-action",{value:a,action:w}),onItemClose:a=>d("kai-nav-item-close",{value:a}),part:"nav"})});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{c as i,m as p,g as b,i as o,S as c,a as k,d as w,b as $,t as l,e as S,f as z,q as u}from"./chunks/define-CNSKFZCd.js";import{c as d}from"./chunks/cn-CU7UAWzk.js";import{r as D}from"./chunks/icon-CAyRqVrg.js";import{c as _}from"./chunks/circle-check-CJV-3Rem.js";import{I as q}from"./chunks/Icon-C2LTALdM.js";import{i as v}from"./chunks/info-DBQl-m6e.js";import{t as C}from"./chunks/triangle-alert-B07fX3Q8.js";import{x as A}from"./chunks/x-Ckwicf6g.js";var I=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]],N=r=>i(q,p(r,{name:"CircleAlert",iconNode:I})),j=N,E=l('<button type=button aria-label=Dismiss class="-my-1 -mr-1.5 shrink-0 rounded p-1 text-muted-foreground transition-colors hover:bg-accent hover:text-foreground">'),O=l('<div><div class="flex-1 leading-snug text-muted-foreground">');const P={neutral:v,info:v,warning:C,error:j,success:_},h={neutral:"text-muted-foreground",info:"text-tool-blue",warning:"text-tool-amber",error:"text-tool-red",success:"text-tool-green"};function x(r,s){if(s==="none")return null;if(s)return D(s,{class:d("size-4 shrink-0",h[r])});const a=P[r];return i(a,{get class(){return d("size-4 shrink-0",h[r])},"aria-hidden":"true"})}function R(r){const[s,a]=b(!0),e=()=>r.severity??"neutral",y=()=>{var t;a(!1),(t=r.onDismiss)==null||t.call(r)};return i(c,{get when(){return s()},get children(){var t=O(),m=t.firstChild;return o(t,i(c,{get when(){return r.iconSlot},get fallback(){return x(e(),r.icon)},get children(){return r.iconSlot}}),m),o(m,()=>r.children),o(t,i(c,{get when(){return r.action},get children(){return r.action}}),null),o(t,i(c,{get when(){return r.dismissible},get children(){var n=E();return n.$$click=y,o(n,i(A,{class:"size-3.5","aria-hidden":"true"})),n}}),null),k(n=>{var g=e()==="error"?"alert":"status",f=d("flex items-center gap-2.5 rounded-lg bg-surface px-3.5 py-2.5 text-sm",r.class);return g!==n.e&&w(t,"role",n.e=g),f!==n.t&&$(t,n.t=f),n},{e:void 0,t:void 0}),t}})}S(["click"]);var T=l("<slot>"),V=l("<slot name=icon>"),W=l("<slot name=action>");z("kai-notice",{severity:"neutral",icon:void 0,dismissible:!1},(r,{dispatch:s,flag:a})=>i(R,{get severity(){return r.severity??"neutral"},get iconSlot(){return(()=>{var e=V();return e._$owner=u(),o(e,()=>x(r.severity??"neutral",r.icon)),e})()},get dismissible(){return a("dismissible")},onDismiss:()=>s("kai-dismiss"),get action(){return(()=>{var e=W();return e._$owner=u(),e})()},get children(){var e=T();return e._$owner=u(),e}}));
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{i as l,c as d,F as I,a as p,b as h,t as y,u as L,S as $,d as x,e as O,f as U,g as B,h as G,q as P}from"./chunks/define-CNSKFZCd.js";import{c as m}from"./chunks/cn-CU7UAWzk.js";import{e as J}from"./chunks/ellipsis-CUiEJ6R1.js";import{x as K}from"./chunks/x-Ckwicf6g.js";var R=y("<span>"),N=y("<button type=button part=menu aria-haspopup=menu>"),Q=y("<button type=button part=close>"),V=y('<div><button type=button part=tab class="flex cursor-pointer items-center gap-1.5 py-1 pl-1.5 outline-none transition-colors focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring"><span class="relative flex size-[18px] shrink-0"aria-hidden=true><span></span></span><span class="max-w-[8rem] truncate font-medium"></span></button><span class="ml-0.5 flex shrink-0 items-center pr-1">'),W=y('<div data-pane-group><div part=tabs role=group aria-label="Open panes"class="flex shrink-0 items-center gap-1 overflow-x-auto border-b border-border px-1.5 py-1"></div><div part=body role=tabpanel class="min-h-0 flex-1 overflow-y-auto">');const _={working:"bg-tool-blue",idle:"bg-muted-foreground",done:"bg-tool-green",error:"bg-tool-red",blocked:"bg-tool-amber"},X={working:"text-white",idle:"text-background",done:"text-white",error:"text-white",blocked:"text-white"},Y={working:"text-tool-blue",idle:"text-muted-foreground",done:"text-tool-green",error:"text-tool-red",blocked:"text-tool-amber"};function Z(a){const b=()=>a.tabs??[],w=()=>{var i;return a.active??((i=b()[0])==null?void 0:i.id)},T=()=>{var i;const r=w();return r!==void 0&&b().some(t=>t.id===r)?r:(i=b()[0])==null?void 0:i.id},C={},f=i=>{var r;return(r=a.onTabChange)==null?void 0:r.call(a,i)},A=(i,r)=>{var t;if(i.currentTarget!==i.target)return;const n=b();if(n.length===0)return;const k=n.findIndex(u=>u.id===r.id);let c;switch(i.key){case"ArrowRight":case"ArrowDown":c=n[(k+1)%n.length];break;case"ArrowLeft":case"ArrowUp":c=n[(k-1+n.length)%n.length];break;case"Home":c=n[0];break;case"End":c=n[n.length-1];break;case"Enter":case" ":i.preventDefault(),f(r.id);return;default:return}c&&(i.preventDefault(),f(c.id),(t=C[c.id])==null||t.focus())},z=i=>{const r=()=>i.tab,t=()=>{var u;return((u=r().status)==null?void 0:u.tone)??"idle"},n=()=>r().id===w(),k=()=>r().number??i.index+1,c=()=>n()||!!r().needsAttention||t()==="error";return(()=>{var u=V(),g=u.firstChild,S=g.firstChild,j=S.firstChild,H=S.nextSibling,D=g.nextSibling;return g.$$keydown=e=>A(e,r()),g.$$click=()=>f(r().id),L(e=>{C[r().id]=e},g),l(S,d($,{get when(){var e;return(e=r().status)==null?void 0:e.pulse},get children(){var e=R();return p(()=>h(e,m("absolute inset-0 animate-ping rounded opacity-60 motion-reduce:hidden",_[t()]))),e}}),j),l(j,k),l(H,()=>r().name),l(g,d($,{get when(){var e;return(e=r().status)==null?void 0:e.label},get children(){var e=R();return l(e,()=>r().status.label),p(()=>h(e,m("truncate text-[10px] font-medium",Y[t()],c()?"inline":"hidden group-hover/tab:inline"))),e}}),null),l(D,d($,{get when(){return a.onTabMenu},get children(){var e=N();return e.$$click=o=>{var s;o.stopPropagation(),(s=a.onTabMenu)==null||s.call(a,r().id)},l(e,d(J,{class:"size-3.5","aria-hidden":"true"})),p(o=>{var s=`${r().name} tab actions`,v=m("flex size-5 items-center justify-center rounded text-muted-foreground transition-colors","hover:bg-surface-sunken hover:text-foreground","focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring",n()?"opacity-100":"opacity-0 group-hover/tab:opacity-100");return s!==o.e&&x(e,"aria-label",o.e=s),v!==o.t&&h(e,o.t=v),o},{e:void 0,t:void 0}),e}}),null),l(D,d($,{get when(){return a.onTabClose},get children(){var e=Q();return e.$$click=o=>{var s;o.stopPropagation(),(s=a.onTabClose)==null||s.call(a,r().id)},l(e,d(K,{class:"size-3.5","aria-hidden":"true"})),p(o=>{var s=`Close ${r().name}`,v=m("flex size-5 items-center justify-center rounded text-muted-foreground transition-colors","hover:bg-surface-sunken hover:text-foreground","focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring",n()?"opacity-100":"opacity-0 group-hover/tab:opacity-100");return s!==o.e&&x(e,"aria-label",o.e=s),v!==o.t&&h(e,o.t=v),o},{e:void 0,t:void 0}),e}}),null),p(e=>{var o=m("group/tab relative flex shrink-0 items-center rounded-md text-xs",n()?"bg-background text-foreground shadow-sm ring-1 ring-border":"text-muted-foreground hover:bg-hover hover:text-foreground",r().needsAttention&&!n()&&"ring-1 ring-tool-amber/50"),s=n()?"":void 0,v=r().needsAttention?"":void 0,E=r().id===T()?0:-1,M=n()?"true":void 0,q=m("relative flex size-[18px] items-center justify-center rounded text-[11px] font-bold leading-none tabular-nums",_[t()],X[t()]);return o!==e.e&&h(u,e.e=o),s!==e.t&&x(u,"data-active",e.t=s),v!==e.a&&x(u,"data-needs-attention",e.a=v),E!==e.o&&x(g,"tabindex",e.o=E),M!==e.i&&x(g,"aria-current",e.i=M),q!==e.n&&h(j,e.n=q),e},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0}),u})()};return(()=>{var i=W(),r=i.firstChild,t=r.nextSibling;return l(r,d(I,{get each(){return b()},children:(n,k)=>d(z,{tab:n,get index(){return k()}})})),l(t,()=>a.children),p(()=>h(i,m("flex h-full min-h-0 flex-col overflow-hidden rounded-xl border bg-surface",a.focused?"border-ring ring-2 ring-inset ring-ring/35":"border-border",a.class))),i})()}O(["click","keydown"]);var F=y("<slot>");U("kai-pane-group",{tabs:void 0,active:void 0,focused:!1},(a,{element:b,dispatch:w,flag:T,expose:C})=>{const f=()=>a.tabs??[],[A,z]=B(a.active),i=()=>{var t;return a.active??A()??((t=f()[0])==null?void 0:t.id)},r=t=>{z(t),w("kai-tab-change",{id:t})};return G(()=>{const t=i();t!=null&&b.setAttribute("active",t)}),C({select:t=>{f().some(n=>n.id===t)&&r(t)},focus:()=>{var t,n;(n=(t=b.shadowRoot)==null?void 0:t.querySelector('[part="tab"][tabindex="0"]'))==null||n.focus()}}),d(Z,{get tabs(){return f()},get active(){return i()},get focused(){return T("focused")},onTabChange:r,onTabClose:t=>w("kai-tab-close",{id:t}),onTabMenu:t=>w("kai-tab-menu",{id:t}),get children(){return[d($,{get when(){return i()},children:t=>(()=>{var n=F();return n._$owner=P(),p(()=>x(n,"name",t())),n})()}),(()=>{var t=F();return t._$owner=P(),t})()]}})});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{c as r,m as C,i as n,S as d,a as m,b as x,d as b,t as u,e as q,f as N,g as R,o as _,q as S,p as j}from"./chunks/define-CNSKFZCd.js";import{c as k}from"./chunks/cn-CU7UAWzk.js";import{I as D}from"./chunks/Icon-C2LTALdM.js";import{m as F,a as I}from"./chunks/minimize-2-3kCdE0q3.js";import{x as L}from"./chunks/x-Ckwicf6g.js";var O=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M12 3v18",key:"108xh3"}]],P=e=>r(D,C(e,{name:"Columns2",iconNode:O})),A=P,B=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M15 3v18",key:"14nvp0"}]],E=e=>r(D,C(e,{name:"PanelRight",iconNode:B})),G=E,H=u('<button type=button class="flex size-7 shrink-0 items-center justify-center rounded-md text-muted-foreground opacity-80 transition-colors hover:bg-hover hover:text-foreground hover:opacity-100 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring">'),J=u('<span class="flex shrink-0 items-center text-muted-foreground">'),K=u('<span class="truncate text-xs leading-tight text-muted-foreground">'),Q=u('<div part=footer class="shrink-0 border-t border-border">'),T=u('<div data-pane><div part=header class="flex shrink-0 items-center gap-2.5 border-b border-border px-3 py-2"><div class="flex min-w-0 flex-col"><span class="truncate text-sm font-medium leading-tight text-foreground"></span></div><div part=controls class="ml-auto flex shrink-0 items-center gap-0.5"></div></div><div part=body class="min-h-0 flex-1 overflow-y-auto"tabindex=0>'),U=u("<span aria-hidden=true>"),V=u("<span class=truncate>"),W=u('<span class="flex shrink-0 items-center gap-1.5 text-xs text-muted-foreground"><span class="relative flex size-2"><span aria-hidden=true>');const M={working:"bg-tool-blue",idle:"bg-muted-foreground",done:"bg-tool-green",error:"bg-tool-red",blocked:"bg-tool-amber"};function v(e){return(()=>{var l=H();return l.$$click=()=>{var o;return(o=e.onClick)==null?void 0:o.call(e)},n(l,()=>e.children),m(()=>b(l,"aria-label",e.label)),l})()}function X(e){return(()=>{var l=T(),o=l.firstChild,s=o.firstChild,p=s.firstChild,c=s.nextSibling,g=o.nextSibling;return n(o,r(d,{get when(){return e.leading},get children(){var t=J();return n(t,()=>e.leading),t}}),s),n(p,()=>e.title),n(s,r(d,{get when(){return e.subtitle},get children(){var t=K();return n(t,()=>e.subtitle),t}}),null),n(o,r(d,{get when(){return e.status},children:t=>(()=>{var a=W(),h=a.firstChild,f=h.firstChild;return n(h,r(d,{get when(){return t().pulse},get children(){var i=U();return m(()=>x(i,k("absolute inline-flex h-full w-full animate-ping rounded-full opacity-75 motion-reduce:hidden",M[t().tone]))),i}}),f),n(a,r(d,{get when(){return t().label},get children(){var i=V();return n(i,()=>t().label),i}}),null),m(i=>{var w=t().label?"status":void 0,z=t().label,y=k("relative inline-flex size-2 rounded-full",M[t().tone]);return w!==i.e&&b(a,"role",i.e=w),z!==i.t&&b(a,"aria-label",i.t=z),y!==i.a&&x(f,i.a=y),i},{e:void 0,t:void 0,a:void 0}),a})()}),c),n(c,()=>e.actions,null),n(c,r(d,{get when(){return e.onSplit},get children(){return r(v,{label:"Split pane",get onClick(){return e.onSplit},get children(){return r(A,{class:"size-4","aria-hidden":"true"})}})}}),null),n(c,r(d,{get when(){return e.onDock},get children(){return r(v,{label:"Dock pane",get onClick(){return e.onDock},get children(){return r(G,{class:"size-4","aria-hidden":"true"})}})}}),null),n(c,r(v,{get label(){return e.maximized?"Restore pane":"Maximize pane"},get onClick(){return e.onMaximize},get children(){return r(d,{get when(){return e.maximized},get fallback(){return r(I,{class:"size-4","aria-hidden":"true"})},get children(){return r(F,{class:"size-4","aria-hidden":"true"})}})}}),null),n(c,r(v,{label:"Close pane",get onClick(){return e.onClose},get children(){return r(L,{class:"size-4","aria-hidden":"true"})}}),null),n(g,()=>e.children),n(l,r(d,{get when(){return e.footer},get children(){var t=Q();return n(t,()=>e.footer),t}}),null),m(()=>x(l,k("flex h-full min-h-0 flex-col overflow-hidden rounded-xl border bg-surface",e.focused?"border-ring ring-2 ring-inset ring-ring/35":"border-border",e.class))),l})()}q(["click"]);var $=u("<slot>");const Y=["leading","actions","footer"];N("kai-pane",{headline:"",subtitle:void 0,maximized:!1,focused:!1,showSplit:!1,showDock:!1,status:void 0},(e,{element:l,dispatch:o,flag:s})=>{const[p,c]=R({leading:!1,actions:!1,footer:!1});_(()=>{const t=()=>{const h={};for(const f of Y)h[f]=!!l.querySelector(`:scope > [slot="${f}"]`);c(h)};t();const a=new MutationObserver(t);a.observe(l,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["slot"]}),j(()=>a.disconnect())});const g=t=>p()[t]?(()=>{var a=$();return b(a,"name",t),a._$owner=S(),a})():void 0;return r(X,{get title(){return e.headline},get subtitle(){return e.subtitle},get status(){return e.status},get focused(){return s("focused")},get maximized(){return s("maximized")},get leading(){return g("leading")},get actions(){return g("actions")},get footer(){return g("footer")},onMaximize:()=>o("kai-maximize",{maximized:!s("maximized")}),onClose:()=>o("kai-close"),get onSplit(){return s("showSplit")?()=>o("kai-split"):void 0},get onDock(){return s("showDock")?()=>o("kai-dock"):void 0},get children(){var t=$();return t._$owner=S(),t}})});
|
package/dist/elements/popover.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{g as m,u as k,i as z,c as R,a as C,d as D,z as p,b as S,S as j,t as c,e as A,f as B,q as _}from"./chunks/define-CNSKFZCd.js";import{c as E}from"./chunks/cn-CU7UAWzk.js";import{c as F,u as G,a as H}from"./chunks/overlay-B1-MBI6h.js";import{w as I}from"./chunks/disclosure-BcBs--Jf.js";var J=c("<span style=display:inline-flex>"),K=c("<div role=dialog style=position:fixed>");function N(a){var r;const[i,v]=m(a.defaultOpen??!1),[n,o]=m(),[g,q]=m(),f=()=>a.open!==void 0,d=()=>f()?!!a.open:i(),l=e=>{var t;f()||v(e),(t=a.onOpenChange)==null||t.call(a,e)};(r=a.controllerRef)==null||r.call(a,{open:d,setOpen:l});const s=F(d),u=G(n,g,{placement:a.placement??"bottom-start",gutter:a.gutter??6,onDisconnect:()=>l(!1)});return H({enabled:d,onDismiss:()=>l(!1),refs:()=>{var e;return[n(),g(),(e=a.boundary)==null?void 0:e.call(a)]}}),[(()=>{var e=J();return e.$$click=()=>{a.disabled||l(!d())},k(o,e),z(e,()=>a.trigger),e})(),R(j,{get when(){return s.present()},get children(){var e=K();return k(t=>{q(t),s.setRef(t)},e),z(e,()=>a.children),C(t=>{var b=s.state()==="open"?"":void 0,h=s.state()==="closed"?"":void 0,x=`${u.pos().x}px`,y=`${u.pos().y}px`,O=u.hidden()?"hidden":"visible",$=u.hidden()?"none":void 0,w=E("z-50 min-w-[12rem] rounded-lg bg-card p-1 text-sm kai-elevation","animate-in fade-in-0 zoom-in-95 data-[closed]:animate-out data-[closed]:fade-out-0 data-[closed]:zoom-out-95",a.class);return b!==t.e&&D(e,"data-expanded",t.e=b),h!==t.t&&D(e,"data-closed",t.t=h),x!==t.a&&p(e,"left",t.a=x),y!==t.o&&p(e,"top",t.o=y),O!==t.i&&p(e,"visibility",t.i=O),$!==t.n&&p(e,"pointer-events",t.n=$),w!==t.s&&S(e,t.s=w),t},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),e}})]}A(["click"]);var P=c("<slot>"),T=c("<slot name=trigger>");B("kai-popover",{placement:"bottom-start",gutter:6,open:void 0,defaultOpen:void 0,disabled:void 0},(a,r)=>{const{flag:i,element:v}=r;let n;return I(r,()=>n,()=>a.open),R(N,{get trigger(){return(()=>{var o=T();return o._$owner=_(),o})()},get placement(){return a.placement},get gutter(){return a.gutter},get defaultOpen(){return i("defaultOpen")},get disabled(){return i("disabled")},controllerRef:o=>n=o,boundary:()=>v,get children(){var o=P();return o._$owner=_(),o}})});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{f as e,c as l,n as a}from"./chunks/define-CNSKFZCd.js";import{P as t}from"./chunks/progress-bar-Dwbiyv3s.js";e("kai-progress-bar",{value:void 0,max:void 0,label:void 0,tone:"primary"},r=>l(t,{get value(){return a(()=>r.value!=null)()?Number(r.value):0},get max(){return a(()=>r.max!=null)()?Number(r.max):void 0},get label(){return r.label},get tone(){return r.tone}}));
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{i as p,c as u,a as l,b as v,S as h,z as d,t as c,f as $,g as C,o as S,q as x,d as _,p as q}from"./chunks/define-CNSKFZCd.js";import{c as f}from"./chunks/cn-CU7UAWzk.js";var L=c("<div part=top>"),M=c("<div part=bottom>"),O=c("<div data-prompt-dock part=tray>");const w="px-3 py-2 text-sm leading-snug text-muted-foreground";function z(r){const a=()=>r.frame??"inset",e=()=>r.appearance??"soft",m=()=>e()==="soft"||e()==="filled",i=()=>e()==="soft"||e()==="outlined";return(()=>{var o=O();return p(o,u(h,{get when(){return r.top},get children(){var t=L();return p(t,()=>r.top),l(()=>v(t,f(w,r.topClass))),t}}),null),p(o,()=>r.children,null),p(o,u(h,{get when(){return r.bottom},get children(){var t=M();return p(t,()=>r.bottom),l(()=>v(t,f(w,r.bottomClass))),t}}),null),l(t=>{var n=f("flex flex-col gap-1.5",r.class),s=m()?"var(--kai-prompt-dock-surface, var(--color-surface-sunken))":"transparent",g=i()?"1px solid var(--kai-prompt-dock-border, var(--color-border))":"0",b=e()==="plain"?"0":"var(--kai-prompt-dock-radius, 1.25rem)",k=a()==="none"?"0":a()==="edge"?"var(--kai-prompt-dock-inset, 0.375rem) 0":"var(--kai-prompt-dock-inset, 0.375rem)";return n!==t.e&&v(o,t.e=n),s!==t.t&&d(o,"background",t.t=s),g!==t.a&&d(o,"border",t.a=g),b!==t.o&&d(o,"border-radius",t.o=b),k!==t.i&&d(o,"padding",t.i=k),t},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),o})()}var y=c("<slot>");const A=["top","bottom"];$("kai-prompt-dock",{frame:"inset",appearance:"soft"},(r,{element:a})=>{const[e,m]=C({top:!1,bottom:!1});S(()=>{const o=()=>{const n={};for(const s of A)n[s]=!!a.querySelector(`:scope > [slot="${s}"]`);m(n)};o();const t=new MutationObserver(o);t.observe(a,{childList:!0}),q(()=>t.disconnect())});const i=o=>e()[o]?(()=>{var t=y();return _(t,"name",o),t._$owner=x(),t})():void 0;return u(z,{get frame(){return r.frame},get appearance(){return r.appearance},get top(){return i("top")},get bottom(){return i("bottom")},get children(){var o=y();return o._$owner=x(),o}})});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{f as w,g as h,h as k,o as q,c as I,p as M}from"./chunks/define-CNSKFZCd.js";import{D as V}from"./chunks/default-input-BZcwyKcP.js";import{n as g,e as R,s as f}from"./chunks/composer-BZyPU6gD.js";w("kai-prompt-input",{value:void 0,placeholder:"Send a message...",disabled:!1,loading:!1,suggestions:void 0,suggestionMode:"submit",search:!1,voice:!1,stoppable:!1,submit:"always",attach:!0,attachments:void 0,triggers:void 0,kindIcons:void 0},(o,{dispatch:a,flag:s,element:c,expose:A})=>{const[S,m]=h(o.value??""),[l,r]=h(o.attachments??[]);k(()=>{o.attachments&&r(o.attachments)});const[x,y]=h([]);q(()=>{const t=()=>{const u=[...c.querySelectorAll("kai-action")];y(u.map(n=>{var p;return{id:n.id||n.getAttribute("action")||"",label:((p=n.textContent)==null?void 0:p.trim())||n.getAttribute("label")||n.id||"",icon:n.getAttribute("icon")??void 0,tooltip:n.getAttribute("tooltip")??void 0}}))};t();const e=new MutationObserver(t);e.observe(c,{childList:!0,attributes:!0,subtree:!0}),M(()=>e.disconnect())});const v=()=>typeof o.value=="string"?o.value:S();let i={doc:[],text:"",entities:[]};k(()=>{const t=o.value;if(t!=null&&typeof t!="string"){const e=g(t);m(e),i={doc:e,text:f(e),entities:R(e)}}});const d=t=>{m(t),t!==i.text&&(i={doc:g(t),text:t,entities:[]}),a("kai-value-change",{value:t,doc:i.doc,entities:i.entities})},b=()=>{a("kai-submit",{value:f(g(v())),doc:i.doc,entities:i.entities,attachments:l()}),r([])},C=t=>{(o.suggestionMode??"submit")==="fill"?(d(t),a("kai-suggestion-click",{value:t})):(a("kai-submit",{value:t,doc:g(t),entities:[],attachments:l()}),r([]))};return A({focus:t=>{const e=c.shadowRoot,u=e?.querySelector('[contenteditable]:not([contenteditable="false"]), textarea')??e?.querySelector('input:not([type="file"])');u?.focus(t)},blur:()=>{var t,e;return(e=(t=c.shadowRoot)==null?void 0:t.activeElement)==null?void 0:e.blur()},clear:()=>{d(""),l().length&&(r([]),a("kai-attachments-change",{attachments:[]}))},send:()=>b()}),I(V,{get value(){return v()},get placeholder(){return o.placeholder},get disabled(){return s("disabled")},get loading(){return s("loading")},get stoppable(){return s("stoppable")},get submit(){return o.submit},get attach(){return s("attach")},get suggestions(){return o.suggestions},get attachments(){return l()},get search(){return s("search")},get voice(){return s("voice")},get toolbarActions(){return x()},get triggers(){return o.triggers},get kindIcons(){return o.kindIcons},onComposerChange:t=>{i=t},onValueChange:d,onSubmit:b,onSuggestionClick:C,onAttachmentsChange:t=>{r(t),a("kai-attachments-change",{attachments:t})},onSearch:()=>a("kai-search"),onVoice:()=>a("kai-voice"),onStop:()=>a("kai-stop"),onAction:t=>a("kai-toolbar-action",{action:t})})});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{f as p,g as b,o as f,i as d,c as o,F as k,a as m,b as x,t as y,p as z}from"./chunks/define-CNSKFZCd.js";import{P as A}from"./chunks/prompt-suggestion-9lvgFcEa.js";var w=y("<div>");const C=e=>typeof e=="string"?e:e.label,S=e=>typeof e=="string"?e:e.value??e.label,O=e=>typeof e=="string"?void 0:e.icon;function l(e){var s;const r=((s=e.textContent)==null?void 0:s.trim())??"",a=e.getAttribute("value")??r;return{label:r,value:a,icon:e.getAttribute("icon")??void 0}}p("kai-suggestions",{suggestions:[],variant:"outline",size:"md",layout:"chips",block:!1,highlight:void 0},(e,{dispatch:s,flag:r,element:a})=>{const[g,u]=b([]);f(()=>{const t=()=>{const h=[...a.querySelectorAll("kai-suggestion")];u(h.map(l))};t();const i=new MutationObserver(t);i.observe(a,{childList:!0,attributes:!0,subtree:!0}),z(()=>i.disconnect())});const c=()=>[...e.suggestions??[],...g()],n=()=>e.layout==="list",v=()=>n()?"flex flex-col gap-0.5":r("block")?"flex flex-col gap-2":"flex flex-wrap gap-2";return(()=>{var t=w();return d(t,o(k,{get each(){return c()},children:i=>o(A,{get variant(){return e.variant},get size(){return e.size},get icon(){return O(i)},get block(){return r("block")},get list(){return n()},get highlight(){return e.highlight},onClick:()=>s("kai-select",{value:S(i)}),get children(){return C(i)}})})),m(()=>x(t,v())),t})()});export{l as parseSuggestionNode};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{f as d,x as i,c as r,C as s}from"./chunks/define-CNSKFZCd.js";import{R as g,a as u,b as m}from"./chunks/reasoning-DzHWsdAJ.js";import{w as f}from"./chunks/disclosure-BcBs--Jf.js";d("kai-reasoning",{text:"",label:"Reasoning",open:void 0,defaultOpen:void 0,streaming:!1,markdown:!0,disabled:void 0},(t,n)=>{const{flag:e}=n,o=i();let a;return f(n,()=>a,()=>t.open),r(s,{get portalMount(){return o.portalMount()},get children(){return r(g,{get defaultOpen(){return e("defaultOpen")},get isStreaming(){return e("streaming")},get disabled(){return e("disabled")},controllerRef:l=>a=l,get children(){return[r(u,{get children(){return t.label}}),r(m,{get markdown(){return e("markdown")},get children(){return t.text}})]}})}})});
|
|
File without changes
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/** Resolves once the kai-* elements are registered (browser); inert on the server.
|
|
2
|
+
* Await this instead of customElements.whenDefined for a single ready signal.
|
|
3
|
+
*
|
|
4
|
+
* NOTE: this MUST stay an exported binding. A bare `void import('./register-impl')`
|
|
5
|
+
* is a result-unused dynamic import that the single-entry register-all build
|
|
6
|
+
* (vite.config.ts → dist/kai.es.js) tree-shakes away as dead code, leaving the
|
|
7
|
+
* bundle with NOTHING registered. Exporting the promise keeps the import live. */
|
|
8
|
+
export declare const elementsReady: Promise<unknown>;
|
|
9
|
+
export type { ChatMessage, ChatMessageAction } from './chat-types';
|
|
10
|
+
export { configureCodeHighlighting, isCodeHighlightingEnabled } from '../primitives/highlighter';
|
|
11
|
+
export type { CodeHighlightingOptions } from '../primitives/highlighter';
|
|
12
|
+
export { toast, configureToasts } from '../primitives/toast-store';
|
|
13
|
+
export type { ToastConfig, ToastItem, ToastVariant, ToastAction, ToastOptions, ToastHandle, } from '../primitives/toast-store';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{f as J,g as K,p as T,o as Q,h as X}from"./chunks/define-CNSKFZCd.js";import{r as Y,e as Z}from"./chunks/card-routing-C986KuUA.js";const q="kitn-card";function M(n,e){return function(o){return{protocol:q,version:n,nonce:e,message:o}}}function ee(n,e){if(typeof n!="object"||n===null)return!1;const o=n,t=o.message;return o.protocol===q&&typeof o.version=="string"&&typeof o.nonce=="string"&&typeof t=="object"&&t!==null&&t.dir===e}function ne(n,e,o){const t=new URL(n).origin;if(e===o)throw new Error("[kai-remote] providerOrigin must be cross-origin to the host");if(t===o)throw new Error("[kai-remote] src must not be same-origin as the host");if(t!==e)throw new Error("[kai-remote] src origin must equal providerOrigin")}const te=new Set(["protocol","version","dir","kind","mode","locale","edge","code","acceptedVersion","supportedVersions","cardId","type","id","height","target"]),oe=new Set(["authToken","nonce"]);function O(n){if(Array.isArray(n))return n.map(O);if(n&&typeof n=="object"){const e={};for(const[o,t]of Object.entries(n))oe.has(o)?e[o]="[redacted]":typeof t=="object"&&t!==null?e[o]=O(t):e[o]=te.has(o)?t:"[redacted]";return e}return n}function re(n){return/^[0-9]+$/.test(n)}const ie=new Set(["__proto__","constructor","prototype"]);function R(n){if(Array.isArray(n))return n.some(R);if(n&&typeof n=="object"){for(const e of Object.keys(n))if(ie.has(e)||R(n[e]))return!0}return!1}const ce=new Set(["ready","submit","action","send-prompt","open","resize","state","dismiss","error"]);function ae(n){return typeof n=="string"&&ce.has(n)}const V=["1"],le="allow-scripts allow-forms allow-same-origin",de=5e3;function se(n){try{return new URL(n).host}catch{return n}}function ue(n){const{container:e,providerOrigin:o,src:t,policy:r,maxHeight:d}=n,s=typeof window<"u"?window.location.origin:"";ne(t,o,s);const g=n.handshakeTimeoutMs??de;let m=0,w=P(),k=M("1",w),l="connecting",b=pe(n.context),v=n.envelope,p=null,u=null,c=null,I,y=null;function $(i){try{console.warn("[kai-remote]",O(i))}catch{}}function x(i){const a=c?.contentWindow;if(a)try{a.postMessage(k(i),o)}catch{}}function S(){I!==void 0&&(clearTimeout(I),I=void 0)}function U(i){l==="open"?x({dir:"down",kind:"context",context:i}):l==="connecting"&&(p=i)}function _(i){l==="open"?x({dir:"down",kind:"render",envelope:i}):l==="connecting"&&(u=i)}function z(){p&&(x({dir:"down",kind:"context",context:p}),p=null),u&&(x({dir:"down",kind:"render",envelope:u}),u=null)}function D(i){const a=document.createElement("div");a.setAttribute("role","alert"),a.dataset.kaiRemoteFallback="";const E=document.createElement("p");E.textContent=i,a.appendChild(E);const h=document.createElement("button");h.type="button",h.textContent="Retry",h.addEventListener("click",()=>W()),a.appendChild(h),c&&c.parentNode===e?e.replaceChild(a,c):e.appendChild(a),c=null}function L(i){l!=="closed"&&(S(),l="error",p=null,u=null,D(i))}function j(){const i=m,a=document.createElement("iframe");a.setAttribute("sandbox",n.sandbox??le),a.setAttribute("referrerpolicy","no-referrer"),a.setAttribute("allow","");const E=v.title??v.type;a.setAttribute("title",`${E} \u2014 provided by ${se(o)}`),a.style.border="0",a.style.width="100%",a.addEventListener("load",()=>{m!==i||l!=="connecting"||(k=M("1",w),x({dir:"down",kind:"hello",supportedVersions:V}),S(),I=setTimeout(()=>{var h;m!==i||l!=="connecting"||(L("[timeout] The card took too long to load."),(h=r?.onError)==null||h.call(r,v.id,"[timeout] handshake timed out"))},g))}),y=h=>N(h,i),window.addEventListener("message",y),c=a,e.appendChild(a),a.setAttribute("src",t)}function W(){l==="error"&&(m+=1,w=P(),k=M("1",w),l="connecting",p=null,u=null,S(),y&&(window.removeEventListener("message",y),y=null),c&&(c.remove(),c=null),p=b,u=v,e.querySelectorAll("[data-kai-remote-fallback]").forEach(i=>i.remove()),j())}function F(i){if(!c)return;const a=Math.min(i,d??1/0);c.style.height=`${a}px`}function H(){if(c)try{c.blur()}catch{}}function N(i,a){var E,h;if(a!==m||l==="closed"||l==="error")return;const A=i.data;if(i.origin===o&&i.source===c?.contentWindow&&ee(A,"up")&&A.nonce===w)try{const C=A.message;switch(C.kind){case"ready":{if(l!=="connecting")return;const f=C.acceptedVersion;if(!re(f)||!V.includes(f)){L("[version-unsupported] This card needs a different host version."),(E=r?.onError)==null||E.call(r,v.id,"[version-unsupported] no compatible protocol version");return}k=M(f,w),S(),l="open",p||(p=b),u||(u=v),z();return}case"event":{if(l!=="open")return;const f=C.event;if(f.cardId!==v.id)return;if(f.kind==="resize"){F(f.height);return}if(!ae(f.kind)||R(f)){$(A);return}Y(r??{},f);return}case"focus-edge":{H();return}case"fault":{const f=C.code,G=C.message;L(`[${f}] The card reported a problem.`),(h=r?.onError)==null||h.call(r,v.id,`[${f}] ${G}`);return}default:return}}catch{$(A)}}const B={updateContext(i){l!=="closed"&&(b=fe(b,i),U(b))},update(i){l!=="closed"&&(v=i,_(i))},destroy(){l!=="closed"&&(m+=1,l==="open"&&x({dir:"down",kind:"teardown"}),l="closed",S(),y&&(window.removeEventListener("message",y),y=null),c&&(c.remove(),c=null),e.querySelectorAll("[data-kai-remote-fallback]").forEach(i=>i.remove()))},state(){return l}};return j(),B}function P(){const n=new Uint8Array(16);crypto.getRandomValues(n);let e="";for(const o of n)e+=o.toString(16).padStart(2,"0");return e}function pe(n){return{...n}}function fe(n,e){return{...n,...e}}function me(n){if(!n||n==="*"||n.includes(","))return!1;let e;try{e=new URL(n)}catch{return!1}return e.pathname!=="/"||e.search!==""||e.hash!==""?!1:e.protocol==="https:"?!0:e.protocol==="http:"?e.hostname==="localhost"||e.hostname==="127.0.0.1":!1}function he(n,e){function o(t){Z(n,t)}return{onSubmit(t,r){var d;o({kind:"submit",cardId:t,data:r}),(d=e?.onSubmit)==null||d.call(e,t,r)},onAction(t,r,d){var s;o({kind:"action",cardId:t,action:r,payload:d}),(s=e?.onAction)==null||s.call(e,t,r,d)},onSendPrompt(t,r){var d;o({kind:"send-prompt",cardId:"",text:t,mode:r.mode,context:r.context}),(d=e?.onSendPrompt)==null||d.call(e,t,r)},onOpen(t,r){var d;o({kind:"open",cardId:"",url:t,target:r}),(d=e?.onOpen)==null||d.call(e,t,r)},onState(t,r){var d;o({kind:"state",cardId:t,patch:r}),(d=e?.onState)==null||d.call(e,t,r)},onDismiss(t){var r;o({kind:"dismiss",cardId:t}),(r=e?.onDismiss)==null||r.call(e,t)},onReopen(t){var r;o({kind:"reopen",cardId:t}),(r=e?.onReopen)==null||r.call(e,t)},onError(t,r){var d;o({kind:"error",cardId:t,message:r}),(d=e?.onError)==null||d.call(e,t,r)},maxSendPromptMode:e?.maxSendPromptMode}}J("kai-remote",{src:void 0,providerOrigin:void 0,envelope:void 0,policy:void 0},(n,{element:e})=>{let o;const[t,r]=K(!1);if(typeof window<"u"&&typeof window.matchMedia=="function"){const s=window.matchMedia("(prefers-color-scheme: dark)");r(s.matches);const g=m=>r(m.matches);s.addEventListener("change",g),T(()=>s.removeEventListener("change",g))}const d=()=>{const s=n.theme??"auto";return s==="dark"||s==="auto"&&t()};return Q(()=>{const s=e.shadowRoot;if(!s)return;function g(u){const c=document.createElement("div");c.setAttribute("role","alert"),c.textContent=u,s.appendChild(c)}const m=n.providerOrigin;if(!me(m)){g(`[kai-remote] Invalid provider-origin "${m??""}". Must be an absolute https: origin, or http://localhost / http://127.0.0.1 for local dev.`);return}const w=n.src;if(!w){g('[kai-remote] Missing required "src" attribute.');return}const k=n.envelope;if(!k){g('[kai-remote] Missing required "envelope" property.');return}const l={theme:{mode:d()?"dark":"light"},locale:typeof navigator<"u"&&navigator.language||"en"},b=n.policy,v=he(e,b),p=document.createElement("div");s.appendChild(p);try{o=ue({container:p,providerOrigin:m,src:w,envelope:k,context:l,policy:v})}catch(u){const c=u instanceof Error?u.message:String(u);g(`[kai-remote] Mount failed: ${c}`),p.remove();return}T(()=>{o?.destroy(),o=void 0})}),X(()=>{const s=d()?"dark":"light";o?.updateContext({theme:{mode:s}})}),[]});
|