@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
|
@@ -1 +1 @@
|
|
|
1
|
-
function xe(e){var t,o,r="";if(typeof e=="string"||typeof e=="number")r+=e;else if(typeof e=="object")if(Array.isArray(e)){var s=e.length;for(t=0;t<s;t++)e[t]&&(o=xe(e[t]))&&(r&&(r+=" "),r+=o)}else for(o in e)e[o]&&(r&&(r+=" "),r+=o);return r}function we(){for(var e,t,o=0,r="",s=arguments.length;o<s;o++)(e=arguments[o])&&(t=xe(e))&&(r&&(r+=" "),r+=t);return r}const De=(e,t)=>{const o=new Array(e.length+t.length);for(let r=0;r<e.length;r++)o[r]=e[r];for(let r=0;r<t.length;r++)o[e.length+r]=t[r];return o},Fe=(e,t)=>({classGroupId:e,validator:t}),ve=(e=new Map,t=null,o)=>({nextPart:e,validators:t,classGroupId:o}),V="-",ye=[],He="arbitrary..",Je=e=>{const t=Qe(e),{conflictingClassGroups:o,conflictingClassGroupModifiers:r}=e;return{getClassGroupId:s=>{if(s.startsWith("[")&&s.endsWith("]"))return Ke(s);const l=s.split(V),d=l[0]===""&&l.length>1?1:0;return ze(l,d,t)},getConflictingClassGroupIds:(s,l)=>{if(l){const d=r[s],b=o[s];return d?b?De(b,d):d:b||ye}return o[s]||ye}}},ze=(e,t,o)=>{if(e.length-t===0)return o.classGroupId;const r=e[t],s=o.nextPart.get(r);if(s){const u=ze(e,t+1,s);if(u)return u}const l=o.validators;if(l===null)return;const d=t===0?e.join(V):e.slice(t).join(V),b=l.length;for(let u=0;u<b;u++){const p=l[u];if(p.validator(d))return p.classGroupId}},Ke=e=>e.slice(1,-1).indexOf(":")===-1?void 0:(()=>{const t=e.slice(1,-1),o=t.indexOf(":"),r=t.slice(0,o);return r?He+r:void 0})(),Qe=e=>{const{theme:t,classGroups:o}=e;return Ue(o,t)},Ue=(e,t)=>{const o=ve();for(const r in e){const s=e[r];ae(s,o,r,t)}return o},ae=(e,t,o,r)=>{const s=e.length;for(let l=0;l<s;l++){const d=e[l];Ve(d,t,o,r)}},Ve=(e,t,o,r)=>{if(typeof e=="string"){Xe(e,t,o);return}if(typeof e=="function"){Ye(e,t,o,r);return}Ze(e,t,o,r)},Xe=(e,t,o)=>{const r=e===""?t:Ge(t,e);r.classGroupId=o},Ye=(e,t,o,r)=>{if(eo(e)){ae(e(r),t,o,r);return}t.validators===null&&(t.validators=[]),t.validators.push(Fe(o,e))},Ze=(e,t,o,r)=>{const s=Object.entries(e),l=s.length;for(let d=0;d<l;d++){const[b,u]=s[d];ae(u,Ge(t,b),o,r)}},Ge=(e,t)=>{let o=e;const r=t.split(V),s=r.length;for(let l=0;l<s;l++){const d=r[l];let b=o.nextPart.get(d);b||(b=ve(),o.nextPart.set(d,b)),o=b}return o},eo=e=>"isThemeGetter"in e&&e.isThemeGetter===!0,oo=e=>{if(e<1)return{get:()=>{},set:()=>{}};let t=0,o=Object.create(null),r=Object.create(null);const s=(l,d)=>{o[l]=d,t++,t>e&&(t=0,r=o,o=Object.create(null))};return{get(l){let d=o[l];if(d!==void 0)return d;if((d=r[l])!==void 0)return s(l,d),d},set(l,d){l in o?o[l]=d:s(l,d)}}},le="!",Ce=":",ro=[],je=(e,t,o,r,s)=>({modifiers:e,hasImportantModifier:t,baseClassName:o,maybePostfixModifierPosition:r,isExternal:s}),to=e=>{const{prefix:t,experimentalParseClassName:o}=e;let r=s=>{const l=[];let d=0,b=0,u=0,p;const z=s.length;for(let w=0;w<z;w++){const G=s[w];if(d===0&&b===0){if(G===Ce){l.push(s.slice(u,w)),u=w+1;continue}if(G==="/"){p=w;continue}}G==="["?d++:G==="]"?d--:G==="("?b++:G===")"&&b--}const h=l.length===0?s:s.slice(u);let S=h,j=!1;h.endsWith(le)?(S=h.slice(0,-1),j=!0):h.startsWith(le)&&(S=h.slice(1),j=!0);const R=p&&p>u?p-u:void 0;return je(l,j,S,R)};if(t){const s=t+Ce,l=r;r=d=>d.startsWith(s)?l(d.slice(s.length)):je(ro,!1,d,void 0,!0)}if(o){const s=r;r=l=>o({className:l,parseClassName:s})}return r},so=e=>{const t=new Map;return e.orderSensitiveModifiers.forEach((o,r)=>{t.set(o,1e6+r)}),o=>{const r=[];let s=[];for(let l=0;l<o.length;l++){const d=o[l],b=d[0]==="[",u=t.has(d);b||u?(s.length>0&&(s.sort(),r.push(...s),s=[]),r.push(d)):s.push(d)}return s.length>0&&(s.sort(),r.push(...s)),r}},no=e=>({cache:oo(e.cacheSize),parseClassName:to(e),sortModifiers:so(e),postfixLookupClassGroupIds:ao(e),...Je(e)}),ao=e=>{const t=Object.create(null),o=e.postfixLookupClassGroups;if(o)for(let r=0;r<o.length;r++)t[o[r]]=!0;return t},lo=/\s+/,io=(e,t)=>{const{parseClassName:o,getClassGroupId:r,getConflictingClassGroupIds:s,sortModifiers:l,postfixLookupClassGroupIds:d}=t,b=[],u=e.trim().split(lo);let p="";for(let z=u.length-1;z>=0;z-=1){const h=u[z],{isExternal:S,modifiers:j,hasImportantModifier:R,baseClassName:w,maybePostfixModifierPosition:G}=o(h);if(S){p=h+(p.length>0?" "+p:p);continue}let W=!!G,v;if(W){const N=w.substring(0,G);v=r(N);const i=v&&d[v]?r(w):void 0;i&&i!==v&&(v=i,W=!1)}else v=r(w);if(!v){if(!W){p=h+(p.length>0?" "+p:p);continue}if(v=r(w),!v){p=h+(p.length>0?" "+p:p);continue}W=!1}const D=j.length===0?"":j.length===1?j[0]:l(j).join(":"),T=R?D+le:D,E=T+v;if(b.indexOf(E)>-1)continue;b.push(E);const q=s(v,W);for(let N=0;N<q.length;++N){const i=q[N];b.push(T+i)}p=h+(p.length>0?" "+p:p)}return p},co=(...e)=>{let t=0,o,r,s="";for(;t<e.length;)(o=e[t++])&&(r=Me(o))&&(s&&(s+=" "),s+=r);return s},Me=e=>{if(typeof e=="string")return e;let t,o="";for(let r=0;r<e.length;r++)e[r]&&(t=Me(e[r]))&&(o&&(o+=" "),o+=t);return o},Ne=(e,...t)=>{let o,r,s,l;const d=u=>{const p=t.reduce((z,h)=>h(z),e());return o=no(p),r=o.cache.get,s=o.cache.set,l=b,b(u)},b=u=>{const p=r(u);if(p)return p;const z=io(u,o);return s(u,z),z};return l=d,(...u)=>l(co(...u))},mo=[],f=e=>{const t=o=>o[e]||mo;return t.isThemeGetter=!0,t},Ie=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,Pe=/^\((?:(\w[\w-]*):)?(.+)\)$/i,po=/^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/,bo=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,uo=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,fo=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,go=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,ho=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,P=e=>po.test(e),m=e=>!!e&&!Number.isNaN(Number(e)),M=e=>!!e&&Number.isInteger(Number(e)),ie=e=>e.endsWith("%")&&m(e.slice(0,-1)),I=e=>bo.test(e),Le=()=>!0,ko=e=>uo.test(e)&&!fo.test(e),ce=()=>!1,xo=e=>go.test(e),wo=e=>ho.test(e),vo=e=>!n(e)&&!a(e),yo=e=>e.startsWith("@container")&&(e[10]==="/"&&e[11]!==void 0||e[11]==="s"&&e[16]!==void 0&&e.startsWith("-size/",10)||e[11]==="n"&&e[18]!==void 0&&e.startsWith("-normal/",10)),zo=e=>L(e,Te,ce),n=e=>Ie.test(e),$=e=>L(e,Ee,ko),Se=e=>L(e,Lo,m),Go=e=>L(e,Be,Le),Co=e=>L(e,qe,ce),We=e=>L(e,$e,ce),jo=e=>L(e,Ae,wo),X=e=>L(e,_e,xo),a=e=>Pe.test(e),F=e=>A(e,Ee),Mo=e=>A(e,qe),Oe=e=>A(e,$e),No=e=>A(e,Te),Io=e=>A(e,Ae),Y=e=>A(e,_e,!0),Po=e=>A(e,Be,!0),L=(e,t,o)=>{const r=Ie.exec(e);return r?r[1]?t(r[1]):o(r[2]):!1},A=(e,t,o=!1)=>{const r=Pe.exec(e);return r?r[1]?t(r[1]):o:!1},$e=e=>e==="position"||e==="percentage",Ae=e=>e==="image"||e==="url",Te=e=>e==="length"||e==="size"||e==="bg-size",Ee=e=>e==="length",Lo=e=>e==="number",qe=e=>e==="family-name",Be=e=>e==="number"||e==="weight",_e=e=>e==="shadow",Re=()=>{const e=f("color"),t=f("font"),o=f("text"),r=f("font-weight"),s=f("tracking"),l=f("leading"),d=f("breakpoint"),b=f("container"),u=f("spacing"),p=f("radius"),z=f("shadow"),h=f("inset-shadow"),S=f("text-shadow"),j=f("drop-shadow"),R=f("blur"),w=f("perspective"),G=f("aspect"),W=f("ease"),v=f("animate"),D=()=>["auto","avoid","all","avoid-page","page","left","right","column"],T=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],E=()=>[...T(),a,n],q=()=>["auto","hidden","clip","visible","scroll"],N=()=>["auto","contain","none"],i=()=>[a,n,u],y=()=>[P,"full","auto",...i()],me=()=>[M,"none","subgrid",a,n],pe=()=>["auto",{span:["full",M,a,n]},M,a,n],H=()=>[M,"auto",a,n],be=()=>["auto","min","max","fr",a,n],oe=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],B=()=>["start","end","center","stretch","center-safe","end-safe"],C=()=>["auto",...i()],O=()=>[P,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...i()],re=()=>[P,"screen","full","dvw","lvw","svw","min","max","fit",...i()],te=()=>[P,"screen","full","lh","dvh","lvh","svh","min","max","fit",...i()],c=()=>[e,a,n],ue=()=>[...T(),Oe,We,{position:[a,n]}],fe=()=>["no-repeat",{repeat:["","x","y","space","round"]}],ge=()=>["auto","cover","contain",No,zo,{size:[a,n]}],se=()=>[ie,F,$],k=()=>["","none","full",p,a,n],x=()=>["",m,F,$],J=()=>["solid","dashed","dotted","double"],he=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],g=()=>[m,ie,Oe,We],ke=()=>["","none",R,a,n],K=()=>["none",m,a,n],Q=()=>["none",m,a,n],ne=()=>[m,a,n],U=()=>[P,"full",...i()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[I],breakpoint:[I],color:[Le],container:[I],"drop-shadow":[I],ease:["in","out","in-out"],font:[vo],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[I],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[I],shadow:[I],spacing:["px",m],text:[I],"text-shadow":[I],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",P,n,a,G]}],container:["container"],"container-type":[{"@container":["","normal","size",a,n]}],"container-named":[yo],columns:[{columns:[m,n,a,b]}],"break-after":[{"break-after":D()}],"break-before":[{"break-before":D()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],sr:["sr-only","not-sr-only"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:E()}],overflow:[{overflow:q()}],"overflow-x":[{"overflow-x":q()}],"overflow-y":[{"overflow-y":q()}],overscroll:[{overscroll:N()}],"overscroll-x":[{"overscroll-x":N()}],"overscroll-y":[{"overscroll-y":N()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:y()}],"inset-x":[{"inset-x":y()}],"inset-y":[{"inset-y":y()}],start:[{"inset-s":y(),start:y()}],end:[{"inset-e":y(),end:y()}],"inset-bs":[{"inset-bs":y()}],"inset-be":[{"inset-be":y()}],top:[{top:y()}],right:[{right:y()}],bottom:[{bottom:y()}],left:[{left:y()}],visibility:["visible","invisible","collapse"],z:[{z:[M,"auto",a,n]}],basis:[{basis:[P,"full","auto",b,...i()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[m,P,"auto","initial","none",n]}],grow:[{grow:["",m,a,n]}],shrink:[{shrink:["",m,a,n]}],order:[{order:[M,"first","last","none",a,n]}],"grid-cols":[{"grid-cols":me()}],"col-start-end":[{col:pe()}],"col-start":[{"col-start":H()}],"col-end":[{"col-end":H()}],"grid-rows":[{"grid-rows":me()}],"row-start-end":[{row:pe()}],"row-start":[{"row-start":H()}],"row-end":[{"row-end":H()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":be()}],"auto-rows":[{"auto-rows":be()}],gap:[{gap:i()}],"gap-x":[{"gap-x":i()}],"gap-y":[{"gap-y":i()}],"justify-content":[{justify:[...oe(),"normal"]}],"justify-items":[{"justify-items":[...B(),"normal"]}],"justify-self":[{"justify-self":["auto",...B()]}],"align-content":[{content:["normal",...oe()]}],"align-items":[{items:[...B(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...B(),{baseline:["","last"]}]}],"place-content":[{"place-content":oe()}],"place-items":[{"place-items":[...B(),"baseline"]}],"place-self":[{"place-self":["auto",...B()]}],p:[{p:i()}],px:[{px:i()}],py:[{py:i()}],ps:[{ps:i()}],pe:[{pe:i()}],pbs:[{pbs:i()}],pbe:[{pbe:i()}],pt:[{pt:i()}],pr:[{pr:i()}],pb:[{pb:i()}],pl:[{pl:i()}],m:[{m:C()}],mx:[{mx:C()}],my:[{my:C()}],ms:[{ms:C()}],me:[{me:C()}],mbs:[{mbs:C()}],mbe:[{mbe:C()}],mt:[{mt:C()}],mr:[{mr:C()}],mb:[{mb:C()}],ml:[{ml:C()}],"space-x":[{"space-x":i()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":i()}],"space-y-reverse":["space-y-reverse"],size:[{size:O()}],"inline-size":[{inline:["auto",...re()]}],"min-inline-size":[{"min-inline":["auto",...re()]}],"max-inline-size":[{"max-inline":["none",...re()]}],"block-size":[{block:["auto",...te()]}],"min-block-size":[{"min-block":["auto",...te()]}],"max-block-size":[{"max-block":["none",...te()]}],w:[{w:[b,"screen",...O()]}],"min-w":[{"min-w":[b,"screen","none",...O()]}],"max-w":[{"max-w":[b,"screen","none","prose",{screen:[d]},...O()]}],h:[{h:["screen","lh",...O()]}],"min-h":[{"min-h":["screen","lh","none",...O()]}],"max-h":[{"max-h":["screen","lh",...O()]}],"font-size":[{text:["base",o,F,$]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[r,Po,Go]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",ie,n]}],"font-family":[{font:[Mo,Co,t]}],"font-features":[{"font-features":[n]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:[s,a,n]}],"line-clamp":[{"line-clamp":[m,"none",a,Se]}],leading:[{leading:[l,...i()]}],"list-image":[{"list-image":["none",a,n]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",a,n]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:c()}],"text-color":[{text:c()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...J(),"wavy"]}],"text-decoration-thickness":[{decoration:[m,"from-font","auto",a,$]}],"text-decoration-color":[{decoration:c()}],"underline-offset":[{"underline-offset":[m,"auto",a,n]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:i()}],"tab-size":[{tab:[M,a,n]}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",a,n]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",a,n]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:ue()}],"bg-repeat":[{bg:fe()}],"bg-size":[{bg:ge()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},M,a,n],radial:["",a,n],conic:[M,a,n]},Io,jo]}],"bg-color":[{bg:c()}],"gradient-from-pos":[{from:se()}],"gradient-via-pos":[{via:se()}],"gradient-to-pos":[{to:se()}],"gradient-from":[{from:c()}],"gradient-via":[{via:c()}],"gradient-to":[{to:c()}],rounded:[{rounded:k()}],"rounded-s":[{"rounded-s":k()}],"rounded-e":[{"rounded-e":k()}],"rounded-t":[{"rounded-t":k()}],"rounded-r":[{"rounded-r":k()}],"rounded-b":[{"rounded-b":k()}],"rounded-l":[{"rounded-l":k()}],"rounded-ss":[{"rounded-ss":k()}],"rounded-se":[{"rounded-se":k()}],"rounded-ee":[{"rounded-ee":k()}],"rounded-es":[{"rounded-es":k()}],"rounded-tl":[{"rounded-tl":k()}],"rounded-tr":[{"rounded-tr":k()}],"rounded-br":[{"rounded-br":k()}],"rounded-bl":[{"rounded-bl":k()}],"border-w":[{border:x()}],"border-w-x":[{"border-x":x()}],"border-w-y":[{"border-y":x()}],"border-w-s":[{"border-s":x()}],"border-w-e":[{"border-e":x()}],"border-w-bs":[{"border-bs":x()}],"border-w-be":[{"border-be":x()}],"border-w-t":[{"border-t":x()}],"border-w-r":[{"border-r":x()}],"border-w-b":[{"border-b":x()}],"border-w-l":[{"border-l":x()}],"divide-x":[{"divide-x":x()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":x()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...J(),"hidden","none"]}],"divide-style":[{divide:[...J(),"hidden","none"]}],"border-color":[{border:c()}],"border-color-x":[{"border-x":c()}],"border-color-y":[{"border-y":c()}],"border-color-s":[{"border-s":c()}],"border-color-e":[{"border-e":c()}],"border-color-bs":[{"border-bs":c()}],"border-color-be":[{"border-be":c()}],"border-color-t":[{"border-t":c()}],"border-color-r":[{"border-r":c()}],"border-color-b":[{"border-b":c()}],"border-color-l":[{"border-l":c()}],"divide-color":[{divide:c()}],"outline-style":[{outline:[...J(),"none","hidden"]}],"outline-offset":[{"outline-offset":[m,a,n]}],"outline-w":[{outline:["",m,F,$]}],"outline-color":[{outline:c()}],shadow:[{shadow:["","none",z,Y,X]}],"shadow-color":[{shadow:c()}],"inset-shadow":[{"inset-shadow":["none",h,Y,X]}],"inset-shadow-color":[{"inset-shadow":c()}],"ring-w":[{ring:x()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:c()}],"ring-offset-w":[{"ring-offset":[m,$]}],"ring-offset-color":[{"ring-offset":c()}],"inset-ring-w":[{"inset-ring":x()}],"inset-ring-color":[{"inset-ring":c()}],"text-shadow":[{"text-shadow":["none",S,Y,X]}],"text-shadow-color":[{"text-shadow":c()}],opacity:[{opacity:[m,a,n]}],"mix-blend":[{"mix-blend":[...he(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":he()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[m]}],"mask-image-linear-from-pos":[{"mask-linear-from":g()}],"mask-image-linear-to-pos":[{"mask-linear-to":g()}],"mask-image-linear-from-color":[{"mask-linear-from":c()}],"mask-image-linear-to-color":[{"mask-linear-to":c()}],"mask-image-t-from-pos":[{"mask-t-from":g()}],"mask-image-t-to-pos":[{"mask-t-to":g()}],"mask-image-t-from-color":[{"mask-t-from":c()}],"mask-image-t-to-color":[{"mask-t-to":c()}],"mask-image-r-from-pos":[{"mask-r-from":g()}],"mask-image-r-to-pos":[{"mask-r-to":g()}],"mask-image-r-from-color":[{"mask-r-from":c()}],"mask-image-r-to-color":[{"mask-r-to":c()}],"mask-image-b-from-pos":[{"mask-b-from":g()}],"mask-image-b-to-pos":[{"mask-b-to":g()}],"mask-image-b-from-color":[{"mask-b-from":c()}],"mask-image-b-to-color":[{"mask-b-to":c()}],"mask-image-l-from-pos":[{"mask-l-from":g()}],"mask-image-l-to-pos":[{"mask-l-to":g()}],"mask-image-l-from-color":[{"mask-l-from":c()}],"mask-image-l-to-color":[{"mask-l-to":c()}],"mask-image-x-from-pos":[{"mask-x-from":g()}],"mask-image-x-to-pos":[{"mask-x-to":g()}],"mask-image-x-from-color":[{"mask-x-from":c()}],"mask-image-x-to-color":[{"mask-x-to":c()}],"mask-image-y-from-pos":[{"mask-y-from":g()}],"mask-image-y-to-pos":[{"mask-y-to":g()}],"mask-image-y-from-color":[{"mask-y-from":c()}],"mask-image-y-to-color":[{"mask-y-to":c()}],"mask-image-radial":[{"mask-radial":[a,n]}],"mask-image-radial-from-pos":[{"mask-radial-from":g()}],"mask-image-radial-to-pos":[{"mask-radial-to":g()}],"mask-image-radial-from-color":[{"mask-radial-from":c()}],"mask-image-radial-to-color":[{"mask-radial-to":c()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":T()}],"mask-image-conic-pos":[{"mask-conic":[m]}],"mask-image-conic-from-pos":[{"mask-conic-from":g()}],"mask-image-conic-to-pos":[{"mask-conic-to":g()}],"mask-image-conic-from-color":[{"mask-conic-from":c()}],"mask-image-conic-to-color":[{"mask-conic-to":c()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:ue()}],"mask-repeat":[{mask:fe()}],"mask-size":[{mask:ge()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",a,n]}],filter:[{filter:["","none",a,n]}],blur:[{blur:ke()}],brightness:[{brightness:[m,a,n]}],contrast:[{contrast:[m,a,n]}],"drop-shadow":[{"drop-shadow":["","none",j,Y,X]}],"drop-shadow-color":[{"drop-shadow":c()}],grayscale:[{grayscale:["",m,a,n]}],"hue-rotate":[{"hue-rotate":[m,a,n]}],invert:[{invert:["",m,a,n]}],saturate:[{saturate:[m,a,n]}],sepia:[{sepia:["",m,a,n]}],"backdrop-filter":[{"backdrop-filter":["","none",a,n]}],"backdrop-blur":[{"backdrop-blur":ke()}],"backdrop-brightness":[{"backdrop-brightness":[m,a,n]}],"backdrop-contrast":[{"backdrop-contrast":[m,a,n]}],"backdrop-grayscale":[{"backdrop-grayscale":["",m,a,n]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[m,a,n]}],"backdrop-invert":[{"backdrop-invert":["",m,a,n]}],"backdrop-opacity":[{"backdrop-opacity":[m,a,n]}],"backdrop-saturate":[{"backdrop-saturate":[m,a,n]}],"backdrop-sepia":[{"backdrop-sepia":["",m,a,n]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":i()}],"border-spacing-x":[{"border-spacing-x":i()}],"border-spacing-y":[{"border-spacing-y":i()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",a,n]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[m,"initial",a,n]}],ease:[{ease:["linear","initial",W,a,n]}],delay:[{delay:[m,a,n]}],animate:[{animate:["none",v,a,n]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[w,a,n]}],"perspective-origin":[{"perspective-origin":E()}],rotate:[{rotate:K()}],"rotate-x":[{"rotate-x":K()}],"rotate-y":[{"rotate-y":K()}],"rotate-z":[{"rotate-z":K()}],scale:[{scale:Q()}],"scale-x":[{"scale-x":Q()}],"scale-y":[{"scale-y":Q()}],"scale-z":[{"scale-z":Q()}],"scale-3d":["scale-3d"],skew:[{skew:ne()}],"skew-x":[{"skew-x":ne()}],"skew-y":[{"skew-y":ne()}],transform:[{transform:[a,n,"","none","gpu","cpu"]}],"transform-origin":[{origin:E()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:U()}],"translate-x":[{"translate-x":U()}],"translate-y":[{"translate-y":U()}],"translate-z":[{"translate-z":U()}],"translate-none":["translate-none"],zoom:[{zoom:[M,a,n]}],accent:[{accent:c()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:c()}],"color-scheme":[{scheme:["normal","dark","light","light-dark","only-dark","only-light"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",a,n]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scrollbar-thumb-color":[{"scrollbar-thumb":c()}],"scrollbar-track-color":[{"scrollbar-track":c()}],"scrollbar-gutter":[{"scrollbar-gutter":["auto","stable","both"]}],"scrollbar-w":[{scrollbar:["auto","thin","none"]}],"scroll-m":[{"scroll-m":i()}],"scroll-mx":[{"scroll-mx":i()}],"scroll-my":[{"scroll-my":i()}],"scroll-ms":[{"scroll-ms":i()}],"scroll-me":[{"scroll-me":i()}],"scroll-mbs":[{"scroll-mbs":i()}],"scroll-mbe":[{"scroll-mbe":i()}],"scroll-mt":[{"scroll-mt":i()}],"scroll-mr":[{"scroll-mr":i()}],"scroll-mb":[{"scroll-mb":i()}],"scroll-ml":[{"scroll-ml":i()}],"scroll-p":[{"scroll-p":i()}],"scroll-px":[{"scroll-px":i()}],"scroll-py":[{"scroll-py":i()}],"scroll-ps":[{"scroll-ps":i()}],"scroll-pe":[{"scroll-pe":i()}],"scroll-pbs":[{"scroll-pbs":i()}],"scroll-pbe":[{"scroll-pbe":i()}],"scroll-pt":[{"scroll-pt":i()}],"scroll-pr":[{"scroll-pr":i()}],"scroll-pb":[{"scroll-pb":i()}],"scroll-pl":[{"scroll-pl":i()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",a,n]}],fill:[{fill:["none",...c()]}],"stroke-w":[{stroke:[m,F,$,Se]}],stroke:[{stroke:["none",...c()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{"container-named":["container-type"],overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","inset-bs","inset-be","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pbs","pbe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mbs","mbe","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-x","border-w-y","border-w-s","border-w-e","border-w-bs","border-w-be","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-x","border-color-y","border-color-s","border-color-e","border-color-bs","border-color-be","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],translate:["translate-x","translate-y","translate-none"],"translate-none":["translate","translate-x","translate-y","translate-z"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mbs","scroll-mbe","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pbs","scroll-pbe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]},postfixLookupClassGroups:["container-type"],orderSensitiveModifiers:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}},So=(e,{cacheSize:t,prefix:o,experimentalParseClassName:r,extend:s={},override:l={}})=>(_(e,"cacheSize",t),_(e,"prefix",o),_(e,"experimentalParseClassName",r),Z(e.theme,l.theme),Z(e.classGroups,l.classGroups),Z(e.conflictingClassGroups,l.conflictingClassGroups),Z(e.conflictingClassGroupModifiers,l.conflictingClassGroupModifiers),_(e,"postfixLookupClassGroups",l.postfixLookupClassGroups),_(e,"orderSensitiveModifiers",l.orderSensitiveModifiers),ee(e.theme,s.theme),ee(e.classGroups,s.classGroups),ee(e.conflictingClassGroups,s.conflictingClassGroups),ee(e.conflictingClassGroupModifiers,s.conflictingClassGroupModifiers),de(e,s,"postfixLookupClassGroups"),de(e,s,"orderSensitiveModifiers"),e),_=(e,t,o)=>{o!==void 0&&(e[t]=o)},Z=(e,t)=>{if(t)for(const o in t)_(e,o,t[o])},ee=(e,t)=>{if(t)for(const o in t)de(e,t,o)},de=(e,t,o)=>{const r=t[o];r!==void 0&&(e[o]=e[o]?e[o].concat(r):r)},Wo=(e,...t)=>typeof e=="function"?Ne(Re,e,...t):Ne(()=>So(Re(),e),...t),Oo=Wo({extend:{classGroups:{"font-size":[{text:["caption","meta","body","title"]}]}}});function $o(...e){return Oo(we(e))}export{we as a,$o as c};
|
|
1
|
+
function xe(e){var t,o,r="";if(typeof e=="string"||typeof e=="number")r+=e;else if(typeof e=="object")if(Array.isArray(e)){var s=e.length;for(t=0;t<s;t++)e[t]&&(o=xe(e[t]))&&(r&&(r+=" "),r+=o)}else for(o in e)e[o]&&(r&&(r+=" "),r+=o);return r}function we(){for(var e,t,o=0,r="",s=arguments.length;o<s;o++)(e=arguments[o])&&(t=xe(e))&&(r&&(r+=" "),r+=t);return r}const De=(e,t)=>{const o=new Array(e.length+t.length);for(let r=0;r<e.length;r++)o[r]=e[r];for(let r=0;r<t.length;r++)o[e.length+r]=t[r];return o},Fe=(e,t)=>({classGroupId:e,validator:t}),ve=(e=new Map,t=null,o)=>({nextPart:e,validators:t,classGroupId:o}),V="-",ye=[],He="arbitrary..",Je=e=>{const t=Qe(e),{conflictingClassGroups:o,conflictingClassGroupModifiers:r}=e;return{getClassGroupId:s=>{if(s.startsWith("[")&&s.endsWith("]"))return Ke(s);const l=s.split(V),d=l[0]===""&&l.length>1?1:0;return ze(l,d,t)},getConflictingClassGroupIds:(s,l)=>{if(l){const d=r[s],b=o[s];return d?b?De(b,d):d:b||ye}return o[s]||ye}}},ze=(e,t,o)=>{if(e.length-t===0)return o.classGroupId;const r=e[t],s=o.nextPart.get(r);if(s){const u=ze(e,t+1,s);if(u)return u}const l=o.validators;if(l===null)return;const d=t===0?e.join(V):e.slice(t).join(V),b=l.length;for(let u=0;u<b;u++){const p=l[u];if(p.validator(d))return p.classGroupId}},Ke=e=>e.slice(1,-1).indexOf(":")===-1?void 0:(()=>{const t=e.slice(1,-1),o=t.indexOf(":"),r=t.slice(0,o);return r?He+r:void 0})(),Qe=e=>{const{theme:t,classGroups:o}=e;return Ue(o,t)},Ue=(e,t)=>{const o=ve();for(const r in e){const s=e[r];ae(s,o,r,t)}return o},ae=(e,t,o,r)=>{const s=e.length;for(let l=0;l<s;l++){const d=e[l];Ve(d,t,o,r)}},Ve=(e,t,o,r)=>{if(typeof e=="string"){Xe(e,t,o);return}if(typeof e=="function"){Ye(e,t,o,r);return}Ze(e,t,o,r)},Xe=(e,t,o)=>{const r=e===""?t:Ge(t,e);r.classGroupId=o},Ye=(e,t,o,r)=>{if(eo(e)){ae(e(r),t,o,r);return}t.validators===null&&(t.validators=[]),t.validators.push(Fe(o,e))},Ze=(e,t,o,r)=>{const s=Object.entries(e),l=s.length;for(let d=0;d<l;d++){const[b,u]=s[d];ae(u,Ge(t,b),o,r)}},Ge=(e,t)=>{let o=e;const r=t.split(V),s=r.length;for(let l=0;l<s;l++){const d=r[l];let b=o.nextPart.get(d);b||(b=ve(),o.nextPart.set(d,b)),o=b}return o},eo=e=>"isThemeGetter"in e&&e.isThemeGetter===!0,oo=e=>{if(e<1)return{get:()=>{},set:()=>{}};let t=0,o=Object.create(null),r=Object.create(null);const s=(l,d)=>{o[l]=d,t++,t>e&&(t=0,r=o,o=Object.create(null))};return{get(l){let d=o[l];if(d!==void 0)return d;if((d=r[l])!==void 0)return s(l,d),d},set(l,d){l in o?o[l]=d:s(l,d)}}},le="!",Ce=":",ro=[],je=(e,t,o,r,s)=>({modifiers:e,hasImportantModifier:t,baseClassName:o,maybePostfixModifierPosition:r,isExternal:s}),to=e=>{const{prefix:t,experimentalParseClassName:o}=e;let r=s=>{const l=[];let d=0,b=0,u=0,p;const z=s.length;for(let w=0;w<z;w++){const G=s[w];if(d===0&&b===0){if(G===Ce){l.push(s.slice(u,w)),u=w+1;continue}if(G==="/"){p=w;continue}}G==="["?d++:G==="]"?d--:G==="("?b++:G===")"&&b--}const h=l.length===0?s:s.slice(u);let S=h,j=!1;h.endsWith(le)?(S=h.slice(0,-1),j=!0):h.startsWith(le)&&(S=h.slice(1),j=!0);const R=p&&p>u?p-u:void 0;return je(l,j,S,R)};if(t){const s=t+Ce,l=r;r=d=>d.startsWith(s)?l(d.slice(s.length)):je(ro,!1,d,void 0,!0)}if(o){const s=r;r=l=>o({className:l,parseClassName:s})}return r},so=e=>{const t=new Map;return e.orderSensitiveModifiers.forEach((o,r)=>{t.set(o,1e6+r)}),o=>{const r=[];let s=[];for(let l=0;l<o.length;l++){const d=o[l],b=d[0]==="[",u=t.has(d);b||u?(s.length>0&&(s.sort(),r.push(...s),s=[]),r.push(d)):s.push(d)}return s.length>0&&(s.sort(),r.push(...s)),r}},no=e=>({cache:oo(e.cacheSize),parseClassName:to(e),sortModifiers:so(e),postfixLookupClassGroupIds:ao(e),...Je(e)}),ao=e=>{const t=Object.create(null),o=e.postfixLookupClassGroups;if(o)for(let r=0;r<o.length;r++)t[o[r]]=!0;return t},lo=/\s+/,io=(e,t)=>{const{parseClassName:o,getClassGroupId:r,getConflictingClassGroupIds:s,sortModifiers:l,postfixLookupClassGroupIds:d}=t,b=[],u=e.trim().split(lo);let p="";for(let z=u.length-1;z>=0;z-=1){const h=u[z],{isExternal:S,modifiers:j,hasImportantModifier:R,baseClassName:w,maybePostfixModifierPosition:G}=o(h);if(S){p=h+(p.length>0?" "+p:p);continue}let W=!!G,v;if(W){const N=w.substring(0,G);v=r(N);const i=v&&d[v]?r(w):void 0;i&&i!==v&&(v=i,W=!1)}else v=r(w);if(!v){if(!W){p=h+(p.length>0?" "+p:p);continue}if(v=r(w),!v){p=h+(p.length>0?" "+p:p);continue}W=!1}const D=j.length===0?"":j.length===1?j[0]:l(j).join(":"),T=R?D+le:D,E=T+v;if(b.indexOf(E)>-1)continue;b.push(E);const q=s(v,W);for(let N=0;N<q.length;++N){const i=q[N];b.push(T+i)}p=h+(p.length>0?" "+p:p)}return p},co=(...e)=>{let t=0,o,r,s="";for(;t<e.length;)(o=e[t++])&&(r=Me(o))&&(s&&(s+=" "),s+=r);return s},Me=e=>{if(typeof e=="string")return e;let t,o="";for(let r=0;r<e.length;r++)e[r]&&(t=Me(e[r]))&&(o&&(o+=" "),o+=t);return o},Ne=(e,...t)=>{let o,r,s,l;const d=u=>{const p=t.reduce((z,h)=>h(z),e());return o=no(p),r=o.cache.get,s=o.cache.set,l=b,b(u)},b=u=>{const p=r(u);if(p)return p;const z=io(u,o);return s(u,z),z};return l=d,(...u)=>l(co(...u))},mo=[],f=e=>{const t=o=>o[e]||mo;return t.isThemeGetter=!0,t},Ie=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,Pe=/^\((?:(\w[\w-]*):)?(.+)\)$/i,po=/^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/,bo=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,uo=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,fo=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,go=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,ho=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,P=e=>po.test(e),m=e=>!!e&&!Number.isNaN(Number(e)),M=e=>!!e&&Number.isInteger(Number(e)),ie=e=>e.endsWith("%")&&m(e.slice(0,-1)),I=e=>bo.test(e),Le=()=>!0,ko=e=>uo.test(e)&&!fo.test(e),ce=()=>!1,xo=e=>go.test(e),wo=e=>ho.test(e),vo=e=>!n(e)&&!a(e),yo=e=>e.startsWith("@container")&&(e[10]==="/"&&e[11]!==void 0||e[11]==="s"&&e[16]!==void 0&&e.startsWith("-size/",10)||e[11]==="n"&&e[18]!==void 0&&e.startsWith("-normal/",10)),zo=e=>L(e,Te,ce),n=e=>Ie.test(e),$=e=>L(e,Ee,ko),Se=e=>L(e,Lo,m),Go=e=>L(e,Be,Le),Co=e=>L(e,qe,ce),We=e=>L(e,$e,ce),jo=e=>L(e,Ae,wo),X=e=>L(e,_e,xo),a=e=>Pe.test(e),F=e=>A(e,Ee),Mo=e=>A(e,qe),Oe=e=>A(e,$e),No=e=>A(e,Te),Io=e=>A(e,Ae),Y=e=>A(e,_e,!0),Po=e=>A(e,Be,!0),L=(e,t,o)=>{const r=Ie.exec(e);return r?r[1]?t(r[1]):o(r[2]):!1},A=(e,t,o=!1)=>{const r=Pe.exec(e);return r?r[1]?t(r[1]):o:!1},$e=e=>e==="position"||e==="percentage",Ae=e=>e==="image"||e==="url",Te=e=>e==="length"||e==="size"||e==="bg-size",Ee=e=>e==="length",Lo=e=>e==="number",qe=e=>e==="family-name",Be=e=>e==="number"||e==="weight",_e=e=>e==="shadow",Re=()=>{const e=f("color"),t=f("font"),o=f("text"),r=f("font-weight"),s=f("tracking"),l=f("leading"),d=f("breakpoint"),b=f("container"),u=f("spacing"),p=f("radius"),z=f("shadow"),h=f("inset-shadow"),S=f("text-shadow"),j=f("drop-shadow"),R=f("blur"),w=f("perspective"),G=f("aspect"),W=f("ease"),v=f("animate"),D=()=>["auto","avoid","all","avoid-page","page","left","right","column"],T=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],E=()=>[...T(),a,n],q=()=>["auto","hidden","clip","visible","scroll"],N=()=>["auto","contain","none"],i=()=>[a,n,u],y=()=>[P,"full","auto",...i()],me=()=>[M,"none","subgrid",a,n],pe=()=>["auto",{span:["full",M,a,n]},M,a,n],H=()=>[M,"auto",a,n],be=()=>["auto","min","max","fr",a,n],oe=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],B=()=>["start","end","center","stretch","center-safe","end-safe"],C=()=>["auto",...i()],O=()=>[P,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...i()],re=()=>[P,"screen","full","dvw","lvw","svw","min","max","fit",...i()],te=()=>[P,"screen","full","lh","dvh","lvh","svh","min","max","fit",...i()],c=()=>[e,a,n],ue=()=>[...T(),Oe,We,{position:[a,n]}],fe=()=>["no-repeat",{repeat:["","x","y","space","round"]}],ge=()=>["auto","cover","contain",No,zo,{size:[a,n]}],se=()=>[ie,F,$],k=()=>["","none","full",p,a,n],x=()=>["",m,F,$],J=()=>["solid","dashed","dotted","double"],he=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],g=()=>[m,ie,Oe,We],ke=()=>["","none",R,a,n],K=()=>["none",m,a,n],Q=()=>["none",m,a,n],ne=()=>[m,a,n],U=()=>[P,"full",...i()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[I],breakpoint:[I],color:[Le],container:[I],"drop-shadow":[I],ease:["in","out","in-out"],font:[vo],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[I],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[I],shadow:[I],spacing:["px",m],text:[I],"text-shadow":[I],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",P,n,a,G]}],container:["container"],"container-type":[{"@container":["","normal","size",a,n]}],"container-named":[yo],columns:[{columns:[m,n,a,b]}],"break-after":[{"break-after":D()}],"break-before":[{"break-before":D()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],sr:["sr-only","not-sr-only"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:E()}],overflow:[{overflow:q()}],"overflow-x":[{"overflow-x":q()}],"overflow-y":[{"overflow-y":q()}],overscroll:[{overscroll:N()}],"overscroll-x":[{"overscroll-x":N()}],"overscroll-y":[{"overscroll-y":N()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:y()}],"inset-x":[{"inset-x":y()}],"inset-y":[{"inset-y":y()}],start:[{"inset-s":y(),start:y()}],end:[{"inset-e":y(),end:y()}],"inset-bs":[{"inset-bs":y()}],"inset-be":[{"inset-be":y()}],top:[{top:y()}],right:[{right:y()}],bottom:[{bottom:y()}],left:[{left:y()}],visibility:["visible","invisible","collapse"],z:[{z:[M,"auto",a,n]}],basis:[{basis:[P,"full","auto",b,...i()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[m,P,"auto","initial","none",n]}],grow:[{grow:["",m,a,n]}],shrink:[{shrink:["",m,a,n]}],order:[{order:[M,"first","last","none",a,n]}],"grid-cols":[{"grid-cols":me()}],"col-start-end":[{col:pe()}],"col-start":[{"col-start":H()}],"col-end":[{"col-end":H()}],"grid-rows":[{"grid-rows":me()}],"row-start-end":[{row:pe()}],"row-start":[{"row-start":H()}],"row-end":[{"row-end":H()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":be()}],"auto-rows":[{"auto-rows":be()}],gap:[{gap:i()}],"gap-x":[{"gap-x":i()}],"gap-y":[{"gap-y":i()}],"justify-content":[{justify:[...oe(),"normal"]}],"justify-items":[{"justify-items":[...B(),"normal"]}],"justify-self":[{"justify-self":["auto",...B()]}],"align-content":[{content:["normal",...oe()]}],"align-items":[{items:[...B(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...B(),{baseline:["","last"]}]}],"place-content":[{"place-content":oe()}],"place-items":[{"place-items":[...B(),"baseline"]}],"place-self":[{"place-self":["auto",...B()]}],p:[{p:i()}],px:[{px:i()}],py:[{py:i()}],ps:[{ps:i()}],pe:[{pe:i()}],pbs:[{pbs:i()}],pbe:[{pbe:i()}],pt:[{pt:i()}],pr:[{pr:i()}],pb:[{pb:i()}],pl:[{pl:i()}],m:[{m:C()}],mx:[{mx:C()}],my:[{my:C()}],ms:[{ms:C()}],me:[{me:C()}],mbs:[{mbs:C()}],mbe:[{mbe:C()}],mt:[{mt:C()}],mr:[{mr:C()}],mb:[{mb:C()}],ml:[{ml:C()}],"space-x":[{"space-x":i()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":i()}],"space-y-reverse":["space-y-reverse"],size:[{size:O()}],"inline-size":[{inline:["auto",...re()]}],"min-inline-size":[{"min-inline":["auto",...re()]}],"max-inline-size":[{"max-inline":["none",...re()]}],"block-size":[{block:["auto",...te()]}],"min-block-size":[{"min-block":["auto",...te()]}],"max-block-size":[{"max-block":["none",...te()]}],w:[{w:[b,"screen",...O()]}],"min-w":[{"min-w":[b,"screen","none",...O()]}],"max-w":[{"max-w":[b,"screen","none","prose",{screen:[d]},...O()]}],h:[{h:["screen","lh",...O()]}],"min-h":[{"min-h":["screen","lh","none",...O()]}],"max-h":[{"max-h":["screen","lh",...O()]}],"font-size":[{text:["base",o,F,$]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[r,Po,Go]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",ie,n]}],"font-family":[{font:[Mo,Co,t]}],"font-features":[{"font-features":[n]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:[s,a,n]}],"line-clamp":[{"line-clamp":[m,"none",a,Se]}],leading:[{leading:[l,...i()]}],"list-image":[{"list-image":["none",a,n]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",a,n]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:c()}],"text-color":[{text:c()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...J(),"wavy"]}],"text-decoration-thickness":[{decoration:[m,"from-font","auto",a,$]}],"text-decoration-color":[{decoration:c()}],"underline-offset":[{"underline-offset":[m,"auto",a,n]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:i()}],"tab-size":[{tab:[M,a,n]}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",a,n]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",a,n]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:ue()}],"bg-repeat":[{bg:fe()}],"bg-size":[{bg:ge()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},M,a,n],radial:["",a,n],conic:[M,a,n]},Io,jo]}],"bg-color":[{bg:c()}],"gradient-from-pos":[{from:se()}],"gradient-via-pos":[{via:se()}],"gradient-to-pos":[{to:se()}],"gradient-from":[{from:c()}],"gradient-via":[{via:c()}],"gradient-to":[{to:c()}],rounded:[{rounded:k()}],"rounded-s":[{"rounded-s":k()}],"rounded-e":[{"rounded-e":k()}],"rounded-t":[{"rounded-t":k()}],"rounded-r":[{"rounded-r":k()}],"rounded-b":[{"rounded-b":k()}],"rounded-l":[{"rounded-l":k()}],"rounded-ss":[{"rounded-ss":k()}],"rounded-se":[{"rounded-se":k()}],"rounded-ee":[{"rounded-ee":k()}],"rounded-es":[{"rounded-es":k()}],"rounded-tl":[{"rounded-tl":k()}],"rounded-tr":[{"rounded-tr":k()}],"rounded-br":[{"rounded-br":k()}],"rounded-bl":[{"rounded-bl":k()}],"border-w":[{border:x()}],"border-w-x":[{"border-x":x()}],"border-w-y":[{"border-y":x()}],"border-w-s":[{"border-s":x()}],"border-w-e":[{"border-e":x()}],"border-w-bs":[{"border-bs":x()}],"border-w-be":[{"border-be":x()}],"border-w-t":[{"border-t":x()}],"border-w-r":[{"border-r":x()}],"border-w-b":[{"border-b":x()}],"border-w-l":[{"border-l":x()}],"divide-x":[{"divide-x":x()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":x()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...J(),"hidden","none"]}],"divide-style":[{divide:[...J(),"hidden","none"]}],"border-color":[{border:c()}],"border-color-x":[{"border-x":c()}],"border-color-y":[{"border-y":c()}],"border-color-s":[{"border-s":c()}],"border-color-e":[{"border-e":c()}],"border-color-bs":[{"border-bs":c()}],"border-color-be":[{"border-be":c()}],"border-color-t":[{"border-t":c()}],"border-color-r":[{"border-r":c()}],"border-color-b":[{"border-b":c()}],"border-color-l":[{"border-l":c()}],"divide-color":[{divide:c()}],"outline-style":[{outline:[...J(),"none","hidden"]}],"outline-offset":[{"outline-offset":[m,a,n]}],"outline-w":[{outline:["",m,F,$]}],"outline-color":[{outline:c()}],shadow:[{shadow:["","none",z,Y,X]}],"shadow-color":[{shadow:c()}],"inset-shadow":[{"inset-shadow":["none",h,Y,X]}],"inset-shadow-color":[{"inset-shadow":c()}],"ring-w":[{ring:x()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:c()}],"ring-offset-w":[{"ring-offset":[m,$]}],"ring-offset-color":[{"ring-offset":c()}],"inset-ring-w":[{"inset-ring":x()}],"inset-ring-color":[{"inset-ring":c()}],"text-shadow":[{"text-shadow":["none",S,Y,X]}],"text-shadow-color":[{"text-shadow":c()}],opacity:[{opacity:[m,a,n]}],"mix-blend":[{"mix-blend":[...he(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":he()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[m]}],"mask-image-linear-from-pos":[{"mask-linear-from":g()}],"mask-image-linear-to-pos":[{"mask-linear-to":g()}],"mask-image-linear-from-color":[{"mask-linear-from":c()}],"mask-image-linear-to-color":[{"mask-linear-to":c()}],"mask-image-t-from-pos":[{"mask-t-from":g()}],"mask-image-t-to-pos":[{"mask-t-to":g()}],"mask-image-t-from-color":[{"mask-t-from":c()}],"mask-image-t-to-color":[{"mask-t-to":c()}],"mask-image-r-from-pos":[{"mask-r-from":g()}],"mask-image-r-to-pos":[{"mask-r-to":g()}],"mask-image-r-from-color":[{"mask-r-from":c()}],"mask-image-r-to-color":[{"mask-r-to":c()}],"mask-image-b-from-pos":[{"mask-b-from":g()}],"mask-image-b-to-pos":[{"mask-b-to":g()}],"mask-image-b-from-color":[{"mask-b-from":c()}],"mask-image-b-to-color":[{"mask-b-to":c()}],"mask-image-l-from-pos":[{"mask-l-from":g()}],"mask-image-l-to-pos":[{"mask-l-to":g()}],"mask-image-l-from-color":[{"mask-l-from":c()}],"mask-image-l-to-color":[{"mask-l-to":c()}],"mask-image-x-from-pos":[{"mask-x-from":g()}],"mask-image-x-to-pos":[{"mask-x-to":g()}],"mask-image-x-from-color":[{"mask-x-from":c()}],"mask-image-x-to-color":[{"mask-x-to":c()}],"mask-image-y-from-pos":[{"mask-y-from":g()}],"mask-image-y-to-pos":[{"mask-y-to":g()}],"mask-image-y-from-color":[{"mask-y-from":c()}],"mask-image-y-to-color":[{"mask-y-to":c()}],"mask-image-radial":[{"mask-radial":[a,n]}],"mask-image-radial-from-pos":[{"mask-radial-from":g()}],"mask-image-radial-to-pos":[{"mask-radial-to":g()}],"mask-image-radial-from-color":[{"mask-radial-from":c()}],"mask-image-radial-to-color":[{"mask-radial-to":c()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":T()}],"mask-image-conic-pos":[{"mask-conic":[m]}],"mask-image-conic-from-pos":[{"mask-conic-from":g()}],"mask-image-conic-to-pos":[{"mask-conic-to":g()}],"mask-image-conic-from-color":[{"mask-conic-from":c()}],"mask-image-conic-to-color":[{"mask-conic-to":c()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:ue()}],"mask-repeat":[{mask:fe()}],"mask-size":[{mask:ge()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",a,n]}],filter:[{filter:["","none",a,n]}],blur:[{blur:ke()}],brightness:[{brightness:[m,a,n]}],contrast:[{contrast:[m,a,n]}],"drop-shadow":[{"drop-shadow":["","none",j,Y,X]}],"drop-shadow-color":[{"drop-shadow":c()}],grayscale:[{grayscale:["",m,a,n]}],"hue-rotate":[{"hue-rotate":[m,a,n]}],invert:[{invert:["",m,a,n]}],saturate:[{saturate:[m,a,n]}],sepia:[{sepia:["",m,a,n]}],"backdrop-filter":[{"backdrop-filter":["","none",a,n]}],"backdrop-blur":[{"backdrop-blur":ke()}],"backdrop-brightness":[{"backdrop-brightness":[m,a,n]}],"backdrop-contrast":[{"backdrop-contrast":[m,a,n]}],"backdrop-grayscale":[{"backdrop-grayscale":["",m,a,n]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[m,a,n]}],"backdrop-invert":[{"backdrop-invert":["",m,a,n]}],"backdrop-opacity":[{"backdrop-opacity":[m,a,n]}],"backdrop-saturate":[{"backdrop-saturate":[m,a,n]}],"backdrop-sepia":[{"backdrop-sepia":["",m,a,n]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":i()}],"border-spacing-x":[{"border-spacing-x":i()}],"border-spacing-y":[{"border-spacing-y":i()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",a,n]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[m,"initial",a,n]}],ease:[{ease:["linear","initial",W,a,n]}],delay:[{delay:[m,a,n]}],animate:[{animate:["none",v,a,n]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[w,a,n]}],"perspective-origin":[{"perspective-origin":E()}],rotate:[{rotate:K()}],"rotate-x":[{"rotate-x":K()}],"rotate-y":[{"rotate-y":K()}],"rotate-z":[{"rotate-z":K()}],scale:[{scale:Q()}],"scale-x":[{"scale-x":Q()}],"scale-y":[{"scale-y":Q()}],"scale-z":[{"scale-z":Q()}],"scale-3d":["scale-3d"],skew:[{skew:ne()}],"skew-x":[{"skew-x":ne()}],"skew-y":[{"skew-y":ne()}],transform:[{transform:[a,n,"","none","gpu","cpu"]}],"transform-origin":[{origin:E()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:U()}],"translate-x":[{"translate-x":U()}],"translate-y":[{"translate-y":U()}],"translate-z":[{"translate-z":U()}],"translate-none":["translate-none"],zoom:[{zoom:[M,a,n]}],accent:[{accent:c()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:c()}],"color-scheme":[{scheme:["normal","dark","light","light-dark","only-dark","only-light"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",a,n]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scrollbar-thumb-color":[{"scrollbar-thumb":c()}],"scrollbar-track-color":[{"scrollbar-track":c()}],"scrollbar-gutter":[{"scrollbar-gutter":["auto","stable","both"]}],"scrollbar-w":[{scrollbar:["auto","thin","none"]}],"scroll-m":[{"scroll-m":i()}],"scroll-mx":[{"scroll-mx":i()}],"scroll-my":[{"scroll-my":i()}],"scroll-ms":[{"scroll-ms":i()}],"scroll-me":[{"scroll-me":i()}],"scroll-mbs":[{"scroll-mbs":i()}],"scroll-mbe":[{"scroll-mbe":i()}],"scroll-mt":[{"scroll-mt":i()}],"scroll-mr":[{"scroll-mr":i()}],"scroll-mb":[{"scroll-mb":i()}],"scroll-ml":[{"scroll-ml":i()}],"scroll-p":[{"scroll-p":i()}],"scroll-px":[{"scroll-px":i()}],"scroll-py":[{"scroll-py":i()}],"scroll-ps":[{"scroll-ps":i()}],"scroll-pe":[{"scroll-pe":i()}],"scroll-pbs":[{"scroll-pbs":i()}],"scroll-pbe":[{"scroll-pbe":i()}],"scroll-pt":[{"scroll-pt":i()}],"scroll-pr":[{"scroll-pr":i()}],"scroll-pb":[{"scroll-pb":i()}],"scroll-pl":[{"scroll-pl":i()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",a,n]}],fill:[{fill:["none",...c()]}],"stroke-w":[{stroke:[m,F,$,Se]}],stroke:[{stroke:["none",...c()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{"container-named":["container-type"],overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","inset-bs","inset-be","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pbs","pbe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mbs","mbe","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-x","border-w-y","border-w-s","border-w-e","border-w-bs","border-w-be","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-x","border-color-y","border-color-s","border-color-e","border-color-bs","border-color-be","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],translate:["translate-x","translate-y","translate-none"],"translate-none":["translate","translate-x","translate-y","translate-z"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mbs","scroll-mbe","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pbs","scroll-pbe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]},postfixLookupClassGroups:["container-type"],orderSensitiveModifiers:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}},So=(e,{cacheSize:t,prefix:o,experimentalParseClassName:r,extend:s={},override:l={}})=>(_(e,"cacheSize",t),_(e,"prefix",o),_(e,"experimentalParseClassName",r),Z(e.theme,l.theme),Z(e.classGroups,l.classGroups),Z(e.conflictingClassGroups,l.conflictingClassGroups),Z(e.conflictingClassGroupModifiers,l.conflictingClassGroupModifiers),_(e,"postfixLookupClassGroups",l.postfixLookupClassGroups),_(e,"orderSensitiveModifiers",l.orderSensitiveModifiers),ee(e.theme,s.theme),ee(e.classGroups,s.classGroups),ee(e.conflictingClassGroups,s.conflictingClassGroups),ee(e.conflictingClassGroupModifiers,s.conflictingClassGroupModifiers),de(e,s,"postfixLookupClassGroups"),de(e,s,"orderSensitiveModifiers"),e),_=(e,t,o)=>{o!==void 0&&(e[t]=o)},Z=(e,t)=>{if(t)for(const o in t)_(e,o,t[o])},ee=(e,t)=>{if(t)for(const o in t)de(e,t,o)},de=(e,t,o)=>{const r=t[o];r!==void 0&&(e[o]=e[o]?e[o].concat(r):r)},Wo=(e,...t)=>typeof e=="function"?Ne(Re,e,...t):Ne(()=>So(Re(),e),...t),Oo=Wo({extend:{classGroups:{"font-size":[{text:["micro","caption","meta","compact","body","title"]}]}}});function $o(...e){return Oo(we(e))}export{we as a,$o as c};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{s as f,p as d,q as p,i as u,c as s,S as b,A as $,J,t as g,g as L,h as P,a as q,d as A,b as E,e as M}from"./define-CGGX-7Vg.js";import{c as m}from"./cn-DN5AWfiS.js";import{c as R}from"./check-DPeeMUYx.js";import{c as B}from"./copy-B6DO4PqB.js";const D={bash:()=>import("./bash-InADTalH.js"),javascript:()=>import("./javascript-C25yR2R2.js"),typescript:()=>import("./typescript-RycA9KXf.js"),tsx:()=>import("./tsx-B8rCNbgL.js"),html:()=>import("./html-CPZ3oZQ7.js"),css:()=>import("./css-M7EaDHN_.js"),json:()=>import("./json-DxJze_jm.js"),vue:()=>import("./vue-BmIZj4XD.js"),svelte:()=>import("./svelte--5p79yCD.js")},F={"github-dark-dimmed":()=>import("./github-dark-dimmed-DUshB20C.js"),"github-light":()=>import("./github-light-JYsPkUQd.js")},G={js:"javascript",ts:"typescript",jsx:"tsx",sh:"bash",shell:"bash"},w="github-dark-dimmed";let I={...D},K={...F},N={...G},v=null;const y=new Set,T=new Set;function O(){return v||(v=(async()=>{const[{createHighlighterCore:e},{createJavaScriptRegexEngine:t}]=await Promise.all([import("./core-AYMC6_lb.js"),import("./engine-javascript-vq0WuIJl.js")]);return e({themes:[],langs:[],engine:t()})})()),v}function j(e){return N[e]??e}async function Q(e,t){const n=j(t);if(y.has(n))return!0;const r=I[n];return r?(await e.loadLanguage(r()),y.add(n),!0):!1}async function k(e,t){if(T.has(t))return!0;const n=K[t];return n?(await e.loadTheme(n()),T.add(t),!0):!1}function U(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">")}function h(e){return`<pre><code>${U(e)}</code></pre>`}async function V(e,t,n){if(!e)return h(e);try{const r=await O();if(!await Q(r,t))return h(e);const a=await k(r,n)?n:await k(r,w)?w:null;return a?r.codeToHtml(e,{lang:j(t),theme:a}):h(e)}catch{return h(e)}}var W=g("<button type=button part=copy>"),C=g("<div>"),X=g("<div tabindex=0>"),Y=g("<div tabindex=0><pre><code>");const Z=2e3;function _(e){const[t,n]=L(!1);let r;return P(()=>clearTimeout(r)),(()=>{var a=W();return a.$$click=()=>{var i;Promise.resolve((i=navigator.clipboard)==null?void 0:i.writeText(e.text)).catch(()=>{}),n(!0),clearTimeout(r),r=setTimeout(()=>n(!1),Z)},u(a,s(b,{get when(){return t()},get fallback(){return s(B,{size:14,"aria-hidden":"true"})},get children(){return s(R,{size:14,"aria-hidden":"true",class:"text-emerald-500"})}})),q(i=>{var l=t()?"Copied":"Copy code",c=m("inline-flex items-center justify-center rounded-md p-1.5","text-muted-foreground transition-colors hover:bg-muted hover:text-foreground","focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring");return l!==i.e&&A(a,"aria-label",i.e=l),c!==i.t&&E(a,i.t=c),i},{e:void 0,t:void 0}),a})()}function ee(e){const[t,n]=f(e,["children","class","copy","copyText"]);return(()=>{var r=C();return d(r,p({get class(){return m("not-prose flex w-full flex-col overflow-clip border","border-border bg-card text-card-foreground","rounded-[var(--kai-code-radius,0.75rem)]",t.class)}},n),!1,!0),u(r,s(b,{get when(){return t.copy},get children(){return s(re,{class:"justify-end border-b border-border px-2 py-1",get children(){return s(_,{get text(){return t.copyText??""}})}})}}),null),u(r,()=>t.children,null),r})()}function te(e){const[t,n]=f(e,["code","language","theme","class"]),r=$(),a=()=>t.language??"tsx",i=()=>t.theme??r.codeTheme(),l=()=>r.codeHighlight(),[c]=J(()=>l()?{code:t.code,lang:a(),theme:i()}:null,o=>V(o.code,o.lang,o.theme)),S=()=>{switch(r.proseSize()){case"xs":return"text-caption";case"sm":return"text-compact";case"base":return"text-sm";case"lg":return"text-base"}},x=()=>m("w-full overflow-x-auto kai-focus-inset [&>pre]:px-4 [&>pre]:py-4",S(),t.class);return s(b,{get when(){return c()},get fallback(){return(()=>{var o=Y(),H=o.firstChild,z=H.firstChild;return d(o,p({get class(){return x()}},n),!1,!0),u(z,()=>t.code),o})()},get children(){var o=X();return d(o,p({get class(){return x()},get innerHTML(){return c()}},n),!1,!1),o}})}function re(e){const[t,n]=f(e,["children","class"]);return(()=>{var r=C();return d(r,p({get class(){return m("flex items-center justify-between",t.class)}},n),!1,!0),u(r,()=>t.children),r})()}M(["click"]);export{ee as C,te as a};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{s as c,g as k,w as I,c as y,p,q as u,i as v,m as h,a as R,H as q,b as B,t as g,B as E,G as H}from"./define-CGGX-7Vg.js";import{c as C}from"./cn-DN5AWfiS.js";var P=g("<div>"),G=g("<button>"),N=g("<div><div>");const w=E(),m=()=>{const o=H(w);if(!o)throw new Error("Collapsible parts must be used within <Collapsible>");return o};function S(o){var n;const[e,l]=c(o,["open","defaultOpen","onOpenChange","disabled","controllerRef","children","class"]),[r,a]=k(e.defaultOpen??!1),s=()=>e.open!==void 0,t=()=>s()?!!e.open:r(),i=()=>!!e.disabled,f=d=>{var b;t()!==d&&(s()||a(d),(b=e.onOpenChange)==null||b.call(e,d))},x=()=>{i()||f(!t())};(n=e.controllerRef)==null||n.call(e,{open:t,setOpen:f});const O=I();return y(w.Provider,{value:{open:t,toggle:x,contentId:O,disabled:i},get children(){var d=P();return p(d,u({get class(){return e.class}},l,{get"data-expanded"(){return t()?"":void 0},get"data-closed"(){return t()?void 0:""},get"data-state"(){return t()?"open":"closed"}}),!1,!0),v(d,()=>e.children),d}})}function U(o){const n=m(),[e,l]=c(o,["children","class","as","onClick"]),r=()=>({type:"button","aria-expanded":n.open(),"aria-controls":n.contentId,disabled:n.disabled()||void 0,"data-expanded":n.open()?"":void 0,"data-closed":n.open()?void 0:"","data-state":n.open()?"open":"closed",onClick:a=>{n.disabled()||(typeof e.onClick=="function"&&e.onClick(a),n.toggle())},class:e.class,...l});return h(()=>h(()=>!!e.as)()?e.as(r()):(()=>{var a=G();return p(a,u(r),!1,!0),v(a,()=>e.children),a})())}function _(o){const n=m(),[e,l]=c(o,["children","class"]);return(()=>{var r=N(),a=r.firstChild;return p(r,u(l,{get id(){return n.contentId},get"data-expanded"(){return n.open()?"":void 0},get"data-closed"(){return n.open()?void 0:""},get class(){return C("grid transition-[grid-template-rows] duration-200 ease-out",n.open()?"grid-rows-[1fr]":"grid-rows-[0fr]")}}),!1,!0),v(a,()=>e.children),R(s=>{var t=!n.open(),i=C("overflow-hidden",e.class);return t!==s.e&&q(r,"inert",s.e=t),i!==s.t&&B(a,s.t=i),s},{e:void 0,t:void 0}),r})()}export{S as C,U as a,_ as b};
|
|
@@ -5,8 +5,60 @@ export interface AttachmentData {
|
|
|
5
5
|
type: 'file' | 'source-document';
|
|
6
6
|
filename?: string;
|
|
7
7
|
mediaType?: string;
|
|
8
|
+
/** A `data:` URI or an https URL — this is the field the wire encodes, so it
|
|
9
|
+
* is what reaches the model. NEVER `URL.createObjectURL`: an object URL
|
|
10
|
+
* resolves only inside the tab that minted it, so a `blob:` URL renders a
|
|
11
|
+
* flawless preview and is meaningless to any provider —
|
|
12
|
+
* `toOpenAIMessages`/`toAnthropicMessages` refuse it rather than send an
|
|
13
|
+
* address the model cannot fetch. Read picked files with
|
|
14
|
+
* `FileReader.readAsDataURL` instead (see `elements/default-input.tsx`). */
|
|
8
15
|
url?: string;
|
|
9
16
|
title?: string;
|
|
10
17
|
}
|
|
11
|
-
|
|
18
|
+
/**
|
|
19
|
+
* How an attachment is DRAWN, derived from what the wire can do with it.
|
|
20
|
+
*
|
|
21
|
+
* ★ THIS IS NOT A LIST OF MEDIA TYPES, and that is the whole point. It used to
|
|
22
|
+
* be one in disguise (`image | video | audio | document`, decided by a prefix
|
|
23
|
+
* switch in `attachments.tsx`), and it disagreed with `wire/media-types.ts` in
|
|
24
|
+
* both directions: SVG and MP4 drew a convincing preview that then threw at
|
|
25
|
+
* encode time, while PDF and text — the formats the wire handles best — drew
|
|
26
|
+
* the same anonymous icon as a `.zip`. `getMediaCategory` now asks the media
|
|
27
|
+
* policy and returns what it says, so there is one declaration and this is a
|
|
28
|
+
* projection of it.
|
|
29
|
+
*
|
|
30
|
+
* `image` / `document` / `text` ARE `EncodableKind` from `wire/media-types.ts`.
|
|
31
|
+
* They are spelled out rather than imported because this module is deliberately
|
|
32
|
+
* JSX-free and dependency-free for the framework-neutral consumers; the runtime
|
|
33
|
+
* agreement is pinned by `attachment-media-policy.test.tsx`, whose drift guard
|
|
34
|
+
* derives both sides from the policy.
|
|
35
|
+
*
|
|
36
|
+
* `video` and `audio` are GONE on purpose. No wire this kit ships can carry
|
|
37
|
+
* either, so they were categories whose only job was to make an unsendable file
|
|
38
|
+
* look sendable; both now land in `unsendable`.
|
|
39
|
+
*/
|
|
40
|
+
export type AttachmentMediaCategory =
|
|
41
|
+
/** A raster image in one of the four formats both APIs document. */
|
|
42
|
+
'image'
|
|
43
|
+
/** A PDF. Named for the Anthropic `document` block it becomes. */
|
|
44
|
+
| 'document'
|
|
45
|
+
/** Text content — `text/*`, JSON, XML, YAML. Rides as text on both wires. */
|
|
46
|
+
| 'text'
|
|
47
|
+
/** A RAG citation chip, not something the user staged. Never encoded. */
|
|
48
|
+
| 'source'
|
|
49
|
+
/**
|
|
50
|
+
* No wire format this kit ships can carry this type — SVG, BMP, video, audio,
|
|
51
|
+
* archives. That is a fact about the kit's encoders, knowable at render time
|
|
52
|
+
* and true of every provider, which is why it is safe to show the user.
|
|
53
|
+
*
|
|
54
|
+
* It is NOT "this will fail to send": the renderer does not know which
|
|
55
|
+
* provider a thread is bound for, and must not pretend to.
|
|
56
|
+
*/
|
|
57
|
+
| 'unsendable'
|
|
58
|
+
/**
|
|
59
|
+
* Nobody named this file, so nothing is known yet. Its bytes decide it (see
|
|
60
|
+
* `classifyAttachment`), and they have not been read at render time. Marking
|
|
61
|
+
* it `unsendable` would be a guess wearing a fact's clothes.
|
|
62
|
+
*/
|
|
63
|
+
| 'unknown';
|
|
12
64
|
export type AttachmentVariant = 'grid' | 'inline' | 'list';
|
|
@@ -1,7 +1,38 @@
|
|
|
1
1
|
import { JSX } from 'solid-js';
|
|
2
2
|
import { AttachmentData, AttachmentMediaCategory, AttachmentVariant } from './attachment-types.js';
|
|
3
3
|
export type { AttachmentData, AttachmentMediaCategory, AttachmentVariant } from './attachment-types.js';
|
|
4
|
+
/**
|
|
5
|
+
* What to DRAW for this attachment, asked of the one module that knows.
|
|
6
|
+
*
|
|
7
|
+
* ★ NO MEDIA TYPES APPEAR BELOW, and that is the fix. This function used to be
|
|
8
|
+
* a prefix switch — `image/` → image, `video/` → video, `application/` or
|
|
9
|
+
* `text/` → document — a second list of media types in a repo whose media-type
|
|
10
|
+
* declaration says, at its own definition, "if you find yourself writing a
|
|
11
|
+
* second list of media types anywhere in this repo, delete it and read this".
|
|
12
|
+
* It had drifted in both directions: `image/svg+xml` came back `image` and drew
|
|
13
|
+
* a real thumbnail for a format the encoder refuses outright, while
|
|
14
|
+
* `application/json` came back `document` when the wire carries it as text.
|
|
15
|
+
*
|
|
16
|
+
* `DEFAULT_MEDIA_POLICY` and not a narrowed one, on purpose. A developer's
|
|
17
|
+
* `accept` filter says what a user may STAGE; it says nothing about what an
|
|
18
|
+
* already-staged attachment IS, and narrowing here would redraw a message
|
|
19
|
+
* retroactively when a host changed a prop. The default policy is the kit's
|
|
20
|
+
* full capability set, so `unsupported` against it means exactly "no wire
|
|
21
|
+
* format this kit ships can carry this" — which is the only claim about
|
|
22
|
+
* sendability the renderer can honestly make without knowing the provider.
|
|
23
|
+
*/
|
|
4
24
|
export declare const getMediaCategory: (data: AttachmentData) => AttachmentMediaCategory;
|
|
25
|
+
/**
|
|
26
|
+
* The fact, written out, for the one category where the kit knows something the
|
|
27
|
+
* user needs to know.
|
|
28
|
+
*
|
|
29
|
+
* A FACT ABOUT THE FORMATS, NOT A PREDICTION ABOUT THIS REQUEST. At render time
|
|
30
|
+
* the kit does not know which provider the thread is bound for, so "this will
|
|
31
|
+
* fail" is not its to say. What it does know is that no wire format it ships
|
|
32
|
+
* has any representation for the type at all, which is true of every provider
|
|
33
|
+
* and is what this sentence claims.
|
|
34
|
+
*/
|
|
35
|
+
export declare const getUnsendableNote: (data: AttachmentData) => string | undefined;
|
|
5
36
|
export declare const getAttachmentLabel: (data: AttachmentData) => string;
|
|
6
37
|
interface AttachmentsContextValue {
|
|
7
38
|
variant: AttachmentVariant;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { Accessor } from 'solid-js';
|
|
2
|
+
/**
|
|
3
|
+
* Fit-to-container scaling: the size tiers are fixed
|
|
4
|
+
* px by design (`sizes.ts`), so a container narrower than a tier's natural
|
|
5
|
+
* footprint used to CLIP the picture at its edges. The dispatcher now scales
|
|
6
|
+
* the WHOLE visualization down proportionally to fit, and renders byte-equal
|
|
7
|
+
* to the designed px metrics whenever the container is at least natural size.
|
|
8
|
+
*
|
|
9
|
+
* Why a transform-scale wrapper rather than relative units or reflow:
|
|
10
|
+
* - The px tiers ARE the design (LiveKit parity); switching the geometry to
|
|
11
|
+
* relative units would change rendering at every container size, not just
|
|
12
|
+
* the overflowing ones.
|
|
13
|
+
* - Reflowing (fewer bars, smaller gaps) changes what the animation MEANS;
|
|
14
|
+
* proportional scale keeps the exact picture, just smaller.
|
|
15
|
+
* - A transform also covers the shader variants for free: their canvases size
|
|
16
|
+
* their backing store from layout size (`clientWidth`), which a transform
|
|
17
|
+
* does not change, so the bitmap stays at full natural resolution and only
|
|
18
|
+
* the composited output shrinks. No variant needs an exception.
|
|
19
|
+
*
|
|
20
|
+
* Both sizes are MEASURED (one ResizeObserver watching both wrappers), never
|
|
21
|
+
* restated from `sizes.ts`: the natural footprint depends on variant, size
|
|
22
|
+
* tier, barCount/count/radius and the consumer's own part styling, and a
|
|
23
|
+
* hand-derived width table would rot the day any of those moved.
|
|
24
|
+
*
|
|
25
|
+
* Where ResizeObserver does not exist (SSR, jsdom) this is inert: scale stays
|
|
26
|
+
* 1 and nothing is written, which is exactly the pre-fix rendering.
|
|
27
|
+
*/
|
|
28
|
+
export declare function computeFitScale(available: number | undefined, natural: number | undefined): number;
|
|
29
|
+
export interface FitScale {
|
|
30
|
+
/** Ref for the outer wrapper (the host box, clamped by `max-width: 100%`). */
|
|
31
|
+
observeOuter: (el: HTMLElement) => void;
|
|
32
|
+
/** Ref for the inner wrapper (the natural-size content that gets scaled). */
|
|
33
|
+
observeInner: (el: HTMLElement) => void;
|
|
34
|
+
/** 1 when the content fits; the proportional shrink factor when it does not. */
|
|
35
|
+
scale: Accessor<number>;
|
|
36
|
+
/** The scaled content height in px while shrunk, else undefined: the outer
|
|
37
|
+
* wrapper adopts it so the page never reserves the unscaled height. */
|
|
38
|
+
scaledHeight: Accessor<number | undefined>;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* One ResizeObserver over both wrappers. ResizeObserver reports layout
|
|
42
|
+
* (border-box/content-box) sizes, which CSS transforms do not affect, so the
|
|
43
|
+
* inner wrapper keeps reporting its NATURAL size even while scaled, and the
|
|
44
|
+
* outer wrapper (whose `max-width: 100%` is what lets a narrow parent
|
|
45
|
+
* actually constrain it) reports the width the container is offering. The
|
|
46
|
+
* ratio of the two is the scale, with `computeFitScale` guarding the
|
|
47
|
+
* unmeasured/degenerate cases to 1 so a bad reading can never blank the
|
|
48
|
+
* element.
|
|
49
|
+
*/
|
|
50
|
+
export declare function createFitScale(): FitScale;
|
|
@@ -52,10 +52,24 @@ export interface AudioVisualizerProps {
|
|
|
52
52
|
complexity?: number;
|
|
53
53
|
/** Setting this makes the element an announced image instead of decorative. */
|
|
54
54
|
label?: string;
|
|
55
|
+
/** Live audio to analyze. NOTE: amplitude renders only while
|
|
56
|
+
* `state === 'speaking'` unless `listeningAmplitude` is set; every other
|
|
57
|
+
* state plays its scripted animation and the analysis output is unused. */
|
|
55
58
|
stream?: MediaStream;
|
|
59
|
+
/** Same speaking-only amplitude rule as `stream`: see `listeningAmplitude`. */
|
|
56
60
|
audioElement?: HTMLMediaElement;
|
|
57
|
-
/** Pre-computed levels. Set this and no AudioContext is ever constructed.
|
|
61
|
+
/** Pre-computed levels. Set this and no AudioContext is ever constructed.
|
|
62
|
+
* Same speaking-only amplitude rule as `stream`: see `listeningAmplitude`. */
|
|
58
63
|
bands?: number[];
|
|
64
|
+
/**
|
|
65
|
+
* Opt in to rendering live amplitude during `listening` as well, using the
|
|
66
|
+
* same presentation as `speaking`. Default off, which keeps LiveKit parity:
|
|
67
|
+
* amplitude (from `stream`, `audioElement` or `bands`) renders only while
|
|
68
|
+
* `state === 'speaking'`. Set this to show a real mic-level picture while
|
|
69
|
+
* the USER is the one talking. Forwarded to every variant; see
|
|
70
|
+
* `amplitudeRenderState` in variant-bar for the single mapping they share.
|
|
71
|
+
*/
|
|
72
|
+
listeningAmplitude?: boolean;
|
|
59
73
|
/**
|
|
60
74
|
* Custom fragment shader for `variant="custom"`. See `ShaderSpec` for the
|
|
61
75
|
* full contract -- most importantly, `fragment` MUST output premultiplied
|
|
@@ -5,8 +5,18 @@ import { VisualizerSize } from './sizes.js';
|
|
|
5
5
|
export interface VariantProps {
|
|
6
6
|
state: VisualizerState;
|
|
7
7
|
size: VisualizerSize;
|
|
8
|
-
/** Multiband levels, 0..1. Only read while `state === 'speaking'
|
|
8
|
+
/** Multiband levels, 0..1. Only read while `state === 'speaking'`, or also
|
|
9
|
+
* while `'listening'` when `listeningAmplitude` is set. */
|
|
9
10
|
bands: number[];
|
|
11
|
+
/**
|
|
12
|
+
* Opt in to rendering live amplitude during `listening` as well: the
|
|
13
|
+
* variant presents `listening` exactly as it presents `speaking` (live
|
|
14
|
+
* levels, lit geometry) while the host keeps reporting the real state via
|
|
15
|
+
* `data-kai-state`. Default off, which preserves LiveKit parity: amplitude
|
|
16
|
+
* renders only while `state === 'speaking'`, and every other state plays
|
|
17
|
+
* its scripted sequence. See `amplitudeRenderState`.
|
|
18
|
+
*/
|
|
19
|
+
listeningAmplitude?: boolean;
|
|
10
20
|
/** `prefers-reduced-motion`: pin the sequencer at its first frame. */
|
|
11
21
|
frozen: boolean;
|
|
12
22
|
/** Overrides the inherited `currentColor` the bars are painted with. */
|
|
@@ -41,6 +51,19 @@ export interface VariantProps {
|
|
|
41
51
|
* `packages/shadcn/components/agents-ui/agent-audio-visualizer-bar.tsx`
|
|
42
52
|
* (Apache License 2.0).
|
|
43
53
|
*/
|
|
54
|
+
/**
|
|
55
|
+
* The state the RENDERING follows, as opposed to the state the consumer set.
|
|
56
|
+
*
|
|
57
|
+
* `listeningAmplitude` opts the `listening` state into the full speaking
|
|
58
|
+
* presentation: every variant routes its state-driven decisions (levels,
|
|
59
|
+
* highlight sequence, thresholds, volume overrides) through this ONE mapping
|
|
60
|
+
* rather than each patching its own `=== 'speaking'` gates, so the opt-in
|
|
61
|
+
* cannot half-apply within a variant. The host's `data-kai-state` deliberately
|
|
62
|
+
* keeps the REAL state, so CSS hooks and consumers observing the element are
|
|
63
|
+
* never lied to. With the flag absent or false this is the identity mapping,
|
|
64
|
+
* which is what keeps the default byte-identical to LiveKit parity.
|
|
65
|
+
*/
|
|
66
|
+
export declare function amplitudeRenderState(state: VisualizerState, listeningAmplitude: boolean | undefined): VisualizerState;
|
|
44
67
|
export declare function BarVisualizer(props: VariantProps & {
|
|
45
68
|
barCount?: number;
|
|
46
69
|
}): JSX.Element;
|
|
@@ -51,6 +51,19 @@ export interface CardRendererProps {
|
|
|
51
51
|
* supplied through `schemas` — is never validated either way.
|
|
52
52
|
*/
|
|
53
53
|
validateCards?: boolean;
|
|
54
|
+
/**
|
|
55
|
+
* The custom-element host node to emit off when no `CardProvider` is above this
|
|
56
|
+
* renderer: events leave as the bubbling, composed `kai-card` CustomEvent
|
|
57
|
+
* (`emitCardEvent`), so `listenForCardEvents(element)` — or a plain
|
|
58
|
+
* `addEventListener('kai-card', …)` on the element — receives them.
|
|
59
|
+
*
|
|
60
|
+
* This is what makes cards INSIDE `<kai-chat>`/`<kai-message>`/`<kai-thread>`
|
|
61
|
+
* interactive: those facades pass their own host element down here, and
|
|
62
|
+
* with neither this nor a `CardProvider` every emit — ready/action/submit/
|
|
63
|
+
* dismiss/reopen and the contract `error` — used to be silently discarded.
|
|
64
|
+
* An ambient `CardProvider` still wins when present.
|
|
65
|
+
*/
|
|
66
|
+
hostElement?: HTMLElement;
|
|
54
67
|
}
|
|
55
68
|
/**
|
|
56
69
|
* True when the consumer registered a schema for this type.
|
|
@@ -16,6 +16,10 @@ export interface CardProps extends JSX.HTMLAttributes<HTMLDivElement> {
|
|
|
16
16
|
/** Stable id for the heading (so composing cards can `aria-labelledby` it).
|
|
17
17
|
* Auto-generated when omitted. */
|
|
18
18
|
headingId?: string;
|
|
19
|
+
/** Stable id for the description (so composing cards can `aria-describedby` it
|
|
20
|
+
* — e.g. `kai-choice`'s radiogroup points at its prompt). Auto-generated when
|
|
21
|
+
* omitted, mirroring `headingId`. */
|
|
22
|
+
descriptionId?: string;
|
|
19
23
|
/** Render a dismiss (×) button that hides the card and calls `onDismiss`.
|
|
20
24
|
* Opt-in, OFF by default — the contract cards never set it, so they are
|
|
21
25
|
* unaffected. */
|
|
@@ -9,6 +9,7 @@ import { ProseSize } from '../primitives/chat-config.js';
|
|
|
9
9
|
import { ModelOption } from '../types.js';
|
|
10
10
|
import { CardComponentMap } from '../primitives/card-registry.js';
|
|
11
11
|
import { CardSchemaMap } from './card-renderer.js';
|
|
12
|
+
import { JSX } from 'solid-js';
|
|
12
13
|
export interface ChatThreadContextUsage {
|
|
13
14
|
usedTokens: number;
|
|
14
15
|
maxTokens: number;
|
|
@@ -33,6 +34,11 @@ export interface ChatThreadProps {
|
|
|
33
34
|
* the kit checks its own seven built-ins and leaves your own card type
|
|
34
35
|
* unvalidated. A schema here WINS over a built-in of the same name. */
|
|
35
36
|
cardSchemas?: CardSchemaMap;
|
|
37
|
+
/** The custom-element host node to emit card events off when no `CardProvider`
|
|
38
|
+
* is present, forwarded through `MessageBody` to `CardRenderer`. The
|
|
39
|
+
* element facades pass their own host element so card events leave as the
|
|
40
|
+
* bubbling `kai-card` CustomEvent. */
|
|
41
|
+
cardHostElement?: HTMLElement;
|
|
36
42
|
/** Value of the input. A **string** is controlled (the host owns the text and
|
|
37
43
|
* updates it on `kai-value-change`). A **ComposerDoc** is a one-time seed that
|
|
38
44
|
* pre-populates pills; the user then edits freely. Leave unset for uncontrolled. */
|
|
@@ -61,6 +67,19 @@ export interface ChatThreadProps {
|
|
|
61
67
|
/** Enable Shiki syntax highlighting in code blocks. Turn off to render plain
|
|
62
68
|
* `<pre>` blocks (lighter, no highlighter load). Default true. */
|
|
63
69
|
codeHighlight?: boolean;
|
|
70
|
+
/** How `reasoning` parts render across the thread. `'full'` (default) is the
|
|
71
|
+
* current collapsible-disclosure behavior; `'compact'` shows only a shimmer
|
|
72
|
+
* loader while a reasoning part streams and nothing once it settles (no
|
|
73
|
+
* expandable detail); `'off'` renders reasoning parts not at all. Forwarded
|
|
74
|
+
* to every `MessageBody` as `reasoningMode`. */
|
|
75
|
+
reasoning?: 'full' | 'compact' | 'off';
|
|
76
|
+
/** Seeds the reasoning disclosure open AND keeps it tracking the stream
|
|
77
|
+
* (open while streaming, closes when it settles): the pre-Task-19f `full`
|
|
78
|
+
* behavior. Default false/absent: the panel starts closed (just the
|
|
79
|
+
* "Thinking" shimmer chip) and only opens on click, the current default
|
|
80
|
+
* (owner ruling, 2026-08-26). Meaningless when `reasoning` is `'compact'`
|
|
81
|
+
* or `'off'`. Forwarded to every `MessageBody` as `reasoningDefaultOpen`. */
|
|
82
|
+
reasoningOpen?: boolean;
|
|
64
83
|
/** Optional header title shown on the left of the header. */
|
|
65
84
|
chatTitle?: string;
|
|
66
85
|
/** Optional model list. When set (>1 model) a ModelSwitcher is shown in the
|
|
@@ -78,12 +97,34 @@ export interface ChatThreadProps {
|
|
|
78
97
|
headerStart?: boolean;
|
|
79
98
|
/** Whether the host has `slot="header-end"` content (right of the controls). */
|
|
80
99
|
headerEnd?: boolean;
|
|
100
|
+
/** Extra content rendered in the header-end region, AFTER `slot="header-end"`.
|
|
101
|
+
* This is a JSX escape hatch for a caller composing `ChatThread` directly as a
|
|
102
|
+
* Solid component (no shadow-DOM host, so there is no light-DOM node to slot) —
|
|
103
|
+
* the `kai-dock`-docked construct widget is the motivating case: it needs its
|
|
104
|
+
* own close affordance to sit IN the header row, sharing it with the title
|
|
105
|
+
* instead of floating as a second control with no visible relationship to the
|
|
106
|
+
* chat surface. Renders alongside the named slot rather than replacing it, so a
|
|
107
|
+
* real `slot="header-end"` consumer and this prop can both be present. Counts
|
|
108
|
+
* toward `showHeader()` the same as `headerEnd`, so a construct with no title
|
|
109
|
+
* and only this content still gets a header row to sit in. */
|
|
110
|
+
headerEndContent?: JSX.Element;
|
|
81
111
|
/** REPLACE: full custom header in place of the built-in title/model/context bar. */
|
|
82
112
|
headerFull?: boolean;
|
|
83
113
|
/** INJECT: left sidebar column (e.g. a conversation list / your own nav). */
|
|
84
114
|
sidebar?: boolean;
|
|
85
115
|
/** REPLACE: custom zero-state rendered in the message area while the thread is empty (replaces the empty message list only; the composer and its suggestions still render). */
|
|
86
116
|
empty?: boolean;
|
|
117
|
+
/** REPLACE, JSX form: the empty-state content itself, for a caller composing
|
|
118
|
+
* `ChatThread` directly as a Solid component rather than through the `<kai-chat>`
|
|
119
|
+
* shadow-DOM boundary that `empty`/`slot="empty"` targets. Renders INSIDE this
|
|
120
|
+
* component's own tree — so a caller passing the kit's own `<Empty>` composition
|
|
121
|
+
* (`components/empty.tsx`) gets it fully styled by the adopted stylesheet, unlike
|
|
122
|
+
* `slot="empty"`: that slot only ever receives LIGHT-DOM children of the shadow
|
|
123
|
+
* HOST, and light-DOM nodes are outside the shadow root's adopted stylesheets, so
|
|
124
|
+
* Tailwind-utility-class content projected there renders bare. Takes priority
|
|
125
|
+
* over `empty`/`slot="empty"` when both are set — the two are alternate delivery
|
|
126
|
+
* mechanisms for the same region, not additive like `headerEndContent`. */
|
|
127
|
+
emptyContent?: JSX.Element;
|
|
87
128
|
/** REPLACE: full custom composer in place of the built-in prompt input. The
|
|
88
129
|
* projected content wires its own submit (the data-flow boundary). */
|
|
89
130
|
composer?: boolean;
|
|
@@ -98,8 +139,12 @@ export interface ChatThreadProps {
|
|
|
98
139
|
accept?: MediaTypeFilter;
|
|
99
140
|
/** Files the composer refused because `accept` excluded them. */
|
|
100
141
|
onAttachmentsRejected?: (rejected: RejectedAttachment[]) => void;
|
|
101
|
-
/**
|
|
102
|
-
|
|
142
|
+
/** When `false`, hides the built-in paperclip attach button. Defaults to
|
|
143
|
+
* `true` (undeclared keeps today's behavior: attach visible), matching
|
|
144
|
+
* `DefaultPromptInput`'s own default: only an explicit `false` hides it. */
|
|
145
|
+
attach?: boolean;
|
|
146
|
+
/** Show a web-search (Globe) button in the input toolbar; calls `onWebSearch`. */
|
|
147
|
+
webSearch?: boolean;
|
|
103
148
|
/** Show a Voice (Mic) button in the input toolbar; fires a `voice` event. */
|
|
104
149
|
voice?: boolean;
|
|
105
150
|
/** Rich entity triggers. Each `{ char, kind, items }` opens a caret-anchored
|
|
@@ -120,7 +165,7 @@ export interface ChatThreadProps {
|
|
|
120
165
|
onSuggestionClick?: (value: string) => void;
|
|
121
166
|
onModelChange?: (modelId: string) => void;
|
|
122
167
|
onMessageAction?: (detail: MessageActionDetail) => void;
|
|
123
|
-
|
|
168
|
+
onWebSearch?: () => void;
|
|
124
169
|
onVoice?: () => void;
|
|
125
170
|
/** Receive the imperative controller once mounted. The kai-chat facade forwards
|
|
126
171
|
* these as element methods (focus/clear/send/scrollToBottom). */
|
|
@@ -134,42 +179,4 @@ export interface ChatThreadController {
|
|
|
134
179
|
send(): void;
|
|
135
180
|
scrollToBottom(behavior?: ScrollBehavior): void;
|
|
136
181
|
}
|
|
137
|
-
|
|
138
|
-
* THE MESSAGE LIST'S KEY, and the reason it is not the message object. This is
|
|
139
|
-
* the canonical note; `thread.tsx` keys its identical list the same way and
|
|
140
|
-
* points here.
|
|
141
|
-
*
|
|
142
|
-
* `<For>` is REFERENCE-keyed, and a streaming assistant message gets a brand
|
|
143
|
-
* new object identity on every delta — `createAssistantStream` rebuilds it as
|
|
144
|
-
* `{ ...prev[i], parts: next }` because a new reference IS the re-render
|
|
145
|
-
* signal. Keyed on the objects, every chunk therefore looks like an entirely
|
|
146
|
-
* new list: the whole message row is torn down and rebuilt, and everything the
|
|
147
|
-
* user did inside it dies with it. Expanding a tool or reasoning panel
|
|
148
|
-
* mid-stream did nothing at all — the disclosure opened and was discarded
|
|
149
|
-
* microseconds later by the next token. (`MessageBody` keys its PARTS by
|
|
150
|
-
* position for exactly this reason; that fix was dead while its parent kept
|
|
151
|
-
* destroying the subtree above it.)
|
|
152
|
-
*
|
|
153
|
-
* So key on `message.id`, which is stable across the object churn: `<For>` over
|
|
154
|
-
* the id array diffs by string value, a delta produces an identical id list,
|
|
155
|
-
* and no row moves. The row then reads its message through `messages[i()]` —
|
|
156
|
-
* `<For>`'s index accessor, which it keeps current across inserts, removals and
|
|
157
|
-
* moves — so the CONTENT keeps updating through accessors while the DOM stays
|
|
158
|
-
* put.
|
|
159
|
-
*
|
|
160
|
-
* WHY NOT `<Index>`, the other way to survive the churn: `<Index>` keys by
|
|
161
|
-
* POSITION, so a row's local state (an open panel, a half-filled form card)
|
|
162
|
-
* belongs to the slot rather than to the message. Appends and tail truncations
|
|
163
|
-
* (regenerate/edit) are fine, but prepending older turns — load-earlier-history,
|
|
164
|
-
* which every real chat grows — shifts every row, and each open disclosure
|
|
165
|
-
* stays behind with the wrong message. Position IS a valid key inside a
|
|
166
|
-
* message, where the folds only ever append or patch a part in place; it is not
|
|
167
|
-
* one for the message list, where the host owns the array and splices it.
|
|
168
|
-
* Both approaches require the row to read through accessors — that is inherent
|
|
169
|
-
* in keeping a row mounted while its object is replaced, not a cost unique to
|
|
170
|
-
* either.
|
|
171
|
-
*
|
|
172
|
-
* Contract: `id` must be unique per message. It already had to be — the
|
|
173
|
-
* feedback/copy state above this list is keyed by it.
|
|
174
|
-
*/
|
|
175
|
-
export declare function ChatThread(props: ChatThreadProps): import("solid-js").JSX.Element;
|
|
182
|
+
export declare function ChatThread(props: ChatThreadProps): JSX.Element;
|