@kitn.ai/ui 0.25.1 → 0.26.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 +5 -7
- package/dist/components/attachment-types.d.ts +46 -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/chat-thread.d.ts +3 -41
- package/dist/components/code-block.d.ts +22 -0
- package/dist/components/conversation-item.d.ts +54 -1
- package/dist/components/conversation-list.d.ts +65 -0
- package/dist/components/form.d.ts +42 -0
- package/dist/components/message.d.ts +7 -0
- package/dist/components/toast.d.ts +2 -1
- 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/{create-tween-B5Y4Im8G.js → create-tween-BFT6c-Y8.js} +1 -1
- package/dist/{create-tween-4z1XYLkR.js → create-tween-CJNlzoaO.js} +1 -1
- package/dist/{create-tween-CUzOlaMS.js → create-tween-CQED4T0g.js} +1 -1
- package/dist/custom-elements.json +2931 -2572
- 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/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/checkpoint.js +1 -1
- package/dist/elements/choice.js +1 -1
- package/dist/elements/chunks/{Icon-b5A8hlHs.js → Icon--Y8vsFal.js} +1 -1
- package/dist/elements/chunks/action-icons-D9u3OzYW.js +1 -0
- package/dist/elements/chunks/arrow-left-CVh1TeN7.js +1 -0
- package/dist/elements/chunks/{artifact-BSuPYFHY.js → artifact-BkYcfIlZ.js} +1 -1
- package/dist/elements/chunks/attachments-DwfNlubq.js +1 -0
- package/dist/elements/chunks/audio-visualizer-D7lB6mvR.js +1 -0
- package/dist/elements/chunks/{badge-TIMiJFKc.js → badge-Q0-Cmwzz.js} +1 -1
- package/dist/elements/chunks/{button-B9okqG73.js → button-flUbeufF.js} +1 -1
- package/dist/elements/chunks/{card-renderer-CSoTL_e1.js → card-renderer-3Dyl-FpN.js} +1 -1
- package/dist/elements/chunks/check-B5kBPKeo.js +1 -0
- package/dist/elements/chunks/chevron-down-DZ1GS39h.js +1 -0
- package/dist/elements/chunks/chevron-right-CvP7OUd2.js +1 -0
- package/dist/elements/chunks/{choice-card-CGMc3kek.js → choice-card-D4QUIOWZ.js} +1 -1
- package/dist/elements/chunks/circle-CDf9g6MQ.js +1 -0
- package/dist/elements/chunks/circle-check-CA47Nqbz.js +1 -0
- package/dist/elements/chunks/{circle-x-mhH7pOK2.js → circle-x-CJ_HVbC8.js} +1 -1
- package/dist/elements/chunks/code-block-BdLiTitd.js +1 -0
- package/dist/elements/chunks/collapsible-BzbXpPzr.js +1 -0
- package/dist/elements/chunks/{composer-CZZmtYOT.js → composer-Byve-n8K.js} +2 -2
- package/dist/elements/chunks/{confirm-card-BWjf2-xo.js → confirm-card-B0flE3MN.js} +1 -1
- package/dist/elements/chunks/context-VLIL3sJ-.js +1 -0
- package/dist/elements/chunks/controllable-DTwTIlwp.js +1 -0
- package/dist/elements/chunks/conversation-item-BDztezOG.js +1 -0
- package/dist/elements/chunks/copy-Nf-kqxXH.js +1 -0
- package/dist/elements/chunks/{create-tween-CUrM6D_o.js → create-tween-c4Z8TDYz.js} +2 -2
- package/dist/elements/chunks/default-input-C2iLFq0b.js +1 -0
- package/dist/elements/chunks/define-wjHR1MkU.js +1 -0
- package/dist/elements/chunks/disclosure-CcNbyLy0.js +1 -0
- package/dist/elements/chunks/{download-DnCyWFJE.js → download-C4V7tBdb.js} +1 -1
- package/dist/elements/chunks/dropdown-BgWTthUx.js +1 -0
- package/dist/elements/chunks/{ellipsis-CVxqfsDZ.js → ellipsis-7gU33mL2.js} +1 -1
- package/dist/elements/chunks/embed-D3KewsIJ.js +1 -0
- package/dist/elements/chunks/{external-link-DG2sRdQL.js → external-link-CSOEsNlx.js} +1 -1
- package/dist/elements/chunks/{file-text-D0J9F6M7.js → file-text-D1G8khle.js} +1 -1
- package/dist/elements/chunks/{file-tree-yGWNK0Js.js → file-tree-zvB2i7P9.js} +1 -1
- package/dist/elements/chunks/{folder-NV1pi_ud.js → folder-WW2LGLid.js} +1 -1
- package/dist/elements/chunks/form-CQirdC4W.js +1 -0
- package/dist/elements/chunks/hover-card-CJJkfHTK.js +1 -0
- package/dist/elements/chunks/icon-Cfgmf4fa.js +1 -0
- package/dist/elements/chunks/{info-C8r5Q6cc.js → info-DX3YMOt6.js} +1 -1
- package/dist/elements/chunks/input-BtW9U6Sq.js +1 -0
- package/dist/elements/chunks/{kbd-OGJDUT-O.js → kbd-LGXwuT_V.js} +1 -1
- package/dist/elements/chunks/{link-BdsfLB7b.js → link-2My69BqT.js} +1 -1
- package/dist/elements/chunks/{link-preview-Cf5KOP-i.js → link-preview-OQ9IEq0f.js} +1 -1
- package/dist/elements/chunks/{loader-B5QzK_8_.js → loader-iOxc_Tu-.js} +1 -1
- package/dist/elements/chunks/{markdown-DbozyYqa.js → markdown-DgBFaGAz.js} +1 -1
- package/dist/elements/chunks/{message-DtXKPqiR.js → message-VMZohrXx.js} +1 -1
- package/dist/elements/chunks/message-circle-CpXMM-_n.js +1 -0
- package/dist/elements/chunks/message-square-DxcWtETQ.js +1 -0
- package/dist/elements/chunks/message-tZmV2A3p.js +1 -0
- package/dist/elements/chunks/{minimize-2-SegJ_oku.js → minimize-2-DPIUKTrT.js} +1 -1
- package/dist/elements/chunks/{model-switcher-D7JrFFHp.js → model-switcher-DsT8tFB0.js} +1 -1
- package/dist/elements/chunks/{overlay-CV7z2YuX.js → overlay-DuiwdXjm.js} +1 -1
- package/dist/elements/chunks/{paperclip-Bg0ITU3b.js → paperclip-CRZVp4z_.js} +1 -1
- package/dist/elements/chunks/{progress-bar-D1_rzt6N.js → progress-bar-DNy66e_E.js} +1 -1
- package/dist/elements/chunks/{prompt-suggestion-D5Sm8xF1.js → prompt-suggestion-Bn64Nl7L.js} +1 -1
- package/dist/elements/chunks/reasoning-Emn9N4-T.js +1 -0
- package/dist/elements/chunks/{resizable-Dpzjlvp4.js → resizable-D181b4fM.js} +1 -1
- package/dist/elements/chunks/{rotate-cw-DzVDJOA1.js → rotate-cw-CPWe37D9.js} +1 -1
- package/dist/elements/chunks/{scroll-area-93A1bbeG.js → scroll-area-ClZkZxIk.js} +1 -1
- package/dist/elements/chunks/scroll-button-DPE-t3x_.js +1 -0
- package/dist/elements/chunks/{separator-DH2r_ZSZ.js → separator-CeJHQqLW.js} +1 -1
- package/dist/elements/chunks/{settings-BFMOd6yB.js → settings-CqaHgJF9.js} +1 -1
- package/dist/elements/chunks/{settings-group-B3VZKIcz.js → settings-group-CjqjLCOn.js} +1 -1
- package/dist/elements/chunks/share-CyfnNEqp.js +1 -0
- package/dist/elements/chunks/{skeleton-N8BuWYmf.js → skeleton-D8akBnKS.js} +1 -1
- package/dist/elements/chunks/slots-DaNjX0rc.js +1 -0
- package/dist/elements/chunks/{source-w9V0NnBn.js → source-UWCvmVak.js} +1 -1
- package/dist/elements/chunks/{star-DHvACxtm.js → star-DoHFAikQ.js} +1 -1
- package/dist/elements/chunks/store-Cjq0qwYN.js +1 -0
- package/dist/elements/chunks/{tasks-card-lPxoodlA.js → tasks-card-CmZ5xh6v.js} +1 -1
- package/dist/elements/chunks/{text-shimmer-BY_rI3s5.js → text-shimmer-DYn09zrz.js} +1 -1
- package/dist/elements/chunks/textarea-skiGHURM.js +1 -0
- package/dist/elements/chunks/{thumbs-up-DQe0hvkZ.js → thumbs-up-DX2Ijk3H.js} +1 -1
- package/dist/elements/chunks/{toast-store-VUZZBhzH.js → toast-store-CFnQpThX.js} +1 -1
- package/dist/elements/chunks/{tool-C1YtxwPu.js → tool-DKQ2D1DP.js} +1 -1
- package/dist/elements/chunks/{tooltip-BqwnFWhn.js → tooltip-B0G99y8w.js} +1 -1
- package/dist/elements/chunks/{triangle-alert-B6or7F5u.js → triangle-alert-F9cyUEyy.js} +1 -1
- package/dist/elements/chunks/{use-card-resolution-DJg32jGH.js → use-card-resolution-DoA2f_EU.js} +1 -1
- package/dist/elements/chunks/{variant-aurora-QXTZPyST.js → variant-aurora-qt6Zct8M.js} +2 -2
- package/dist/elements/chunks/variant-custom-tJp22_BQ.js +1 -0
- package/dist/{variant-wave-BwzrHD1s.js → elements/chunks/variant-wave-CaQ5ti39.js} +2 -2
- package/dist/elements/chunks/x-B6UnOiLw.js +1 -0
- 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.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 +149 -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-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-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/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/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/slots.d.ts +35 -3
- 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 +232 -148
- package/dist/index.d.ts +2 -0
- package/dist/index.js +5456 -4931
- package/dist/index.server.js +4142 -3669
- package/dist/kai-provider.es.js +40 -40
- package/dist/kai.es.js +1 -1
- package/dist/llms/llms-full.txt +184 -69
- package/dist/llms/llms.txt +3 -3
- package/dist/mcp.es.js +2669 -546
- 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/react/index.d.ts +115 -266
- package/dist/react.js +247 -221
- package/dist/register-impl-DpE7icIb.js +293 -0
- package/dist/schemas/index.d.ts +1 -1
- package/dist/schemas/tool-defs.d.ts +35 -0
- package/dist/schemas.js +403 -310
- package/dist/{solid-BMuDmFo_.js → solid-BtdqNZI7.js} +8435 -7394
- package/dist/{solid-CGYNdLRR.js → solid-CnavwBye.js} +5987 -5035
- package/dist/solid.d.ts +5 -0
- package/dist/solid.js +210 -203
- package/dist/solid.server.js +210 -203
- package/dist/state/index.d.ts +4 -0
- 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 +269 -169
- package/dist/types.d.ts +4 -2
- package/dist/ui/dock.d.ts +109 -0
- package/dist/ui/hover-card.d.ts +44 -0
- package/dist/{variant-aurora-DwSOfraQ.js → variant-aurora-B8II3-I1.js} +27 -27
- package/dist/{variant-aurora-wKvAQ5wp.js → variant-aurora-CMNWOSJR.js} +28 -28
- package/dist/{variant-aurora-XEkPT0_z.js → variant-aurora-CcuDMWwQ.js} +2 -2
- package/dist/{variant-custom-eFIg2XWQ.js → variant-custom-BdvYC7af.js} +40 -40
- package/dist/{variant-custom-BhS9wIpU.js → variant-custom-C714mqKl.js} +65 -65
- package/dist/variant-custom-L16JLLZy.js +1 -0
- package/dist/{elements/chunks/variant-wave-DDCwhLas.js → variant-wave-2S4La2Ka.js} +2 -2
- package/dist/{variant-wave-CbVsmgwT.js → variant-wave-D7ruiA1W.js} +25 -25
- package/dist/{variant-wave-CUWGx9Bn.js → variant-wave-ecwykeyL.js} +21 -21
- 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/frameworks/react/index.tsx +132 -93
- package/llms-full.txt +184 -69
- package/llms.txt +3 -3
- package/package.json +27 -7
- 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 +275 -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 +61 -5
- package/src/agent-tooling/mcp/tools/reference.ts +440 -4
- 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/registry.ts +19 -7
- package/src/agent-tooling/route-emit.ts +26 -2
- package/src/components/attachment-types.ts +47 -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/chat-container.tsx +4 -1
- package/src/components/chat-thread.tsx +36 -7
- package/src/components/code-block.tsx +79 -3
- package/src/components/composer.tsx +8 -1
- package/src/components/conversation-item.tsx +114 -4
- package/src/components/conversation-list.tsx +212 -12
- package/src/components/embed.tsx +4 -0
- package/src/components/form.tsx +41 -14
- package/src/components/message.tsx +75 -5
- package/src/components/response-stream.tsx +13 -7
- package/src/components/screen.tsx +5 -0
- package/src/components/scroll-button.tsx +7 -0
- package/src/components/toast.tsx +11 -5
- 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 +6 -7
- package/src/elements/audio-visualizer.tsx +48 -4
- package/src/elements/chat-workspace.tsx +159 -287
- package/src/elements/chat.tsx +12 -9
- 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/conversation-item.tsx +80 -0
- package/src/elements/conversation-list.tsx +60 -11
- package/src/elements/default-input.tsx +5 -5
- 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 +204 -0
- package/src/elements/dropdown.tsx +123 -0
- package/src/elements/element-diagnostics.ts +392 -0
- package/src/elements/element-manifest.json +12 -0
- package/src/elements/element-meta.json +672 -439
- package/src/elements/element-nonscalar.json +170 -0
- package/src/elements/element-types.d.ts +232 -148
- package/src/elements/menu.tsx +13 -0
- package/src/elements/prompt-dock.tsx +2 -1
- package/src/elements/prompt-input.tsx +8 -8
- package/src/elements/register-impl.ts +46 -0
- package/src/elements/register.ts +28 -0
- package/src/elements/resizable.tsx +52 -25
- package/src/elements/scroll-button.tsx +5 -0
- package/src/elements/slots.ts +107 -12
- package/src/elements/styles.css +30 -6
- package/src/elements/thinking-bar.tsx +16 -7
- package/src/elements/toast.tsx +3 -0
- 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 +2 -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 +297 -6
- package/src/solid.ts +5 -0
- package/src/state/index.ts +12 -0
- 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/dialog.tsx +6 -0
- package/src/ui/dock.tsx +445 -0
- package/src/ui/dropdown.tsx +67 -23
- package/src/ui/hover-card.tsx +156 -6
- package/src/ui/input.tsx +29 -10
- package/src/ui/resizable.tsx +11 -0
- 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/dist/elements/chunks/action-icons-DW9muWrY.js +0 -1
- package/dist/elements/chunks/arrow-left-iJVnQmxA.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/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/circle-BG7VkPep.js +0 -1
- package/dist/elements/chunks/circle-check-GqvO2UBs.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/context-hKjNqiyQ.js +0 -1
- package/dist/elements/chunks/conversation-list-CsGJjSKG.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/dropdown-CmNna5lT.js +0 -1
- package/dist/elements/chunks/embed-CjAD2jSi.js +0 -1
- package/dist/elements/chunks/form-Cp8Y00Wn.js +0 -1
- package/dist/elements/chunks/hover-card-6KtXpLwT.js +0 -1
- package/dist/elements/chunks/icon-97R8SR2p.js +0 -1
- package/dist/elements/chunks/input-DrseEjhp.js +0 -1
- package/dist/elements/chunks/message-CE4k-qaj.js +0 -1
- package/dist/elements/chunks/message-square-C9ovmtOo.js +0 -1
- package/dist/elements/chunks/reasoning-BrxQfpfI.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/store-HIPGhNz9.js +0 -1
- package/dist/elements/chunks/textarea-DPfuhswM.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/x-BOhjBeOd.js +0 -1
- package/dist/primitives/card-validate-generator.testlib.d.ts +0 -20
- package/dist/register-impl-DGmGzrEM.js +0 -145
- package/dist/variant-custom-MkTNTycd.js +0 -1
- package/src/primitives/card-validate-generator.testlib.ts +0 -38
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { Accessor, JSX } from 'solid-js';
|
|
2
|
+
/** Which corner the dock sits in. LOGICAL, so `-end` follows the writing direction
|
|
3
|
+
* and an RTL page docks on the left with no extra work (both reference
|
|
4
|
+
* implementations reached for `inset-inline-end` independently). */
|
|
5
|
+
export type DockPosition = 'bottom-end' | 'bottom-start' | 'top-end' | 'top-start';
|
|
6
|
+
/** Where focus goes when the panel opens.
|
|
7
|
+
* - `content` (default) — `focus()` the first element assigned to the panel, falling
|
|
8
|
+
* back to the panel itself when that element cannot take focus. Content-AGNOSTIC:
|
|
9
|
+
* the dock never learns what it is holding.
|
|
10
|
+
* - `panel` — focus the `tabindex="-1"` panel container (what `kai-dialog` does).
|
|
11
|
+
* - `none` — never move focus. */
|
|
12
|
+
export type DockFocusOnOpen = 'content' | 'panel' | 'none';
|
|
13
|
+
/** Imperative open controller, handed to a parent (the `kai-dock` facade) via
|
|
14
|
+
* `controllerRef` so it can drive/observe open state with `wireDisclosure`. */
|
|
15
|
+
export interface DockController {
|
|
16
|
+
open: Accessor<boolean>;
|
|
17
|
+
setOpen: (v: boolean) => void;
|
|
18
|
+
}
|
|
19
|
+
export interface DockProps {
|
|
20
|
+
/** The panel body. ANY content — the dock never reads or types it. */
|
|
21
|
+
children?: JSX.Element;
|
|
22
|
+
/** Content inside the built-in button while CLOSED. Defaults to a chat glyph. */
|
|
23
|
+
launcher?: JSX.Element;
|
|
24
|
+
/** Content inside the button while OPEN. Defaults to a ✕; when only `launcher` is
|
|
25
|
+
* given, that content stays rather than morphing into a clashing built-in. */
|
|
26
|
+
launcherOpen?: JSX.Element;
|
|
27
|
+
/** The widget's NAME. Derives the panel's accessible name and both launcher names
|
|
28
|
+
* (`Open ${label}` / `Close ${label}`) — one string instead of three. */
|
|
29
|
+
label?: string;
|
|
30
|
+
/** i18n override for the launcher's name while closed. */
|
|
31
|
+
openLabel?: string;
|
|
32
|
+
/** i18n override for the launcher's name while open. */
|
|
33
|
+
closeLabel?: string;
|
|
34
|
+
/** Which corner. Logical, RTL-correct. Defaults to `bottom-end`. */
|
|
35
|
+
position?: DockPosition;
|
|
36
|
+
/** Render the unread dot. CONSUMER-OWNED: shown only while closed, and never
|
|
37
|
+
* written back by the dock (see the component doc). */
|
|
38
|
+
unread?: boolean;
|
|
39
|
+
/** Disable the launcher. */
|
|
40
|
+
disabled?: boolean;
|
|
41
|
+
/** Where focus lands on open. Defaults to `content`. */
|
|
42
|
+
focusOnOpen?: DockFocusOnOpen;
|
|
43
|
+
/** Controlled open state. When set, the component never changes it itself — drive it
|
|
44
|
+
* from `onOpenChange`. Omit for uncontrolled (internal) state. */
|
|
45
|
+
open?: boolean;
|
|
46
|
+
/** Initial open state when uncontrolled. Does NOT move focus (see the focus contract). */
|
|
47
|
+
defaultOpen?: boolean;
|
|
48
|
+
/** Fires whenever the dock wants to open or close (launcher / Escape / a method). */
|
|
49
|
+
onOpenChange?: (open: boolean) => void;
|
|
50
|
+
/** Receive the open controller once mounted. */
|
|
51
|
+
controllerRef?: (api: DockController) => void;
|
|
52
|
+
/** Receive the focusable panel node so a facade's `focus()` can target it. */
|
|
53
|
+
panelRef?: (el: HTMLElement) => void;
|
|
54
|
+
/** Receive the launcher button so a facade's `focus()` can target it. */
|
|
55
|
+
launcherRef?: (el: HTMLButtonElement) => void;
|
|
56
|
+
/**
|
|
57
|
+
* Resolve the element `focusOnOpen: 'content'` should focus.
|
|
58
|
+
*
|
|
59
|
+
* A PROP, because the answer is "the first element assigned to the panel slot" and
|
|
60
|
+
* only the web-component facade can see slot assignments — a Solid caller passes
|
|
61
|
+
* its own ref instead. Returning nothing falls back to focusing the panel.
|
|
62
|
+
*/
|
|
63
|
+
contentTarget?: () => HTMLElement | null | undefined;
|
|
64
|
+
}
|
|
65
|
+
/** The built-in closed glyph. Exported so the facade can use it as its `launcher`
|
|
66
|
+
* slot's FALLBACK content — one definition, two users, rather than a second copy
|
|
67
|
+
* of the same icon choice living in the element layer. */
|
|
68
|
+
export declare function DockLauncherGlyph(): JSX.Element;
|
|
69
|
+
/** The built-in open glyph. Exported for the same reason as {@link DockLauncherGlyph}. */
|
|
70
|
+
export declare function DockCloseGlyph(): JSX.Element;
|
|
71
|
+
/**
|
|
72
|
+
* Dock — a corner-docked launcher button with a panel that opens above it.
|
|
73
|
+
*
|
|
74
|
+
* The affordance behind a support widget: a circular button pinned to a corner of the
|
|
75
|
+
* viewport, and a floating panel holding whatever you slot into it. The panel is
|
|
76
|
+
* content-agnostic on purpose — a chat, a form, your own component — and the dock
|
|
77
|
+
* never reads, types or reaches into it.
|
|
78
|
+
*
|
|
79
|
+
* WHAT IT OWNS (all of it non-configurable, because these are facts about the medium
|
|
80
|
+
* rather than preferences):
|
|
81
|
+
*
|
|
82
|
+
* - **Hide semantics.** Closed means `visibility: hidden` + `opacity: 0` + `inert`,
|
|
83
|
+
* and the panel is NEVER unmounted. `display: none` would leave the panel with no
|
|
84
|
+
* layout box while closed, so anything inside that measures itself — a thread
|
|
85
|
+
* scroller, a `ResizeObserver` — measures zero and re-measures on every open. The
|
|
86
|
+
* cost of keeping the box is that a stream keeps rendering into a closed panel,
|
|
87
|
+
* which is precisely what makes an unread dot honest.
|
|
88
|
+
* - **Focus.** On open, focus moves per `focusOnOpen`; on close it returns to the
|
|
89
|
+
* launcher, always. `inert` is cleared and visibility restored BEFORE `focus()` runs
|
|
90
|
+
* — a `focus()` into an inert or hidden subtree is silently dropped, no error — via
|
|
91
|
+
* a `queueMicrotask`, the same shape `ui/dialog.tsx` uses. Mount moves no focus.
|
|
92
|
+
* - **Escape.** Closes only while the dock CONTAINS focus, and never stops the event.
|
|
93
|
+
* A background widget that ate every Escape on the page would break the host page's
|
|
94
|
+
* own menus; swallowing a key from a page you are a guest on is a decide-quietly move.
|
|
95
|
+
* - **No focus trap**, deliberately, unlike `kai-dialog`. The page staying usable is
|
|
96
|
+
* the whole point of "docked", which is also why the panel is `aria-modal="false"`.
|
|
97
|
+
*
|
|
98
|
+
* WHAT IT REFUSES: it never aborts a request, never persists its own open state, never
|
|
99
|
+
* decides what "unread" means, and never clears `unread` on open — writing over a
|
|
100
|
+
* consumer's prop is the trap `kai-chat.loading` fell into. Those are the app's calls;
|
|
101
|
+
* `open` + `onOpenChange` is the seam.
|
|
102
|
+
*
|
|
103
|
+
* Geometry is CSS custom properties rather than props: `--kai-dock-width` ·
|
|
104
|
+
* `--kai-dock-height` · `--kai-dock-inset` · `--kai-dock-gap` · `--kai-dock-radius` ·
|
|
105
|
+
* `--kai-dock-z` · `--kai-dock-launcher-size`.
|
|
106
|
+
*
|
|
107
|
+
* @see `elements/dock.tsx` for the `<kai-dock>` web-component facade.
|
|
108
|
+
*/
|
|
109
|
+
export declare function Dock(props: DockProps): JSX.Element;
|
package/dist/ui/hover-card.d.ts
CHANGED
|
@@ -21,7 +21,51 @@ export declare function HoverCardRoot(props: HoverCardRootProps): JSX.Element;
|
|
|
21
21
|
export interface HoverCardTriggerProps {
|
|
22
22
|
children: JSX.Element;
|
|
23
23
|
class?: string;
|
|
24
|
+
/**
|
|
25
|
+
* Whether the trigger is its own tab stop. Omit for the automatic behaviour,
|
|
26
|
+
* which is right for every case in this repo: the trigger takes focus only
|
|
27
|
+
* when nothing inside it already can.
|
|
28
|
+
*
|
|
29
|
+
* Pass `false` to keep a trigger out of the tab order entirely, or `true` to
|
|
30
|
+
* force a stop. Both are escape hatches — reach for them when the automatic
|
|
31
|
+
* answer is wrong, not to restate it.
|
|
32
|
+
*/
|
|
33
|
+
focusable?: boolean;
|
|
24
34
|
}
|
|
35
|
+
/**
|
|
36
|
+
* ★ THE TRIGGER IS A TAB STOP WHEN, AND ONLY WHEN, ITS CHILDREN ARE NOT.
|
|
37
|
+
*
|
|
38
|
+
* `onFocusIn`/`onFocusOut` were here from the start and the focus-open path was
|
|
39
|
+
* plainly intended, but the span never set `tabindex`, so the Tab key could not
|
|
40
|
+
* land on it and neither handler could fire on a keyboard. It went unnoticed for
|
|
41
|
+
* as long as it did because `focusin` BUBBLES and every consumer at the time put
|
|
42
|
+
* something focusable inside the trigger — `source.tsx` an `<a>`, `context.tsx`
|
|
43
|
+
* a `<Button>` — so the card opened via the child and the span's own inertness
|
|
44
|
+
* never showed. The first trigger with inert children (an attachment tile: a
|
|
45
|
+
* div, an img, an svg) had no tab stop anywhere in it.
|
|
46
|
+
*
|
|
47
|
+
* Hence delegation rather than an unconditional `tabindex`: adding one always
|
|
48
|
+
* would give every existing consumer TWO stops for one card, which is a worse
|
|
49
|
+
* bug than the one being fixed. The check runs in the ref AND again on every
|
|
50
|
+
* `slotchange`, because slot assignment happens after the ref and a one-shot
|
|
51
|
+
* check calls a not-yet-filled `<slot>` inert (see `hasFocusableChild`).
|
|
52
|
+
*
|
|
53
|
+
* ★ THE FOCUS LISTENERS ARE NATIVE, NOT SOLID'S DELEGATED `onFocusIn`. Solid
|
|
54
|
+
* delegates a fixed set of events from the document and retargets them into
|
|
55
|
+
* component trees; inside these shadow roots that path runs for a PROGRAMMATIC
|
|
56
|
+
* `.focus()` and, in the deeper trees, not for a real Tab. Measured: tabbing to
|
|
57
|
+
* an attachment tile in a mounted `<kai-chat>` left the card shut and
|
|
58
|
+
* `aria-describedby` null while `.focus()` on the same element opened it — so
|
|
59
|
+
* every keyboard user got a tab stop that announced nothing and showed nothing,
|
|
60
|
+
* which is worse than no stop at all. `addEventListener` in the ref does not
|
|
61
|
+
* care how focus arrived. Anything in this kit relying on delegated focus
|
|
62
|
+
* events inside a shadow root is suspect for the same reason.
|
|
63
|
+
*
|
|
64
|
+
* `aria-describedby` is what makes the stop worth arriving at: the card is
|
|
65
|
+
* DESCRIPTIVE, not an action, so the trigger gets no `role="button"` — that
|
|
66
|
+
* would promise an activation that does not exist — and instead points at the
|
|
67
|
+
* content it reveals so a screen reader reads it out.
|
|
68
|
+
*/
|
|
25
69
|
export declare function HoverCardTrigger(props: HoverCardTriggerProps): JSX.Element;
|
|
26
70
|
export interface HoverCardContentProps {
|
|
27
71
|
children: JSX.Element;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { ssr as
|
|
2
|
-
import { createEffect as
|
|
3
|
-
import { c, S, h as
|
|
4
|
-
import { C } from "./solid-
|
|
5
|
-
const
|
|
1
|
+
import { ssr as w, ssrAttribute as d, escape as h, ssrStyleProperty as u, createComponent as R } from "solid-js/web";
|
|
2
|
+
import { createEffect as p, createSignal as A, onCleanup as S } from "solid-js";
|
|
3
|
+
import { c, S as _, h as k, D as C } from "./create-tween-BFT6c-Y8.js";
|
|
4
|
+
import { C as T, a as M } from "./solid-CnavwBye.js";
|
|
5
|
+
const W = `
|
|
6
6
|
const float PI = 3.14159265359;
|
|
7
7
|
// Strand phase span: 0.5 + pi (fact sheet section 2's "sigma", the
|
|
8
8
|
// midpoint of the interval [1, 2*pi] with the interpolation knob fixed
|
|
@@ -220,8 +220,8 @@ void mainImage(out vec4 fragColor, in vec2 fragCoord) {
|
|
|
220
220
|
fragColor = vec4(rgb * alpha, alpha);
|
|
221
221
|
}
|
|
222
222
|
`;
|
|
223
|
-
var
|
|
224
|
-
function
|
|
223
|
+
var z = ["<div", ' style="', '">', "</div>"];
|
|
224
|
+
function f(e) {
|
|
225
225
|
switch (e) {
|
|
226
226
|
case "listening":
|
|
227
227
|
return {
|
|
@@ -285,49 +285,49 @@ function p(e) {
|
|
|
285
285
|
};
|
|
286
286
|
}
|
|
287
287
|
}
|
|
288
|
-
function
|
|
288
|
+
function P() {
|
|
289
289
|
var s;
|
|
290
|
-
const [e, r] =
|
|
290
|
+
const [e, r] = A(!1);
|
|
291
291
|
if (typeof matchMedia == "function") {
|
|
292
292
|
const a = matchMedia("(prefers-color-scheme: dark)");
|
|
293
293
|
r(a.matches);
|
|
294
294
|
const o = (i) => r(i.matches);
|
|
295
|
-
(s = a.addEventListener) == null || s.call(a, "change", o),
|
|
295
|
+
(s = a.addEventListener) == null || s.call(a, "change", o), S(() => {
|
|
296
296
|
var i;
|
|
297
297
|
return (i = a.removeEventListener) == null ? void 0 : i.call(a, "change", o);
|
|
298
298
|
});
|
|
299
299
|
}
|
|
300
300
|
return e;
|
|
301
301
|
}
|
|
302
|
-
function
|
|
303
|
-
const r = c(1), s = c(0.5), a = c(0.4), o = c(1.2), i = c(0.2),
|
|
304
|
-
|
|
305
|
-
const t =
|
|
302
|
+
function E(e) {
|
|
303
|
+
const r = c(1), s = c(0.5), a = c(0.4), o = c(1.2), i = c(0.2), m = P(), v = () => e.dark ?? m(), l = () => M(e.state, e.listeningAmplitude);
|
|
304
|
+
p(() => {
|
|
305
|
+
const t = f(l()), n = e.frozen ? {
|
|
306
306
|
duration: 0
|
|
307
307
|
} : {
|
|
308
308
|
duration: 0.5,
|
|
309
309
|
ease: "easeOut"
|
|
310
|
-
},
|
|
310
|
+
}, y = e.frozen ? {
|
|
311
311
|
duration: 0
|
|
312
312
|
} : {
|
|
313
313
|
duration: 0.35,
|
|
314
314
|
ease: "easeOut"
|
|
315
|
-
},
|
|
316
|
-
r.to(
|
|
315
|
+
}, b = Array.isArray(t.intensity) && e.frozen ? t.intensity[0] : t.intensity;
|
|
316
|
+
r.to(b, Array.isArray(t.intensity) ? y : n), a.to(t.complexity, n), o.to(t.amplitude, n), i.to(t.scale, l() === "listening" && !e.frozen ? {
|
|
317
317
|
type: "spring",
|
|
318
318
|
duration: 1,
|
|
319
319
|
bounce: 0.35
|
|
320
320
|
} : n), s.to(e.frozen ? 0 : t.speed, {
|
|
321
321
|
duration: 0
|
|
322
322
|
});
|
|
323
|
-
}),
|
|
324
|
-
if (
|
|
323
|
+
}), p(() => {
|
|
324
|
+
if (l() !== "speaking") return;
|
|
325
325
|
const t = e.volume;
|
|
326
326
|
t > 0 && (i.animating() || i.to(0.2 + 0.2 * t));
|
|
327
327
|
});
|
|
328
|
-
const
|
|
329
|
-
return
|
|
330
|
-
fragment:
|
|
328
|
+
const g = () => e.frozen ? 0 : f(l()).rotation * Math.PI / 180, x = () => v() ? 0 : 1;
|
|
329
|
+
return w(z, d("data-kai-state", h(e.state, !0), !1) + d("class", h(e.class, !0), !1), u("height:", `${h(T[e.size], !0)}px`) + u(";aspect-ratio:", "1"), h(R(_, {
|
|
330
|
+
fragment: W,
|
|
331
331
|
get precision() {
|
|
332
332
|
return e.size === "icon" || e.size === "sm" ? "mediump" : "highp";
|
|
333
333
|
},
|
|
@@ -335,7 +335,7 @@ function I(e) {
|
|
|
335
335
|
return {
|
|
336
336
|
uColor: {
|
|
337
337
|
type: "3fv",
|
|
338
|
-
value:
|
|
338
|
+
value: k(e.color ?? C)
|
|
339
339
|
},
|
|
340
340
|
uIntensity: {
|
|
341
341
|
type: "1f",
|
|
@@ -359,11 +359,11 @@ function I(e) {
|
|
|
359
359
|
},
|
|
360
360
|
uTheme: {
|
|
361
361
|
type: "1f",
|
|
362
|
-
value:
|
|
362
|
+
value: x()
|
|
363
363
|
},
|
|
364
364
|
uRotation: {
|
|
365
365
|
type: "1f",
|
|
366
|
-
value:
|
|
366
|
+
value: g()
|
|
367
367
|
}
|
|
368
368
|
};
|
|
369
369
|
},
|
|
@@ -376,6 +376,6 @@ function I(e) {
|
|
|
376
376
|
})));
|
|
377
377
|
}
|
|
378
378
|
export {
|
|
379
|
-
|
|
380
|
-
|
|
379
|
+
f as auroraTargets,
|
|
380
|
+
E as default
|
|
381
381
|
};
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { insert as
|
|
2
|
-
import { createEffect as
|
|
3
|
-
import { c as l, S as
|
|
4
|
-
import { C as
|
|
5
|
-
const
|
|
1
|
+
import { insert as y, createComponent as b, effect as w, setAttribute as R, className as A, setStyleProperty as S, template as k } from "solid-js/web";
|
|
2
|
+
import { createEffect as p, createSignal as C, onCleanup as T } from "solid-js";
|
|
3
|
+
import { c as l, S as _, h as M, D as W } from "./create-tween-CJNlzoaO.js";
|
|
4
|
+
import { C as z, a as P } from "./solid-BtdqNZI7.js";
|
|
5
|
+
const N = `
|
|
6
6
|
const float PI = 3.14159265359;
|
|
7
7
|
// Strand phase span: 0.5 + pi (fact sheet section 2's "sigma", the
|
|
8
8
|
// midpoint of the interval [1, 2*pi] with the interpolation knob fixed
|
|
@@ -220,7 +220,7 @@ void mainImage(out vec4 fragColor, in vec2 fragCoord) {
|
|
|
220
220
|
fragColor = vec4(rgb * alpha, alpha);
|
|
221
221
|
}
|
|
222
222
|
`;
|
|
223
|
-
var
|
|
223
|
+
var q = /* @__PURE__ */ k("<div style=aspect-ratio:1>");
|
|
224
224
|
function f(e) {
|
|
225
225
|
switch (e) {
|
|
226
226
|
case "listening":
|
|
@@ -285,24 +285,24 @@ function f(e) {
|
|
|
285
285
|
};
|
|
286
286
|
}
|
|
287
287
|
}
|
|
288
|
-
function
|
|
288
|
+
function D() {
|
|
289
289
|
var s;
|
|
290
|
-
const [e, o] =
|
|
290
|
+
const [e, o] = C(!1);
|
|
291
291
|
if (typeof matchMedia == "function") {
|
|
292
292
|
const i = matchMedia("(prefers-color-scheme: dark)");
|
|
293
293
|
o(i.matches);
|
|
294
294
|
const n = (r) => o(r.matches);
|
|
295
|
-
(s = i.addEventListener) == null || s.call(i, "change", n),
|
|
295
|
+
(s = i.addEventListener) == null || s.call(i, "change", n), T(() => {
|
|
296
296
|
var r;
|
|
297
297
|
return (r = i.removeEventListener) == null ? void 0 : r.call(i, "change", n);
|
|
298
298
|
});
|
|
299
299
|
}
|
|
300
300
|
return e;
|
|
301
301
|
}
|
|
302
|
-
function
|
|
303
|
-
const o = l(1), s = l(0.5), i = l(0.4), n = l(1.2), r = l(0.2),
|
|
304
|
-
|
|
305
|
-
const t = f(
|
|
302
|
+
function H(e) {
|
|
303
|
+
const o = l(1), s = l(0.5), i = l(0.4), n = l(1.2), r = l(0.2), m = D(), v = () => e.dark ?? m(), h = () => P(e.state, e.listeningAmplitude);
|
|
304
|
+
p(() => {
|
|
305
|
+
const t = f(h()), a = e.frozen ? {
|
|
306
306
|
duration: 0
|
|
307
307
|
} : {
|
|
308
308
|
duration: 0.5,
|
|
@@ -312,24 +312,24 @@ function V(e) {
|
|
|
312
312
|
} : {
|
|
313
313
|
duration: 0.35,
|
|
314
314
|
ease: "easeOut"
|
|
315
|
-
},
|
|
316
|
-
o.to(
|
|
315
|
+
}, d = Array.isArray(t.intensity) && e.frozen ? t.intensity[0] : t.intensity;
|
|
316
|
+
o.to(d, Array.isArray(t.intensity) ? c : a), i.to(t.complexity, a), n.to(t.amplitude, a), r.to(t.scale, h() === "listening" && !e.frozen ? {
|
|
317
317
|
type: "spring",
|
|
318
318
|
duration: 1,
|
|
319
319
|
bounce: 0.35
|
|
320
320
|
} : a), s.to(e.frozen ? 0 : t.speed, {
|
|
321
321
|
duration: 0
|
|
322
322
|
});
|
|
323
|
-
}),
|
|
324
|
-
if (
|
|
323
|
+
}), p(() => {
|
|
324
|
+
if (h() !== "speaking") return;
|
|
325
325
|
const t = e.volume;
|
|
326
326
|
t > 0 && (r.animating() || r.to(0.2 + 0.2 * t));
|
|
327
327
|
});
|
|
328
|
-
const
|
|
328
|
+
const g = () => e.frozen ? 0 : f(h()).rotation * Math.PI / 180, x = () => v() ? 0 : 1;
|
|
329
329
|
return (() => {
|
|
330
|
-
var t =
|
|
331
|
-
return
|
|
332
|
-
fragment:
|
|
330
|
+
var t = q();
|
|
331
|
+
return y(t, b(_, {
|
|
332
|
+
fragment: N,
|
|
333
333
|
get precision() {
|
|
334
334
|
return e.size === "icon" || e.size === "sm" ? "mediump" : "highp";
|
|
335
335
|
},
|
|
@@ -337,7 +337,7 @@ function V(e) {
|
|
|
337
337
|
return {
|
|
338
338
|
uColor: {
|
|
339
339
|
type: "3fv",
|
|
340
|
-
value:
|
|
340
|
+
value: M(e.color ?? W)
|
|
341
341
|
},
|
|
342
342
|
uIntensity: {
|
|
343
343
|
type: "1f",
|
|
@@ -361,11 +361,11 @@ function V(e) {
|
|
|
361
361
|
},
|
|
362
362
|
uTheme: {
|
|
363
363
|
type: "1f",
|
|
364
|
-
value:
|
|
364
|
+
value: x()
|
|
365
365
|
},
|
|
366
366
|
uRotation: {
|
|
367
367
|
type: "1f",
|
|
368
|
-
value:
|
|
368
|
+
value: g()
|
|
369
369
|
}
|
|
370
370
|
};
|
|
371
371
|
},
|
|
@@ -375,9 +375,9 @@ function V(e) {
|
|
|
375
375
|
onError: (a) => {
|
|
376
376
|
/not available/i.test(a) ? console.warn('<kai-audio-visualizer variant="aurora">: shader unavailable', a) : console.error('<kai-audio-visualizer variant="aurora">: shader error', a), e.onUnavailable();
|
|
377
377
|
}
|
|
378
|
-
})),
|
|
379
|
-
var c = e.state,
|
|
380
|
-
return c !== a.e &&
|
|
378
|
+
})), w((a) => {
|
|
379
|
+
var c = e.state, d = e.class, u = `${z[e.size]}px`;
|
|
380
|
+
return c !== a.e && R(t, "data-kai-state", a.e = c), d !== a.t && A(t, a.t = d), u !== a.a && S(t, "height", a.a = u), a;
|
|
381
381
|
}, {
|
|
382
382
|
e: void 0,
|
|
383
383
|
t: void 0,
|
|
@@ -387,5 +387,5 @@ function V(e) {
|
|
|
387
387
|
}
|
|
388
388
|
export {
|
|
389
389
|
f as auroraTargets,
|
|
390
|
-
|
|
390
|
+
H as default
|
|
391
391
|
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{i as
|
|
1
|
+
import{i as y,s as b,c as w,a as R,C as A,t as S,b as _}from"./register-impl-DpE7icIb.js";import{h as f,l as k,d as M,i as T,o as W}from"./kai.es.js";import{c as n,h as q,S as C,D as z}from"./create-tween-CQED4T0g.js";const P=`
|
|
2
2
|
const float PI = 3.14159265359;
|
|
3
3
|
// Strand phase span: 0.5 + pi (fact sheet section 2's "sigma", the
|
|
4
4
|
// midpoint of the interval [1, 2*pi] with the interpolation knob fixed
|
|
@@ -215,4 +215,4 @@ void mainImage(out vec4 fragColor, in vec2 fragCoord) {
|
|
|
215
215
|
// (deliberately non-premultiplied) pipeline.
|
|
216
216
|
fragColor = vec4(rgb * alpha, alpha);
|
|
217
217
|
}
|
|
218
|
-
`;var
|
|
218
|
+
`;var N=S("<div style=aspect-ratio:1>");function p(e){switch(e){case"listening":return{intensity:[1.5,2],speed:1,complexity:.7,amplitude:1,scale:.3,rotation:5.3};case"thinking":return{intensity:[.5,2.5],speed:1.5,complexity:1,amplitude:.5,scale:.3,rotation:9.4};case"connecting":return{intensity:[.5,2.5],speed:1.5,complexity:1,amplitude:.5,scale:.3,rotation:5.5};case"speaking":return{intensity:1.5,speed:3.5,complexity:1.25,amplitude:.75,scale:.3,rotation:-3.5};case"disconnected":return{intensity:1,speed:.5,complexity:.4,amplitude:1.2,scale:.2,rotation:0};default:return{intensity:1,speed:.5,complexity:.4,amplitude:1.2,scale:.2,rotation:0}}}function I(){var e;const[c,s]=T(!1);if(typeof matchMedia=="function"){const i=matchMedia("(prefers-color-scheme: dark)");s(i.matches);const o=r=>s(r.matches);(e=i.addEventListener)==null||e.call(i,"change",o),W(()=>{var r;return(r=i.removeEventListener)==null?void 0:r.call(i,"change",o)})}return c}function D(e){const c=n(1),s=n(.5),i=n(.4),o=n(1.2),r=n(.2),m=I(),v=()=>e.dark??m(),l=()=>_(e.state,e.listeningAmplitude);f(()=>{const t=p(l()),a=e.frozen?{duration:0}:{duration:.5,ease:"easeOut"},h=e.frozen?{duration:0}:{duration:.35,ease:"easeOut"},d=Array.isArray(t.intensity)&&e.frozen?t.intensity[0]:t.intensity;c.to(d,Array.isArray(t.intensity)?h:a),i.to(t.complexity,a),o.to(t.amplitude,a),r.to(t.scale,l()==="listening"&&!e.frozen?{type:"spring",duration:1,bounce:.35}:a),s.to(e.frozen?0:t.speed,{duration:0})}),f(()=>{if(l()!=="speaking")return;const t=e.volume;t>0&&(r.animating()||r.to(.2+.2*t))});const g=()=>e.frozen?0:p(l()).rotation*Math.PI/180,x=()=>v()?0:1;return(()=>{var t=N();return y(t,k(C,{fragment:P,get precision(){return e.size==="icon"||e.size==="sm"?"mediump":"highp"},get uniforms(){return{uColor:{type:"3fv",value:q(e.color??z)},uIntensity:{type:"1f",value:c.value()},uSpeed:{type:"1f",value:s.value()},uComplexity:{type:"1f",value:i.value()},uAmplitude:{type:"1f",value:o.value()},uScale:{type:"1f",value:r.value()},uTheme:{type:"1f",value:x()},uRotation:{type:"1f",value:g()}}},get animateWhenNotVisible(){return e.animateWhenNotVisible},onError:a=>{/not available/i.test(a)?console.warn('<kai-audio-visualizer variant="aurora">: shader unavailable',a):console.error('<kai-audio-visualizer variant="aurora">: shader error',a),e.onUnavailable()}})),M(a=>{var h=e.state,d=e.class,u=`${A[e.size]}px`;return h!==a.e&&b(t,"data-kai-state",a.e=h),d!==a.t&&w(t,a.t=d),u!==a.a&&R(t,"height",a.a=u),a},{e:void 0,t:void 0,a:void 0}),t})()}export{p as auroraTargets,D as default};
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { createComponent as
|
|
2
|
-
import { createEffect as
|
|
3
|
-
import { c as
|
|
4
|
-
import { s as
|
|
5
|
-
var
|
|
6
|
-
const
|
|
1
|
+
import { createComponent as d, ssr as m, ssrAttribute as s, escape as u, ssrStyle as v } from "solid-js/web";
|
|
2
|
+
import { createEffect as y, createMemo as S, Show as b } from "solid-js";
|
|
3
|
+
import { c as h, D as x, S as $, h as z } from "./create-tween-BFT6c-Y8.js";
|
|
4
|
+
import { s as A, a as C, C as E } from "./solid-CnavwBye.js";
|
|
5
|
+
var g = ["<div", ' style="', '"></div>'], k = ["<div", ' style="', '">', "</div>"];
|
|
6
|
+
const w = {
|
|
7
7
|
"1f": !0,
|
|
8
8
|
"1i": !0,
|
|
9
9
|
"1fv": !0,
|
|
@@ -15,7 +15,7 @@ const E = {
|
|
|
15
15
|
Matrix2fv: !0,
|
|
16
16
|
Matrix3fv: !0,
|
|
17
17
|
Matrix4fv: !0
|
|
18
|
-
},
|
|
18
|
+
}, N = /* @__PURE__ */ new Set(["1f", "1i"]), _ = {
|
|
19
19
|
"2f": 2,
|
|
20
20
|
"3f": 3,
|
|
21
21
|
"4f": 4,
|
|
@@ -23,24 +23,24 @@ const E = {
|
|
|
23
23
|
Matrix3fv: 9,
|
|
24
24
|
Matrix4fv: 16
|
|
25
25
|
};
|
|
26
|
-
function
|
|
26
|
+
function M(e, t) {
|
|
27
27
|
if (t == null || typeof t != "object")
|
|
28
28
|
return `uniform "${e}" is not a valid declaration (expected an object with "type" and "value").`;
|
|
29
|
-
if (
|
|
29
|
+
if (w[t.type] !== !0)
|
|
30
30
|
return `uniform "${e}" has an unrecognized type "${String(t.type)}".`;
|
|
31
|
-
if (
|
|
31
|
+
if (N.has(t.type))
|
|
32
32
|
return typeof t.value != "number" || !Number.isFinite(t.value) ? `uniform "${e}" is declared "${t.type}" (a number) but its value is not a finite number.` : void 0;
|
|
33
33
|
if (!Array.isArray(t.value) || t.value.some((n) => typeof n != "number" || !Number.isFinite(n)))
|
|
34
34
|
return `uniform "${e}" is declared "${t.type}" (an array) but its value is not an array of finite numbers.`;
|
|
35
|
-
const a =
|
|
35
|
+
const a = _[t.type];
|
|
36
36
|
if (a !== void 0 && t.value.length !== a)
|
|
37
37
|
return `uniform "${e}" is declared "${t.type}", which takes exactly ${a} numbers, but its value has ${t.value.length}.`;
|
|
38
38
|
}
|
|
39
|
-
function
|
|
39
|
+
function R(e, t) {
|
|
40
40
|
const a = e.bands.length ? e.bands : [0], n = {
|
|
41
41
|
uColor: {
|
|
42
42
|
type: "3fv",
|
|
43
|
-
value:
|
|
43
|
+
value: z(e.color)
|
|
44
44
|
},
|
|
45
45
|
uIntensity: {
|
|
46
46
|
type: "1f",
|
|
@@ -65,20 +65,20 @@ function _(e, t) {
|
|
|
65
65
|
}
|
|
66
66
|
};
|
|
67
67
|
if (!t) return n;
|
|
68
|
-
for (const [
|
|
69
|
-
const
|
|
70
|
-
if (
|
|
68
|
+
for (const [f, l] of Object.entries(t)) {
|
|
69
|
+
const o = M(f, l);
|
|
70
|
+
if (o) throw new Error(o);
|
|
71
71
|
}
|
|
72
72
|
return {
|
|
73
73
|
...n,
|
|
74
74
|
...t
|
|
75
75
|
};
|
|
76
76
|
}
|
|
77
|
-
function
|
|
78
|
-
const t =
|
|
79
|
-
|
|
80
|
-
const r =
|
|
81
|
-
if (
|
|
77
|
+
function D(e) {
|
|
78
|
+
const t = h(0.3), a = h(1), n = () => C(e.state, e.listeningAmplitude);
|
|
79
|
+
y(() => {
|
|
80
|
+
const r = A(n());
|
|
81
|
+
if (n() === "speaking")
|
|
82
82
|
t.to(0.3 + 0.7 * e.volume, {
|
|
83
83
|
duration: 0
|
|
84
84
|
});
|
|
@@ -95,11 +95,11 @@ function F(e) {
|
|
|
95
95
|
duration: 0
|
|
96
96
|
});
|
|
97
97
|
});
|
|
98
|
-
const
|
|
98
|
+
const f = S(() => {
|
|
99
99
|
var r;
|
|
100
100
|
try {
|
|
101
101
|
return {
|
|
102
|
-
uniforms:
|
|
102
|
+
uniforms: R({
|
|
103
103
|
color: e.color ?? x,
|
|
104
104
|
intensity: t.value(),
|
|
105
105
|
speed: a.value(),
|
|
@@ -114,37 +114,37 @@ function F(e) {
|
|
|
114
114
|
};
|
|
115
115
|
}
|
|
116
116
|
});
|
|
117
|
-
let
|
|
118
|
-
|
|
117
|
+
let l = !1;
|
|
118
|
+
y(() => {
|
|
119
119
|
const {
|
|
120
120
|
error: r
|
|
121
|
-
} =
|
|
121
|
+
} = f();
|
|
122
122
|
if (!r) {
|
|
123
|
-
|
|
123
|
+
l = !1;
|
|
124
124
|
return;
|
|
125
125
|
}
|
|
126
|
-
|
|
126
|
+
l || (l = !0, console.error(`<kai-audio-visualizer variant="custom">: ${r}`), e.onUnavailable());
|
|
127
127
|
});
|
|
128
|
-
const
|
|
129
|
-
height: `${
|
|
128
|
+
const o = () => ({
|
|
129
|
+
height: `${E[e.size]}px`,
|
|
130
130
|
"aspect-ratio": "1"
|
|
131
131
|
});
|
|
132
|
-
return
|
|
132
|
+
return d(b, {
|
|
133
133
|
get when() {
|
|
134
134
|
var r;
|
|
135
135
|
return (r = e.shader) == null ? void 0 : r.fragment;
|
|
136
136
|
},
|
|
137
137
|
get fallback() {
|
|
138
|
-
return m(
|
|
138
|
+
return m(g, s("data-kai-state", u(e.state, !0), !1) + s("class", u(e.class, !0), !1), v(o()));
|
|
139
139
|
},
|
|
140
|
-
children: (r) =>
|
|
140
|
+
children: (r) => d(b, {
|
|
141
141
|
get when() {
|
|
142
|
-
return
|
|
142
|
+
return f().uniforms;
|
|
143
143
|
},
|
|
144
144
|
get fallback() {
|
|
145
|
-
return m(
|
|
145
|
+
return m(g, s("data-kai-state", u(e.state, !0), !1) + s("class", u(e.class, !0), !1), v(o()));
|
|
146
146
|
},
|
|
147
|
-
children: (i) => m(
|
|
147
|
+
children: (i) => m(k, s("data-kai-state", u(e.state, !0), !1) + s("class", u(e.class, !0), !1), v(o()), u(d($, {
|
|
148
148
|
get fragment() {
|
|
149
149
|
return r();
|
|
150
150
|
},
|
|
@@ -157,14 +157,14 @@ function F(e) {
|
|
|
157
157
|
get animateWhenNotVisible() {
|
|
158
158
|
return e.animateWhenNotVisible;
|
|
159
159
|
},
|
|
160
|
-
onError: (
|
|
161
|
-
/not available/i.test(
|
|
160
|
+
onError: (c) => {
|
|
161
|
+
/not available/i.test(c) ? console.warn('<kai-audio-visualizer variant="custom">: shader unavailable', c) : console.error('<kai-audio-visualizer variant="custom">: shader error', c), e.onUnavailable();
|
|
162
162
|
}
|
|
163
163
|
})))
|
|
164
164
|
})
|
|
165
165
|
});
|
|
166
166
|
}
|
|
167
167
|
export {
|
|
168
|
-
|
|
169
|
-
|
|
168
|
+
R as customUniforms,
|
|
169
|
+
D as default
|
|
170
170
|
};
|