fancy-ui-svelte 0.9.1 → 0.11.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 +9 -102
- package/dist/cameleon/FancyProvider.svelte +63 -0
- package/dist/cameleon/FancyProvider.svelte.d.ts +14 -0
- package/dist/cameleon/cameleon.css +27 -0
- package/dist/cameleon/context.d.ts +14 -0
- package/dist/cameleon/context.js +15 -0
- package/dist/cameleon/index.d.ts +23 -0
- package/dist/cameleon/index.js +22 -0
- package/dist/cameleon/primitives/Badge.svelte +23 -0
- package/dist/cameleon/primitives/Badge.svelte.d.ts +12 -0
- package/dist/cameleon/primitives/Button.svelte +60 -0
- package/dist/cameleon/primitives/Button.svelte.d.ts +15 -0
- package/dist/cameleon/primitives/Checkbox.svelte +56 -0
- package/dist/cameleon/primitives/Checkbox.svelte.d.ts +14 -0
- package/dist/cameleon/primitives/Input.svelte +37 -0
- package/dist/cameleon/primitives/Input.svelte.d.ts +13 -0
- package/dist/cameleon/primitives/Radio.svelte +53 -0
- package/dist/cameleon/primitives/Radio.svelte.d.ts +15 -0
- package/dist/cameleon/primitives/Select.svelte +49 -0
- package/dist/cameleon/primitives/Select.svelte.d.ts +14 -0
- package/dist/cameleon/primitives/Slider.svelte +34 -0
- package/dist/cameleon/primitives/Slider.svelte.d.ts +10 -0
- package/dist/cameleon/primitives/Switch.svelte +43 -0
- package/dist/cameleon/primitives/Switch.svelte.d.ts +12 -0
- package/dist/cameleon/primitives/Textarea.svelte +36 -0
- package/dist/cameleon/primitives/Textarea.svelte.d.ts +12 -0
- package/dist/cameleon/primitives/Tooltip.svelte +32 -0
- package/dist/cameleon/primitives/Tooltip.svelte.d.ts +16 -0
- package/dist/cameleon/primitives/index.d.ts +10 -0
- package/dist/cameleon/primitives/index.js +10 -0
- package/dist/cameleon/skins/aurora/aurora.css +41 -0
- package/dist/cameleon/skins/aurora/index.d.ts +3 -0
- package/dist/cameleon/skins/aurora/index.js +12 -0
- package/dist/cameleon/skins/aurora/meta.d.ts +3 -0
- package/dist/cameleon/skins/aurora/meta.js +58 -0
- package/dist/cameleon/skins/aurora/recipes.d.ts +24 -0
- package/dist/cameleon/skins/aurora/recipes.js +163 -0
- package/dist/cameleon/skins/aurora/tokens.d.ts +6 -0
- package/dist/cameleon/skins/aurora/tokens.js +19 -0
- package/dist/cameleon/skins/brutal/brutal.css +35 -0
- package/dist/cameleon/skins/brutal/index.d.ts +3 -0
- package/dist/cameleon/skins/brutal/index.js +31 -0
- package/dist/cameleon/skins/brutal/meta.d.ts +3 -0
- package/dist/cameleon/skins/brutal/meta.js +70 -0
- package/dist/cameleon/skins/brutal/ornaments.d.ts +2 -0
- package/dist/cameleon/skins/brutal/ornaments.js +13 -0
- package/dist/cameleon/skins/brutal/recipes.d.ts +23 -0
- package/dist/cameleon/skins/brutal/recipes.js +147 -0
- package/dist/cameleon/skins/brutal/tokens.d.ts +8 -0
- package/dist/cameleon/skins/brutal/tokens.js +26 -0
- package/dist/cameleon/skins/default.d.ts +2 -0
- package/dist/cameleon/skins/default.js +95 -0
- package/dist/cameleon/skins/glass/glass.css +55 -0
- package/dist/cameleon/skins/glass/index.d.ts +3 -0
- package/dist/cameleon/skins/glass/index.js +12 -0
- package/dist/cameleon/skins/glass/meta.d.ts +3 -0
- package/dist/cameleon/skins/glass/meta.js +60 -0
- package/dist/cameleon/skins/glass/recipes.d.ts +24 -0
- package/dist/cameleon/skins/glass/recipes.js +155 -0
- package/dist/cameleon/skins/glass/tokens.d.ts +5 -0
- package/dist/cameleon/skins/glass/tokens.js +18 -0
- package/dist/cameleon/skins/retro-os/index.d.ts +3 -0
- package/dist/cameleon/skins/retro-os/index.js +20 -0
- package/dist/cameleon/skins/retro-os/kit/AppWindow.svelte +88 -0
- package/dist/cameleon/skins/retro-os/kit/AppWindow.svelte.d.ts +10 -0
- package/dist/cameleon/skins/retro-os/kit/Chip.svelte +43 -0
- package/dist/cameleon/skins/retro-os/kit/Chip.svelte.d.ts +17 -0
- package/dist/cameleon/skins/retro-os/kit/EmptyMediaFrame.svelte +56 -0
- package/dist/cameleon/skins/retro-os/kit/EmptyMediaFrame.svelte.d.ts +10 -0
- package/dist/cameleon/skins/retro-os/kit/HeaderBar.svelte +62 -0
- package/dist/cameleon/skins/retro-os/kit/HeaderBar.svelte.d.ts +15 -0
- package/dist/cameleon/skins/retro-os/kit/IconTile.svelte +44 -0
- package/dist/cameleon/skins/retro-os/kit/IconTile.svelte.d.ts +13 -0
- package/dist/cameleon/skins/retro-os/kit/InlineIndexLabel.svelte +27 -0
- package/dist/cameleon/skins/retro-os/kit/InlineIndexLabel.svelte.d.ts +11 -0
- package/dist/cameleon/skins/retro-os/kit/Led.svelte +29 -0
- package/dist/cameleon/skins/retro-os/kit/Led.svelte.d.ts +9 -0
- package/dist/cameleon/skins/retro-os/kit/NotchedFrame.svelte +83 -0
- package/dist/cameleon/skins/retro-os/kit/NotchedFrame.svelte.d.ts +11 -0
- package/dist/cameleon/skins/retro-os/kit/NumChip.svelte +25 -0
- package/dist/cameleon/skins/retro-os/kit/NumChip.svelte.d.ts +9 -0
- package/dist/cameleon/skins/retro-os/kit/PixelGlyph.svelte +38 -0
- package/dist/cameleon/skins/retro-os/kit/PixelGlyph.svelte.d.ts +13 -0
- package/dist/cameleon/skins/retro-os/kit/PlayBadge.svelte +46 -0
- package/dist/cameleon/skins/retro-os/kit/PlayBadge.svelte.d.ts +7 -0
- package/dist/cameleon/skins/retro-os/kit/RetroButton.svelte +76 -0
- package/dist/cameleon/skins/retro-os/kit/RetroButton.svelte.d.ts +21 -0
- package/dist/cameleon/skins/retro-os/kit/RetroCard.svelte +92 -0
- package/dist/cameleon/skins/retro-os/kit/RetroCard.svelte.d.ts +16 -0
- package/dist/cameleon/skins/retro-os/kit/RetroTag.svelte +35 -0
- package/dist/cameleon/skins/retro-os/kit/RetroTag.svelte.d.ts +13 -0
- package/dist/cameleon/skins/retro-os/kit/SectionWindow.svelte +125 -0
- package/dist/cameleon/skins/retro-os/kit/SectionWindow.svelte.d.ts +23 -0
- package/dist/cameleon/skins/retro-os/kit/StatusPill.svelte +32 -0
- package/dist/cameleon/skins/retro-os/kit/StatusPill.svelte.d.ts +13 -0
- package/dist/cameleon/skins/retro-os/kit/Swatches.svelte +33 -0
- package/dist/cameleon/skins/retro-os/kit/Swatches.svelte.d.ts +9 -0
- package/dist/cameleon/skins/retro-os/kit/VideoFrame.svelte +177 -0
- package/dist/cameleon/skins/retro-os/kit/VideoFrame.svelte.d.ts +20 -0
- package/dist/cameleon/skins/retro-os/kit/accents.d.ts +25 -0
- package/dist/cameleon/skins/retro-os/kit/accents.js +28 -0
- package/dist/cameleon/skins/retro-os/kit/index.d.ts +41 -0
- package/dist/cameleon/skins/retro-os/kit/index.js +41 -0
- package/dist/cameleon/skins/retro-os/kit/kit-windows.test.d.ts +1 -0
- package/dist/cameleon/skins/retro-os/kit/kit-windows.test.js +159 -0
- package/dist/cameleon/skins/retro-os/kit/kit.css +247 -0
- package/dist/cameleon/skins/retro-os/kit/kit.test.d.ts +1 -0
- package/dist/cameleon/skins/retro-os/kit/kit.test.js +123 -0
- package/dist/cameleon/skins/retro-os/meta.d.ts +3 -0
- package/dist/cameleon/skins/retro-os/meta.js +58 -0
- package/dist/cameleon/skins/retro-os/ornaments.d.ts +2 -0
- package/dist/cameleon/skins/retro-os/ornaments.js +17 -0
- package/dist/cameleon/skins/retro-os/recipes.d.ts +35 -0
- package/dist/cameleon/skins/retro-os/recipes.js +160 -0
- package/dist/cameleon/skins/retro-os/retro-os.css +107 -0
- package/dist/cameleon/skins/retro-os/tokens.d.ts +16 -0
- package/dist/cameleon/skins/retro-os/tokens.js +34 -0
- package/dist/cameleon/skins/terminal/index.d.ts +3 -0
- package/dist/cameleon/skins/terminal/index.js +20 -0
- package/dist/cameleon/skins/terminal/meta.d.ts +3 -0
- package/dist/cameleon/skins/terminal/meta.js +67 -0
- package/dist/cameleon/skins/terminal/ornaments.d.ts +2 -0
- package/dist/cameleon/skins/terminal/ornaments.js +11 -0
- package/dist/cameleon/skins/terminal/recipes.d.ts +25 -0
- package/dist/cameleon/skins/terminal/recipes.js +154 -0
- package/dist/cameleon/skins/terminal/terminal.css +52 -0
- package/dist/cameleon/skins/terminal/tokens.d.ts +5 -0
- package/dist/cameleon/skins/terminal/tokens.js +18 -0
- package/dist/cameleon/types.d.ts +132 -0
- package/dist/cameleon/types.js +1 -0
- package/dist/fancy-ui/_internals/FieldConsumer.test.svelte +25 -0
- package/dist/fancy-ui/_internals/FieldConsumer.test.svelte.d.ts +18 -0
- package/dist/fancy-ui/_internals/FieldHarness.test.svelte +37 -0
- package/dist/fancy-ui/_internals/FieldHarness.test.svelte.d.ts +8 -0
- package/dist/fancy-ui/_internals/Markdown.svelte +227 -0
- package/dist/fancy-ui/_internals/Markdown.svelte.d.ts +24 -0
- package/dist/fancy-ui/_internals/MarkdownInline.svelte +56 -0
- package/dist/fancy-ui/_internals/MarkdownInline.svelte.d.ts +7 -0
- package/dist/fancy-ui/_internals/StreamText.svelte +64 -0
- package/dist/fancy-ui/_internals/StreamText.svelte.d.ts +14 -0
- package/dist/fancy-ui/_internals/StreamText.test.d.ts +1 -0
- package/dist/fancy-ui/_internals/StreamText.test.js +77 -0
- package/dist/fancy-ui/_internals/ai-types.d.ts +117 -0
- package/dist/fancy-ui/_internals/ai-types.js +9 -0
- package/dist/fancy-ui/_internals/anchor-position.d.ts +61 -0
- package/dist/fancy-ui/_internals/anchor-position.js +158 -0
- package/dist/fancy-ui/_internals/anchor-position.test.d.ts +1 -0
- package/dist/fancy-ui/_internals/anchor-position.test.js +205 -0
- package/dist/fancy-ui/_internals/autoscroll.d.ts +30 -0
- package/dist/fancy-ui/_internals/autoscroll.js +149 -0
- package/dist/fancy-ui/_internals/autoscroll.test.d.ts +1 -0
- package/dist/fancy-ui/_internals/autoscroll.test.js +233 -0
- package/dist/fancy-ui/_internals/calendar-core.d.ts +26 -0
- package/dist/fancy-ui/_internals/calendar-core.js +75 -0
- package/dist/fancy-ui/_internals/calendar-core.test.d.ts +1 -0
- package/dist/fancy-ui/_internals/calendar-core.test.js +132 -0
- package/dist/fancy-ui/_internals/clipboard.svelte.d.ts +18 -0
- package/dist/fancy-ui/_internals/clipboard.svelte.js +58 -0
- package/dist/fancy-ui/_internals/clipboard.test.d.ts +1 -0
- package/dist/fancy-ui/_internals/clipboard.test.js +97 -0
- package/dist/fancy-ui/_internals/diff.d.ts +38 -0
- package/dist/fancy-ui/_internals/diff.js +211 -0
- package/dist/fancy-ui/_internals/diff.test.d.ts +1 -0
- package/dist/fancy-ui/_internals/diff.test.js +261 -0
- package/dist/fancy-ui/_internals/dismissable.d.ts +12 -0
- package/dist/fancy-ui/_internals/dismissable.js +63 -0
- package/dist/fancy-ui/_internals/dismissable.test.d.ts +1 -0
- package/dist/fancy-ui/_internals/dismissable.test.js +128 -0
- package/dist/fancy-ui/_internals/elapsed.svelte.d.ts +49 -0
- package/dist/fancy-ui/_internals/elapsed.svelte.js +106 -0
- package/dist/fancy-ui/_internals/elapsed.test.d.ts +1 -0
- package/dist/fancy-ui/_internals/elapsed.test.js +124 -0
- package/dist/fancy-ui/_internals/field.svelte.d.ts +106 -0
- package/dist/fancy-ui/_internals/field.svelte.js +73 -0
- package/dist/fancy-ui/_internals/field.test.d.ts +1 -0
- package/dist/fancy-ui/_internals/field.test.js +223 -0
- package/dist/fancy-ui/_internals/float.d.ts +46 -0
- package/dist/fancy-ui/_internals/float.js +177 -0
- package/dist/fancy-ui/_internals/float.test.d.ts +1 -0
- package/dist/fancy-ui/_internals/float.test.js +242 -0
- package/dist/fancy-ui/_internals/focus-trap.d.ts +18 -0
- package/dist/fancy-ui/_internals/focus-trap.js +135 -0
- package/dist/fancy-ui/_internals/focus-trap.test.d.ts +1 -0
- package/dist/fancy-ui/_internals/focus-trap.test.js +229 -0
- package/dist/fancy-ui/_internals/host.d.ts +38 -0
- package/dist/fancy-ui/_internals/host.js +63 -0
- package/dist/fancy-ui/_internals/host.test.d.ts +1 -0
- package/dist/fancy-ui/_internals/host.test.js +57 -0
- package/dist/fancy-ui/_internals/id.d.ts +11 -0
- package/dist/fancy-ui/_internals/id.js +30 -0
- package/dist/fancy-ui/_internals/id.test.d.ts +1 -0
- package/dist/fancy-ui/_internals/id.test.js +31 -0
- package/dist/fancy-ui/_internals/listbox.svelte.d.ts +50 -0
- package/dist/fancy-ui/_internals/listbox.svelte.js +207 -0
- package/dist/fancy-ui/_internals/listbox.test.d.ts +1 -0
- package/dist/fancy-ui/_internals/listbox.test.js +399 -0
- package/dist/fancy-ui/_internals/markdown-security.test.d.ts +1 -0
- package/dist/fancy-ui/_internals/markdown-security.test.js +258 -0
- package/dist/fancy-ui/_internals/markdown.d.ts +66 -0
- package/dist/fancy-ui/_internals/markdown.js +586 -0
- package/dist/fancy-ui/_internals/markdown.test.d.ts +1 -0
- package/dist/fancy-ui/_internals/markdown.test.js +473 -0
- package/dist/fancy-ui/_internals/menu.svelte.d.ts +74 -0
- package/dist/fancy-ui/_internals/menu.svelte.js +307 -0
- package/dist/fancy-ui/_internals/menu.test.d.ts +1 -0
- package/dist/fancy-ui/_internals/menu.test.js +393 -0
- package/dist/fancy-ui/_internals/portal.d.ts +14 -0
- package/dist/fancy-ui/_internals/portal.js +49 -0
- package/dist/fancy-ui/_internals/portal.test.d.ts +1 -0
- package/dist/fancy-ui/_internals/portal.test.js +57 -0
- package/dist/fancy-ui/_internals/relative-time.d.ts +22 -0
- package/dist/fancy-ui/_internals/relative-time.js +56 -0
- package/dist/fancy-ui/_internals/relative-time.test.d.ts +1 -0
- package/dist/fancy-ui/_internals/relative-time.test.js +56 -0
- package/dist/fancy-ui/_internals/scroll-lock.d.ts +7 -0
- package/dist/fancy-ui/_internals/scroll-lock.js +91 -0
- package/dist/fancy-ui/_internals/scroll-lock.test.d.ts +1 -0
- package/dist/fancy-ui/_internals/scroll-lock.test.js +98 -0
- package/dist/fancy-ui/_internals/stream-text.svelte.d.ts +45 -0
- package/dist/fancy-ui/_internals/stream-text.svelte.js +106 -0
- package/dist/fancy-ui/_internals/stream-text.test.d.ts +1 -0
- package/dist/fancy-ui/_internals/stream-text.test.js +117 -0
- package/dist/fancy-ui/_internals/waveform-core.d.ts +33 -0
- package/dist/fancy-ui/_internals/waveform-core.js +63 -0
- package/dist/fancy-ui/_internals/waveform-core.test.d.ts +1 -0
- package/dist/fancy-ui/_internals/waveform-core.test.js +124 -0
- package/dist/fancy-ui/agent-plan/AgentPlan.svelte +459 -0
- package/dist/fancy-ui/agent-plan/AgentPlan.svelte.d.ts +24 -0
- package/dist/fancy-ui/agent-plan/AgentPlan.test.d.ts +1 -0
- package/dist/fancy-ui/agent-plan/AgentPlan.test.js +305 -0
- package/dist/fancy-ui/agent-plan/README.md +136 -0
- package/dist/fancy-ui/agent-plan/index.d.ts +3 -0
- package/dist/fancy-ui/agent-plan/index.js +2 -0
- package/dist/fancy-ui/ai-data-table/AiDataTable.svelte +214 -0
- package/dist/fancy-ui/ai-data-table/AiDataTable.svelte.d.ts +45 -0
- package/dist/fancy-ui/ai-data-table/AiDataTable.test.d.ts +1 -0
- package/dist/fancy-ui/ai-data-table/AiDataTable.test.js +223 -0
- package/dist/fancy-ui/ai-data-table/README.md +147 -0
- package/dist/fancy-ui/ai-data-table/index.d.ts +3 -0
- package/dist/fancy-ui/ai-data-table/index.js +2 -0
- package/dist/fancy-ui/alert-dialog/AlertDialog.svelte +139 -0
- package/dist/fancy-ui/alert-dialog/AlertDialog.svelte.d.ts +34 -0
- package/dist/fancy-ui/alert-dialog/AlertDialog.test.d.ts +1 -0
- package/dist/fancy-ui/alert-dialog/AlertDialog.test.js +254 -0
- package/dist/fancy-ui/alert-dialog/README.md +75 -0
- package/dist/fancy-ui/alert-dialog/index.d.ts +2 -0
- package/dist/fancy-ui/alert-dialog/index.js +2 -0
- package/dist/fancy-ui/approval-card/ApprovalCard.svelte +299 -0
- package/dist/fancy-ui/approval-card/ApprovalCard.svelte.d.ts +35 -0
- package/dist/fancy-ui/approval-card/ApprovalCard.test.d.ts +1 -0
- package/dist/fancy-ui/approval-card/ApprovalCard.test.js +175 -0
- package/dist/fancy-ui/approval-card/ApprovalCardHarness.test.svelte +35 -0
- package/dist/fancy-ui/approval-card/ApprovalCardHarness.test.svelte.d.ts +13 -0
- package/dist/fancy-ui/approval-card/README.md +116 -0
- package/dist/fancy-ui/approval-card/index.d.ts +3 -0
- package/dist/fancy-ui/approval-card/index.js +2 -0
- package/dist/fancy-ui/artifact-card/ArtifactCard.svelte +362 -0
- package/dist/fancy-ui/artifact-card/ArtifactCard.svelte.d.ts +35 -0
- package/dist/fancy-ui/artifact-card/ArtifactCard.test.d.ts +1 -0
- package/dist/fancy-ui/artifact-card/ArtifactCard.test.js +214 -0
- package/dist/fancy-ui/artifact-card/README.md +124 -0
- package/dist/fancy-ui/artifact-card/index.d.ts +3 -0
- package/dist/fancy-ui/artifact-card/index.js +2 -0
- package/dist/fancy-ui/autocomplete/Autocomplete.svelte +272 -0
- package/dist/fancy-ui/autocomplete/Autocomplete.svelte.d.ts +35 -0
- package/dist/fancy-ui/autocomplete/Autocomplete.test.d.ts +1 -0
- package/dist/fancy-ui/autocomplete/Autocomplete.test.js +400 -0
- package/dist/fancy-ui/autocomplete/AutocompleteFieldHarness.test.svelte +68 -0
- package/dist/fancy-ui/autocomplete/AutocompleteFieldHarness.test.svelte.d.ts +20 -0
- package/dist/fancy-ui/autocomplete/AutocompleteHarness.test.svelte +30 -0
- package/dist/fancy-ui/autocomplete/AutocompleteHarness.test.svelte.d.ts +9 -0
- package/dist/fancy-ui/autocomplete/AutocompletePanel.svelte +75 -0
- package/dist/fancy-ui/autocomplete/AutocompletePanel.svelte.d.ts +18 -0
- package/dist/fancy-ui/autocomplete/README.md +160 -0
- package/dist/fancy-ui/autocomplete/index.d.ts +4 -0
- package/dist/fancy-ui/autocomplete/index.js +3 -0
- package/dist/fancy-ui/autocomplete/match.d.ts +6 -0
- package/dist/fancy-ui/autocomplete/match.js +16 -0
- package/dist/fancy-ui/autocomplete/types.d.ts +32 -0
- package/dist/fancy-ui/autocomplete/types.js +1 -0
- package/dist/fancy-ui/blur-reveal/BlurReveal.svelte +16 -1
- package/dist/fancy-ui/blur-reveal/BlurReveal.svelte.d.ts +2 -0
- package/dist/fancy-ui/blur-reveal/BlurReveal.test.js +15 -0
- package/dist/fancy-ui/blur-reveal/README.md +22 -11
- package/dist/fancy-ui/breadcrumb/Breadcrumb.svelte +145 -0
- package/dist/fancy-ui/breadcrumb/Breadcrumb.svelte.d.ts +39 -0
- package/dist/fancy-ui/breadcrumb/Breadcrumb.test.d.ts +1 -0
- package/dist/fancy-ui/breadcrumb/Breadcrumb.test.js +268 -0
- package/dist/fancy-ui/breadcrumb/README.md +119 -0
- package/dist/fancy-ui/breadcrumb/index.d.ts +3 -0
- package/dist/fancy-ui/breadcrumb/index.js +2 -0
- package/dist/fancy-ui/button/Button.svelte +242 -0
- package/dist/fancy-ui/button/Button.svelte.d.ts +48 -0
- package/dist/fancy-ui/button/Button.test.d.ts +1 -0
- package/dist/fancy-ui/button/Button.test.js +291 -0
- package/dist/fancy-ui/button/README.md +102 -0
- package/dist/fancy-ui/button/index.d.ts +3 -0
- package/dist/fancy-ui/button/index.js +2 -0
- package/dist/fancy-ui/button/types.d.ts +4 -0
- package/dist/fancy-ui/button/types.js +1 -0
- package/dist/fancy-ui/button-group/ButtonGroup.svelte +129 -0
- package/dist/fancy-ui/button-group/ButtonGroup.svelte.d.ts +17 -0
- package/dist/fancy-ui/button-group/ButtonGroup.test.d.ts +1 -0
- package/dist/fancy-ui/button-group/ButtonGroup.test.js +133 -0
- package/dist/fancy-ui/button-group/ButtonGroupContextProbe.test.svelte +15 -0
- package/dist/fancy-ui/button-group/ButtonGroupContextProbe.test.svelte.d.ts +18 -0
- package/dist/fancy-ui/button-group/ButtonGroupHarness.test.svelte +21 -0
- package/dist/fancy-ui/button-group/ButtonGroupHarness.test.svelte.d.ts +7 -0
- package/dist/fancy-ui/button-group/README.md +91 -0
- package/dist/fancy-ui/button-group/index.d.ts +4 -0
- package/dist/fancy-ui/button-group/index.js +3 -0
- package/dist/fancy-ui/button-group/types.d.ts +16 -0
- package/dist/fancy-ui/button-group/types.js +10 -0
- package/dist/fancy-ui/chat-error/ChatError.svelte +195 -0
- package/dist/fancy-ui/chat-error/ChatError.svelte.d.ts +27 -0
- package/dist/fancy-ui/chat-error/ChatError.test.d.ts +1 -0
- package/dist/fancy-ui/chat-error/ChatError.test.js +94 -0
- package/dist/fancy-ui/chat-error/README.md +78 -0
- package/dist/fancy-ui/chat-error/index.d.ts +3 -0
- package/dist/fancy-ui/chat-error/index.js +2 -0
- package/dist/fancy-ui/chat-message/ChatMessage.svelte +205 -0
- package/dist/fancy-ui/chat-message/ChatMessage.svelte.d.ts +31 -0
- package/dist/fancy-ui/chat-message/ChatMessage.test.d.ts +1 -0
- package/dist/fancy-ui/chat-message/ChatMessage.test.js +179 -0
- package/dist/fancy-ui/chat-message/ChatMessageAction.svelte +82 -0
- package/dist/fancy-ui/chat-message/ChatMessageAction.svelte.d.ts +21 -0
- package/dist/fancy-ui/chat-message/ChatMessageActions.svelte +73 -0
- package/dist/fancy-ui/chat-message/ChatMessageActions.svelte.d.ts +15 -0
- package/dist/fancy-ui/chat-message/ChatMessageBranches.svelte +86 -0
- package/dist/fancy-ui/chat-message/ChatMessageBranches.svelte.d.ts +16 -0
- package/dist/fancy-ui/chat-message/ChatMessageHarness.test.svelte +47 -0
- package/dist/fancy-ui/chat-message/ChatMessageHarness.test.svelte.d.ts +12 -0
- package/dist/fancy-ui/chat-message/ChatMessageParts.test.d.ts +1 -0
- package/dist/fancy-ui/chat-message/ChatMessageParts.test.js +173 -0
- package/dist/fancy-ui/chat-message/README.md +184 -0
- package/dist/fancy-ui/chat-message/index.d.ts +10 -0
- package/dist/fancy-ui/chat-message/index.js +6 -0
- package/dist/fancy-ui/chat-message/types.d.ts +18 -0
- package/dist/fancy-ui/chat-message/types.js +10 -0
- package/dist/fancy-ui/chat-panel/ChatEmptyState.svelte +80 -0
- package/dist/fancy-ui/chat-panel/ChatEmptyState.svelte.d.ts +21 -0
- package/dist/fancy-ui/chat-panel/ChatPanel.svelte +303 -0
- package/dist/fancy-ui/chat-panel/ChatPanel.svelte.d.ts +29 -0
- package/dist/fancy-ui/chat-panel/ChatPanel.test.d.ts +1 -0
- package/dist/fancy-ui/chat-panel/ChatPanel.test.js +303 -0
- package/dist/fancy-ui/chat-panel/README.md +209 -0
- package/dist/fancy-ui/chat-panel/index.d.ts +5 -0
- package/dist/fancy-ui/chat-panel/index.js +3 -0
- package/dist/fancy-ui/checkbox/Checkbox.svelte +243 -0
- package/dist/fancy-ui/checkbox/Checkbox.svelte.d.ts +55 -0
- package/dist/fancy-ui/checkbox/Checkbox.test.d.ts +1 -0
- package/dist/fancy-ui/checkbox/Checkbox.test.js +330 -0
- package/dist/fancy-ui/checkbox/CheckboxFieldHarness.test.svelte +26 -0
- package/dist/fancy-ui/checkbox/CheckboxFieldHarness.test.svelte.d.ts +8 -0
- package/dist/fancy-ui/checkbox/CheckboxHarness.test.svelte +34 -0
- package/dist/fancy-ui/checkbox/CheckboxHarness.test.svelte.d.ts +8 -0
- package/dist/fancy-ui/checkbox/README.md +160 -0
- package/dist/fancy-ui/checkbox/index.d.ts +3 -0
- package/dist/fancy-ui/checkbox/index.js +2 -0
- package/dist/fancy-ui/code-diff/CodeDiff.svelte +428 -0
- package/dist/fancy-ui/code-diff/CodeDiff.svelte.d.ts +27 -0
- package/dist/fancy-ui/code-diff/CodeDiff.test.d.ts +1 -0
- package/dist/fancy-ui/code-diff/CodeDiff.test.js +298 -0
- package/dist/fancy-ui/code-diff/README.md +82 -0
- package/dist/fancy-ui/code-diff/index.d.ts +3 -0
- package/dist/fancy-ui/code-diff/index.js +2 -0
- package/dist/fancy-ui/combobox/Combobox.svelte +337 -0
- package/dist/fancy-ui/combobox/Combobox.svelte.d.ts +35 -0
- package/dist/fancy-ui/combobox/Combobox.test.d.ts +1 -0
- package/dist/fancy-ui/combobox/Combobox.test.js +445 -0
- package/dist/fancy-ui/combobox/ComboboxFieldHarness.test.svelte +69 -0
- package/dist/fancy-ui/combobox/ComboboxFieldHarness.test.svelte.d.ts +21 -0
- package/dist/fancy-ui/combobox/ComboboxHarness.test.svelte +30 -0
- package/dist/fancy-ui/combobox/ComboboxHarness.test.svelte.d.ts +9 -0
- package/dist/fancy-ui/combobox/ComboboxPanel.svelte +87 -0
- package/dist/fancy-ui/combobox/ComboboxPanel.svelte.d.ts +18 -0
- package/dist/fancy-ui/combobox/README.md +168 -0
- package/dist/fancy-ui/combobox/index.d.ts +4 -0
- package/dist/fancy-ui/combobox/index.js +3 -0
- package/dist/fancy-ui/combobox/match.d.ts +15 -0
- package/dist/fancy-ui/combobox/match.js +35 -0
- package/dist/fancy-ui/combobox/types.d.ts +40 -0
- package/dist/fancy-ui/combobox/types.js +12 -0
- package/dist/fancy-ui/command-menu/CommandMenu.svelte +547 -0
- package/dist/fancy-ui/command-menu/CommandMenu.svelte.d.ts +36 -0
- package/dist/fancy-ui/command-menu/CommandMenu.test.d.ts +1 -0
- package/dist/fancy-ui/command-menu/CommandMenu.test.js +569 -0
- package/dist/fancy-ui/command-menu/README.md +176 -0
- package/dist/fancy-ui/command-menu/index.d.ts +2 -0
- package/dist/fancy-ui/command-menu/index.js +2 -0
- package/dist/fancy-ui/command-menu/match.d.ts +19 -0
- package/dist/fancy-ui/command-menu/match.js +124 -0
- package/dist/fancy-ui/command-menu/types.d.ts +19 -0
- package/dist/fancy-ui/command-menu/types.js +1 -0
- package/dist/fancy-ui/composer/Composer.svelte +241 -0
- package/dist/fancy-ui/composer/Composer.svelte.d.ts +37 -0
- package/dist/fancy-ui/composer/Composer.test.d.ts +1 -0
- package/dist/fancy-ui/composer/Composer.test.js +399 -0
- package/dist/fancy-ui/composer/ComposerAttachment.svelte +220 -0
- package/dist/fancy-ui/composer/ComposerAttachment.svelte.d.ts +15 -0
- package/dist/fancy-ui/composer/ComposerAttachments.svelte +158 -0
- package/dist/fancy-ui/composer/ComposerAttachments.svelte.d.ts +19 -0
- package/dist/fancy-ui/composer/ComposerAttachments.test.d.ts +1 -0
- package/dist/fancy-ui/composer/ComposerAttachments.test.js +360 -0
- package/dist/fancy-ui/composer/ComposerCommandMenu.svelte +399 -0
- package/dist/fancy-ui/composer/ComposerCommandMenu.svelte.d.ts +34 -0
- package/dist/fancy-ui/composer/ComposerCommandMenu.test.d.ts +1 -0
- package/dist/fancy-ui/composer/ComposerCommandMenu.test.js +311 -0
- package/dist/fancy-ui/composer/ComposerHarness.test.svelte +99 -0
- package/dist/fancy-ui/composer/ComposerHarness.test.svelte.d.ts +24 -0
- package/dist/fancy-ui/composer/ComposerInput.svelte +178 -0
- package/dist/fancy-ui/composer/ComposerInput.svelte.d.ts +20 -0
- package/dist/fancy-ui/composer/ComposerIntegration.test.d.ts +14 -0
- package/dist/fancy-ui/composer/ComposerIntegration.test.js +283 -0
- package/dist/fancy-ui/composer/ComposerModelPicker.svelte +375 -0
- package/dist/fancy-ui/composer/ComposerModelPicker.svelte.d.ts +19 -0
- package/dist/fancy-ui/composer/ComposerSubmit.svelte +85 -0
- package/dist/fancy-ui/composer/ComposerSubmit.svelte.d.ts +17 -0
- package/dist/fancy-ui/composer/ComposerToolbar.svelte +55 -0
- package/dist/fancy-ui/composer/ComposerToolbar.svelte.d.ts +13 -0
- package/dist/fancy-ui/composer/ComposerToolbar.test.d.ts +1 -0
- package/dist/fancy-ui/composer/ComposerToolbar.test.js +285 -0
- package/dist/fancy-ui/composer/IntegrationHarness.test.svelte +142 -0
- package/dist/fancy-ui/composer/IntegrationHarness.test.svelte.d.ts +28 -0
- package/dist/fancy-ui/composer/README.md +416 -0
- package/dist/fancy-ui/composer/caret.d.ts +69 -0
- package/dist/fancy-ui/composer/caret.js +197 -0
- package/dist/fancy-ui/composer/caret.test.d.ts +1 -0
- package/dist/fancy-ui/composer/caret.test.js +87 -0
- package/dist/fancy-ui/composer/index.d.ts +18 -0
- package/dist/fancy-ui/composer/index.js +10 -0
- package/dist/fancy-ui/composer/types.d.ts +61 -0
- package/dist/fancy-ui/composer/types.js +18 -0
- package/dist/fancy-ui/context-menu/ContextMenu.svelte +147 -0
- package/dist/fancy-ui/context-menu/ContextMenu.svelte.d.ts +21 -0
- package/dist/fancy-ui/context-menu/ContextMenu.test.d.ts +1 -0
- package/dist/fancy-ui/context-menu/ContextMenu.test.js +309 -0
- package/dist/fancy-ui/context-menu/ContextMenuContent.svelte +130 -0
- package/dist/fancy-ui/context-menu/ContextMenuContent.svelte.d.ts +12 -0
- package/dist/fancy-ui/context-menu/ContextMenuHarness.test.svelte +72 -0
- package/dist/fancy-ui/context-menu/ContextMenuHarness.test.svelte.d.ts +16 -0
- package/dist/fancy-ui/context-menu/ContextMenuTrigger.svelte +72 -0
- package/dist/fancy-ui/context-menu/ContextMenuTrigger.svelte.d.ts +14 -0
- package/dist/fancy-ui/context-menu/README.md +226 -0
- package/dist/fancy-ui/context-menu/index.d.ts +12 -0
- package/dist/fancy-ui/context-menu/index.js +19 -0
- package/dist/fancy-ui/context-menu/types.d.ts +26 -0
- package/dist/fancy-ui/context-menu/types.js +8 -0
- package/dist/fancy-ui/context-ring/ContextRing.svelte +407 -0
- package/dist/fancy-ui/context-ring/ContextRing.svelte.d.ts +29 -0
- package/dist/fancy-ui/context-ring/ContextRing.test.d.ts +1 -0
- package/dist/fancy-ui/context-ring/ContextRing.test.js +250 -0
- package/dist/fancy-ui/context-ring/README.md +138 -0
- package/dist/fancy-ui/context-ring/index.d.ts +3 -0
- package/dist/fancy-ui/context-ring/index.js +2 -0
- package/dist/fancy-ui/copy-button/CopyButton.svelte +182 -0
- package/dist/fancy-ui/copy-button/CopyButton.svelte.d.ts +41 -0
- package/dist/fancy-ui/copy-button/CopyButton.test.d.ts +1 -0
- package/dist/fancy-ui/copy-button/CopyButton.test.js +261 -0
- package/dist/fancy-ui/copy-button/README.md +124 -0
- package/dist/fancy-ui/copy-button/index.d.ts +3 -0
- package/dist/fancy-ui/copy-button/index.js +2 -0
- package/dist/fancy-ui/date-picker/DatePicker.svelte +421 -0
- package/dist/fancy-ui/date-picker/DatePicker.svelte.d.ts +38 -0
- package/dist/fancy-ui/date-picker/DatePicker.test.d.ts +1 -0
- package/dist/fancy-ui/date-picker/DatePicker.test.js +402 -0
- package/dist/fancy-ui/date-picker/DatePickerFieldHarness.test.svelte +25 -0
- package/dist/fancy-ui/date-picker/DatePickerFieldHarness.test.svelte.d.ts +7 -0
- package/dist/fancy-ui/date-picker/DatePickerHarness.test.svelte +29 -0
- package/dist/fancy-ui/date-picker/DatePickerHarness.test.svelte.d.ts +7 -0
- package/dist/fancy-ui/date-picker/README.md +193 -0
- package/dist/fancy-ui/date-picker/date-utils.d.ts +39 -0
- package/dist/fancy-ui/date-picker/date-utils.js +116 -0
- package/dist/fancy-ui/date-picker/date-utils.test.d.ts +1 -0
- package/dist/fancy-ui/date-picker/date-utils.test.js +175 -0
- package/dist/fancy-ui/date-picker/index.d.ts +3 -0
- package/dist/fancy-ui/date-picker/index.js +2 -0
- package/dist/fancy-ui/dialog/Dialog.svelte +149 -0
- package/dist/fancy-ui/dialog/Dialog.svelte.d.ts +28 -0
- package/dist/fancy-ui/dialog/Dialog.test.d.ts +1 -0
- package/dist/fancy-ui/dialog/Dialog.test.js +304 -0
- package/dist/fancy-ui/dialog/DialogSurface.svelte +126 -0
- package/dist/fancy-ui/dialog/DialogSurface.svelte.d.ts +4 -0
- package/dist/fancy-ui/dialog/README.md +95 -0
- package/dist/fancy-ui/dialog/index.d.ts +2 -0
- package/dist/fancy-ui/dialog/index.js +2 -0
- package/dist/fancy-ui/dialog/types.d.ts +58 -0
- package/dist/fancy-ui/dialog/types.js +1 -0
- package/dist/fancy-ui/drawer/Drawer.svelte +305 -0
- package/dist/fancy-ui/drawer/Drawer.svelte.d.ts +26 -0
- package/dist/fancy-ui/drawer/Drawer.test.d.ts +1 -0
- package/dist/fancy-ui/drawer/Drawer.test.js +283 -0
- package/dist/fancy-ui/drawer/DrawerHarness.test.svelte +31 -0
- package/dist/fancy-ui/drawer/DrawerHarness.test.svelte.d.ts +7 -0
- package/dist/fancy-ui/drawer/README.md +135 -0
- package/dist/fancy-ui/drawer/index.d.ts +3 -0
- package/dist/fancy-ui/drawer/index.js +2 -0
- package/dist/fancy-ui/dropdown-menu/DropdownMenu.svelte +138 -0
- package/dist/fancy-ui/dropdown-menu/DropdownMenu.svelte.d.ts +26 -0
- package/dist/fancy-ui/dropdown-menu/DropdownMenu.test.d.ts +1 -0
- package/dist/fancy-ui/dropdown-menu/DropdownMenu.test.js +686 -0
- package/dist/fancy-ui/dropdown-menu/DropdownMenuContent.svelte +158 -0
- package/dist/fancy-ui/dropdown-menu/DropdownMenuContent.svelte.d.ts +12 -0
- package/dist/fancy-ui/dropdown-menu/DropdownMenuHarness.test.svelte +97 -0
- package/dist/fancy-ui/dropdown-menu/DropdownMenuHarness.test.svelte.d.ts +25 -0
- package/dist/fancy-ui/dropdown-menu/DropdownMenuItem.svelte +156 -0
- package/dist/fancy-ui/dropdown-menu/DropdownMenuItem.svelte.d.ts +22 -0
- package/dist/fancy-ui/dropdown-menu/DropdownMenuLabel.svelte +32 -0
- package/dist/fancy-ui/dropdown-menu/DropdownMenuLabel.svelte.d.ts +10 -0
- package/dist/fancy-ui/dropdown-menu/DropdownMenuSeparator.svelte +18 -0
- package/dist/fancy-ui/dropdown-menu/DropdownMenuSeparator.svelte.d.ts +7 -0
- package/dist/fancy-ui/dropdown-menu/DropdownMenuSub.svelte +125 -0
- package/dist/fancy-ui/dropdown-menu/DropdownMenuSub.svelte.d.ts +8 -0
- package/dist/fancy-ui/dropdown-menu/DropdownMenuSubContent.svelte +161 -0
- package/dist/fancy-ui/dropdown-menu/DropdownMenuSubContent.svelte.d.ts +12 -0
- package/dist/fancy-ui/dropdown-menu/DropdownMenuSubTrigger.svelte +151 -0
- package/dist/fancy-ui/dropdown-menu/DropdownMenuSubTrigger.svelte.d.ts +14 -0
- package/dist/fancy-ui/dropdown-menu/DropdownMenuTrigger.svelte +96 -0
- package/dist/fancy-ui/dropdown-menu/DropdownMenuTrigger.svelte.d.ts +14 -0
- package/dist/fancy-ui/dropdown-menu/README.md +420 -0
- package/dist/fancy-ui/dropdown-menu/index.d.ts +11 -0
- package/dist/fancy-ui/dropdown-menu/index.js +11 -0
- package/dist/fancy-ui/dropdown-menu/menu-shared.d.ts +32 -0
- package/dist/fancy-ui/dropdown-menu/menu-shared.js +74 -0
- package/dist/fancy-ui/dropdown-menu/types.d.ts +120 -0
- package/dist/fancy-ui/dropdown-menu/types.js +3 -0
- package/dist/fancy-ui/file-upload/FileUpload.svelte +495 -0
- package/dist/fancy-ui/file-upload/FileUpload.svelte.d.ts +48 -0
- package/dist/fancy-ui/file-upload/FileUpload.test.d.ts +1 -0
- package/dist/fancy-ui/file-upload/FileUpload.test.js +286 -0
- package/dist/fancy-ui/file-upload/FileUploadFieldHarness.test.svelte +47 -0
- package/dist/fancy-ui/file-upload/FileUploadFieldHarness.test.svelte.d.ts +7 -0
- package/dist/fancy-ui/file-upload/FileUploadHarness.test.svelte +28 -0
- package/dist/fancy-ui/file-upload/FileUploadHarness.test.svelte.d.ts +8 -0
- package/dist/fancy-ui/file-upload/README.md +217 -0
- package/dist/fancy-ui/file-upload/index.d.ts +3 -0
- package/dist/fancy-ui/file-upload/index.js +2 -0
- package/dist/fancy-ui/fluid-cursor/FluidCursor.svelte +71 -4
- package/dist/fancy-ui/fluid-cursor/FluidCursor.svelte.d.ts +13 -0
- package/dist/fancy-ui/fluid-cursor/FluidCursor.test.js +28 -0
- package/dist/fancy-ui/fluid-cursor/README.md +27 -0
- package/dist/fancy-ui/form-field/FormField.svelte +121 -0
- package/dist/fancy-ui/form-field/FormField.svelte.d.ts +4 -0
- package/dist/fancy-ui/form-field/FormField.test.d.ts +1 -0
- package/dist/fancy-ui/form-field/FormField.test.js +206 -0
- package/dist/fancy-ui/form-field/FormFieldControl.test.svelte +37 -0
- package/dist/fancy-ui/form-field/FormFieldControl.test.svelte.d.ts +8 -0
- package/dist/fancy-ui/form-field/FormFieldHarness.test.svelte +30 -0
- package/dist/fancy-ui/form-field/FormFieldHarness.test.svelte.d.ts +4 -0
- package/dist/fancy-ui/form-field/FormFieldPairHarness.test.svelte +20 -0
- package/dist/fancy-ui/form-field/FormFieldPairHarness.test.svelte.d.ts +18 -0
- package/dist/fancy-ui/form-field/README.md +215 -0
- package/dist/fancy-ui/form-field/index.d.ts +3 -0
- package/dist/fancy-ui/form-field/index.js +2 -0
- package/dist/fancy-ui/form-field/types.d.ts +40 -0
- package/dist/fancy-ui/form-field/types.js +1 -0
- package/dist/fancy-ui/hover-card/HoverCard.svelte +204 -0
- package/dist/fancy-ui/hover-card/HoverCard.svelte.d.ts +45 -0
- package/dist/fancy-ui/hover-card/HoverCard.test.d.ts +1 -0
- package/dist/fancy-ui/hover-card/HoverCard.test.js +243 -0
- package/dist/fancy-ui/hover-card/HoverCardAriaHarness.test.svelte +26 -0
- package/dist/fancy-ui/hover-card/HoverCardAriaHarness.test.svelte.d.ts +18 -0
- package/dist/fancy-ui/hover-card/HoverCardHarness.test.svelte +24 -0
- package/dist/fancy-ui/hover-card/HoverCardHarness.test.svelte.d.ts +6 -0
- package/dist/fancy-ui/hover-card/README.md +65 -0
- package/dist/fancy-ui/hover-card/index.d.ts +2 -0
- package/dist/fancy-ui/hover-card/index.js +2 -0
- package/dist/fancy-ui/icon-button/IconButton.svelte +111 -0
- package/dist/fancy-ui/icon-button/IconButton.svelte.d.ts +45 -0
- package/dist/fancy-ui/icon-button/IconButton.test.d.ts +1 -0
- package/dist/fancy-ui/icon-button/IconButton.test.js +120 -0
- package/dist/fancy-ui/icon-button/README.md +184 -0
- package/dist/fancy-ui/icon-button/index.d.ts +2 -0
- package/dist/fancy-ui/icon-button/index.js +2 -0
- package/dist/fancy-ui/image-generation/ImageGeneration.svelte +274 -0
- package/dist/fancy-ui/image-generation/ImageGeneration.svelte.d.ts +28 -0
- package/dist/fancy-ui/image-generation/ImageGeneration.test.d.ts +1 -0
- package/dist/fancy-ui/image-generation/ImageGeneration.test.js +248 -0
- package/dist/fancy-ui/image-generation/README.md +96 -0
- package/dist/fancy-ui/image-generation/index.d.ts +3 -0
- package/dist/fancy-ui/image-generation/index.js +2 -0
- package/dist/fancy-ui/image-trail-cursor/ImageTrailCursor.test.js +17 -0
- package/dist/fancy-ui/image-trail-cursor/README.md +20 -18
- package/dist/fancy-ui/image-trail-cursor/trail-variants.d.ts +6 -1
- package/dist/fancy-ui/image-trail-cursor/trail-variants.js +33 -0
- package/dist/fancy-ui/image-trail-cursor/trail-variants.test.d.ts +1 -0
- package/dist/fancy-ui/image-trail-cursor/trail-variants.test.js +14 -0
- package/dist/fancy-ui/index.d.ts +72 -0
- package/dist/fancy-ui/index.js +77 -0
- package/dist/fancy-ui/inline-citation/InlineCitation.svelte +289 -0
- package/dist/fancy-ui/inline-citation/InlineCitation.svelte.d.ts +24 -0
- package/dist/fancy-ui/inline-citation/InlineCitation.test.d.ts +1 -0
- package/dist/fancy-ui/inline-citation/InlineCitation.test.js +272 -0
- package/dist/fancy-ui/inline-citation/InlineCitationHarness.test.svelte +21 -0
- package/dist/fancy-ui/inline-citation/InlineCitationHarness.test.svelte.d.ts +9 -0
- package/dist/fancy-ui/inline-citation/README.md +107 -0
- package/dist/fancy-ui/inline-citation/index.d.ts +3 -0
- package/dist/fancy-ui/inline-citation/index.js +2 -0
- package/dist/fancy-ui/input/Input.svelte +123 -0
- package/dist/fancy-ui/input/Input.svelte.d.ts +34 -0
- package/dist/fancy-ui/input/Input.test.d.ts +1 -0
- package/dist/fancy-ui/input/Input.test.js +133 -0
- package/dist/fancy-ui/input/InputFieldHarness.test.svelte +49 -0
- package/dist/fancy-ui/input/InputFieldHarness.test.svelte.d.ts +7 -0
- package/dist/fancy-ui/input/InputHarness.test.svelte +28 -0
- package/dist/fancy-ui/input/InputHarness.test.svelte.d.ts +7 -0
- package/dist/fancy-ui/input/README.md +126 -0
- package/dist/fancy-ui/input/index.d.ts +3 -0
- package/dist/fancy-ui/input/index.js +2 -0
- package/dist/fancy-ui/interactive-grid-pattern/InteractiveGridPattern.svelte +10 -3
- package/dist/fancy-ui/interactive-grid-pattern/InteractiveGridPattern.svelte.d.ts +4 -0
- package/dist/fancy-ui/interactive-grid-pattern/InteractiveGridPattern.test.js +37 -1
- package/dist/fancy-ui/interactive-grid-pattern/README.md +20 -9
- package/dist/fancy-ui/label/Label.svelte +54 -0
- package/dist/fancy-ui/label/Label.svelte.d.ts +16 -0
- package/dist/fancy-ui/label/Label.test.d.ts +1 -0
- package/dist/fancy-ui/label/Label.test.js +105 -0
- package/dist/fancy-ui/label/LabelHarness.test.svelte +37 -0
- package/dist/fancy-ui/label/LabelHarness.test.svelte.d.ts +11 -0
- package/dist/fancy-ui/label/README.md +87 -0
- package/dist/fancy-ui/label/index.d.ts +2 -0
- package/dist/fancy-ui/label/index.js +2 -0
- package/dist/fancy-ui/line-hover-link/LineHoverLink.svelte +18 -1
- package/dist/fancy-ui/line-hover-link/LineHoverLink.svelte.d.ts +2 -1
- package/dist/fancy-ui/line-hover-link/LineHoverLink.test.js +12 -0
- package/dist/fancy-ui/line-hover-link/README.md +3 -2
- package/dist/fancy-ui/link/Link.svelte +145 -0
- package/dist/fancy-ui/link/Link.svelte.d.ts +29 -0
- package/dist/fancy-ui/link/Link.test.d.ts +1 -0
- package/dist/fancy-ui/link/Link.test.js +170 -0
- package/dist/fancy-ui/link/README.md +77 -0
- package/dist/fancy-ui/link/index.d.ts +3 -0
- package/dist/fancy-ui/link/index.js +2 -0
- package/dist/fancy-ui/liquid-glass/README.md +4 -0
- package/dist/fancy-ui/liquid-text/LiquidText.svelte +52 -11
- package/dist/fancy-ui/liquid-text/LiquidText.test.js +1 -3
- package/dist/fancy-ui/logo-cloud/README.md +47 -14
- package/dist/fancy-ui/logo-cloud/StaticLogoCloud.svelte +43 -6
- package/dist/fancy-ui/logo-cloud/StaticLogoCloud.svelte.d.ts +18 -0
- package/dist/fancy-ui/logo-cloud/StaticLogoCloud.test.d.ts +1 -0
- package/dist/fancy-ui/logo-cloud/StaticLogoCloud.test.js +57 -0
- package/dist/fancy-ui/logo-cloud/index.d.ts +2 -2
- package/dist/fancy-ui/navbar/Navbar.svelte +88 -0
- package/dist/fancy-ui/navbar/Navbar.svelte.d.ts +22 -0
- package/dist/fancy-ui/navbar/Navbar.test.d.ts +1 -0
- package/dist/fancy-ui/navbar/Navbar.test.js +157 -0
- package/dist/fancy-ui/navbar/NavbarLink.svelte +109 -0
- package/dist/fancy-ui/navbar/NavbarLink.svelte.d.ts +29 -0
- package/dist/fancy-ui/navbar/README.md +137 -0
- package/dist/fancy-ui/navbar/index.d.ts +5 -0
- package/dist/fancy-ui/navbar/index.js +3 -0
- package/dist/fancy-ui/navigation-menu/NavigationMenu.svelte +265 -0
- package/dist/fancy-ui/navigation-menu/NavigationMenu.svelte.d.ts +22 -0
- package/dist/fancy-ui/navigation-menu/NavigationMenu.test.d.ts +1 -0
- package/dist/fancy-ui/navigation-menu/NavigationMenu.test.js +487 -0
- package/dist/fancy-ui/navigation-menu/NavigationMenuContent.svelte +130 -0
- package/dist/fancy-ui/navigation-menu/NavigationMenuContent.svelte.d.ts +12 -0
- package/dist/fancy-ui/navigation-menu/NavigationMenuHarness.test.svelte +78 -0
- package/dist/fancy-ui/navigation-menu/NavigationMenuHarness.test.svelte.d.ts +24 -0
- package/dist/fancy-ui/navigation-menu/NavigationMenuItem.svelte +43 -0
- package/dist/fancy-ui/navigation-menu/NavigationMenuItem.svelte.d.ts +12 -0
- package/dist/fancy-ui/navigation-menu/NavigationMenuLink.svelte +93 -0
- package/dist/fancy-ui/navigation-menu/NavigationMenuLink.svelte.d.ts +24 -0
- package/dist/fancy-ui/navigation-menu/NavigationMenuList.svelte +40 -0
- package/dist/fancy-ui/navigation-menu/NavigationMenuList.svelte.d.ts +12 -0
- package/dist/fancy-ui/navigation-menu/NavigationMenuTrigger.svelte +137 -0
- package/dist/fancy-ui/navigation-menu/NavigationMenuTrigger.svelte.d.ts +12 -0
- package/dist/fancy-ui/navigation-menu/README.md +309 -0
- package/dist/fancy-ui/navigation-menu/index.d.ts +14 -0
- package/dist/fancy-ui/navigation-menu/index.js +8 -0
- package/dist/fancy-ui/navigation-menu/types.d.ts +77 -0
- package/dist/fancy-ui/navigation-menu/types.js +16 -0
- package/dist/fancy-ui/number-input/NumberInput.svelte +282 -0
- package/dist/fancy-ui/number-input/NumberInput.svelte.d.ts +33 -0
- package/dist/fancy-ui/number-input/NumberInput.test.d.ts +1 -0
- package/dist/fancy-ui/number-input/NumberInput.test.js +354 -0
- package/dist/fancy-ui/number-input/NumberInputFieldHarness.test.svelte +25 -0
- package/dist/fancy-ui/number-input/NumberInputFieldHarness.test.svelte.d.ts +7 -0
- package/dist/fancy-ui/number-input/NumberInputHarness.test.svelte +31 -0
- package/dist/fancy-ui/number-input/NumberInputHarness.test.svelte.d.ts +10 -0
- package/dist/fancy-ui/number-input/README.md +141 -0
- package/dist/fancy-ui/number-input/index.d.ts +3 -0
- package/dist/fancy-ui/number-input/index.js +2 -0
- package/dist/fancy-ui/pagination/Pagination.svelte +226 -0
- package/dist/fancy-ui/pagination/Pagination.svelte.d.ts +30 -0
- package/dist/fancy-ui/pagination/Pagination.test.d.ts +1 -0
- package/dist/fancy-ui/pagination/Pagination.test.js +194 -0
- package/dist/fancy-ui/pagination/PaginationHarness.test.svelte +53 -0
- package/dist/fancy-ui/pagination/PaginationHarness.test.svelte.d.ts +13 -0
- package/dist/fancy-ui/pagination/README.md +117 -0
- package/dist/fancy-ui/pagination/index.d.ts +3 -0
- package/dist/fancy-ui/pagination/index.js +9 -0
- package/dist/fancy-ui/pagination/pagination-range.d.ts +11 -0
- package/dist/fancy-ui/pagination/pagination-range.js +77 -0
- package/dist/fancy-ui/pagination/pagination-range.test.d.ts +1 -0
- package/dist/fancy-ui/pagination/pagination-range.test.js +118 -0
- package/dist/fancy-ui/password-input/PasswordInput.svelte +314 -0
- package/dist/fancy-ui/password-input/PasswordInput.svelte.d.ts +44 -0
- package/dist/fancy-ui/password-input/PasswordInput.test.d.ts +1 -0
- package/dist/fancy-ui/password-input/PasswordInput.test.js +290 -0
- package/dist/fancy-ui/password-input/PasswordInputFieldHarness.test.svelte +66 -0
- package/dist/fancy-ui/password-input/PasswordInputFieldHarness.test.svelte.d.ts +19 -0
- package/dist/fancy-ui/password-input/PasswordInputHarness.test.svelte +28 -0
- package/dist/fancy-ui/password-input/PasswordInputHarness.test.svelte.d.ts +7 -0
- package/dist/fancy-ui/password-input/README.md +135 -0
- package/dist/fancy-ui/password-input/index.d.ts +2 -0
- package/dist/fancy-ui/password-input/index.js +2 -0
- package/dist/fancy-ui/pixel-loader/PixelLoader.svelte +111 -0
- package/dist/fancy-ui/pixel-loader/PixelLoader.svelte.d.ts +23 -0
- package/dist/fancy-ui/pixel-loader/PixelLoader.test.d.ts +1 -0
- package/dist/fancy-ui/pixel-loader/PixelLoader.test.js +77 -0
- package/dist/fancy-ui/pixel-loader/README.md +47 -0
- package/dist/fancy-ui/pixel-loader/index.d.ts +3 -0
- package/dist/fancy-ui/pixel-loader/index.js +2 -0
- package/dist/fancy-ui/popover/Popover.svelte +127 -0
- package/dist/fancy-ui/popover/Popover.svelte.d.ts +31 -0
- package/dist/fancy-ui/popover/Popover.test.d.ts +1 -0
- package/dist/fancy-ui/popover/Popover.test.js +246 -0
- package/dist/fancy-ui/popover/PopoverContent.svelte +85 -0
- package/dist/fancy-ui/popover/PopoverContent.svelte.d.ts +12 -0
- package/dist/fancy-ui/popover/README.md +146 -0
- package/dist/fancy-ui/popover/index.d.ts +6 -0
- package/dist/fancy-ui/popover/index.js +4 -0
- package/dist/fancy-ui/popover/types.d.ts +27 -0
- package/dist/fancy-ui/popover/types.js +1 -0
- package/dist/fancy-ui/prompt-suggestions/PromptSuggestions.svelte +130 -0
- package/dist/fancy-ui/prompt-suggestions/PromptSuggestions.svelte.d.ts +24 -0
- package/dist/fancy-ui/prompt-suggestions/PromptSuggestions.test.d.ts +1 -0
- package/dist/fancy-ui/prompt-suggestions/PromptSuggestions.test.js +129 -0
- package/dist/fancy-ui/prompt-suggestions/README.md +77 -0
- package/dist/fancy-ui/prompt-suggestions/index.d.ts +3 -0
- package/dist/fancy-ui/prompt-suggestions/index.js +2 -0
- package/dist/fancy-ui/radio-group/README.md +228 -0
- package/dist/fancy-ui/radio-group/RadioGroup.svelte +163 -0
- package/dist/fancy-ui/radio-group/RadioGroup.svelte.d.ts +44 -0
- package/dist/fancy-ui/radio-group/RadioGroup.test.d.ts +1 -0
- package/dist/fancy-ui/radio-group/RadioGroup.test.js +415 -0
- package/dist/fancy-ui/radio-group/RadioGroupHarness.test.svelte +79 -0
- package/dist/fancy-ui/radio-group/RadioGroupHarness.test.svelte.d.ts +23 -0
- package/dist/fancy-ui/radio-group/RadioGroupItem.svelte +148 -0
- package/dist/fancy-ui/radio-group/RadioGroupItem.svelte.d.ts +18 -0
- package/dist/fancy-ui/radio-group/index.d.ts +6 -0
- package/dist/fancy-ui/radio-group/index.js +4 -0
- package/dist/fancy-ui/radio-group/types.d.ts +35 -0
- package/dist/fancy-ui/radio-group/types.js +12 -0
- package/dist/fancy-ui/reasoning-panel/README.md +70 -0
- package/dist/fancy-ui/reasoning-panel/ReasoningPanel.svelte +260 -0
- package/dist/fancy-ui/reasoning-panel/ReasoningPanel.svelte.d.ts +32 -0
- package/dist/fancy-ui/reasoning-panel/ReasoningPanel.test.d.ts +1 -0
- package/dist/fancy-ui/reasoning-panel/ReasoningPanel.test.js +163 -0
- package/dist/fancy-ui/reasoning-panel/index.d.ts +3 -0
- package/dist/fancy-ui/reasoning-panel/index.js +2 -0
- package/dist/fancy-ui/recommendation-card/README.md +106 -0
- package/dist/fancy-ui/recommendation-card/RecommendationCard.svelte +375 -0
- package/dist/fancy-ui/recommendation-card/RecommendationCard.svelte.d.ts +38 -0
- package/dist/fancy-ui/recommendation-card/RecommendationCard.test.d.ts +1 -0
- package/dist/fancy-ui/recommendation-card/RecommendationCard.test.js +255 -0
- package/dist/fancy-ui/recommendation-card/RecommendationCardHarness.test.svelte +33 -0
- package/dist/fancy-ui/recommendation-card/RecommendationCardHarness.test.svelte.d.ts +12 -0
- package/dist/fancy-ui/recommendation-card/index.d.ts +3 -0
- package/dist/fancy-ui/recommendation-card/index.js +2 -0
- package/dist/fancy-ui/registry.d.ts +14 -1
- package/dist/fancy-ui/registry.js +5055 -44
- package/dist/fancy-ui/scroll-anchor/README.md +93 -0
- package/dist/fancy-ui/scroll-anchor/ScrollAnchor.svelte +197 -0
- package/dist/fancy-ui/scroll-anchor/ScrollAnchor.svelte.d.ts +31 -0
- package/dist/fancy-ui/scroll-anchor/ScrollAnchor.test.d.ts +1 -0
- package/dist/fancy-ui/scroll-anchor/ScrollAnchor.test.js +206 -0
- package/dist/fancy-ui/scroll-anchor/index.d.ts +3 -0
- package/dist/fancy-ui/scroll-anchor/index.js +2 -0
- package/dist/fancy-ui/search-input/README.md +118 -0
- package/dist/fancy-ui/search-input/SearchInput.svelte +261 -0
- package/dist/fancy-ui/search-input/SearchInput.svelte.d.ts +43 -0
- package/dist/fancy-ui/search-input/SearchInput.test.d.ts +1 -0
- package/dist/fancy-ui/search-input/SearchInput.test.js +279 -0
- package/dist/fancy-ui/search-input/SearchInputFieldHarness.test.svelte +66 -0
- package/dist/fancy-ui/search-input/SearchInputFieldHarness.test.svelte.d.ts +19 -0
- package/dist/fancy-ui/search-input/SearchInputHarness.test.svelte +28 -0
- package/dist/fancy-ui/search-input/SearchInputHarness.test.svelte.d.ts +7 -0
- package/dist/fancy-ui/search-input/index.d.ts +2 -0
- package/dist/fancy-ui/search-input/index.js +2 -0
- package/dist/fancy-ui/select/README.md +227 -0
- package/dist/fancy-ui/select/Select.svelte +383 -0
- package/dist/fancy-ui/select/Select.svelte.d.ts +41 -0
- package/dist/fancy-ui/select/Select.test.d.ts +1 -0
- package/dist/fancy-ui/select/Select.test.js +575 -0
- package/dist/fancy-ui/select/SelectHarness.test.svelte +63 -0
- package/dist/fancy-ui/select/SelectHarness.test.svelte.d.ts +19 -0
- package/dist/fancy-ui/select/SelectPanel.svelte +138 -0
- package/dist/fancy-ui/select/SelectPanel.svelte.d.ts +9 -0
- package/dist/fancy-ui/select/index.d.ts +3 -0
- package/dist/fancy-ui/select/index.js +2 -0
- package/dist/fancy-ui/select/types.d.ts +56 -0
- package/dist/fancy-ui/select/types.js +1 -0
- package/dist/fancy-ui/sheet/README.md +128 -0
- package/dist/fancy-ui/sheet/Sheet.svelte +240 -0
- package/dist/fancy-ui/sheet/Sheet.svelte.d.ts +30 -0
- package/dist/fancy-ui/sheet/Sheet.test.d.ts +1 -0
- package/dist/fancy-ui/sheet/Sheet.test.js +236 -0
- package/dist/fancy-ui/sheet/SheetHarness.test.svelte +31 -0
- package/dist/fancy-ui/sheet/SheetHarness.test.svelte.d.ts +7 -0
- package/dist/fancy-ui/sheet/index.d.ts +3 -0
- package/dist/fancy-ui/sheet/index.js +2 -0
- package/dist/fancy-ui/sidebar/README.md +219 -0
- package/dist/fancy-ui/sidebar/Sidebar.svelte +81 -0
- package/dist/fancy-ui/sidebar/Sidebar.svelte.d.ts +21 -0
- package/dist/fancy-ui/sidebar/Sidebar.test.d.ts +1 -0
- package/dist/fancy-ui/sidebar/Sidebar.test.js +307 -0
- package/dist/fancy-ui/sidebar/SidebarFooter.svelte +46 -0
- package/dist/fancy-ui/sidebar/SidebarFooter.svelte.d.ts +14 -0
- package/dist/fancy-ui/sidebar/SidebarGroup.svelte +45 -0
- package/dist/fancy-ui/sidebar/SidebarGroup.svelte.d.ts +12 -0
- package/dist/fancy-ui/sidebar/SidebarHarness.test.svelte +41 -0
- package/dist/fancy-ui/sidebar/SidebarHarness.test.svelte.d.ts +6 -0
- package/dist/fancy-ui/sidebar/SidebarItem.svelte +168 -0
- package/dist/fancy-ui/sidebar/SidebarItem.svelte.d.ts +32 -0
- package/dist/fancy-ui/sidebar/SidebarSeparator.svelte +17 -0
- package/dist/fancy-ui/sidebar/SidebarSeparator.svelte.d.ts +9 -0
- package/dist/fancy-ui/sidebar/index.d.ts +12 -0
- package/dist/fancy-ui/sidebar/index.js +7 -0
- package/dist/fancy-ui/sidebar/types.d.ts +23 -0
- package/dist/fancy-ui/sidebar/types.js +18 -0
- package/dist/fancy-ui/slider/README.md +126 -0
- package/dist/fancy-ui/slider/Slider.svelte +252 -0
- package/dist/fancy-ui/slider/Slider.svelte.d.ts +31 -0
- package/dist/fancy-ui/slider/Slider.test.d.ts +1 -0
- package/dist/fancy-ui/slider/Slider.test.js +175 -0
- package/dist/fancy-ui/slider/SliderFieldHarness.test.svelte +25 -0
- package/dist/fancy-ui/slider/SliderFieldHarness.test.svelte.d.ts +7 -0
- package/dist/fancy-ui/slider/SliderHarness.test.svelte +28 -0
- package/dist/fancy-ui/slider/SliderHarness.test.svelte.d.ts +7 -0
- package/dist/fancy-ui/slider/index.d.ts +3 -0
- package/dist/fancy-ui/slider/index.js +2 -0
- package/dist/fancy-ui/sound/README.md +288 -0
- package/dist/fancy-ui/sound/SoundToggle.svelte +185 -0
- package/dist/fancy-ui/sound/SoundToggle.svelte.d.ts +27 -0
- package/dist/fancy-ui/sound/SoundToggle.test.d.ts +1 -0
- package/dist/fancy-ui/sound/SoundToggle.test.js +251 -0
- package/dist/fancy-ui/sound/SoundToggleHarness.test.svelte +18 -0
- package/dist/fancy-ui/sound/SoundToggleHarness.test.svelte.d.ts +3 -0
- package/dist/fancy-ui/sound/engine.d.ts +67 -0
- package/dist/fancy-ui/sound/engine.js +440 -0
- package/dist/fancy-ui/sound/engine.test.d.ts +1 -0
- package/dist/fancy-ui/sound/engine.test.js +638 -0
- package/dist/fancy-ui/sound/index.d.ts +7 -0
- package/dist/fancy-ui/sound/index.js +7 -0
- package/dist/fancy-ui/sound/sound-feedback.d.ts +50 -0
- package/dist/fancy-ui/sound/sound-feedback.js +144 -0
- package/dist/fancy-ui/sound/sound-feedback.test.d.ts +1 -0
- package/dist/fancy-ui/sound/sound-feedback.test.js +272 -0
- package/dist/fancy-ui/sound/sound.barrel.test.d.ts +1 -0
- package/dist/fancy-ui/sound/sound.barrel.test.js +161 -0
- package/dist/fancy-ui/sound/sound.integration.test.d.ts +1 -0
- package/dist/fancy-ui/sound/sound.integration.test.js +541 -0
- package/dist/fancy-ui/sound/sound.ssr.test.d.ts +1 -0
- package/dist/fancy-ui/sound/sound.ssr.test.js +128 -0
- package/dist/fancy-ui/sound/sound.svelte.d.ts +54 -0
- package/dist/fancy-ui/sound/sound.svelte.js +349 -0
- package/dist/fancy-ui/sound/sound.test.d.ts +1 -0
- package/dist/fancy-ui/sound/sound.test.js +318 -0
- package/dist/fancy-ui/sound/themes.d.ts +19 -0
- package/dist/fancy-ui/sound/themes.js +367 -0
- package/dist/fancy-ui/sound/themes.test.d.ts +1 -0
- package/dist/fancy-ui/sound/themes.test.js +188 -0
- package/dist/fancy-ui/sound/types.d.ts +125 -0
- package/dist/fancy-ui/sound/types.js +59 -0
- package/dist/fancy-ui/sound/web-audio-mock.d.ts +144 -0
- package/dist/fancy-ui/sound/web-audio-mock.js +274 -0
- package/dist/fancy-ui/sources/README.md +189 -0
- package/dist/fancy-ui/sources/SourceCard.svelte +174 -0
- package/dist/fancy-ui/sources/SourceCard.svelte.d.ts +22 -0
- package/dist/fancy-ui/sources/Sources.svelte +75 -0
- package/dist/fancy-ui/sources/Sources.svelte.d.ts +22 -0
- package/dist/fancy-ui/sources/Sources.test.d.ts +1 -0
- package/dist/fancy-ui/sources/Sources.test.js +140 -0
- package/dist/fancy-ui/sources/SourcesHarness.test.svelte +36 -0
- package/dist/fancy-ui/sources/SourcesHarness.test.svelte.d.ts +12 -0
- package/dist/fancy-ui/sources/SourcesList.svelte +123 -0
- package/dist/fancy-ui/sources/SourcesList.svelte.d.ts +14 -0
- package/dist/fancy-ui/sources/SourcesParts.test.d.ts +1 -0
- package/dist/fancy-ui/sources/SourcesParts.test.js +245 -0
- package/dist/fancy-ui/sources/SourcesTrigger.svelte +126 -0
- package/dist/fancy-ui/sources/SourcesTrigger.svelte.d.ts +12 -0
- package/dist/fancy-ui/sources/index.d.ts +10 -0
- package/dist/fancy-ui/sources/index.js +6 -0
- package/dist/fancy-ui/sources/types.d.ts +26 -0
- package/dist/fancy-ui/sources/types.js +10 -0
- package/dist/fancy-ui/stepper/README.md +173 -0
- package/dist/fancy-ui/stepper/Step.svelte +247 -0
- package/dist/fancy-ui/stepper/Step.svelte.d.ts +21 -0
- package/dist/fancy-ui/stepper/Stepper.svelte +123 -0
- package/dist/fancy-ui/stepper/Stepper.svelte.d.ts +22 -0
- package/dist/fancy-ui/stepper/Stepper.test.d.ts +1 -0
- package/dist/fancy-ui/stepper/Stepper.test.js +197 -0
- package/dist/fancy-ui/stepper/StepperHarness.test.svelte +49 -0
- package/dist/fancy-ui/stepper/StepperHarness.test.svelte.d.ts +15 -0
- package/dist/fancy-ui/stepper/index.d.ts +6 -0
- package/dist/fancy-ui/stepper/index.js +4 -0
- package/dist/fancy-ui/stepper/types.d.ts +45 -0
- package/dist/fancy-ui/stepper/types.js +1 -0
- package/dist/fancy-ui/streaming-text/README.md +80 -0
- package/dist/fancy-ui/streaming-text/StreamingText.svelte +126 -0
- package/dist/fancy-ui/streaming-text/StreamingText.svelte.d.ts +27 -0
- package/dist/fancy-ui/streaming-text/StreamingText.test.d.ts +1 -0
- package/dist/fancy-ui/streaming-text/StreamingText.test.js +98 -0
- package/dist/fancy-ui/streaming-text/index.d.ts +3 -0
- package/dist/fancy-ui/streaming-text/index.js +2 -0
- package/dist/fancy-ui/subagent-list/README.md +153 -0
- package/dist/fancy-ui/subagent-list/SubagentList.svelte +438 -0
- package/dist/fancy-ui/subagent-list/SubagentList.svelte.d.ts +27 -0
- package/dist/fancy-ui/subagent-list/SubagentList.test.d.ts +1 -0
- package/dist/fancy-ui/subagent-list/SubagentList.test.js +303 -0
- package/dist/fancy-ui/subagent-list/index.d.ts +3 -0
- package/dist/fancy-ui/subagent-list/index.js +2 -0
- package/dist/fancy-ui/switch/README.md +152 -0
- package/dist/fancy-ui/switch/Switch.svelte +241 -0
- package/dist/fancy-ui/switch/Switch.svelte.d.ts +45 -0
- package/dist/fancy-ui/switch/Switch.test.d.ts +1 -0
- package/dist/fancy-ui/switch/Switch.test.js +280 -0
- package/dist/fancy-ui/switch/SwitchFieldHarness.test.svelte +25 -0
- package/dist/fancy-ui/switch/SwitchFieldHarness.test.svelte.d.ts +7 -0
- package/dist/fancy-ui/switch/SwitchHarness.test.svelte +28 -0
- package/dist/fancy-ui/switch/SwitchHarness.test.svelte.d.ts +7 -0
- package/dist/fancy-ui/switch/index.d.ts +3 -0
- package/dist/fancy-ui/switch/index.js +2 -0
- package/dist/fancy-ui/tabs/README.md +271 -0
- package/dist/fancy-ui/tabs/Tabs.svelte +218 -0
- package/dist/fancy-ui/tabs/Tabs.svelte.d.ts +26 -0
- package/dist/fancy-ui/tabs/Tabs.test.d.ts +1 -0
- package/dist/fancy-ui/tabs/Tabs.test.js +392 -0
- package/dist/fancy-ui/tabs/TabsContent.svelte +58 -0
- package/dist/fancy-ui/tabs/TabsContent.svelte.d.ts +22 -0
- package/dist/fancy-ui/tabs/TabsHarness.test.svelte +53 -0
- package/dist/fancy-ui/tabs/TabsHarness.test.svelte.d.ts +17 -0
- package/dist/fancy-ui/tabs/TabsList.svelte +73 -0
- package/dist/fancy-ui/tabs/TabsList.svelte.d.ts +12 -0
- package/dist/fancy-ui/tabs/TabsTrigger.svelte +246 -0
- package/dist/fancy-ui/tabs/TabsTrigger.svelte.d.ts +16 -0
- package/dist/fancy-ui/tabs/index.d.ts +10 -0
- package/dist/fancy-ui/tabs/index.js +6 -0
- package/dist/fancy-ui/tabs/types.d.ts +66 -0
- package/dist/fancy-ui/tabs/types.js +16 -0
- package/dist/fancy-ui/terminal-block/README.md +109 -0
- package/dist/fancy-ui/terminal-block/TerminalBlock.svelte +263 -0
- package/dist/fancy-ui/terminal-block/TerminalBlock.svelte.d.ts +31 -0
- package/dist/fancy-ui/terminal-block/TerminalBlock.test.d.ts +1 -0
- package/dist/fancy-ui/terminal-block/TerminalBlock.test.js +197 -0
- package/dist/fancy-ui/terminal-block/ansi.d.ts +30 -0
- package/dist/fancy-ui/terminal-block/ansi.js +163 -0
- package/dist/fancy-ui/terminal-block/ansi.test.d.ts +1 -0
- package/dist/fancy-ui/terminal-block/ansi.test.js +123 -0
- package/dist/fancy-ui/terminal-block/index.d.ts +3 -0
- package/dist/fancy-ui/terminal-block/index.js +2 -0
- package/dist/fancy-ui/textarea/README.md +134 -0
- package/dist/fancy-ui/textarea/Textarea.svelte +225 -0
- package/dist/fancy-ui/textarea/Textarea.svelte.d.ts +40 -0
- package/dist/fancy-ui/textarea/Textarea.test.d.ts +1 -0
- package/dist/fancy-ui/textarea/Textarea.test.js +179 -0
- package/dist/fancy-ui/textarea/TextareaFieldHarness.test.svelte +49 -0
- package/dist/fancy-ui/textarea/TextareaFieldHarness.test.svelte.d.ts +7 -0
- package/dist/fancy-ui/textarea/TextareaHarness.test.svelte +28 -0
- package/dist/fancy-ui/textarea/TextareaHarness.test.svelte.d.ts +7 -0
- package/dist/fancy-ui/textarea/index.d.ts +3 -0
- package/dist/fancy-ui/textarea/index.js +2 -0
- package/dist/fancy-ui/thinking-indicator/README.md +64 -0
- package/dist/fancy-ui/thinking-indicator/ThinkingIndicator.svelte +189 -0
- package/dist/fancy-ui/thinking-indicator/ThinkingIndicator.svelte.d.ts +27 -0
- package/dist/fancy-ui/thinking-indicator/ThinkingIndicator.test.d.ts +1 -0
- package/dist/fancy-ui/thinking-indicator/ThinkingIndicator.test.js +148 -0
- package/dist/fancy-ui/thinking-indicator/index.d.ts +3 -0
- package/dist/fancy-ui/thinking-indicator/index.js +2 -0
- package/dist/fancy-ui/thread-list/README.md +141 -0
- package/dist/fancy-ui/thread-list/ThreadList.svelte +340 -0
- package/dist/fancy-ui/thread-list/ThreadList.svelte.d.ts +28 -0
- package/dist/fancy-ui/thread-list/ThreadList.test.d.ts +1 -0
- package/dist/fancy-ui/thread-list/ThreadList.test.js +267 -0
- package/dist/fancy-ui/thread-list/ThreadListHarness.test.svelte +61 -0
- package/dist/fancy-ui/thread-list/ThreadListHarness.test.svelte.d.ts +15 -0
- package/dist/fancy-ui/thread-list/index.d.ts +3 -0
- package/dist/fancy-ui/thread-list/index.js +2 -0
- package/dist/fancy-ui/time-picker/README.md +155 -0
- package/dist/fancy-ui/time-picker/TimePicker.svelte +297 -0
- package/dist/fancy-ui/time-picker/TimePicker.svelte.d.ts +37 -0
- package/dist/fancy-ui/time-picker/TimePicker.test.d.ts +1 -0
- package/dist/fancy-ui/time-picker/TimePicker.test.js +365 -0
- package/dist/fancy-ui/time-picker/TimePickerFieldHarness.test.svelte +35 -0
- package/dist/fancy-ui/time-picker/TimePickerFieldHarness.test.svelte.d.ts +11 -0
- package/dist/fancy-ui/time-picker/TimePickerHarness.test.svelte +28 -0
- package/dist/fancy-ui/time-picker/TimePickerHarness.test.svelte.d.ts +7 -0
- package/dist/fancy-ui/time-picker/TimePickerPanel.svelte +109 -0
- package/dist/fancy-ui/time-picker/TimePickerPanel.svelte.d.ts +9 -0
- package/dist/fancy-ui/time-picker/index.d.ts +3 -0
- package/dist/fancy-ui/time-picker/index.js +2 -0
- package/dist/fancy-ui/time-picker/time-utils.d.ts +33 -0
- package/dist/fancy-ui/time-picker/time-utils.js +96 -0
- package/dist/fancy-ui/time-picker/time-utils.test.d.ts +1 -0
- package/dist/fancy-ui/time-picker/time-utils.test.js +123 -0
- package/dist/fancy-ui/time-picker/types.d.ts +32 -0
- package/dist/fancy-ui/time-picker/types.js +1 -0
- package/dist/fancy-ui/toast/README.md +180 -0
- package/dist/fancy-ui/toast/Toast.svelte +203 -0
- package/dist/fancy-ui/toast/Toast.svelte.d.ts +12 -0
- package/dist/fancy-ui/toast/Toast.test.d.ts +1 -0
- package/dist/fancy-ui/toast/Toast.test.js +274 -0
- package/dist/fancy-ui/toast/Toaster.svelte +111 -0
- package/dist/fancy-ui/toast/Toaster.svelte.d.ts +12 -0
- package/dist/fancy-ui/toast/index.d.ts +4 -0
- package/dist/fancy-ui/toast/index.js +4 -0
- package/dist/fancy-ui/toast/store.svelte.d.ts +95 -0
- package/dist/fancy-ui/toast/store.svelte.js +160 -0
- package/dist/fancy-ui/toggle/README.md +89 -0
- package/dist/fancy-ui/toggle/Toggle.svelte +120 -0
- package/dist/fancy-ui/toggle/Toggle.svelte.d.ts +26 -0
- package/dist/fancy-ui/toggle/Toggle.test.d.ts +1 -0
- package/dist/fancy-ui/toggle/Toggle.test.js +97 -0
- package/dist/fancy-ui/toggle/ToggleHarness.test.svelte +30 -0
- package/dist/fancy-ui/toggle/ToggleHarness.test.svelte.d.ts +7 -0
- package/dist/fancy-ui/toggle/index.d.ts +3 -0
- package/dist/fancy-ui/toggle/index.js +2 -0
- package/dist/fancy-ui/toggle-group/README.md +206 -0
- package/dist/fancy-ui/toggle-group/ToggleGroup.svelte +259 -0
- package/dist/fancy-ui/toggle-group/ToggleGroup.svelte.d.ts +29 -0
- package/dist/fancy-ui/toggle-group/ToggleGroup.test.d.ts +1 -0
- package/dist/fancy-ui/toggle-group/ToggleGroup.test.js +382 -0
- package/dist/fancy-ui/toggle-group/ToggleGroupHarness.test.svelte +50 -0
- package/dist/fancy-ui/toggle-group/ToggleGroupHarness.test.svelte.d.ts +18 -0
- package/dist/fancy-ui/toggle-group/ToggleGroupItem.svelte +173 -0
- package/dist/fancy-ui/toggle-group/ToggleGroupItem.svelte.d.ts +18 -0
- package/dist/fancy-ui/toggle-group/index.d.ts +6 -0
- package/dist/fancy-ui/toggle-group/index.js +4 -0
- package/dist/fancy-ui/toggle-group/types.d.ts +50 -0
- package/dist/fancy-ui/toggle-group/types.js +17 -0
- package/dist/fancy-ui/tool-call/README.md +137 -0
- package/dist/fancy-ui/tool-call/ToolCall.svelte +430 -0
- package/dist/fancy-ui/tool-call/ToolCall.svelte.d.ts +30 -0
- package/dist/fancy-ui/tool-call/ToolCall.test.d.ts +1 -0
- package/dist/fancy-ui/tool-call/ToolCall.test.js +241 -0
- package/dist/fancy-ui/tool-call/index.d.ts +3 -0
- package/dist/fancy-ui/tool-call/index.js +2 -0
- package/dist/fancy-ui/tool-timeline/README.md +106 -0
- package/dist/fancy-ui/tool-timeline/ToolTimeline.svelte +263 -0
- package/dist/fancy-ui/tool-timeline/ToolTimeline.svelte.d.ts +24 -0
- package/dist/fancy-ui/tool-timeline/ToolTimeline.test.d.ts +1 -0
- package/dist/fancy-ui/tool-timeline/ToolTimeline.test.js +160 -0
- package/dist/fancy-ui/tool-timeline/index.d.ts +3 -0
- package/dist/fancy-ui/tool-timeline/index.js +2 -0
- package/dist/fancy-ui/tooltip/README.md +133 -0
- package/dist/fancy-ui/tooltip/Tooltip.svelte +307 -0
- package/dist/fancy-ui/tooltip/Tooltip.svelte.d.ts +32 -0
- package/dist/fancy-ui/tooltip/Tooltip.test.d.ts +1 -0
- package/dist/fancy-ui/tooltip/Tooltip.test.js +299 -0
- package/dist/fancy-ui/tooltip/index.d.ts +3 -0
- package/dist/fancy-ui/tooltip/index.js +2 -0
- package/dist/fancy-ui/typing-indicator/README.md +49 -0
- package/dist/fancy-ui/typing-indicator/TypingIndicator.svelte +97 -0
- package/dist/fancy-ui/typing-indicator/TypingIndicator.svelte.d.ts +17 -0
- package/dist/fancy-ui/typing-indicator/TypingIndicator.test.d.ts +1 -0
- package/dist/fancy-ui/typing-indicator/TypingIndicator.test.js +60 -0
- package/dist/fancy-ui/typing-indicator/index.d.ts +3 -0
- package/dist/fancy-ui/typing-indicator/index.js +2 -0
- package/dist/fancy-ui/voice-input/README.md +149 -0
- package/dist/fancy-ui/voice-input/VoiceInput.svelte +407 -0
- package/dist/fancy-ui/voice-input/VoiceInput.svelte.d.ts +43 -0
- package/dist/fancy-ui/voice-input/VoiceInput.test.d.ts +1 -0
- package/dist/fancy-ui/voice-input/VoiceInput.test.js +264 -0
- package/dist/fancy-ui/voice-input/VoiceInputHarness.test.svelte +34 -0
- package/dist/fancy-ui/voice-input/VoiceInputHarness.test.svelte.d.ts +11 -0
- package/dist/fancy-ui/voice-input/index.d.ts +3 -0
- package/dist/fancy-ui/voice-input/index.js +2 -0
- package/dist/fancy-ui/web-search/README.md +105 -0
- package/dist/fancy-ui/web-search/WebSearch.svelte +335 -0
- package/dist/fancy-ui/web-search/WebSearch.svelte.d.ts +28 -0
- package/dist/fancy-ui/web-search/WebSearch.test.d.ts +1 -0
- package/dist/fancy-ui/web-search/WebSearch.test.js +265 -0
- package/dist/fancy-ui/web-search/index.d.ts +3 -0
- package/dist/fancy-ui/web-search/index.js +2 -0
- package/dist/types.d.ts +3 -1
- package/package.json +16 -3
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sound design — shared types and constants.
|
|
3
|
+
*
|
|
4
|
+
* Themes are DATA (a map from semantic cue to a synthesis recipe) and the
|
|
5
|
+
* engine is the interpreter. Components only ever name a cue; they never
|
|
6
|
+
* know how it sounds, which is what lets a future sound theme follow a visual
|
|
7
|
+
* skin without coupling audio code to it.
|
|
8
|
+
*
|
|
9
|
+
* This module has no runtime side effects and touches no browser global.
|
|
10
|
+
*/
|
|
11
|
+
/** Semantic UI cues. Every theme defines a recipe for each one. */
|
|
12
|
+
export const SOUND_CUES = [
|
|
13
|
+
"hover",
|
|
14
|
+
"press",
|
|
15
|
+
"toggle-on",
|
|
16
|
+
"toggle-off",
|
|
17
|
+
"open",
|
|
18
|
+
"close",
|
|
19
|
+
"select",
|
|
20
|
+
"success",
|
|
21
|
+
"error",
|
|
22
|
+
"tick",
|
|
23
|
+
"copy",
|
|
24
|
+
];
|
|
25
|
+
export const SOUND_THEME_NAMES = ["fancy"];
|
|
26
|
+
export const DEFAULT_SOUND_PREFERENCES = Object.freeze({
|
|
27
|
+
enabled: false,
|
|
28
|
+
volume: 0.5,
|
|
29
|
+
theme: "fancy",
|
|
30
|
+
});
|
|
31
|
+
export const SOUND_STORAGE_KEY = "fancy-ui-sound";
|
|
32
|
+
/** Default same-cue minimum interval, ms. Engine-enforced, independent of the action's own guards. */
|
|
33
|
+
export const SOUND_MIN_INTERVAL_MS = Object.freeze({
|
|
34
|
+
hover: 60,
|
|
35
|
+
tick: 40,
|
|
36
|
+
select: 40,
|
|
37
|
+
press: 15,
|
|
38
|
+
"toggle-on": 15,
|
|
39
|
+
"toggle-off": 15,
|
|
40
|
+
open: 15,
|
|
41
|
+
close: 15,
|
|
42
|
+
success: 15,
|
|
43
|
+
error: 15,
|
|
44
|
+
copy: 15,
|
|
45
|
+
});
|
|
46
|
+
/** Hard safety limits. Not configurable. */
|
|
47
|
+
export const SOUND_LIMITS = Object.freeze({
|
|
48
|
+
/** Master gain = prefs.volume * MASTER_CEILING. */
|
|
49
|
+
MASTER_CEILING: 0.8,
|
|
50
|
+
/** Per-layer peak gain clamp. */
|
|
51
|
+
LAYER_PEAK_CEILING: 0.9,
|
|
52
|
+
/** Concurrent voices; extra `play()` calls are dropped, never steal. */
|
|
53
|
+
MAX_VOICES: 8,
|
|
54
|
+
/** Minimum attack / release enforced for click-free edges. */
|
|
55
|
+
MIN_ATTACK_MS: 2,
|
|
56
|
+
MIN_RELEASE_MS: 8,
|
|
57
|
+
/** Longest any single layer may run (guards a malformed theme). */
|
|
58
|
+
MAX_LAYER_MS: 400,
|
|
59
|
+
});
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure, dependency-free fakes for the Web Audio surface the sound engine uses.
|
|
3
|
+
*
|
|
4
|
+
* Imports nothing — no vitest — so it is safe to sit beside the engine it
|
|
5
|
+
* fakes: it is not exported from the barrel, it is never executed at runtime,
|
|
6
|
+
* and keeping it inside the folder means the colocated tests never reach
|
|
7
|
+
* outside the package root for it.
|
|
8
|
+
*/
|
|
9
|
+
export type AutomationMethod = "setValueAtTime" | "linearRampToValueAtTime" | "exponentialRampToValueAtTime" | "setTargetAtTime" | "cancelScheduledValues";
|
|
10
|
+
export interface AutomationEvent {
|
|
11
|
+
method: AutomationMethod;
|
|
12
|
+
value: number;
|
|
13
|
+
time: number;
|
|
14
|
+
timeConstant?: number;
|
|
15
|
+
}
|
|
16
|
+
export declare class FakeAudioParam {
|
|
17
|
+
value: number;
|
|
18
|
+
readonly events: AutomationEvent[];
|
|
19
|
+
constructor(value?: number);
|
|
20
|
+
setValueAtTime(value: number, time: number): this;
|
|
21
|
+
linearRampToValueAtTime(value: number, time: number): this;
|
|
22
|
+
exponentialRampToValueAtTime(value: number, time: number): this;
|
|
23
|
+
setTargetAtTime(value: number, time: number, timeConstant: number): this;
|
|
24
|
+
cancelScheduledValues(time: number): this;
|
|
25
|
+
}
|
|
26
|
+
export declare class FakeAudioNode {
|
|
27
|
+
readonly context: FakeAudioContext;
|
|
28
|
+
readonly outputs: FakeAudioNode[];
|
|
29
|
+
disconnected: boolean;
|
|
30
|
+
constructor(context: FakeAudioContext);
|
|
31
|
+
connect(node: FakeAudioNode): FakeAudioNode;
|
|
32
|
+
disconnect(): void;
|
|
33
|
+
}
|
|
34
|
+
export declare class FakeGainNode extends FakeAudioNode {
|
|
35
|
+
readonly gain: FakeAudioParam;
|
|
36
|
+
}
|
|
37
|
+
export declare class FakeBiquadFilterNode extends FakeAudioNode {
|
|
38
|
+
type: BiquadFilterType;
|
|
39
|
+
readonly frequency: FakeAudioParam;
|
|
40
|
+
readonly Q: FakeAudioParam;
|
|
41
|
+
readonly detune: FakeAudioParam;
|
|
42
|
+
readonly gain: FakeAudioParam;
|
|
43
|
+
}
|
|
44
|
+
export declare class FakeDynamicsCompressorNode extends FakeAudioNode {
|
|
45
|
+
readonly threshold: FakeAudioParam;
|
|
46
|
+
readonly knee: FakeAudioParam;
|
|
47
|
+
readonly ratio: FakeAudioParam;
|
|
48
|
+
readonly attack: FakeAudioParam;
|
|
49
|
+
readonly release: FakeAudioParam;
|
|
50
|
+
}
|
|
51
|
+
export declare class FakeAudioBuffer {
|
|
52
|
+
readonly numberOfChannels: number;
|
|
53
|
+
readonly length: number;
|
|
54
|
+
readonly sampleRate: number;
|
|
55
|
+
private readonly channels;
|
|
56
|
+
constructor(numberOfChannels: number, length: number, sampleRate: number);
|
|
57
|
+
get duration(): number;
|
|
58
|
+
getChannelData(channel: number): Float32Array;
|
|
59
|
+
}
|
|
60
|
+
export declare class FakeScheduledSource extends FakeAudioNode {
|
|
61
|
+
startTime: number | null;
|
|
62
|
+
/** Second argument of `start()` — the buffer offset for AudioBufferSourceNode. */
|
|
63
|
+
startOffset: number | null;
|
|
64
|
+
stopTime: number | null;
|
|
65
|
+
onended: (() => void) | null;
|
|
66
|
+
ended: boolean;
|
|
67
|
+
start(when?: number, offset?: number): void;
|
|
68
|
+
stop(when?: number): void;
|
|
69
|
+
/** Test helper: simulate the source reaching its stop time. */
|
|
70
|
+
fireEnded(): void;
|
|
71
|
+
}
|
|
72
|
+
export declare class FakeOscillatorNode extends FakeScheduledSource {
|
|
73
|
+
type: OscillatorType;
|
|
74
|
+
readonly frequency: FakeAudioParam;
|
|
75
|
+
readonly detune: FakeAudioParam;
|
|
76
|
+
}
|
|
77
|
+
export declare class FakeBufferSourceNode extends FakeScheduledSource {
|
|
78
|
+
buffer: FakeAudioBuffer | null;
|
|
79
|
+
loop: boolean;
|
|
80
|
+
readonly playbackRate: FakeAudioParam;
|
|
81
|
+
}
|
|
82
|
+
export interface FakeAudioContextOptions {
|
|
83
|
+
/** Default "running". Real browsers often start "suspended" before a gesture. */
|
|
84
|
+
initialState?: AudioContextState;
|
|
85
|
+
/** What resume() does: "resolve" (→ running), "reject" (throws), "pending" (never settles). Default "resolve". */
|
|
86
|
+
resume?: "resolve" | "reject" | "pending";
|
|
87
|
+
/** Throw from the constructor (simulates a browser refusing a context). */
|
|
88
|
+
throwOnConstruct?: boolean;
|
|
89
|
+
sampleRate?: number;
|
|
90
|
+
/** Omit createDynamicsCompressor to simulate an engine that lacks it. */
|
|
91
|
+
withoutCompressor?: boolean;
|
|
92
|
+
}
|
|
93
|
+
export declare class FakeAudioContext {
|
|
94
|
+
state: AudioContextState;
|
|
95
|
+
currentTime: number;
|
|
96
|
+
readonly sampleRate: number;
|
|
97
|
+
readonly destination: FakeAudioNode;
|
|
98
|
+
readonly allNodes: FakeAudioNode[];
|
|
99
|
+
readonly created: {
|
|
100
|
+
gains: FakeGainNode[];
|
|
101
|
+
oscillators: FakeOscillatorNode[];
|
|
102
|
+
sources: FakeBufferSourceNode[];
|
|
103
|
+
filters: FakeBiquadFilterNode[];
|
|
104
|
+
compressors: FakeDynamicsCompressorNode[];
|
|
105
|
+
buffers: FakeAudioBuffer[];
|
|
106
|
+
};
|
|
107
|
+
resumeCalls: number;
|
|
108
|
+
suspendCalls: number;
|
|
109
|
+
closeCalls: number;
|
|
110
|
+
private readonly options;
|
|
111
|
+
private readonly listeners;
|
|
112
|
+
createDynamicsCompressor?: () => FakeDynamicsCompressorNode;
|
|
113
|
+
constructor(options?: FakeAudioContextOptions);
|
|
114
|
+
createGain(): FakeGainNode;
|
|
115
|
+
createOscillator(): FakeOscillatorNode;
|
|
116
|
+
createBufferSource(): FakeBufferSourceNode;
|
|
117
|
+
createBiquadFilter(): FakeBiquadFilterNode;
|
|
118
|
+
createBuffer(channels: number, length: number, sampleRate: number): FakeAudioBuffer;
|
|
119
|
+
resume(): Promise<void>;
|
|
120
|
+
suspend(): Promise<void>;
|
|
121
|
+
close(): Promise<void>;
|
|
122
|
+
addEventListener(_type: "statechange", cb: () => void): void;
|
|
123
|
+
removeEventListener(_type: "statechange", cb: () => void): void;
|
|
124
|
+
get onstatechange(): null;
|
|
125
|
+
/** Test helper: sets `state` and dispatches statechange. */
|
|
126
|
+
setState(next: AudioContextState): void;
|
|
127
|
+
/** Test helper: advances currentTime and fires `onended` on every source whose stopTime has passed. */
|
|
128
|
+
advance(seconds: number): void;
|
|
129
|
+
/** Every created node not yet disconnected (leak assertions). Excludes `destination`. */
|
|
130
|
+
liveNodes(): FakeAudioNode[];
|
|
131
|
+
}
|
|
132
|
+
export interface InstallOptions extends FakeAudioContextOptions {
|
|
133
|
+
/** Install only `webkitAudioContext` to exercise the prefixed fallback. */
|
|
134
|
+
webkitOnly?: boolean;
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Installs a FakeAudioContext constructor as `AudioContext` (and/or
|
|
138
|
+
* `webkitAudioContext`) on `target`. Returns every instance constructed and a
|
|
139
|
+
* `restore()` that puts the previous globals back.
|
|
140
|
+
*/
|
|
141
|
+
export declare function installFakeAudioContext(target?: Record<string, unknown>, options?: InstallOptions): {
|
|
142
|
+
instances: FakeAudioContext[];
|
|
143
|
+
restore(): void;
|
|
144
|
+
};
|
|
@@ -0,0 +1,274 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure, dependency-free fakes for the Web Audio surface the sound engine uses.
|
|
3
|
+
*
|
|
4
|
+
* Imports nothing — no vitest — so it is safe to sit beside the engine it
|
|
5
|
+
* fakes: it is not exported from the barrel, it is never executed at runtime,
|
|
6
|
+
* and keeping it inside the folder means the colocated tests never reach
|
|
7
|
+
* outside the package root for it.
|
|
8
|
+
*/
|
|
9
|
+
export class FakeAudioParam {
|
|
10
|
+
value;
|
|
11
|
+
events = [];
|
|
12
|
+
constructor(value = 0) {
|
|
13
|
+
this.value = value;
|
|
14
|
+
}
|
|
15
|
+
setValueAtTime(value, time) {
|
|
16
|
+
this.events.push({ method: "setValueAtTime", value, time });
|
|
17
|
+
this.value = value;
|
|
18
|
+
return this;
|
|
19
|
+
}
|
|
20
|
+
linearRampToValueAtTime(value, time) {
|
|
21
|
+
this.events.push({ method: "linearRampToValueAtTime", value, time });
|
|
22
|
+
return this;
|
|
23
|
+
}
|
|
24
|
+
exponentialRampToValueAtTime(value, time) {
|
|
25
|
+
this.events.push({ method: "exponentialRampToValueAtTime", value, time });
|
|
26
|
+
return this;
|
|
27
|
+
}
|
|
28
|
+
setTargetAtTime(value, time, timeConstant) {
|
|
29
|
+
this.events.push({ method: "setTargetAtTime", value, time, timeConstant });
|
|
30
|
+
return this;
|
|
31
|
+
}
|
|
32
|
+
cancelScheduledValues(time) {
|
|
33
|
+
this.events.push({ method: "cancelScheduledValues", value: this.value, time });
|
|
34
|
+
return this;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
export class FakeAudioNode {
|
|
38
|
+
context;
|
|
39
|
+
outputs = [];
|
|
40
|
+
disconnected = false;
|
|
41
|
+
constructor(context) {
|
|
42
|
+
this.context = context;
|
|
43
|
+
context.allNodes.push(this);
|
|
44
|
+
}
|
|
45
|
+
connect(node) {
|
|
46
|
+
this.outputs.push(node);
|
|
47
|
+
return node;
|
|
48
|
+
}
|
|
49
|
+
disconnect() {
|
|
50
|
+
this.outputs.length = 0;
|
|
51
|
+
this.disconnected = true;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
export class FakeGainNode extends FakeAudioNode {
|
|
55
|
+
gain = new FakeAudioParam(1);
|
|
56
|
+
}
|
|
57
|
+
export class FakeBiquadFilterNode extends FakeAudioNode {
|
|
58
|
+
type = "lowpass";
|
|
59
|
+
frequency = new FakeAudioParam(350);
|
|
60
|
+
Q = new FakeAudioParam(1);
|
|
61
|
+
detune = new FakeAudioParam(0);
|
|
62
|
+
gain = new FakeAudioParam(0);
|
|
63
|
+
}
|
|
64
|
+
export class FakeDynamicsCompressorNode extends FakeAudioNode {
|
|
65
|
+
threshold = new FakeAudioParam(-24);
|
|
66
|
+
knee = new FakeAudioParam(30);
|
|
67
|
+
ratio = new FakeAudioParam(12);
|
|
68
|
+
attack = new FakeAudioParam(0.003);
|
|
69
|
+
release = new FakeAudioParam(0.25);
|
|
70
|
+
}
|
|
71
|
+
export class FakeAudioBuffer {
|
|
72
|
+
numberOfChannels;
|
|
73
|
+
length;
|
|
74
|
+
sampleRate;
|
|
75
|
+
channels;
|
|
76
|
+
constructor(numberOfChannels, length, sampleRate) {
|
|
77
|
+
this.numberOfChannels = numberOfChannels;
|
|
78
|
+
this.length = length;
|
|
79
|
+
this.sampleRate = sampleRate;
|
|
80
|
+
this.channels = Array.from({ length: numberOfChannels }, () => new Float32Array(length));
|
|
81
|
+
}
|
|
82
|
+
get duration() {
|
|
83
|
+
return this.length / this.sampleRate;
|
|
84
|
+
}
|
|
85
|
+
getChannelData(channel) {
|
|
86
|
+
return this.channels[channel];
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
export class FakeScheduledSource extends FakeAudioNode {
|
|
90
|
+
startTime = null;
|
|
91
|
+
/** Second argument of `start()` — the buffer offset for AudioBufferSourceNode. */
|
|
92
|
+
startOffset = null;
|
|
93
|
+
stopTime = null;
|
|
94
|
+
onended = null;
|
|
95
|
+
ended = false;
|
|
96
|
+
start(when = 0, offset) {
|
|
97
|
+
this.startTime = when;
|
|
98
|
+
this.startOffset = offset ?? null;
|
|
99
|
+
}
|
|
100
|
+
stop(when = 0) {
|
|
101
|
+
this.stopTime = when;
|
|
102
|
+
}
|
|
103
|
+
/** Test helper: simulate the source reaching its stop time. */
|
|
104
|
+
fireEnded() {
|
|
105
|
+
if (this.ended)
|
|
106
|
+
return;
|
|
107
|
+
this.ended = true;
|
|
108
|
+
this.onended?.();
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
export class FakeOscillatorNode extends FakeScheduledSource {
|
|
112
|
+
type = "sine";
|
|
113
|
+
frequency = new FakeAudioParam(440);
|
|
114
|
+
detune = new FakeAudioParam(0);
|
|
115
|
+
}
|
|
116
|
+
export class FakeBufferSourceNode extends FakeScheduledSource {
|
|
117
|
+
buffer = null;
|
|
118
|
+
loop = false;
|
|
119
|
+
playbackRate = new FakeAudioParam(1);
|
|
120
|
+
}
|
|
121
|
+
export class FakeAudioContext {
|
|
122
|
+
state;
|
|
123
|
+
currentTime = 0;
|
|
124
|
+
sampleRate;
|
|
125
|
+
destination;
|
|
126
|
+
allNodes = [];
|
|
127
|
+
created = {
|
|
128
|
+
gains: [],
|
|
129
|
+
oscillators: [],
|
|
130
|
+
sources: [],
|
|
131
|
+
filters: [],
|
|
132
|
+
compressors: [],
|
|
133
|
+
buffers: [],
|
|
134
|
+
};
|
|
135
|
+
resumeCalls = 0;
|
|
136
|
+
suspendCalls = 0;
|
|
137
|
+
closeCalls = 0;
|
|
138
|
+
options;
|
|
139
|
+
listeners = new Set();
|
|
140
|
+
// Assigned via a property so `delete` can simulate its absence.
|
|
141
|
+
createDynamicsCompressor;
|
|
142
|
+
constructor(options = {}) {
|
|
143
|
+
if (options.throwOnConstruct)
|
|
144
|
+
throw new Error("AudioContext refused");
|
|
145
|
+
this.options = options;
|
|
146
|
+
this.state = options.initialState ?? "running";
|
|
147
|
+
this.sampleRate = options.sampleRate ?? 48000;
|
|
148
|
+
this.destination = new FakeAudioNode(this);
|
|
149
|
+
// destination is not a "created" node
|
|
150
|
+
this.allNodes.length = 0;
|
|
151
|
+
if (!options.withoutCompressor) {
|
|
152
|
+
this.createDynamicsCompressor = () => {
|
|
153
|
+
const n = new FakeDynamicsCompressorNode(this);
|
|
154
|
+
this.created.compressors.push(n);
|
|
155
|
+
return n;
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
createGain() {
|
|
160
|
+
const n = new FakeGainNode(this);
|
|
161
|
+
this.created.gains.push(n);
|
|
162
|
+
return n;
|
|
163
|
+
}
|
|
164
|
+
createOscillator() {
|
|
165
|
+
const n = new FakeOscillatorNode(this);
|
|
166
|
+
this.created.oscillators.push(n);
|
|
167
|
+
return n;
|
|
168
|
+
}
|
|
169
|
+
createBufferSource() {
|
|
170
|
+
const n = new FakeBufferSourceNode(this);
|
|
171
|
+
this.created.sources.push(n);
|
|
172
|
+
return n;
|
|
173
|
+
}
|
|
174
|
+
createBiquadFilter() {
|
|
175
|
+
const n = new FakeBiquadFilterNode(this);
|
|
176
|
+
this.created.filters.push(n);
|
|
177
|
+
return n;
|
|
178
|
+
}
|
|
179
|
+
createBuffer(channels, length, sampleRate) {
|
|
180
|
+
const b = new FakeAudioBuffer(channels, length, sampleRate);
|
|
181
|
+
this.created.buffers.push(b);
|
|
182
|
+
return b;
|
|
183
|
+
}
|
|
184
|
+
resume() {
|
|
185
|
+
this.resumeCalls++;
|
|
186
|
+
const mode = this.options.resume ?? "resolve";
|
|
187
|
+
if (mode === "pending")
|
|
188
|
+
return new Promise(() => { });
|
|
189
|
+
if (mode === "reject")
|
|
190
|
+
return Promise.reject(new Error("resume rejected"));
|
|
191
|
+
if (this.state !== "closed")
|
|
192
|
+
this.setState("running");
|
|
193
|
+
return Promise.resolve();
|
|
194
|
+
}
|
|
195
|
+
suspend() {
|
|
196
|
+
this.suspendCalls++;
|
|
197
|
+
if (this.state !== "closed")
|
|
198
|
+
this.setState("suspended");
|
|
199
|
+
return Promise.resolve();
|
|
200
|
+
}
|
|
201
|
+
close() {
|
|
202
|
+
this.closeCalls++;
|
|
203
|
+
this.setState("closed");
|
|
204
|
+
return Promise.resolve();
|
|
205
|
+
}
|
|
206
|
+
addEventListener(_type, cb) {
|
|
207
|
+
this.listeners.add(cb);
|
|
208
|
+
}
|
|
209
|
+
removeEventListener(_type, cb) {
|
|
210
|
+
this.listeners.delete(cb);
|
|
211
|
+
}
|
|
212
|
+
get onstatechange() {
|
|
213
|
+
return null;
|
|
214
|
+
}
|
|
215
|
+
/** Test helper: sets `state` and dispatches statechange. */
|
|
216
|
+
setState(next) {
|
|
217
|
+
this.state = next;
|
|
218
|
+
for (const cb of [...this.listeners])
|
|
219
|
+
cb();
|
|
220
|
+
}
|
|
221
|
+
/** Test helper: advances currentTime and fires `onended` on every source whose stopTime has passed. */
|
|
222
|
+
advance(seconds) {
|
|
223
|
+
this.currentTime += seconds;
|
|
224
|
+
const sources = [...this.created.oscillators, ...this.created.sources];
|
|
225
|
+
for (const s of sources) {
|
|
226
|
+
if (!s.ended && s.stopTime !== null && s.stopTime <= this.currentTime)
|
|
227
|
+
s.fireEnded();
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
/** Every created node not yet disconnected (leak assertions). Excludes `destination`. */
|
|
231
|
+
liveNodes() {
|
|
232
|
+
return this.allNodes.filter((n) => !n.disconnected);
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* Installs a FakeAudioContext constructor as `AudioContext` (and/or
|
|
237
|
+
* `webkitAudioContext`) on `target`. Returns every instance constructed and a
|
|
238
|
+
* `restore()` that puts the previous globals back.
|
|
239
|
+
*/
|
|
240
|
+
export function installFakeAudioContext(target = globalThis, options = {}) {
|
|
241
|
+
const instances = [];
|
|
242
|
+
const { webkitOnly, ...ctxOptions } = options;
|
|
243
|
+
class InstalledAudioContext extends FakeAudioContext {
|
|
244
|
+
constructor() {
|
|
245
|
+
super(ctxOptions);
|
|
246
|
+
instances.push(this);
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
const prevStd = Object.getOwnPropertyDescriptor(target, "AudioContext");
|
|
250
|
+
const prevWebkit = Object.getOwnPropertyDescriptor(target, "webkitAudioContext");
|
|
251
|
+
const define = (key, value) => Object.defineProperty(target, key, { value, configurable: true, writable: true });
|
|
252
|
+
if (webkitOnly) {
|
|
253
|
+
define("AudioContext", undefined);
|
|
254
|
+
define("webkitAudioContext", InstalledAudioContext);
|
|
255
|
+
}
|
|
256
|
+
else {
|
|
257
|
+
define("AudioContext", InstalledAudioContext);
|
|
258
|
+
define("webkitAudioContext", InstalledAudioContext);
|
|
259
|
+
}
|
|
260
|
+
return {
|
|
261
|
+
instances,
|
|
262
|
+
restore() {
|
|
263
|
+
for (const [key, prev] of [
|
|
264
|
+
["AudioContext", prevStd],
|
|
265
|
+
["webkitAudioContext", prevWebkit],
|
|
266
|
+
]) {
|
|
267
|
+
if (prev)
|
|
268
|
+
Object.defineProperty(target, key, prev);
|
|
269
|
+
else
|
|
270
|
+
delete target[key];
|
|
271
|
+
}
|
|
272
|
+
},
|
|
273
|
+
};
|
|
274
|
+
}
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
# Sources
|
|
2
|
+
|
|
3
|
+
The citations under an answer, as a pill you can ignore and a set of cards you can scan. Collapsed, it is a stack of monograms and a count; open, it is one card per document — title, host, and the line worth reading.
|
|
4
|
+
|
|
5
|
+
## Components
|
|
6
|
+
|
|
7
|
+
- `Sources` — the root. Holds the citation set and the open state, publishes context.
|
|
8
|
+
- `SourcesTrigger` — the collapsed pill: monogram stack, count, chevron.
|
|
9
|
+
- `SourcesList` — the expanding region of cards.
|
|
10
|
+
- `SourceCard` — one citation. Works on its own, anywhere.
|
|
11
|
+
|
|
12
|
+
The parts read the root through context, so they can sit anywhere inside it — directly in the root, or nested a few components deep in your own wrapper — without the sources or the open state being threaded down as props.
|
|
13
|
+
|
|
14
|
+
## Usage
|
|
15
|
+
|
|
16
|
+
```svelte
|
|
17
|
+
<script lang="ts">
|
|
18
|
+
import { Sources } from "fancy-ui-svelte";
|
|
19
|
+
|
|
20
|
+
const sources = [
|
|
21
|
+
{
|
|
22
|
+
id: "s1",
|
|
23
|
+
title: "Designing citation surfaces",
|
|
24
|
+
url: "https://docs.example.dev/patterns/citations",
|
|
25
|
+
snippet: "A citation is a promise that the answer can be checked.",
|
|
26
|
+
},
|
|
27
|
+
];
|
|
28
|
+
</script>
|
|
29
|
+
|
|
30
|
+
<p>{answer}</p>
|
|
31
|
+
<Sources {sources} />
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
That is the whole component. With no `children`, the root renders its own trigger and list, so the bare form is the one most answers want.
|
|
35
|
+
|
|
36
|
+
### Composing it yourself
|
|
37
|
+
|
|
38
|
+
Pass `children` and you place the parts — reordered, wrapped, or with only one of them present:
|
|
39
|
+
|
|
40
|
+
```svelte
|
|
41
|
+
<script lang="ts">
|
|
42
|
+
import { Sources, SourcesTrigger, SourcesList } from "fancy-ui-svelte";
|
|
43
|
+
|
|
44
|
+
let open = $state(false);
|
|
45
|
+
</script>
|
|
46
|
+
|
|
47
|
+
<Sources {sources} bind:open onToggle={(next) => track("sources", next)}>
|
|
48
|
+
<SourcesTrigger label="Checked against 4 papers" />
|
|
49
|
+
<SourcesList>
|
|
50
|
+
{#snippet item(source, index)}
|
|
51
|
+
<a href={source.url}>{index + 1}. {source.title}</a>
|
|
52
|
+
{/snippet}
|
|
53
|
+
</SourcesList>
|
|
54
|
+
</Sources>
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### `SourceCard` on its own
|
|
58
|
+
|
|
59
|
+
The card has no context dependency at all, so it works anywhere a single citation needs rendering — a hover preview over an inline citation, a "cited by" rail, a search result:
|
|
60
|
+
|
|
61
|
+
```svelte
|
|
62
|
+
<script lang="ts">
|
|
63
|
+
import { SourceCard } from "fancy-ui-svelte";
|
|
64
|
+
</script>
|
|
65
|
+
|
|
66
|
+
<SourceCard source={sources[0]} />
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
It is the only part that behaves this way. The trigger and the list also survive being rendered outside a root — the pill reads `0 sources` and does nothing, the list renders empty and stays open — but there is no reason to do that on purpose.
|
|
70
|
+
|
|
71
|
+
## Props
|
|
72
|
+
|
|
73
|
+
### Sources
|
|
74
|
+
|
|
75
|
+
| Prop | Type | Default | Description |
|
|
76
|
+
| ---------- | ------------------------- | ----------- | ------------------------------------------------------------ |
|
|
77
|
+
| `sources` | `SourceData[]` | — | The documents backing the answer, in reading order. Required |
|
|
78
|
+
| `open` | `boolean` | `false` | Whether the list is expanded. Bindable |
|
|
79
|
+
| `onToggle` | `(open: boolean) => void` | `undefined` | Called when the pill is clicked, with the state it moved to |
|
|
80
|
+
| `children` | `Snippet` | `undefined` | Replaces the default trigger-and-list composition entirely |
|
|
81
|
+
| `class` | `string` | `undefined` | Additional CSS classes |
|
|
82
|
+
| `ref` | `HTMLDivElement \| null` | `null` | Bindable reference to the root `<div>` |
|
|
83
|
+
|
|
84
|
+
`onToggle` fires only when the pill is clicked. Driving `open` yourself — through the binding or the prop — changes the state without calling it, which is what lets a caller tell "the reader opened this" apart from "I opened this".
|
|
85
|
+
|
|
86
|
+
### SourcesTrigger
|
|
87
|
+
|
|
88
|
+
| Prop | Type | Default | Description |
|
|
89
|
+
| ------- | -------- | ----------- | ------------------------------------------------------------------ |
|
|
90
|
+
| `label` | `string` | `undefined` | Overrides the count line. Defaults to `4 sources`, singular at one |
|
|
91
|
+
| `class` | `string` | `undefined` | Additional CSS classes |
|
|
92
|
+
|
|
93
|
+
### SourcesList
|
|
94
|
+
|
|
95
|
+
| Prop | Type | Default | Description |
|
|
96
|
+
| ------- | ------------------------------- | ----------- | -------------------------------------------------------- |
|
|
97
|
+
| `item` | `Snippet<[SourceData, number]>` | `undefined` | Replaces the default card. Gets the source and its index |
|
|
98
|
+
| `class` | `string` | `undefined` | Additional CSS classes, on the grid |
|
|
99
|
+
|
|
100
|
+
### SourceCard
|
|
101
|
+
|
|
102
|
+
| Prop | Type | Default | Description |
|
|
103
|
+
| -------- | ------------ | ----------- | ------------------------------------------------- |
|
|
104
|
+
| `source` | `SourceData` | — | The document being cited. Required |
|
|
105
|
+
| `icon` | `Snippet` | `undefined` | Replaces the monogram: a favicon you host, a logo |
|
|
106
|
+
| `class` | `string` | `undefined` | Additional CSS classes |
|
|
107
|
+
|
|
108
|
+
## The data
|
|
109
|
+
|
|
110
|
+
Every part reads the shared `SourceData` shape:
|
|
111
|
+
|
|
112
|
+
```ts
|
|
113
|
+
interface SourceData {
|
|
114
|
+
id: string;
|
|
115
|
+
title: string;
|
|
116
|
+
url: string;
|
|
117
|
+
snippet?: string;
|
|
118
|
+
domain?: string;
|
|
119
|
+
}
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
Only `title` always renders. `domain` is shown when given and otherwise derived from `url` (minus the `www.`), so a caller who wants `the standards body` under a title can say so instead of getting `www.example.org`. A source with no usable `url` renders as a plain card rather than a link — a citation with nowhere to go is still worth showing, it just must not pretend to be clickable.
|
|
123
|
+
|
|
124
|
+
## The context contract
|
|
125
|
+
|
|
126
|
+
The root publishes this under `SOURCES_CONTEXT_KEY`:
|
|
127
|
+
|
|
128
|
+
```ts
|
|
129
|
+
interface SourcesContext {
|
|
130
|
+
readonly open: { readonly current: boolean };
|
|
131
|
+
readonly count: number;
|
|
132
|
+
readonly sources: readonly SourceData[];
|
|
133
|
+
readonly listId: string;
|
|
134
|
+
toggle(): void;
|
|
135
|
+
}
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
Everything is a getter over the root's own props, so a part that reads it inside a reactive scope updates with the root. `listId` is the id the list puts on its region and the trigger points `aria-controls` at, which is the only way two sibling components can agree on one.
|
|
139
|
+
|
|
140
|
+
Both the key and the type are exported, so you can build your own parts:
|
|
141
|
+
|
|
142
|
+
```svelte
|
|
143
|
+
<script lang="ts">
|
|
144
|
+
import { getContext } from "svelte";
|
|
145
|
+
import { SOURCES_CONTEXT_KEY, type SourcesContext } from "fancy-ui-svelte";
|
|
146
|
+
|
|
147
|
+
const sources = getContext<SourcesContext | undefined>(SOURCES_CONTEXT_KEY);
|
|
148
|
+
</script>
|
|
149
|
+
|
|
150
|
+
<button onclick={() => sources?.toggle()}>{sources?.count ?? 0} references</button>
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
Read it as optional. Every shipped part does, so a part rendered outside a root degrades instead of throwing.
|
|
154
|
+
|
|
155
|
+
## Styling
|
|
156
|
+
|
|
157
|
+
| Custom property | Default | Effect |
|
|
158
|
+
| ---------------------------- | ---------------------------------------------------- | ---------------------------------------- |
|
|
159
|
+
| `--ft-sources-min-column` | `13rem` | Narrowest a card column may get |
|
|
160
|
+
| `--ft-sources-gap` | `0.5rem` | Space between cards |
|
|
161
|
+
| `--ft-sources-card-bg` | `color-mix(in oklab, currentColor 3%, transparent)` | Card fill |
|
|
162
|
+
| `--ft-sources-card-hover-bg` | `color-mix(in oklab, currentColor 7%, transparent)` | Card and pill fill on hover |
|
|
163
|
+
| `--ft-sources-card-border` | `var(--color-border, …)` | Card and pill border |
|
|
164
|
+
| `--ft-sources-trigger-bg` | `transparent` | Pill fill at rest |
|
|
165
|
+
| `--ft-sources-chip-bg` | `color-mix(in oklab, currentColor 12%, transparent)` | Monogram fill |
|
|
166
|
+
| `--ft-sources-chip-fg` | `inherit` | Monogram letter colour |
|
|
167
|
+
| `--ft-sources-chip-ring` | `var(--color-background, canvas)` | Ring cutting the stacked monograms apart |
|
|
168
|
+
|
|
169
|
+
Set them on the component, or on any ancestor:
|
|
170
|
+
|
|
171
|
+
```svelte
|
|
172
|
+
<div style="--ft-sources-min-column: 100%; --ft-sources-chip-bg: var(--color-primary);">
|
|
173
|
+
<Sources {sources} />
|
|
174
|
+
</div>
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
Setting `--ft-sources-min-column` to `100%` is how you force the single-column stack a narrow chat needs.
|
|
178
|
+
|
|
179
|
+
## Implementation Notes
|
|
180
|
+
|
|
181
|
+
- The list expands with `grid-template-rows: 0fr → 1fr`, which is the only way to transition an auto height without measuring anything. The inner wrapper does the clipping.
|
|
182
|
+
- The collapsed region is `inert`. The cards are links, so leaving them reachable would drop a keyboard into content nobody can see.
|
|
183
|
+
- Cards flow into `repeat(auto-fill, minmax(--ft-sources-min-column, 1fr))`, so the same list is a stack in a chat column and a grid in a document, with no breakpoint to configure.
|
|
184
|
+
- The entrance stagger hangs off a class rather than mount, because the cards never unmount — collapsing is a height transition over live DOM, so re-adding the class is the only thing that can replay it. The delay is clamped at the seventh card: past a handful, a stagger stops reading as sequence and starts reading as lag.
|
|
185
|
+
- Everything that moves — the expansion, the chevron, the stagger, the hover tints — lives inside `@media (prefers-reduced-motion: no-preference)`. Reduced motion gets the same states, instantly.
|
|
186
|
+
- The monogram is a letter, never a favicon. Loading real favicons would mean a request from every reader's browser to every cited site — a tracking beacon nobody asked for, and a broken image the moment a site is gone. Pass `icon` if you host your own.
|
|
187
|
+
- The letter is taken with the spread rather than `charAt`, so a title starting outside the BMP yields a whole character instead of half a surrogate pair.
|
|
188
|
+
- Links carry `rel="noopener noreferrer nofollow ugc"` and `target="_blank"`: a model chose the destination, not the author of the page it sits on, and the tab it opens has no business reaching back into the app.
|
|
189
|
+
- The trigger's monogram stack is `aria-hidden`. It is decoration; every name in it is spelled out in the list below.
|