@kitn.ai/ui 0.25.2 → 0.27.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +17 -6
- package/bin/mcp.js +16 -3
- package/bin/route.js +23 -0
- package/bin/route.test.js +58 -0
- package/dist/{elements/chunks/Icon-b5A8hlHs.js → Icon-BnFKqqtY.js} +1 -1
- package/dist/action-icons-CBskfBMz.js +1 -0
- package/dist/arrow-down-Br0qtpsz.js +1 -0
- package/dist/arrow-left-Dj7xgE12.js +1 -0
- package/dist/artifact-CvXEm1lS.js +1 -0
- package/dist/assets/dev-5XzXYR21.js +91 -0
- package/dist/attachments-C43ZegEq.js +1 -0
- package/dist/audio-visualizer-B-79y1Tj.js +1 -0
- package/dist/badge-BpUbq8c0.js +1 -0
- package/dist/bash-InADTalH.js +1 -6
- package/dist/bell-sn17Ip9v.js +1 -0
- package/dist/{elements/chunks/button-B9okqG73.js → button-BH6rN0U-.js} +1 -1
- package/dist/card-renderer-Cb1gQmth.js +1 -0
- package/dist/card-routing-DifQgS7n.js +1 -0
- package/dist/check-DPeeMUYx.js +1 -0
- package/dist/checkbox-Dc9Yov_B.js +1 -0
- package/dist/checkbox-group-B1kDLLYk.js +1 -0
- package/dist/chevron-down-CHSWk7ZT.js +1 -0
- package/dist/chevron-right-B7l_fMgx.js +1 -0
- package/dist/choice-card-BT3c1S8g.js +1 -0
- package/dist/circle-Bb0yOpqM.js +1 -0
- package/dist/circle-check-BGZpCiz7.js +1 -0
- package/dist/circle-x-wobWkoSx.js +1 -0
- package/dist/{elements/chunks/cn-CU7UAWzk.js → cn-DN5AWfiS.js} +1 -1
- package/dist/code-block-CUQ5mtv0.js +1 -0
- package/dist/collapsible-CPJbf6FM.js +1 -0
- package/dist/components/attachment-types.d.ts +53 -1
- package/dist/components/attachments.d.ts +31 -0
- package/dist/components/audio-visualizer/fit-scale.d.ts +50 -0
- package/dist/components/audio-visualizer/index.d.ts +15 -1
- package/dist/components/audio-visualizer/variant-bar.d.ts +24 -1
- package/dist/components/card-renderer.d.ts +13 -0
- package/dist/components/card.d.ts +4 -0
- package/dist/components/chat-thread.d.ts +49 -42
- package/dist/components/code-block.d.ts +22 -0
- package/dist/components/conversation-item.d.ts +66 -1
- package/dist/components/conversation-list.d.ts +77 -0
- package/dist/components/form-widgets.d.ts +67 -2
- package/dist/components/form.d.ts +89 -0
- package/dist/components/message.d.ts +29 -0
- package/dist/components/reasoning.d.ts +6 -0
- package/dist/components/scroll-button.d.ts +11 -0
- package/dist/components/thread.d.ts +5 -0
- package/dist/components/toast.d.ts +2 -1
- package/dist/components/tool-types.d.ts +9 -0
- package/dist/components/voice-input.d.ts +8 -0
- package/dist/components/voice-output.d.ts +12 -1
- package/dist/components/workspace-shell.d.ts +87 -0
- package/dist/composer-CjngLzal.js +106 -0
- package/dist/confirm-card-DCx_A4bU.js +1 -0
- package/dist/construct-cli.es.js +1169 -0
- package/dist/context-BY8V-Nlp.js +1 -0
- package/dist/controllable-D43BKmtX.js +1 -0
- package/dist/conversation-list-D4lLU_yS.js +1 -0
- package/dist/copy-B6DO4PqB.js +1 -0
- package/dist/core-AYMC6_lb.js +12 -5874
- package/dist/{create-tween-CUzOlaMS.js → create-tween-BPzaefTp.js} +1 -1
- package/dist/{create-tween-B5Y4Im8G.js → create-tween-CnMHviKB.js} +1 -1
- package/dist/{create-tween-4z1XYLkR.js → create-tween-D1aiGZZh.js} +1 -1
- package/dist/{elements/chunks/create-tween-CUrM6D_o.js → create-tween-DUSQUKpr.js} +2 -2
- package/dist/css-M7EaDHN_.js +1 -6
- package/dist/custom-elements.json +3468 -1927
- package/dist/default-input-CucQEOqH.js +1 -0
- package/dist/define-CGGX-7Vg.js +1 -0
- package/dist/define.d.ts +4 -0
- package/dist/define.js +510 -0
- package/dist/define.server.d.ts +5 -0
- package/dist/define.server.js +506 -0
- package/dist/diagnostics/hook.d.ts +81 -0
- package/dist/diagnostics/index.d.ts +7 -0
- package/dist/diagnostics/report-request.d.ts +61 -0
- package/dist/diagnostics.d.ts +5 -0
- package/dist/diagnostics.js +209 -0
- package/dist/disclosure-CbLtajUQ.js +1 -0
- package/dist/dropdown-BwhViJFd.js +1 -0
- package/dist/elements/agent-card.js +1 -1
- package/dist/elements/artifact.js +1 -1
- package/dist/elements/attachments.js +1 -1
- package/dist/elements/audio-visualizer.js +1 -1
- package/dist/elements/autoloader.js +1 -1
- package/dist/elements/avatar.js +1 -1
- package/dist/elements/badge.js +1 -1
- package/dist/elements/button.js +1 -1
- package/dist/elements/card.js +1 -1
- package/dist/elements/cards.js +1 -1
- package/dist/elements/chain-of-thought.js +1 -1
- package/dist/elements/chat-scope-picker.js +1 -1
- package/dist/elements/chat-workspace.js +1 -1
- package/dist/elements/chat.js +1 -1
- package/dist/elements/checkbox-group.d.ts +1 -0
- package/dist/elements/checkbox-group.js +1 -0
- package/dist/elements/checkbox.d.ts +1 -0
- package/dist/elements/checkbox.js +1 -0
- package/dist/elements/checkpoint.js +1 -1
- package/dist/elements/choice.js +1 -1
- package/dist/elements/coachmark.js +1 -1
- package/dist/elements/code-block.js +1 -1
- package/dist/elements/command.js +1 -1
- package/dist/elements/compare.js +1 -1
- package/dist/elements/composer.js +1 -1
- package/dist/elements/confirm-card.js +1 -1
- package/dist/elements/context-meter.js +1 -1
- package/dist/elements/conversation-item.d.ts +1 -0
- package/dist/elements/conversation-item.js +1 -0
- package/dist/elements/conversation-list.js +1 -1
- package/dist/elements/default-input.d.ts +3 -3
- package/dist/elements/define-entry.d.ts +12 -0
- package/dist/elements/define.d.ts +27 -0
- package/dist/elements/diagnostic-events.d.ts +74 -0
- package/dist/elements/dialog.js +1 -1
- package/dist/elements/dock.d.ts +1 -0
- package/dist/elements/dock.js +243 -0
- package/dist/elements/dropdown.d.ts +1 -0
- package/dist/elements/dropdown.js +1 -0
- package/dist/elements/editable-label.js +1 -1
- package/dist/elements/element-data-types.d.ts +37 -0
- package/dist/elements/element-diagnostics.d.ts +81 -0
- package/dist/elements/embed.js +1 -1
- package/dist/elements/empty.js +1 -1
- package/dist/elements/feedback-bar.js +1 -1
- package/dist/elements/file-tree.js +1 -1
- package/dist/elements/file-upload.js +1 -1
- package/dist/elements/form.js +1 -1
- package/dist/elements/hover-card.js +1 -1
- package/dist/elements/icon.js +1 -1
- package/dist/elements/image.js +1 -1
- package/dist/elements/input.js +1 -1
- package/dist/elements/kbd.js +1 -1
- package/dist/elements/link-preview.js +1 -1
- package/dist/elements/loader.js +1 -1
- package/dist/elements/markdown.js +1 -1
- package/dist/elements/menu.js +1 -1
- package/dist/elements/message-skills.js +1 -1
- package/dist/elements/message.js +1 -1
- package/dist/elements/model-switcher.js +1 -1
- package/dist/elements/nav.js +1 -1
- package/dist/elements/notice.js +1 -1
- package/dist/elements/pane-grid.d.ts +1 -0
- package/dist/elements/pane-grid.js +1 -0
- package/dist/elements/pane-group.js +1 -1
- package/dist/elements/pane.js +1 -1
- package/dist/elements/popover.js +1 -1
- package/dist/elements/progress-bar.js +1 -1
- package/dist/elements/prompt-dock.js +1 -1
- package/dist/elements/prompt-input.js +1 -1
- package/dist/elements/prompt-suggestions.js +1 -1
- package/dist/elements/radio-group.d.ts +1 -0
- package/dist/elements/radio-group.js +1 -0
- package/dist/elements/reasoning.js +1 -1
- package/dist/elements/register.d.ts +2 -0
- package/dist/elements/remote.js +1 -1
- package/dist/elements/resizable.js +1 -1
- package/dist/elements/response-stream.js +3 -3
- package/dist/elements/screen.js +1 -1
- package/dist/elements/scroll-area.js +1 -1
- package/dist/elements/scroll-button.js +1 -1
- package/dist/elements/search.js +1 -1
- package/dist/elements/segmented.js +1 -1
- package/dist/elements/select.d.ts +1 -0
- package/dist/elements/select.js +1 -0
- package/dist/elements/separator.js +1 -1
- package/dist/elements/setting-item.js +1 -1
- package/dist/elements/settings-group.js +1 -1
- package/dist/elements/skeleton.js +1 -1
- package/dist/elements/slider.d.ts +1 -0
- package/dist/elements/slider.js +1 -0
- package/dist/elements/slots.d.ts +36 -4
- package/dist/elements/source.js +1 -1
- package/dist/elements/status.js +1 -1
- package/dist/elements/switch.js +1 -1
- package/dist/elements/tabs.js +1 -1
- package/dist/elements/tasks.js +1 -1
- package/dist/elements/text-shimmer.js +1 -1
- package/dist/elements/thinking-bar.js +1 -1
- package/dist/elements/thread.js +1 -1
- package/dist/elements/toast.js +1 -1
- package/dist/elements/tool.js +1 -1
- package/dist/elements/tooltip.js +1 -1
- package/dist/elements/voice-input.js +1 -1
- package/dist/elements/voice-output.js +1 -1
- package/dist/elements.d.ts +589 -167
- package/dist/{elements/chunks/ellipsis-CVxqfsDZ.js → ellipsis-DFr4Vqr3.js} +1 -1
- package/dist/embed-5s_vU4J0.js +1 -0
- package/dist/engine-javascript-vq0WuIJl.js +14 -2516
- package/dist/{elements/chunks/external-link-DG2sRdQL.js → external-link-u9d85ORQ.js} +1 -1
- package/dist/file-text-CX7_x42o.js +1 -0
- package/dist/{elements/chunks/file-tree-yGWNK0Js.js → file-tree-D3kBjXI5.js} +1 -1
- package/dist/folder-V-YdIL8f.js +1 -0
- package/dist/form-BRNUMCN2.js +1 -0
- package/dist/github-dark-dimmed-DUshB20C.js +1 -4
- package/dist/github-light-JYsPkUQd.js +1 -4
- package/dist/hover-card-DaeiYrTA.js +1 -0
- package/dist/html-CPZ3oZQ7.js +1 -10
- package/dist/icon-BpixdZNq.js +1 -0
- package/dist/{elements/chunks/index-BCRhi84a.js → index-xu_pdcPi.js} +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.js +8473 -6470
- package/dist/index.server.js +6495 -4958
- package/dist/info-8mFsIjS3.js +1 -0
- package/dist/input-d1Yuu-hz.js +1 -0
- package/dist/javascript-C25yR2R2.js +1 -6
- package/dist/json-DxJze_jm.js +1 -6
- package/dist/kai-provider.es.js +40 -40
- package/dist/kai.es.js +1 -1
- package/dist/kbd-961zMPFB.js +1 -0
- package/dist/link-DlZZBGaR.js +1 -0
- package/dist/{elements/chunks/link-preview-Cf5KOP-i.js → link-preview-DIIbV2Sd.js} +1 -1
- package/dist/loader-YQszHFaW.js +1 -0
- package/dist/{elements/chunks/markdown-DbozyYqa.js → markdown-CVk1MPsj.js} +1 -1
- package/dist/mcp.es.js +3873 -544
- package/dist/message-CwKVEdZg.js +1 -0
- package/dist/message-DS8lzHc1.js +1 -0
- package/dist/message-circle-Xf8Q-vZp.js +1 -0
- package/dist/message-square-Cxnwgkns.js +1 -0
- package/dist/{elements/chunks/minimize-2-SegJ_oku.js → minimize-2-UEZmP2QT.js} +1 -1
- package/dist/{elements/chunks/model-switcher-D7JrFFHp.js → model-switcher-Kk1jEQ5t.js} +1 -1
- package/dist/{elements/chunks/overlay-CV7z2YuX.js → overlay-C1od6LOz.js} +1 -1
- package/dist/panel-right-ryET0yyn.js +1 -0
- package/dist/paperclip-BDNoZFJP.js +1 -0
- package/dist/play-OFIvYXUQ.js +1 -0
- package/dist/primitives/card-data-types.d.ts +49 -0
- package/dist/primitives/card-routing.d.ts +1 -33
- package/dist/primitives/card-validate.d.ts +2 -2
- package/dist/primitives/chat-config.d.ts +29 -2
- package/dist/primitives/field-mask.d.ts +96 -0
- package/dist/primitives/field-semantics.d.ts +36 -0
- package/dist/primitives/input-mask.d.ts +46 -0
- package/dist/primitives/url-scheme-policy.d.ts +34 -0
- package/dist/primitives/use-resize-observer.d.ts +23 -0
- package/dist/primitives/use-speech-recognition.d.ts +8 -0
- package/dist/primitives/use-text-stream.d.ts +5 -0
- package/dist/progress-bar-BvYX0aoy.js +1 -0
- package/dist/prompt-suggestion-BRFu2lcu.js +1 -0
- package/dist/radio-DcL23cNJ.js +1 -0
- package/dist/react/index.d.ts +306 -283
- package/dist/react.js +309 -247
- package/dist/reasoning-Cackq4Rh.js +1 -0
- package/dist/register-impl-C7rENvPK.js +424 -0
- package/dist/{elements/chunks/resizable-Dpzjlvp4.js → resizable-Cp9HUYih.js} +1 -1
- package/dist/rotate-ccw-0DLRDHH5.js +1 -0
- package/dist/rotate-cw-DOB9IGcU.js +1 -0
- package/dist/schemas/form.schema.json +21 -1
- package/dist/schemas/index.d.ts +1 -1
- package/dist/schemas/tool-defs.d.ts +45 -0
- package/dist/schemas.js +398 -305
- package/dist/scroll-area-emVmWP4K.js +1 -0
- package/dist/scroll-button-CeP_gv1x.js +1 -0
- package/dist/select-CWmu00tS.js +1 -0
- package/dist/{elements/chunks/separator-DH2r_ZSZ.js → separator-CE6vly6z.js} +1 -1
- package/dist/{elements/chunks/settings-BFMOd6yB.js → settings-CE-78SvZ.js} +1 -1
- package/dist/{elements/chunks/settings-group-B3VZKIcz.js → settings-group-ZFWNxFQR.js} +1 -1
- package/dist/{elements/chunks/skeleton-N8BuWYmf.js → skeleton-BebdP4mf.js} +1 -1
- package/dist/slider-BAKRYUlz.js +1 -0
- package/dist/slots-DaNjX0rc.js +1 -0
- package/dist/{solid-BMuDmFo_.js → solid-BE5ui6sy.js} +10672 -8116
- package/dist/{solid-CGYNdLRR.js → solid-DFhsce3O.js} +8137 -6056
- package/dist/solid.d.ts +15 -0
- package/dist/solid.js +248 -235
- package/dist/solid.server.js +248 -235
- package/dist/source-B0FlguSx.js +1 -0
- package/dist/star-CBMZvLuN.js +1 -0
- package/dist/state/index.d.ts +5 -1
- package/dist/state/mock.d.ts +32 -2
- package/dist/state/persistence.d.ts +51 -0
- package/dist/state/stream.d.ts +50 -0
- package/dist/state/threads.d.ts +71 -0
- package/dist/state.js +297 -172
- package/dist/store-7eoadydQ.js +1 -0
- package/dist/svelte--5p79yCD.js +1 -15
- package/dist/switch-CViARZCy.js +1 -0
- package/dist/tasks-card-MjCcOhR_.js +1 -0
- package/dist/text-shimmer-DKlwRF2G.js +1 -0
- package/dist/textarea-3ay2Me2-.js +1 -0
- package/dist/theme.tokens.css +82 -13
- package/dist/{elements/chunks/thumbs-up-DQe0hvkZ.js → thumbs-up-DQcu2HMO.js} +1 -1
- package/dist/toast-store-C6yKOhbk.js +1 -0
- package/dist/{elements/chunks/tool-C1YtxwPu.js → tool-BCYNlfKy.js} +1 -1
- package/dist/{elements/chunks/tooltip-BqwnFWhn.js → tooltip-05zI4hjs.js} +1 -1
- package/dist/trash-2-BR1RxGky.js +1 -0
- package/dist/{elements/chunks/triangle-alert-B6or7F5u.js → triangle-alert-DHohDOCy.js} +1 -1
- package/dist/tsx-B8rCNbgL.js +1 -6
- package/dist/types.d.ts +4 -2
- package/dist/typescript-RycA9KXf.js +1 -6
- package/dist/ui/checkbox-group.d.ts +83 -0
- package/dist/ui/checkbox.d.ts +40 -0
- package/dist/ui/dock.d.ts +131 -0
- package/dist/ui/hover-card.d.ts +44 -0
- package/dist/ui/icon.d.ts +3 -0
- package/dist/ui/input.d.ts +48 -2
- package/dist/ui/radio.d.ts +85 -0
- package/dist/ui/select.d.ts +71 -0
- package/dist/ui/slider.d.ts +65 -0
- package/dist/ui/switch.d.ts +9 -2
- package/dist/upload-BbGW6A_u.js +1 -0
- package/dist/url-scheme-policy-DHpoTJwB.js +1 -0
- package/dist/use-card-resolution-CJW4grFa.js +1 -0
- package/dist/{variant-aurora-DwSOfraQ.js → variant-aurora-BUOVgPOB.js} +27 -27
- package/dist/{variant-aurora-wKvAQ5wp.js → variant-aurora-CUsUJvFI.js} +28 -28
- package/dist/{variant-aurora-XEkPT0_z.js → variant-aurora-CW2i4bfr.js} +2 -2
- package/dist/{elements/chunks/variant-aurora-QXTZPyST.js → variant-aurora-xiMPty8f.js} +2 -2
- package/dist/variant-custom-BQtOnmeO.js +1 -0
- package/dist/{variant-custom-BhS9wIpU.js → variant-custom-CAm9L-E5.js} +65 -65
- package/dist/{variant-custom-eFIg2XWQ.js → variant-custom-CAnzzppW.js} +40 -40
- package/dist/variant-custom-D91HjAKz.js +1 -0
- package/dist/{variant-wave-CUWGx9Bn.js → variant-wave-Ca1Ls4_y.js} +21 -21
- package/dist/{variant-wave-CbVsmgwT.js → variant-wave-CxX39DKd.js} +25 -25
- package/dist/{variant-wave-BwzrHD1s.js → variant-wave-DYyzIIZv.js} +2 -2
- package/dist/{elements/chunks/variant-wave-DDCwhLas.js → variant-wave-uY5crU_K.js} +2 -2
- package/dist/vue-BmIZj4XD.js +1 -33
- package/dist/wire/chunk.d.ts +47 -0
- package/dist/wire/diagnostics.d.ts +575 -0
- package/dist/wire/encode-probe.d.ts +70 -0
- package/dist/wire/encode.d.ts +24 -0
- package/dist/wire/index.d.ts +2 -0
- package/dist/wire/sse.d.ts +10 -2
- package/dist/wire.js +917 -480
- package/dist/x-C5m1JFgi.js +1 -0
- package/frameworks/react/index.tsx +325 -108
- package/llms-full.txt +1354 -82
- package/llms.txt +6 -3
- package/package.json +39 -6
- package/src/agent-tooling/archetypes.ts +41 -9
- package/src/agent-tooling/catalog/README.md +676 -0
- package/src/agent-tooling/catalog/catalog-types.ts +231 -0
- package/src/agent-tooling/catalog/fabrications.ts +96 -0
- package/src/agent-tooling/catalog/invariants.ts +284 -0
- package/src/agent-tooling/catalog/labs-titles.ts +114 -0
- package/src/agent-tooling/catalog/scenarios.ts +87 -0
- package/src/agent-tooling/catalog/surfaces.ts +347 -0
- package/src/agent-tooling/construct/cli-entry.ts +8 -0
- package/src/agent-tooling/construct/cli.ts +131 -0
- package/src/agent-tooling/construct/codegen.ts +1353 -0
- package/src/agent-tooling/construct/construct.v1.schema.json +250 -0
- package/src/agent-tooling/construct/dev.ts +148 -0
- package/src/agent-tooling/construct/fixtures/demo-widget.construct.json +7 -0
- package/src/agent-tooling/construct/fixtures/ops-console.construct.json +44 -0
- package/src/agent-tooling/construct/fixtures/owner-widget.construct.json +23 -0
- package/src/agent-tooling/construct/schema.ts +371 -0
- package/src/agent-tooling/integrations/anthropic.ts +7 -1
- package/src/agent-tooling/integrations/cloudflare.ts +43 -2
- package/src/agent-tooling/integrations/langgraph.ts +7 -1
- package/src/agent-tooling/integrations/mastra.ts +7 -1
- package/src/agent-tooling/integrations/mock.ts +92 -17
- package/src/agent-tooling/integrations/ollama.ts +7 -1
- package/src/agent-tooling/integrations/openai.ts +7 -1
- package/src/agent-tooling/integrations/openrouter.ts +7 -1
- package/src/agent-tooling/integrations/pi.ts +56 -1
- package/src/agent-tooling/integrations/vercel-ai-sdk.ts +7 -1
- package/src/agent-tooling/mcp/css-raw.d.ts +12 -0
- package/src/agent-tooling/mcp/manifest.ts +100 -1
- package/src/agent-tooling/mcp/server.ts +63 -6
- package/src/agent-tooling/mcp/tools/construct.ts +130 -0
- package/src/agent-tooling/mcp/tools/debug.ts +126 -4
- package/src/agent-tooling/mcp/tools/reference.ts +542 -5
- package/src/agent-tooling/mcp/tools/scaffold.ts +1834 -307
- package/src/agent-tooling/mcp/tools/theme.ts +146 -30
- package/src/agent-tooling/mcp/validate-args.ts +141 -0
- package/src/agent-tooling/recipes/composed-thread.ts +714 -0
- package/src/agent-tooling/recipes/index.ts +22 -0
- package/src/agent-tooling/recipes/types.ts +32 -0
- package/src/agent-tooling/registry.ts +24 -7
- package/src/agent-tooling/route-emit.ts +26 -2
- package/src/components/attachment-types.ts +54 -1
- package/src/components/attachments.tsx +169 -22
- package/src/components/audio-visualizer/fit-scale.ts +112 -0
- package/src/components/audio-visualizer/index.tsx +80 -3
- package/src/components/audio-visualizer/variant-aurora.tsx +10 -4
- package/src/components/audio-visualizer/variant-bar.tsx +38 -6
- package/src/components/audio-visualizer/variant-custom.tsx +8 -2
- package/src/components/audio-visualizer/variant-grid.tsx +16 -11
- package/src/components/audio-visualizer/variant-radial.tsx +15 -10
- package/src/components/audio-visualizer/variant-wave.tsx +7 -2
- package/src/components/card-renderer.tsx +39 -8
- package/src/components/card.tsx +10 -2
- package/src/components/chat-container.tsx +4 -1
- package/src/components/chat-scope-picker.tsx +2 -2
- package/src/components/chat-thread.tsx +105 -13
- package/src/components/choice-card.tsx +102 -37
- package/src/components/coachmark.tsx +1 -1
- package/src/components/code-block.tsx +81 -5
- package/src/components/composer.tsx +89 -8
- package/src/components/confirm-card.tsx +20 -4
- package/src/components/conversation-item.tsx +138 -4
- package/src/components/conversation-list.tsx +230 -15
- package/src/components/embed.tsx +4 -0
- package/src/components/empty.tsx +14 -3
- package/src/components/file-tree.tsx +5 -1
- package/src/components/form-widgets.tsx +257 -195
- package/src/components/form.tsx +336 -21
- package/src/components/loader.tsx +12 -5
- package/src/components/message-skills.tsx +1 -1
- package/src/components/message.tsx +142 -12
- package/src/components/prompt-input.tsx +7 -1
- package/src/components/prompt-suggestion.tsx +4 -1
- package/src/components/reasoning.tsx +30 -3
- package/src/components/response-compare.tsx +2 -2
- package/src/components/response-stream.tsx +13 -7
- package/src/components/screen.tsx +5 -0
- package/src/components/scroll-button.tsx +63 -4
- package/src/components/source.tsx +6 -1
- package/src/components/tasks-card.tsx +58 -16
- package/src/components/thread.tsx +10 -1
- package/src/components/toast.tsx +11 -5
- package/src/components/tool-types.ts +9 -0
- package/src/components/voice-input.tsx +35 -3
- package/src/components/voice-output.tsx +46 -6
- package/src/components/workspace-shell.tsx +285 -0
- package/src/diagnostics/hook.ts +352 -0
- package/src/diagnostics/index.ts +82 -0
- package/src/diagnostics/report-request.ts +296 -0
- package/src/elements/attachments.tsx +9 -8
- package/src/elements/audio-visualizer.tsx +48 -4
- package/src/elements/chat-workspace.tsx +159 -287
- package/src/elements/chat.tsx +31 -10
- package/src/elements/checkbox-group.tsx +164 -0
- package/src/elements/checkbox.tsx +134 -0
- package/src/elements/code-block.tsx +19 -1
- package/src/elements/command.tsx +4 -1
- package/src/elements/compiled.css +1 -1
- package/src/elements/composer.tsx +12 -1
- package/src/elements/conversation-item.tsx +120 -0
- package/src/elements/conversation-list.tsx +60 -11
- package/src/elements/default-input.tsx +5 -5
- package/src/elements/define-entry.ts +12 -0
- package/src/elements/define.tsx +168 -8
- package/src/elements/diagnostic-events.ts +114 -0
- package/src/elements/dialog.tsx +47 -0
- package/src/elements/disclosure.ts +34 -12
- package/src/elements/dock.tsx +215 -0
- package/src/elements/dropdown.tsx +123 -0
- package/src/elements/element-data-types.ts +40 -0
- package/src/elements/element-diagnostics.ts +392 -0
- package/src/elements/element-manifest.json +36 -0
- package/src/elements/element-meta.json +1483 -560
- package/src/elements/element-nonscalar.json +185 -0
- package/src/elements/element-types.d.ts +589 -167
- package/src/elements/feedback-bar.tsx +5 -0
- package/src/elements/icon-names.json +29 -0
- package/src/elements/input.tsx +312 -23
- package/src/elements/menu.tsx +13 -0
- package/src/elements/message.tsx +2 -0
- package/src/elements/pane-grid.tsx +111 -0
- package/src/elements/prompt-dock.tsx +2 -1
- package/src/elements/prompt-input.tsx +16 -10
- package/src/elements/radio-group.tsx +129 -0
- package/src/elements/register-impl.ts +52 -0
- package/src/elements/register.ts +28 -0
- package/src/elements/resizable.tsx +52 -25
- package/src/elements/scroll-button.tsx +59 -6
- package/src/elements/select.tsx +165 -0
- package/src/elements/slider.tsx +171 -0
- package/src/elements/slots.ts +108 -13
- package/src/elements/styles.css +119 -9
- package/src/elements/thinking-bar.tsx +16 -7
- package/src/elements/thread.tsx +2 -0
- package/src/elements/toast.tsx +17 -1
- package/src/elements/tool.tsx +26 -5
- package/src/elements/voice-input.tsx +11 -2
- package/src/elements/voice-output.tsx +16 -3
- package/src/index.ts +4 -1
- package/src/primitives/card-data-types.ts +49 -0
- package/src/primitives/card-host.tsx +4 -2
- package/src/primitives/card-routing.ts +7 -56
- package/src/primitives/card-schemas/form.schema.json +21 -1
- package/src/primitives/card-validate.ts +10 -2
- package/src/primitives/chat-config.tsx +33 -6
- package/src/primitives/field-mask.ts +256 -0
- package/src/primitives/field-semantics.ts +115 -0
- package/src/primitives/input-mask.ts +853 -0
- package/src/primitives/toast-store.ts +66 -4
- package/src/primitives/url-scheme-policy.ts +70 -0
- package/src/primitives/use-resize-observer.ts +33 -0
- package/src/primitives/use-speech-recognition.ts +12 -1
- package/src/primitives/use-stick-to-bottom.ts +34 -2
- package/src/primitives/use-text-stream.ts +33 -2
- package/src/remote/provider-runtime.ts +6 -3
- package/src/schemas/index.ts +1 -0
- package/src/schemas/tool-defs.ts +307 -6
- package/src/solid.ts +15 -0
- package/src/state/index.ts +13 -1
- package/src/state/mock.ts +92 -6
- package/src/state/persistence.ts +180 -0
- package/src/state/stream.ts +71 -4
- package/src/state/threads.ts +142 -0
- package/src/types.ts +4 -2
- package/src/ui/agent-card.tsx +2 -2
- package/src/ui/avatar.tsx +1 -1
- package/src/ui/checkbox-group.tsx +153 -0
- package/src/ui/checkbox.tsx +63 -0
- package/src/ui/dialog.tsx +6 -0
- package/src/ui/dock.tsx +584 -0
- package/src/ui/dropdown.tsx +67 -23
- package/src/ui/hover-card.tsx +156 -6
- package/src/ui/icon.tsx +53 -0
- package/src/ui/input.tsx +275 -16
- package/src/ui/kbd.tsx +1 -1
- package/src/ui/nav.tsx +1 -1
- package/src/ui/pane-group.tsx +2 -2
- package/src/ui/radio.tsx +150 -0
- package/src/ui/resizable.tsx +11 -0
- package/src/ui/select.tsx +168 -0
- package/src/ui/slider.tsx +178 -0
- package/src/ui/switch.tsx +49 -18
- package/src/utils/cn.ts +11 -5
- package/src/wire/chunk.ts +47 -0
- package/src/wire/consume.ts +185 -26
- package/src/wire/diagnostics.ts +727 -0
- package/src/wire/encode-probe.ts +214 -0
- package/src/wire/encode.ts +267 -14
- package/src/wire/formats/anthropic.ts +8 -1
- package/src/wire/formats/openai.ts +5 -0
- package/src/wire/index.ts +22 -0
- package/src/wire/read.ts +250 -6
- package/src/wire/sse.ts +16 -3
- package/theme.css +84 -13
- package/dist/elements/chunks/action-icons-DW9muWrY.js +0 -1
- package/dist/elements/chunks/arrow-left-iJVnQmxA.js +0 -1
- package/dist/elements/chunks/artifact-BSuPYFHY.js +0 -1
- package/dist/elements/chunks/attachments-CL6TaqIb.js +0 -1
- package/dist/elements/chunks/audio-visualizer-BuUqQmaO.js +0 -1
- package/dist/elements/chunks/badge-TIMiJFKc.js +0 -1
- package/dist/elements/chunks/bash-InADTalH.js +0 -1
- package/dist/elements/chunks/card-renderer-CSoTL_e1.js +0 -1
- package/dist/elements/chunks/card-routing-BK09BdmL.js +0 -1
- package/dist/elements/chunks/chat-thread-DxoKaStk.js +0 -1
- package/dist/elements/chunks/check-MdLzbxrm.js +0 -1
- package/dist/elements/chunks/chevron-down-MK7IzDqe.js +0 -1
- package/dist/elements/chunks/chevron-right-C5jXhmtV.js +0 -1
- package/dist/elements/chunks/choice-card-CGMc3kek.js +0 -1
- package/dist/elements/chunks/circle-BG7VkPep.js +0 -1
- package/dist/elements/chunks/circle-check-GqvO2UBs.js +0 -1
- package/dist/elements/chunks/circle-x-mhH7pOK2.js +0 -1
- package/dist/elements/chunks/code-block-ClhQO9RW.js +0 -1
- package/dist/elements/chunks/collapsible-DBcBkFPh.js +0 -1
- package/dist/elements/chunks/composer-CZZmtYOT.js +0 -69
- package/dist/elements/chunks/confirm-card-BWjf2-xo.js +0 -1
- package/dist/elements/chunks/context-hKjNqiyQ.js +0 -1
- package/dist/elements/chunks/conversation-list-CsGJjSKG.js +0 -1
- package/dist/elements/chunks/core-AYMC6_lb.js +0 -12
- package/dist/elements/chunks/css-M7EaDHN_.js +0 -1
- package/dist/elements/chunks/default-input-B1Mem5wu.js +0 -1
- package/dist/elements/chunks/define-B_tXMYRm.js +0 -1
- package/dist/elements/chunks/disclosure-DAoYOKew.js +0 -1
- package/dist/elements/chunks/download-DnCyWFJE.js +0 -1
- package/dist/elements/chunks/dropdown-CmNna5lT.js +0 -1
- package/dist/elements/chunks/embed-CjAD2jSi.js +0 -1
- package/dist/elements/chunks/engine-javascript-vq0WuIJl.js +0 -141
- package/dist/elements/chunks/file-text-D0J9F6M7.js +0 -1
- package/dist/elements/chunks/folder-NV1pi_ud.js +0 -1
- package/dist/elements/chunks/form-Cp8Y00Wn.js +0 -1
- package/dist/elements/chunks/github-dark-dimmed-DUshB20C.js +0 -1
- package/dist/elements/chunks/github-light-JYsPkUQd.js +0 -1
- package/dist/elements/chunks/hover-card-6KtXpLwT.js +0 -1
- package/dist/elements/chunks/html-CPZ3oZQ7.js +0 -1
- package/dist/elements/chunks/icon-97R8SR2p.js +0 -1
- package/dist/elements/chunks/info-C8r5Q6cc.js +0 -1
- package/dist/elements/chunks/input-DrseEjhp.js +0 -1
- package/dist/elements/chunks/javascript-C25yR2R2.js +0 -1
- package/dist/elements/chunks/json-DxJze_jm.js +0 -1
- package/dist/elements/chunks/kbd-OGJDUT-O.js +0 -1
- package/dist/elements/chunks/link-BdsfLB7b.js +0 -1
- package/dist/elements/chunks/loader-B5QzK_8_.js +0 -1
- package/dist/elements/chunks/message-CE4k-qaj.js +0 -1
- package/dist/elements/chunks/message-DtXKPqiR.js +0 -1
- package/dist/elements/chunks/message-square-C9ovmtOo.js +0 -1
- package/dist/elements/chunks/paperclip-Bg0ITU3b.js +0 -1
- package/dist/elements/chunks/progress-bar-D1_rzt6N.js +0 -1
- package/dist/elements/chunks/prompt-suggestion-D5Sm8xF1.js +0 -1
- package/dist/elements/chunks/reasoning-BrxQfpfI.js +0 -1
- package/dist/elements/chunks/rotate-cw-DzVDJOA1.js +0 -1
- package/dist/elements/chunks/scroll-area-93A1bbeG.js +0 -1
- package/dist/elements/chunks/scroll-button-CrTo7wm4.js +0 -1
- package/dist/elements/chunks/share-DgNbkJKY.js +0 -1
- package/dist/elements/chunks/slots-CIw9RlAe.js +0 -1
- package/dist/elements/chunks/source-w9V0NnBn.js +0 -1
- package/dist/elements/chunks/star-DHvACxtm.js +0 -1
- package/dist/elements/chunks/store-HIPGhNz9.js +0 -1
- package/dist/elements/chunks/svelte--5p79yCD.js +0 -1
- package/dist/elements/chunks/tasks-card-lPxoodlA.js +0 -1
- package/dist/elements/chunks/text-shimmer-BY_rI3s5.js +0 -1
- package/dist/elements/chunks/textarea-DPfuhswM.js +0 -1
- package/dist/elements/chunks/toast-store-VUZZBhzH.js +0 -1
- package/dist/elements/chunks/tsx-B8rCNbgL.js +0 -1
- package/dist/elements/chunks/typescript-RycA9KXf.js +0 -1
- package/dist/elements/chunks/use-card-resolution-DJg32jGH.js +0 -1
- package/dist/elements/chunks/variant-custom-D5ZlmziF.js +0 -1
- package/dist/elements/chunks/video-Bb86fVYI.js +0 -1
- package/dist/elements/chunks/vue-BmIZj4XD.js +0 -1
- package/dist/elements/chunks/x-BOhjBeOd.js +0 -1
- package/dist/llms/llms-full.txt +0 -2834
- package/dist/llms/llms.txt +0 -156
- package/dist/primitives/card-validate-generator.testlib.d.ts +0 -20
- package/dist/register-impl-DGmGzrEM.js +0 -145
- package/dist/ui/stat.d.ts +0 -16
- package/dist/variant-custom-MkTNTycd.js +0 -1
- package/src/primitives/card-validate-generator.testlib.ts +0 -38
- package/src/ui/stat.tsx +0 -41
- /package/dist/{elements/chunks/card-tags-D8lZ-C_U.js → card-tags-D8lZ-C_U.js} +0 -0
- /package/dist/{elements/chunks/link-preview-DNILK391.js → link-preview-DNILK391.js} +0 -0
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
import{c as d,w as U,g as Y,j as W,z as B,u as H,d as p,i as v,m as _,S as C,a as V,H as q,l as E,t as f,e as j,f as K,v as x}from"../define-CGGX-7Vg.js";import{x as G}from"../x-C5m1JFgi.js";import{m as J}from"../message-circle-Xf8Q-vZp.js";import{w as Q}from"../disclosure-CbLtajUQ.js";var Z=f(`<style>
|
|
2
|
+
:host { display: contents; }
|
|
3
|
+
|
|
4
|
+
[data-kai-dock] {
|
|
5
|
+
position: fixed;
|
|
6
|
+
z-index: var(--kai-dock-z, 1000);
|
|
7
|
+
display: flex;
|
|
8
|
+
gap: var(--kai-dock-gap, 0.85rem);
|
|
9
|
+
/* Only a positioning frame: it must not swallow clicks on the page it floats
|
|
10
|
+
over. The launcher and the open panel opt back in. */
|
|
11
|
+
pointer-events: none;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
/* Logical insets throughout, so an RTL page docks on the other side for free.
|
|
15
|
+
column-reverse for the bottom corners keeps the LAUNCHER FIRST IN DOM ORDER --
|
|
16
|
+
Tab reaches the control before the panel content -- while painting it below. */
|
|
17
|
+
[data-kai-dock][data-position^="bottom"] {
|
|
18
|
+
flex-direction: column-reverse;
|
|
19
|
+
inset-block-end: var(--kai-dock-inset, 1.5rem);
|
|
20
|
+
}
|
|
21
|
+
[data-kai-dock][data-position^="top"] {
|
|
22
|
+
flex-direction: column;
|
|
23
|
+
inset-block-start: var(--kai-dock-inset, 1.5rem);
|
|
24
|
+
}
|
|
25
|
+
[data-kai-dock][data-position$="end"] {
|
|
26
|
+
inset-inline-end: var(--kai-dock-inset, 1.5rem);
|
|
27
|
+
align-items: flex-end;
|
|
28
|
+
}
|
|
29
|
+
[data-kai-dock][data-position$="start"] {
|
|
30
|
+
inset-inline-start: var(--kai-dock-inset, 1.5rem);
|
|
31
|
+
align-items: flex-start;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
[data-kai-dock] [part="launcher"] {
|
|
35
|
+
pointer-events: auto;
|
|
36
|
+
position: relative;
|
|
37
|
+
/* ABOVE the panel, always. At <=480px the panel goes fixed/inset:0 and it comes
|
|
38
|
+
after the launcher in DOM order, so at z-index:auto it painted OVER the launcher
|
|
39
|
+
and a touch user lost every pointer route to closing. Both reference
|
|
40
|
+
implementations stacked the launcher over the panel for the same reason. The
|
|
41
|
+
launcher itself is now HIDDEN while the panel is open at that width (see the
|
|
42
|
+
<=480px block below) in favour of the in-panel [part="close"] X, but this
|
|
43
|
+
z-index still matters for the moment between "open" landing and the panel's
|
|
44
|
+
own transition finishing, and for any consumer CSS that reintroduces the
|
|
45
|
+
launcher there. */
|
|
46
|
+
z-index: 1;
|
|
47
|
+
flex: none;
|
|
48
|
+
display: inline-flex;
|
|
49
|
+
align-items: center;
|
|
50
|
+
justify-content: center;
|
|
51
|
+
gap: 0.5rem;
|
|
52
|
+
/* The size token is the BLOCK size and the inline MINIMUM, not a fixed square. An
|
|
53
|
+
icon-only launcher is still a perfect disc (the icon plus padding is narrower
|
|
54
|
+
than the minimum), but a slotted TEXT label \u2014 the reference app's "Support"
|
|
55
|
+
pill \u2014 widens the button instead of overflowing it. */
|
|
56
|
+
inline-size: auto;
|
|
57
|
+
min-inline-size: var(--kai-dock-launcher-size, 56px);
|
|
58
|
+
block-size: var(--kai-dock-launcher-size, 56px);
|
|
59
|
+
padding-block: 0;
|
|
60
|
+
padding-inline: 0.9rem;
|
|
61
|
+
white-space: nowrap;
|
|
62
|
+
border: 0;
|
|
63
|
+
border-radius: 9999px;
|
|
64
|
+
background: var(--color-primary);
|
|
65
|
+
color: var(--color-primary-foreground);
|
|
66
|
+
box-shadow: 0 10px 25px -6px rgb(0 0 0 / 0.35);
|
|
67
|
+
cursor: pointer;
|
|
68
|
+
transition: transform 150ms ease, box-shadow 150ms ease;
|
|
69
|
+
}
|
|
70
|
+
[data-kai-dock] [part="launcher"]:hover:not(:disabled) { transform: translateY(-1px); }
|
|
71
|
+
[data-kai-dock] [part="launcher"]:focus-visible { outline: 2px solid var(--color-ring); outline-offset: 2px; }
|
|
72
|
+
[data-kai-dock] [part="launcher"]:disabled { opacity: 0.55; cursor: not-allowed; }
|
|
73
|
+
|
|
74
|
+
/* The mobile-only close affordance rendered INSIDE the panel. Hidden by default and
|
|
75
|
+
only switched on inside the <=480px media block below, alongside the rule that
|
|
76
|
+
hides the launcher while the panel is open at that width \u2014 same query drives both,
|
|
77
|
+
CSS-only, no JS viewport logic. Absolutely positioned against the panel, which is
|
|
78
|
+
the panel's own containing block once the narrow-viewport rule below sets it to
|
|
79
|
+
position: fixed.
|
|
80
|
+
|
|
81
|
+
The inset is a CONSUMER-OVERRIDABLE TOKEN, same idiom as every other geometry
|
|
82
|
+
value in this file (--kai-dock-width and friends). The dock is content-agnostic \u2014
|
|
83
|
+
it never reads what is slotted into the panel \u2014 so it cannot know whether that
|
|
84
|
+
content renders its own trailing controls (a ChatThread header-end slot with
|
|
85
|
+
share/settings icons, say) in the same top-right corner.
|
|
86
|
+
|
|
87
|
+
The mobile block below reserves a BAND of the panel's own padding above whatever
|
|
88
|
+
is slotted, sized to this button's own footprint, so nothing paints under this X
|
|
89
|
+
by default -- verified fix (round 1) against a real ChatThread header-end slot
|
|
90
|
+
colliding with it at 375px. Owner feedback on the real widget (round 2): for a
|
|
91
|
+
construct with only a title in the header, that band read as a dead empty strip
|
|
92
|
+
with the X floating alone in it -- "that doesn't look like the empty component
|
|
93
|
+
either, lets do better." The actual fix composes instead of reserving space:
|
|
94
|
+
ChatThread now has its own headerEndContent escape hatch (see its prop doc) so a
|
|
95
|
+
caller puts the close control INSIDE the header row, sharing it with the title --
|
|
96
|
+
zero collision by construction, no band needed. hideClose on this component (see
|
|
97
|
+
its prop doc) then suppresses this built-in X for exactly that case, and the
|
|
98
|
+
band above is scoped to :not([data-hide-close]) so it comes off ONLY there --
|
|
99
|
+
every other consumer (anyone who hasn't opted into hideClose, including a
|
|
100
|
+
hand-authored dock with real header-end content) keeps the band, same as round 1
|
|
101
|
+
shipped, so the collision it fixed stays fixed for them. What remains here for
|
|
102
|
+
that default case is a plain absolute overlay, top-right of the panel, with
|
|
103
|
+
these consumer-overridable inset tokens for the rare case it should deliberately
|
|
104
|
+
sit in front of something (e.g. a single small badge). */
|
|
105
|
+
[data-kai-dock] [part="close"] {
|
|
106
|
+
display: none;
|
|
107
|
+
position: absolute;
|
|
108
|
+
inset-block-start: var(--kai-dock-close-inset-block, 0.75rem);
|
|
109
|
+
inset-inline-end: var(--kai-dock-close-inset-inline, 0.75rem);
|
|
110
|
+
z-index: 1;
|
|
111
|
+
align-items: center;
|
|
112
|
+
justify-content: center;
|
|
113
|
+
inline-size: 2.25rem;
|
|
114
|
+
block-size: 2.25rem;
|
|
115
|
+
padding: 0;
|
|
116
|
+
border: 0;
|
|
117
|
+
border-radius: 9999px;
|
|
118
|
+
background: var(--color-background);
|
|
119
|
+
color: var(--color-foreground);
|
|
120
|
+
box-shadow: 0 2px 8px -2px rgb(0 0 0 / 0.3);
|
|
121
|
+
cursor: pointer;
|
|
122
|
+
}
|
|
123
|
+
[data-kai-dock] [part="close"]:hover { background: var(--color-muted, var(--color-background)); }
|
|
124
|
+
[data-kai-dock] [part="close"]:focus-visible { outline: 2px solid var(--color-ring); outline-offset: 2px; }
|
|
125
|
+
|
|
126
|
+
[data-kai-dock] [part="badge"] {
|
|
127
|
+
position: absolute;
|
|
128
|
+
inset-block-start: 3px;
|
|
129
|
+
inset-inline-end: 3px;
|
|
130
|
+
inline-size: 0.75rem;
|
|
131
|
+
block-size: 0.75rem;
|
|
132
|
+
border-radius: 9999px;
|
|
133
|
+
background: var(--color-destructive);
|
|
134
|
+
box-shadow: 0 0 0 2px var(--color-primary);
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
[data-kai-dock] [part="panel"] {
|
|
138
|
+
pointer-events: auto;
|
|
139
|
+
display: flex;
|
|
140
|
+
flex-direction: column;
|
|
141
|
+
overflow: hidden;
|
|
142
|
+
inline-size: var(--kai-dock-width, 380px);
|
|
143
|
+
block-size: var(--kai-dock-height, 600px);
|
|
144
|
+
max-inline-size: calc(100vw - 2 * var(--kai-dock-inset, 1.5rem));
|
|
145
|
+
max-block-size: calc(
|
|
146
|
+
100dvh - 2 * var(--kai-dock-inset, 1.5rem)
|
|
147
|
+
- var(--kai-dock-launcher-size, 56px) - var(--kai-dock-gap, 0.85rem)
|
|
148
|
+
);
|
|
149
|
+
border: 1px solid var(--color-border);
|
|
150
|
+
border-radius: var(--kai-dock-radius, 16px);
|
|
151
|
+
background: var(--color-background);
|
|
152
|
+
color: var(--color-foreground);
|
|
153
|
+
box-shadow: 0 20px 45px -12px rgb(0 0 0 / 0.35);
|
|
154
|
+
/* VISIBILITY IS SWITCHED, NEVER ANIMATED, and the zero duration is the whole point.
|
|
155
|
+
visibility 180ms here meant the COMPUTED value stayed hidden for about two
|
|
156
|
+
frames after opening while the inline style already said visible \u2014 and a
|
|
157
|
+
focus() into a hidden subtree is dropped silently, so focusOnOpen never landed
|
|
158
|
+
in a real browser (it worked under reduced motion, which is what made it look like
|
|
159
|
+
a focus bug rather than a paint one).
|
|
160
|
+
This rule is the CLOSING direction: hold visibility for the length of the fade so
|
|
161
|
+
the panel does not vanish mid-transition, then switch. The opening direction sets
|
|
162
|
+
the delay to 0s below, so opening is synchronous and focus has somewhere to go. */
|
|
163
|
+
transition: opacity 180ms ease, transform 180ms ease, visibility 0s linear 180ms;
|
|
164
|
+
}
|
|
165
|
+
[data-kai-dock] [part="panel"][data-expanded] {
|
|
166
|
+
transition: opacity 180ms ease, transform 180ms ease, visibility 0s linear 0s;
|
|
167
|
+
}
|
|
168
|
+
/* The panel is a flex column and the slotted surface fills it -- the one layout
|
|
169
|
+
fact both reference implementations wrote by hand (flex:1; min-height:0). Both
|
|
170
|
+
spellings are here on purpose: ::slotted covers the shadow-DOM facade, > *
|
|
171
|
+
covers a plain Solid caller, and each is inert in the other's world (a <slot>
|
|
172
|
+
is display:contents, so flex properties do nothing to it). */
|
|
173
|
+
[data-kai-dock] [part="panel"] ::slotted(*) { flex: 1 1 auto; min-block-size: 0; }
|
|
174
|
+
[data-kai-dock] [part="panel"] > * { flex: 1 1 auto; min-block-size: 0; }
|
|
175
|
+
[data-kai-dock] [part="panel"]:focus-visible { outline: 2px solid var(--color-ring); outline-offset: 2px; }
|
|
176
|
+
[data-kai-dock][data-position^="bottom"] [part="panel"][data-closed] { transform: translateY(0.5rem); }
|
|
177
|
+
[data-kai-dock][data-position^="top"] [part="panel"][data-closed] { transform: translateY(-0.5rem); }
|
|
178
|
+
|
|
179
|
+
/* Narrow viewports take the panel full-bleed. A SHIPPED DEFAULT, not a prop: both
|
|
180
|
+
references wrote this rule independently, which makes it a HOW. While the panel is
|
|
181
|
+
OPEN at this width the launcher hides and the panel's own [part="close"] X becomes
|
|
182
|
+
the pointer close route instead \u2014 a FAB floating over a full-bleed panel read as
|
|
183
|
+
wrong (owner feedback) and Escape alone strands a touch user with no visible
|
|
184
|
+
affordance at all. Closed, the launcher is unaffected: it is the panel's own
|
|
185
|
+
[data-expanded] state that gates both rules below, not the media query alone. */
|
|
186
|
+
@media (max-width: 480px) {
|
|
187
|
+
[data-kai-dock] [part="panel"] {
|
|
188
|
+
position: fixed;
|
|
189
|
+
inset: 0;
|
|
190
|
+
inline-size: auto;
|
|
191
|
+
block-size: auto;
|
|
192
|
+
max-inline-size: none;
|
|
193
|
+
max-block-size: none;
|
|
194
|
+
border: 0;
|
|
195
|
+
border-radius: 0;
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
/* Reserve a band for the built-in [part="close"] X ABOVE whatever is slotted,
|
|
199
|
+
rather than overlaying it on top of the panel's own content \u2014 the fix round 1
|
|
200
|
+
collision protection (verified against a real ChatThread header-end slot at
|
|
201
|
+
375px: without this, the X painted directly over trailing icon buttons).
|
|
202
|
+
DERIVED from the button's own inset + size tokens, not a second hand-typed
|
|
203
|
+
number.
|
|
204
|
+
|
|
205
|
+
SCOPED to :not([data-hide-close]) \u2014 round 2 (owner feedback: the band read as
|
|
206
|
+
a dead strip when nothing but the X occupied it) removed this UNCONDITIONALLY
|
|
207
|
+
and reintroduced the very collision round 1 fixed, for every consumer who
|
|
208
|
+
never opted into hideClose. hideClose is only true for a caller that supplies
|
|
209
|
+
its OWN close control in its own header row (ChatThread's headerEndContent is
|
|
210
|
+
the one that does today) \u2014 the built-in X and this band both come off
|
|
211
|
+
together for that case, since there is nothing left for the band to protect.
|
|
212
|
+
Every other consumer -- including a hand-authored kai-dock with real
|
|
213
|
+
slot="header-end" content and no opinion on hideClose -- keeps the band, the
|
|
214
|
+
same as round 1 shipped. */
|
|
215
|
+
[data-kai-dock]:not([data-hide-close]) [part="panel"] {
|
|
216
|
+
padding-block-start: calc(2 * var(--kai-dock-close-inset-block, 0.75rem) + 2.25rem);
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
/* The full-bleed panel gets its own close affordance instead of relying on the
|
|
220
|
+
launcher, which is hidden below while the panel is open at this width \u2014 a FAB
|
|
221
|
+
floating over a full-bleed panel with no other visible close route is exactly
|
|
222
|
+
what the owner flagged. Escape and the X both still work; the launcher comes
|
|
223
|
+
back the instant the panel closes because data-expanded is gone by then.
|
|
224
|
+
Absolutely positioned, so the padding-block-start above (a content-box
|
|
225
|
+
concern) does not shift IT \u2014 only the in-flow slotted content. Content that
|
|
226
|
+
supplies its own close control passes hideClose, which drops the button from
|
|
227
|
+
the render tree entirely (see the component body) rather than being gated
|
|
228
|
+
here \u2014 so this rule stays a plain, unconditional width-query switch; the band
|
|
229
|
+
above is what actually varies with hideClose. */
|
|
230
|
+
[data-kai-dock] [part="close"] { display: inline-flex; }
|
|
231
|
+
[data-kai-dock]:has([part="panel"][data-expanded]) [part="launcher"] { display: none; }
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
@media (prefers-reduced-motion: reduce) {
|
|
235
|
+
/* [data-expanded] is listed explicitly because the open-direction rule above is
|
|
236
|
+
MORE SPECIFIC than a bare [part="panel"], so without it an opening panel kept
|
|
237
|
+
animating opacity and transform for exactly the users who asked it not to. */
|
|
238
|
+
[data-kai-dock] [part="launcher"],
|
|
239
|
+
[data-kai-dock] [part="panel"],
|
|
240
|
+
[data-kai-dock] [part="panel"][data-expanded] { transition: none; }
|
|
241
|
+
[data-kai-dock] [part="panel"][data-closed] { transform: none; }
|
|
242
|
+
}
|
|
243
|
+
`),ee=f("<span part=badge aria-hidden=true>"),te=f("<button type=button part=close>"),ae=f("<div data-kai-dock><button part=launcher type=button><span aria-hidden=true style=display:inline-flex></span></button><div part=panel role=dialog aria-modal=false tabindex=-1>");function F(){return d(J,{size:24})}function z(){return d(G,{size:24})}function oe(){var e;let s=document.activeElement;for(;(e=s?.shadowRoot)!=null&&e.activeElement;)s=s.shadowRoot.activeElement;return s}function ne(e,s){let o=s;for(;o;){if(o===e)return!0;const w=o instanceof Element?o.assignedSlot:null;if(w){o=w;continue}if(o.parentNode){o=o.parentNode;continue}o=o instanceof ShadowRoot?o.host:null}return!1}function ie(e){var s;const o=`kai-dock-panel-${U()}`,[w,O]=Y(e.defaultOpen??!1),b=()=>e.open!==void 0,n=()=>b()?!!e.open:w(),h=r=>{var i;b()||O(r),(i=e.onOpenChange)==null||i.call(e,r)};(s=e.controllerRef)==null||s.call(e,{open:n,setOpen:h});let k,g;const a=()=>e.label??"Chat",c=()=>n()?e.closeLabel??`Close ${a()}`:e.openLabel??`Open ${a()}`,y=()=>{var r;const i=e.focusOnOpen??"content";if(i!=="none"){if(i==="content"){const m=(r=e.contentTarget)==null?void 0:r.call(e);if(m?.focus(),m&&ne(k,oe()))return}k?.focus()}};W(r=>{const i=n();return i!==r&&queueMicrotask(i?y:()=>g?.focus()),i},B(()=>e.open??e.defaultOpen??!1));const P=r=>{r.key!=="Escape"||!n()||h(!1)};return[Z(),(()=>{var r=ae(),i=r.firstChild,m=i.firstChild,l=i.nextSibling;return r.$$keydown=P,i.$$click=()=>h(!n()),H(t=>{var u;g=t,(u=e.launcherRef)==null||u.call(e,t)},i),p(i,"aria-controls",o),v(i,d(C,{get when(){return _(()=>!!e.unread)()&&!n()},get children(){return ee()}}),m),v(m,d(C,{get when(){return n()},get fallback(){return e.launcher??d(F,{})},get children(){return e.launcherOpen??e.launcher??d(z,{})}})),H(t=>{var u;k=t,(u=e.panelRef)==null||u.call(e,t)},l),p(l,"id",o),v(l,d(C,{get when(){return!e.hideClose},get children(){var t=te();return t.$$click=()=>h(!1),v(t,d(z,{})),V(()=>p(t,"aria-label",c())),t}}),null),v(l,()=>e.children,null),V(t=>{var u=e.position??"bottom-end",T=!!e.hideClose,I=n()?"true":"false",S=c(),R=e.disabled||void 0,N=a(),L=n()?"":void 0,D=n()?void 0:"",A=!n(),$=n()?"visible":"hidden",M=n()?"1":"0",X=n()?"auto":"none";return u!==t.e&&p(r,"data-position",t.e=u),T!==t.t&&q(r,"data-hide-close",t.t=T),I!==t.a&&p(i,"aria-expanded",t.a=I),S!==t.o&&p(i,"aria-label",t.o=S),R!==t.i&&(i.disabled=t.i=R),N!==t.n&&p(l,"aria-label",t.n=N),L!==t.s&&p(l,"data-expanded",t.s=L),D!==t.h&&p(l,"data-closed",t.h=D),A!==t.r&&q(l,"inert",t.r=A),$!==t.d&&E(l,"visibility",t.d=$),M!==t.l&&E(l,"opacity",t.l=M),X!==t.u&&E(l,"pointer-events",t.u=X),t},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0,u:void 0}),r})()]}j(["keydown","click"]);var re=f("<slot name=panel>"),se=f("<slot>"),le=f("<slot name=launcher>"),de=f("<slot name=launcher-open><slot name=launcher>");K("kai-dock",{open:void 0,defaultOpen:void 0,position:"bottom-end",label:"Chat",openLabel:void 0,closeLabel:void 0,unread:void 0,disabled:void 0,hideClose:void 0,focusOnOpen:"content"},(e,s)=>{const{flag:o,element:w,expose:O,reflectFlag:b}=s;let n,h,k;Q(s,()=>n,()=>e.open),b("unread"),b("disabled"),b("defaultOpen"),b("hideClose");const g=B(()=>o("open")||o("defaultOpen"));return O({focus:a=>{var c;return(c=n!=null&&n.open()?h:k)==null?void 0:c.focus(a)}}),d(ie,{defaultOpen:g,get position(){return e.position},get label(){return e.label},get openLabel(){return e.openLabel},get closeLabel(){return e.closeLabel},get unread(){return o("unread")},get disabled(){return o("disabled")},get hideClose(){return o("hideClose")},get focusOnOpen(){return e.focusOnOpen},contentTarget:()=>{const a=h?.querySelectorAll("slot");for(const c of Array.from(a??[])){const y=c.assignedElements()[0];if(y instanceof HTMLElement)return y}},controllerRef:a=>n=a,panelRef:a=>h=a,launcherRef:a=>k=a,get launcher(){return(()=>{var a=le();return a._$owner=x(),v(a,d(F,{})),a})()},get launcherOpen(){return(()=>{var a=de(),c=a.firstChild;return a._$owner=x(),c._$owner=x(),v(c,d(z,{})),a})()},get children(){return[(()=>{var a=re();return a._$owner=x(),a})(),(()=>{var a=se();return a._$owner=x(),a})()]}})});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{f as c,c as t,v as s,i as n,S as i,m as u,t as o}from"../define-CGGX-7Vg.js";import{D as f,a as m,c as p}from"../dropdown-BwhViJFd.js";import{r as d}from"../icon-BpixdZNq.js";import{c as b}from"../cn-DN5AWfiS.js";import{w as v}from"../disclosure-CbLtajUQ.js";import{e as h}from"../ellipsis-DFr4Vqr3.js";var w=o("<style>:host([full]){display:block}"),I=o("<slot name=trigger>"),x=o("<slot>");c("kai-dropdown",{triggerIcon:void 0,triggerLabel:void 0,triggerIconTrailing:void 0,label:void 0,full:!1,open:void 0,defaultOpen:void 0,disabled:void 0},(r,g)=>{const{flag:l}=g;let a;return v(g,()=>a,()=>r.open),[w(),t(p,{get defaultOpen(){return l("defaultOpen")},get disabled(){return l("disabled")},controllerRef:e=>a=e,get children(){return[t(f,{get class(){return b("inline-flex items-center rounded-md transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",r.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",l("full")&&"w-full")},get"aria-label"(){return u(()=>!!r.triggerLabel)()?void 0:r.label??"Open menu"},get children(){var e=I();return e._$owner=s(),n(e,t(i,{get when(){return r.triggerIcon},get children(){return d(r.triggerIcon,{class:"size-4 shrink-0"})}}),null),n(e,t(i,{get when(){return r.triggerLabel},get children(){return r.triggerLabel}}),null),n(e,t(i,{get when(){return r.triggerIconTrailing},get children(){return d(r.triggerIconTrailing,{class:"size-3.5 shrink-0 opacity-60"})}}),null),n(e,t(i,{get when(){return u(()=>!r.triggerIcon)()&&!r.triggerLabel},get children(){return t(h,{class:"size-4"})}}),null),e}}),t(m,{class:"min-w-[10rem]",get children(){var e=x();return e._$owner=s(),e}})]}})]});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{g as y,
|
|
1
|
+
import{g as y,j as g,i as E,c as k,a as D,d as q,b as S,S as C,t as x,z as p,u as R,e as j,f as z}from"../define-CGGX-7Vg.js";import{c as $}from"../cn-DN5AWfiS.js";import{I as K}from"../input-d1Yuu-hz.js";var F=x("<span>"),I=x("<span part=text>");function T(a){const[s,r]=y(!!a.editing);g(()=>r(!!a.editing));const[n,u]=y(a.value);g(()=>u(a.value));let c,l=!1;const f=()=>{const e=c?.querySelector("input");e&&(e.focus(),e.select())};g(()=>{s()&&queueMicrotask(f)});const m=()=>{a.disabled||r(!0)},v=e=>{var d;p(s)&&(r(!1),e!==p(n)&&(u(e),(d=a.onRename)==null||d.call(a,e)))},o=()=>{var e;p(s)&&(r(!1),(e=a.onCancel)==null||e.call(a))},h=e=>{const d=e.currentTarget;e.key==="Enter"?(e.preventDefault(),l=!0,v(d.value)):e.key==="Escape"&&(e.preventDefault(),l=!0,o())},t=e=>{if(l){l=!1;return}v(e)};return(()=>{var e=F(),d=c;return typeof d=="function"?R(d,e):c=e,E(e,k(C,{get when(){return s()},get fallback(){return(()=>{var b=I();return b.$$keydown=i=>{!a.disabled&&(i.key==="Enter"||i.key==="F2")&&(i.preventDefault(),m())},b.$$dblclick=m,E(b,()=>n()||a.placeholder||""),D(i=>{var A=a.disabled?void 0:0,w=$("inline-block max-w-full truncate rounded px-1 py-0.5 text-sm text-foreground",a.disabled?"cursor-default opacity-60":"cursor-text hover:bg-muted",!n()&&"text-muted-foreground");return A!==i.e&&q(b,"tabindex",i.e=A),w!==i.t&&S(b,i.t=w),i},{e:void 0,t:void 0}),b})()},get children(){return k(K,{get value(){return n()},get placeholder(){return a.placeholder},get disabled(){return a.disabled},size:"sm",class:"h-7 py-0",get"aria-label"(){return a.placeholder??"Edit label"},onKeyDown:h,onValueChange:t})}})),D(()=>S(e,$("inline-flex max-w-full items-center",a.class))),e})()}j(["dblclick","keydown"]);var B=x("<style>:host{display:inline-flex}");z("kai-editable-label",{value:void 0,editing:!1,placeholder:void 0,disabled:!1},(a,s)=>{const{element:r,dispatch:n,flag:u,expose:c}=s,[l,f]=y(a.value??r.getAttribute("value")??""),m=t=>t==null?r.getAttribute("value")??"":String(t);Object.defineProperty(r,"value",{get:()=>l(),set:t=>{const e=m(t);p(l)!==e&&f(e)},configurable:!0,enumerable:!0}),g(()=>{const t=l();t?r.getAttribute("value")!==t&&r.setAttribute("value",t):r.hasAttribute("value")&&r.removeAttribute("value")});const[v,o]=y(u("editing"));g(()=>o(u("editing"))),g(()=>{v()?r.hasAttribute("editing")||r.setAttribute("editing",""):r.hasAttribute("editing")&&r.removeAttribute("editing")});const h=()=>{var t;return((t=r.shadowRoot)==null?void 0:t.querySelector("input"))??null};return c({edit:()=>{u("disabled")||o(!0)},commit:()=>{var t;(t=h())==null||t.blur()},cancel:()=>{const t=h();t?t.dispatchEvent(new KeyboardEvent("keydown",{key:"Escape",bubbles:!0,composed:!0})):p(v)&&(o(!1),n("kai-cancel",{}))}}),[B(),k(T,{get value(){return l()},get editing(){return v()},get placeholder(){return a.placeholder},get disabled(){return u("disabled")},onRename:t=>{o(!1),t!==p(l)&&(f(t),n("kai-rename",{value:t}))},onCancel:()=>{o(!1),n("kai-cancel",{})}})]});
|
|
@@ -34,6 +34,43 @@ export interface KaiSegmentedOption {
|
|
|
34
34
|
label: string;
|
|
35
35
|
icon?: string;
|
|
36
36
|
}
|
|
37
|
+
/** A single row of `<kai-radio-group>`.
|
|
38
|
+
*
|
|
39
|
+
* Distinct from the Solid `RadioOption`, whose `label` and `description` are JSX
|
|
40
|
+
* nodes: on the element both are plain strings, because an element property has to
|
|
41
|
+
* survive being assigned from HTML/React/Vue/Svelte with no framework in between. */
|
|
42
|
+
export interface KaiRadioOption {
|
|
43
|
+
value: string;
|
|
44
|
+
label: string;
|
|
45
|
+
description?: string;
|
|
46
|
+
disabled?: boolean;
|
|
47
|
+
}
|
|
48
|
+
/** A single row of `<kai-checkbox-group>`.
|
|
49
|
+
*
|
|
50
|
+
* Distinct from the Solid `CheckboxOption`, whose `value` is generic and whose
|
|
51
|
+
* `label` and `description` are JSX nodes: on the element all three are plain
|
|
52
|
+
* strings, because an element property has to survive being assigned from
|
|
53
|
+
* HTML/React/Vue/Svelte with no framework in between. Structurally identical to
|
|
54
|
+
* `KaiRadioOption`, and kept as its own name anyway: the two elements are free to
|
|
55
|
+
* diverge, and a consumer typing a checkbox list should not have to import the radio
|
|
56
|
+
* group's type to do it. */
|
|
57
|
+
export interface KaiCheckboxOption {
|
|
58
|
+
value: string;
|
|
59
|
+
label: string;
|
|
60
|
+
description?: string;
|
|
61
|
+
disabled?: boolean;
|
|
62
|
+
}
|
|
63
|
+
/** A single choice in `<kai-select>`.
|
|
64
|
+
*
|
|
65
|
+
* Distinct from the Solid `SelectOption`, whose `value` is generic: on the element
|
|
66
|
+
* it is a string, because a native `<option>`'s value is a string and an element
|
|
67
|
+
* property has to survive being assigned from HTML/React/Vue/Svelte with no
|
|
68
|
+
* framework in between. `label` defaults to `value`. */
|
|
69
|
+
export interface KaiSelectOption {
|
|
70
|
+
value: string;
|
|
71
|
+
label?: string;
|
|
72
|
+
disabled?: boolean;
|
|
73
|
+
}
|
|
37
74
|
/** A single citation in `<kai-sources>`' `sources` property. Also the shape
|
|
38
75
|
* `<kai-source>` light-DOM children are parsed into. */
|
|
39
76
|
export interface KaiSourceItem {
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { ElementRegistryEvent } from './diagnostic-events.js';
|
|
2
|
+
/**
|
|
3
|
+
* What SHAPE arrived in the attribute -- or `undefined` when the attribute is
|
|
4
|
+
* fine and nothing should be reported.
|
|
5
|
+
*
|
|
6
|
+
* An attribute is NOT automatically a violation on a non-scalar prop. A literal
|
|
7
|
+
* `conversations='[{"id":"a"}]'` is valid JSON, `JSON.parse` succeeds, and the
|
|
8
|
+
* property really does receive an array: that works, and reporting it would be
|
|
9
|
+
* reporting correct code. The violation is precisely the case where the value
|
|
10
|
+
* that reaches the property is not an object -- either because `JSON.parse`
|
|
11
|
+
* threw and component-register's `catch` handed back the raw string, or because
|
|
12
|
+
* the JSON was valid but scalar.
|
|
13
|
+
*
|
|
14
|
+
* EVERY RETURN IS A SHAPE, NEVER CONTENT. The vocabulary is closed and small:
|
|
15
|
+
* two fixed markers, a type name, and a LENGTH. The raw text is never returned,
|
|
16
|
+
* never interpolated, and never measured for anything but its length -- which
|
|
17
|
+
* is what lets this run with no payload gate at all. Pinned with sentinels by
|
|
18
|
+
* `element-diagnostics-payload.test.ts`.
|
|
19
|
+
*/
|
|
20
|
+
export declare function classifyAttributeValue(raw: string): string | undefined;
|
|
21
|
+
/** Whether this tag has anything to watch at all. `defineWebComponent` asks
|
|
22
|
+
* BEFORE it decides whether it needs to intercept the registry, so a tag with
|
|
23
|
+
* no non-scalar prop pays not even the interception. */
|
|
24
|
+
export declare function elementDiagnosticsWanted(tag: string): boolean;
|
|
25
|
+
/**
|
|
26
|
+
* Install the contract checks onto one element class's PROTOTYPE.
|
|
27
|
+
*
|
|
28
|
+
* MUST BE CALLED BEFORE `customElements.define()` SEES THE CLASS.
|
|
29
|
+
*
|
|
30
|
+
* This is not a preference, it is the platform: `define()` snapshots the
|
|
31
|
+
* lifecycle callbacks -- `connectedCallback`, `attributeChangedCallback` and
|
|
32
|
+
* the rest -- off the prototype into the custom-element definition at
|
|
33
|
+
* definition time, and the browser invokes THOSE. Replacing a prototype method
|
|
34
|
+
* afterwards changes an object nothing reads: the wrapper installs perfectly,
|
|
35
|
+
* `hasOwnProperty` confirms it is there, and it is never called once. (Measured
|
|
36
|
+
* exactly that way in jsdom before this comment existed.) It is the same trap,
|
|
37
|
+
* for the same reason, that `defineWithNonReflectingProps` in `define.tsx` was
|
|
38
|
+
* built to get around -- so this rides through that same seam.
|
|
39
|
+
*
|
|
40
|
+
* Returns without touching anything when the tag has no non-scalar prop, which
|
|
41
|
+
* is 37 of the 80 elements: for those this capability has no runtime presence
|
|
42
|
+
* whatsoever.
|
|
43
|
+
*/
|
|
44
|
+
export declare function installElementDiagnostics(tag: string, proto: object): void;
|
|
45
|
+
/**
|
|
46
|
+
* Snapshot which `kai-*` elements are defined in THIS realm, and emit it.
|
|
47
|
+
*
|
|
48
|
+
* The question is hydration. An undefined custom element is a perfectly valid,
|
|
49
|
+
* perfectly inert `HTMLElement`: an SSR page whose markup contains `<kai-chat>`
|
|
50
|
+
* but whose element bundle never loaded renders empty boxes, throws nothing and
|
|
51
|
+
* logs nothing. The SSR starters already answer this by hand for a hard-coded
|
|
52
|
+
* handful (`HydrationBadge.tsx` in the nextjs and tanstack-start starters); this
|
|
53
|
+
* is the same answer, derived, over every tag.
|
|
54
|
+
*
|
|
55
|
+
* WHY THE MANIFEST AND NOT `element-meta.json`. The two generated artifacts
|
|
56
|
+
* disagree -- 79 tags against 80 entries -- and the manifest is the one that
|
|
57
|
+
* answers THIS question. `kai-remote` is in the meta file because
|
|
58
|
+
* `gen-element-api.mjs` scans the `src/elements` directory listing, and absent
|
|
59
|
+
* from the manifest because `gen-elements-manifest.mjs` reads the import list in
|
|
60
|
+
* `register-impl.ts`, which does not import `remote.tsx`.
|
|
61
|
+
*
|
|
62
|
+
* AND THAT IS DELIBERATE, not a generator bug -- `vite.config.elements.ts:44-50`
|
|
63
|
+
* says so at the site: `<kai-remote>` mounts a sandboxed cross-origin iframe and
|
|
64
|
+
* is opt-in, reachable only through `@kitn.ai/ui/elements/remote` or the React
|
|
65
|
+
* `Remote` wrapper, and intentionally kept out of the register-all bundle. So
|
|
66
|
+
* the honest universe for "did the element bundle load" is the 79 that bundle
|
|
67
|
+
* registers. Listing `kai-remote` beside them would report a permanent "not
|
|
68
|
+
* defined" against an element almost no app is missing, and adding it to the
|
|
69
|
+
* manifest -- the obvious "fix" -- would hand an opt-in cross-origin iframe
|
|
70
|
+
* element to the autoloader's lazy-load set, which is a behaviour change wearing
|
|
71
|
+
* the costume of a data fix.
|
|
72
|
+
*
|
|
73
|
+
* The cost is stated rather than hidden: a consumer who HAS opted into
|
|
74
|
+
* `kai-remote` sees it in neither list. `element-artifact-divergence.test.ts`
|
|
75
|
+
* pins the divergence at exactly this one tag, so it stays a known exception and
|
|
76
|
+
* a NEW one fails.
|
|
77
|
+
*
|
|
78
|
+
* Returns the event it emitted, or `undefined` where there is no custom-element
|
|
79
|
+
* registry (SSR) or nobody is listening.
|
|
80
|
+
*/
|
|
81
|
+
export declare function emitElementRegistry(): ElementRegistryEvent | undefined;
|
package/dist/elements/embed.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{f as t,c as e}from"
|
|
1
|
+
import{f as t,c as e}from"../define-CGGX-7Vg.js";import{E as o}from"../embed-5s_vU4J0.js";import{e as m}from"../card-routing-DifQgS7n.js";t("kai-embed",{cardId:void 0,data:void 0},(r,{element:a})=>e(o,{get cardId(){return r.cardId??""},get data(){return r.data??{provider:"generic"}},onEmit:d=>m(a,d)}));
|
package/dist/elements/empty.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{s as i,
|
|
1
|
+
import{s as i,p as c,q as l,i as d,t as a,f,c as s,v as o,S as m}from"../define-CGGX-7Vg.js";import{c as g}from"../index-xu_pdcPi.js";import{c as u}from"../cn-DN5AWfiS.js";var v=a("<div data-slot=empty>"),h=a("<div data-slot=empty-header>"),p=a("<div data-slot=empty-media>"),x=a("<div data-slot=empty-title>"),y=a("<p data-slot=empty-description>"),w=a("<div data-slot=empty-content>");function b(r){const[t,n]=i(r,["class","children"]);return(()=>{var e=v();return c(e,l({get class(){return u("flex min-w-0 flex-1 flex-col items-center justify-center gap-6 rounded-lg p-6",t.class)}},n),!1,!0),d(e,()=>t.children),e})()}function k(r){const[t,n]=i(r,["class","children"]);return(()=>{var e=h();return c(e,l({get class(){return u("flex max-w-sm flex-col items-center gap-2 text-center",t.class)}},n),!1,!0),d(e,()=>t.children),e})()}const T=g("flex shrink-0 items-center justify-center mb-2 [&_svg]:size-6",{variants:{variant:{default:"bg-transparent",icon:"bg-muted text-foreground size-10 rounded-lg"}},defaultVariants:{variant:"default"}});function _(r){const[t,n]=i(r,["class","variant","children"]);return(()=>{var e=p();return c(e,l({get"data-variant"(){return t.variant??"default"},get class(){return u(T({variant:t.variant}),t.class)}},n),!1,!0),d(e,()=>t.children),e})()}function j(r){const[t,n]=i(r,["class","children"]);return(()=>{var e=x();return c(e,l({get class(){return u("text-title font-medium tracking-tight text-center text-balance",t.class)}},n),!1,!0),d(e,()=>t.children),e})()}function z(r){const[t,n]=i(r,["class","children"]);return(()=>{var e=y();return c(e,l({get class(){return u("text-muted-foreground text-body text-center text-balance [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary",t.class)}},n),!1,!0),d(e,()=>t.children),e})()}function $(r){const[t,n]=i(r,["class","children"]);return(()=>{var e=w();return c(e,l({get class(){return u("flex w-full max-w-sm min-w-0 flex-col items-center gap-2 text-sm text-balance",t.class)}},n),!1,!0),d(e,()=>t.children),e})()}var q=a("<slot name=media>"),C=a("<slot>");f("kai-empty",{emptyTitle:"",description:""},r=>s(b,{get children(){return[s(k,{get children(){return[s(_,{variant:"icon",get children(){var t=q();return t._$owner=o(),t}}),s(m,{get when(){return r.emptyTitle},get children(){return s(j,{get children(){return r.emptyTitle}})}}),s(m,{get when(){return r.description},get children(){return s(z,{get children(){return r.description}})}})]}}),s($,{get children(){var t=C();return t._$owner=o(),t}})]}}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{g as v,i as t,c as r,M as x,S,F as W,a as T,d as B,b as $,r as H,t as g,e as I,f as N}from"
|
|
1
|
+
import{g as v,i as t,c as r,M as x,S,F as W,a as T,d as B,b as $,r as H,t as g,e as I,f as N}from"../define-CGGX-7Vg.js";import{c as j}from"../cn-DN5AWfiS.js";import{B as z}from"../button-BH6rN0U-.js";import{T as q}from"../textarea-3ay2Me2-.js";import{a as A,t as E}from"../thumbs-up-DQcu2HMO.js";import{c as G}from"../check-DPeeMUYx.js";import{x as D}from"../x-C5m1JFgi.js";var J=g('<div class="flex w-full items-center justify-between"><div class="flex flex-1 items-center justify-start gap-4 py-3 pl-4"><span class="text-foreground font-medium"></span></div><div class="flex items-center justify-center gap-0.5 px-3 py-0"><button type=button class="text-muted-foreground hover:text-foreground flex size-8 items-center justify-center rounded-md transition-colors"aria-label=Helpful></button><button type=button class="text-muted-foreground hover:text-foreground flex size-8 items-center justify-center rounded-md transition-colors"aria-label="Not helpful"></button></div><div class="border-border flex items-center justify-center border-l"><button type=button class="text-muted-foreground hover:text-foreground flex items-center justify-center rounded-md p-3"aria-label=Close>'),K=g('<div class="flex flex-wrap gap-1.5">'),O=g('<div class="flex w-[min(22rem,80vw)] flex-col gap-2.5 p-3"><div class="flex items-center justify-between"><span class="text-foreground font-medium"></span><button type=button aria-label=Skip class="text-muted-foreground hover:text-foreground"></button></div><div class="flex justify-end gap-2">'),Q=g('<div class="flex items-center gap-2 px-4 py-3"role=status><span class="text-foreground font-medium">'),R=g("<div>"),U=g("<button type=button>");function V(e){const[u,f]=v("ask"),[b,M]=v(),[p,L]=v(),[k,P]=v(""),y=i=>{var l;M(i),(l=e.onFeedback)==null||l.call(e,i),f(i==="not-helpful"&&e.collectDetail?"detail":"thanks")},F=()=>{var i;(i=e.onSubmitDetail)==null||i.call(e,{value:b(),category:p(),comment:k()||void 0}),f("thanks")};return(()=>{var i=R();return t(i,r(H,{get children(){return[r(x,{get when(){return u()==="ask"},get children(){var l=J(),n=l.firstChild,m=n.firstChild,h=n.nextSibling,s=h.firstChild,a=s.nextSibling,c=h.nextSibling,o=c.firstChild;return t(n,r(S,{get when(){return e.icon},get children(){return e.icon}}),m),t(m,()=>e.title),s.$$click=()=>y("helpful"),t(s,r(A,{class:"size-4"})),a.$$click=()=>y("not-helpful"),t(a,r(E,{class:"size-4"})),o.$$click=()=>{var d;return(d=e.onClose)==null?void 0:d.call(e)},t(o,r(D,{class:"size-5"})),l}}),r(x,{get when(){return u()==="detail"},get children(){var l=O(),n=l.firstChild,m=n.firstChild,h=m.nextSibling,s=n.nextSibling;return t(m,()=>e.detailTitle??"What went wrong?"),h.$$click=()=>f("thanks"),t(h,r(D,{class:"size-4"})),t(l,r(S,{get when(){var a;return(a=e.categories)==null?void 0:a.length},get children(){var a=K();return t(a,r(W,{get each(){return e.categories},children:c=>(()=>{var o=U();return o.$$click=()=>L(p()===c?void 0:c),t(o,c),T(d=>{var w=p()===c,C=j("rounded-full border px-2.5 py-1 text-xs transition-colors",p()===c?"border-primary bg-primary text-primary-foreground":"border-border text-muted-foreground hover:text-foreground");return w!==d.e&&B(o,"aria-pressed",d.e=w),C!==d.t&&$(o,d.t=C),d},{e:void 0,t:void 0}),o})()})),a}}),s),t(l,r(q,{get value(){return k()},onInput:a=>P(a.currentTarget.value),get placeholder(){return e.detailPlaceholder??"Tell us more (optional)"},class:"border-border min-h-[3rem] rounded-md border px-2 py-1.5"}),s),t(s,r(z,{variant:"ghost",size:"sm",onClick:()=>f("thanks"),children:"Skip"}),null),t(s,r(z,{variant:"default",size:"sm",onClick:F,get children(){return e.submitLabel??"Submit"}}),null),l}}),r(x,{get when(){return u()==="thanks"},get children(){var l=Q(),n=l.firstChild;return t(l,r(G,{class:"size-4 text-emerald-500"}),n),t(n,()=>e.thanksMessage??"Thanks for your feedback"),l}})]}})),T(()=>$(i,j("bg-background border-border inline-flex rounded-[12px] border text-sm",e.class))),i})()}I(["click"]),N("kai-feedback-bar",{barTitle:"Was this helpful?",collectDetail:void 0,categories:void 0,detailTitle:void 0,detailPlaceholder:void 0,submitLabel:void 0,thanksMessage:void 0},(e,{dispatch:u,flag:f})=>r(V,{get title(){return e.barTitle},get collectDetail(){return f("collectDetail")},get categories(){return e.categories},get detailTitle(){return e.detailTitle},get detailPlaceholder(){return e.detailPlaceholder},get submitLabel(){return e.submitLabel},get thanksMessage(){return e.thanksMessage},onFeedback:b=>u("kai-feedback",{value:b}),onSubmitDetail:b=>u("kai-feedback-detail",b),onClose:()=>u("kai-close")}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{f as d,i as m,c as n,t as i}from"
|
|
1
|
+
import{f as d,i as m,c as n,t as i}from"../define-CGGX-7Vg.js";import{F as f}from"../file-tree-D3kBjXI5.js";var h=i("<style>:host{display:block;height:100%;min-height:0}"),o=i('<div style="display:grid;grid-template-rows:minmax(0, 1fr);grid-template-columns:minmax(0, 1fr);height:100%;min-height:0"><div class="overflow-auto scrollbar-thin py-1.5"style=min-height:0>');d("kai-file-tree",{files:[],activeFile:void 0,defaultExpanded:void 0,summary:!1},(e,{dispatch:a,flag:r})=>[h(),(()=>{var t=o(),l=t.firstChild;return m(l,n(f,{get files(){return e.files},get activeFile(){return e.activeFile},get defaultExpanded(){return e.defaultExpanded},get summary(){return r("summary")},onSelect:s=>a("kai-select",{path:s})})),t})()]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{s as b,G as x,p as y,q as A,i as h,g as $,j as w,h as F,c as v,u as R,a as T,d as j,m as D,B as P,t as f,e as q,f as z,v as B}from"../define-CGGX-7Vg.js";import{u as C}from"../upload-BbGW6A_u.js";var I=f("<input type=file class=hidden aria-hidden=true>"),_=f("<button type=button>");const E=P();function G(o){const[r]=b(o,["onFilesAdded","children","multiple","accept","disabled"]);let s;const[d,u]=$(!1);let a=0;const g=()=>r.multiple??!0,m=e=>{const t=Array.from(e);g()?r.onFilesAdded(t):r.onFilesAdded(t.slice(0,1))};w(()=>{const e=n=>{n.preventDefault(),n.stopPropagation()},t=n=>{var p;e(n),a++,(p=n.dataTransfer)!=null&&p.items.length&&u(!0)},i=n=>{e(n),a--,a===0&&u(!1)},c=n=>{var p;e(n),u(!1),a=0,(p=n.dataTransfer)!=null&&p.files.length&&m(n.dataTransfer.files)},l=window;l.addEventListener("dragenter",t),l.addEventListener("dragleave",i),l.addEventListener("dragover",e),l.addEventListener("drop",c),F(()=>{l.removeEventListener("dragenter",t),l.removeEventListener("dragleave",i),l.removeEventListener("dragover",e),l.removeEventListener("drop",c)})});const L=e=>{var t;const i=e.target;(t=i.files)!=null&&t.length&&(m(i.files),i.value="")},k={isDragging:d,get inputRef(){return s},setInputRef:e=>{s=e},multiple:r.multiple,disabled:r.disabled};return v(E.Provider,{value:k,get children(){return[(()=>{var e=I();return e.$$input=L,R(t=>{s=t},e),T(t=>{var i=g(),c=r.accept,l=r.disabled;return i!==t.e&&(e.multiple=t.e=i),c!==t.t&&j(e,"accept",t.t=c),l!==t.a&&(e.disabled=t.a=l),t},{e:void 0,t:void 0,a:void 0}),e})(),D(()=>r.children)]}})}function O(o){const[r,s]=b(o,["class","children"]),d=x(E),u=()=>{var a;return(a=d?.inputRef)==null?void 0:a.click()};return(()=>{var a=_();return a.$$click=u,y(a,A({get class(){return r.class}},s),!1,!0),h(a,()=>r.children),a})()}q(["input","click"]);var S=f("<slot>");z("kai-file-upload",{multiple:!0,accept:void 0,disabled:!1,label:"Click or drop files to upload"},(o,{dispatch:r,flag:s})=>v(G,{get multiple(){return s("multiple")},get accept(){return o.accept},get disabled(){return s("disabled")},onFilesAdded:d=>r("kai-files-added",{files:d}),get children(){return v(O,{class:"border-border bg-surface hover:bg-muted/60 text-muted-foreground flex w-full cursor-pointer flex-col items-center justify-center gap-2 rounded-xl border border-dashed px-6 py-8 text-sm transition-colors",get children(){return[v(C,{class:"size-5"}),(()=>{var d=S();return d._$owner=B(),h(d,()=>o.label),d})()]}})}}));
|
package/dist/elements/form.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{f as o,c as s}from"
|
|
1
|
+
import{f as o,c as s}from"../define-CGGX-7Vg.js";import{F as n}from"../form-BRNUMCN2.js";o("kai-form",{data:void 0,cardId:void 0,heading:void 0,resolution:void 0,values:void 0,defaultValues:void 0,disabled:!1},(d,{element:a,dispatch:t,flag:i,expose:r})=>{let e;return r({focus:l=>e?.focus(l),send:()=>e?.send(),validate:()=>e?.validate()??{valid:!1},reset:()=>e?.reset(),dismiss:()=>e?.dismiss(),reopen:()=>e?.reopen()}),s(n,{get data(){return d.data},get cardId(){return d.cardId??(a.id||"kai-form")},get heading(){return d.heading},get resolution(){return d.resolution},get values(){return d.values},get defaultValues(){return d.defaultValues},get disabled(){return i("disabled")},onValuesChange:l=>t("kai-values-change",l),controllerRef:l=>e=l,hostElement:a})});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{f as s,c as o,
|
|
1
|
+
import{f as s,c as o,v as d,m as i,t as a}from"../define-CGGX-7Vg.js";import{a as c,b as p,H as u}from"../hover-card-DaeiYrTA.js";import{w as v}from"../disclosure-CbLtajUQ.js";var m=a("<style>:host{display:inline-block}"),f=a("<slot>"),g=a("<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,n)=>{const{flag:r}=n;let t;return v(n,()=>t,()=>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 r("defaultOpen")},get disabled(){return r("disabled")},controllerRef:e=>t=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}})]}})]});
|
package/dist/elements/icon.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{f as l,i as m,a as n,b as r,t as a}from"
|
|
1
|
+
import{f as l,i as m,a as n,b as r,t as a}from"../define-CGGX-7Vg.js";import{r as o}from"../icon-BpixdZNq.js";import{c as f}from"../cn-DN5AWfiS.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 b,g as v,
|
|
1
|
+
import{s as b,g as v,j as f,h as y,c as o,a as p,d as m,b as h,S as w,t as T,f as R}from"../define-CGGX-7Vg.js";import{c}from"../cn-DN5AWfiS.js";import{S as U}from"../skeleton-BebdP4mf.js";var j=T("<img role=img>");function k(r,e){if(r&&e)return`data:${e};base64,${r}`}function A(r){const[e,L]=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),y(()=>URL.revokeObjectURL(s))}else n(void 0)});const d=()=>k(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=j();return p(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(A,{get alt(){return r.alt??""},get base64(){return r.base64},get uint8Array(){return r.bytes},get mediaType(){return r.mediaType}}));
|
package/dist/elements/input.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{f as
|
|
1
|
+
import{f as O,g as b,j as V,z as o,o as $,h as q,c as C,d as D,v as L,t as w}from"../define-CGGX-7Vg.js";import{I as _,D as B,f as G,c as H,n as J,d as K,g as N,b as Q}from"../input-d1Yuu-hz.js";var T=w("<slot>"),U=w("<style>:host{display:block}");const W=["leading","trailing"];O("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,format:void 0,guide:void 0,semantic:void 0,caseMode:void 0,copyPolicy:void 0},(t,j)=>{const{element:r,dispatch:v,flag:g,expose:P}=j,m=()=>{const e=t.format;return e!==void 0&&e!==""},h=e=>{const a={canonical:e,formatted:e};if(e===""||!m())return a;const n=t.semantic??"custom",i=t.format,c=i===B?G(n).defaultFormat:i;if(c===void 0)return a;try{const s=H(c,t.guide),A=J(s,e,t.caseMode??"preserve");return{canonical:N(s,Q(s,A),n),formatted:K(s,A)}}catch{return a}},M=h(t.value??r.getAttribute("value")??""),[u,p]=b(M.canonical),[l,f]=b(M.formatted),F=e=>e==null?r.getAttribute("value")??"":String(e),R=e=>{o(u)!==e&&p(e),o(l)!==e&&f(e)},d=()=>{var e;return((e=r.shadowRoot)==null?void 0:e.querySelector("input"))??null};let y=!1;const k=(e,a=!1)=>{if(!a&&o(u)===e)return;const n=d();if(n===null||!m()){R(e);return}y=!0;try{n.value=e,n.dispatchEvent(new Event("input",{bubbles:!0,composed:!0}))}finally{y=!1}};Object.defineProperty(r,"value",{get:()=>u(),set:e=>k(F(e)),configurable:!0,enumerable:!0});{let e=!0;V(()=>{if(t.format,t.guide,t.semantic,t.caseMode,e){e=!1;return}queueMicrotask(()=>{var a;const n=m()?o(u):((a=d())==null?void 0:a.value)??o(l),i=h(n);o(u)!==i.canonical&&p(i.canonical),o(l)!==i.formatted&&f(i.formatted)})})}V(()=>{const e=u();e?r.getAttribute("value")!==e&&r.setAttribute("value",e):r.hasAttribute("value")&&r.removeAttribute("value")});const[S,x]=b(r.getAttribute("autocapitalize")??void 0),[E,I]=b({leading:!1,trailing:!1});$(()=>{const e=()=>{const c={};for(const s of W)c[s]=!!r.querySelector(`:scope > [slot="${s}"]`);I(c)};e();const a=new MutationObserver(e);a.observe(r,{childList:!0,subtree:!1}),q(()=>a.disconnect());const n=()=>x(r.getAttribute("autocapitalize")??void 0);n();const i=new MutationObserver(n);i.observe(r,{attributes:!0,attributeFilter:["autocapitalize"]}),q(()=>i.disconnect())});const z=e=>E()[e]?(()=>{var a=T();return D(a,"name",e),a._$owner=L(),a})():void 0;return P({focus:e=>{var a;return(a=d())==null?void 0:a.focus(e)},select:()=>{var e;return(e=d())==null?void 0:e.select()},getRawValue:()=>o(u),getFormattedValue:()=>{var e;return((e=d())==null?void 0:e.value)??o(l)},clear:()=>{k("",!0),v("kai-change",{value:o(u),formattedValue:o(l)})}}),[U(),C(_,{get type(){return t.type??"text"},get value(){return l()},get placeholder(){return t.placeholder},get label(){return t.label},get hint(){return t.hint},get error(){return t.error},get size(){return t.size??"md"},get invalid(){return g("invalid")},get disabled(){return g("disabled")},get readonly(){return g("readonly")},get required(){return g("required")},get name(){return t.name},get autocomplete(){return t.autocomplete},get inputmode(){return t.inputmode},get autocapitalize(){return S()},get format(){return t.format},get guide(){return t.guide},get semantic(){return t.semantic},get caseMode(){return t.caseMode},get copyPolicy(){return t.copyPolicy},get leading(){return z("leading")},get trailing(){return z("trailing")},onValueInput:e=>{var a;p(e),f(((a=d())==null?void 0:a.value)??e),y||v("kai-input",{value:e,formattedValue:o(l)})},onValueChange:e=>{var a;p(e),m()||f(e),v("kai-change",{value:e,formattedValue:((a=d())==null?void 0:a.value)??e})},onMaskReject:e=>v("kai-input-rejected",e)})]});
|
package/dist/elements/kbd.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{f as s,c as a,
|
|
1
|
+
import{f as s,c as a,v as o,t as e}from"../define-CGGX-7Vg.js";import{K as i}from"../kbd-961zMPFB.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{f as d,c as i}from"
|
|
1
|
+
import{f as d,c as i}from"../define-CGGX-7Vg.js";import{L as o}from"../link-preview-DIIbV2Sd.js";import{e}from"../card-routing-DifQgS7n.js";d("kai-link-preview",{cardId:void 0,data:void 0},(r,{element:a})=>i(o,{get cardId(){return r.cardId??""},get data(){return r.data??{url:""}},onEmit:t=>e(a,t)}));
|
package/dist/elements/loader.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{f as r,c as a}from"
|
|
1
|
+
import{f as r,c as a}from"../define-CGGX-7Vg.js";import{L as e}from"../loader-YQszHFaW.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{f as n,
|
|
1
|
+
import{f as n,A as i,c as t,C as g}from"../define-CGGX-7Vg.js";import{M as a}from"../markdown-CVk1MPsj.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}})}})});
|
package/dist/elements/menu.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{f,c as r,
|
|
1
|
+
import{f,c as r,v as p,i as a,S as n,m as s,F as b,t as d}from"../define-CGGX-7Vg.js";import{D as k,a as v,c as w,e as x,f as y,g as z,h as C,i as I,d as j,j as L,b as O}from"../dropdown-BwhViJFd.js";import{r as l}from"../icon-BpixdZNq.js";import{K as S}from"../kbd-961zMPFB.js";import{c as G}from"../cn-DN5AWfiS.js";import{w as T}from"../disclosure-CbLtajUQ.js";import{e as D}from"../ellipsis-DFr4Vqr3.js";var F=d('<span part=shortcut class="ml-auto pl-4 text-muted-foreground">'),_=d("<style>:host([full]){display:block}"),$=d("<slot name=trigger>");f("kai-menu",{items:void 0,placement:void 0,triggerIcon:void 0,triggerLabel:void 0,triggerIconTrailing:void 0,label:void 0,full:!1,open:void 0,defaultOpen:void 0,disabled:void 0},(t,g)=>{const{dispatch:c,flag:o}=g;let u;T(g,()=>u,()=>t.open);function h(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 l(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"})}}),s(()=>e.label)]}}),r(I,{get children(){return h(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 l(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"})}}),s(()=>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 l(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"})}}),s(()=>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 l(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"})}}),s(()=>e.label),r(n,{get when(){return e.shortcut},get children(){var m=F();return a(m,r(S,{get keys(){return e.shortcut},platform:"auto",size:"sm"})),m}})]}})})}return[_(),r(w,{get defaultOpen(){return o("defaultOpen")},get disabled(){return o("disabled")},controllerRef:i=>u=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",o("full")&&"w-full")},get"aria-label"(){return s(()=>!!t.triggerLabel)()?void 0:t.label??"Open menu"},get children(){var i=$();return i._$owner=p(),a(i,r(n,{get when(){return t.triggerIcon},get children(){return l(t.triggerIcon,{class:"size-4 shrink-0"})}}),null),a(i,r(n,{get when(){return t.triggerLabel},get children(){return t.triggerLabel}}),null),a(i,r(n,{get when(){return t.triggerIconTrailing},get children(){return l(t.triggerIconTrailing,{class:"size-3.5 shrink-0 opacity-60"})}}),null),a(i,r(n,{get when(){return s(()=>!t.triggerIcon)()&&!t.triggerLabel},get children(){return r(D,{class:"size-4"})}}),null),i}}),r(v,{class:"min-w-[15rem]",get children(){return h(t.items??[])}})]}})]});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as n,i as a,F as d,a as k,b as
|
|
1
|
+
import{c as n,i as a,F as d,a as k,b as v,S as p,t as o,f,g as x,o as g,h as b}from"../define-CGGX-7Vg.js";import{c as h}from"../cn-DN5AWfiS.js";var w=o("<div>"),S=o('<span class="inline-flex items-center px-1.5 py-0.5 rounded text-micro font-medium bg-violet-400/10 text-violet-600 dark:text-violet-400">');function y(t){return n(p,{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})()})),k(()=>v(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}}f("kai-skills",{skills:[]},(t,{element:e})=>{const[s,r]=x([]);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"../define-CGGX-7Vg.js";import"../slots-DaNjX0rc.js";import"../message-DS8lzHc1.js";import{a as o}from"../message-CwKVEdZg.js";import"../card-renderer-Cb1gQmth.js";import"../card-tags-D8lZ-C_U.js";export{o as cardComponentsFromTags};
|