fancy-ui-react 0.2.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/LICENSE +21 -0
- package/PORTING.md +118 -0
- package/README.md +643 -0
- package/dist/cameleon/FancyProvider.d.ts +11 -0
- package/dist/cameleon/FancyProvider.js +42 -0
- package/dist/cameleon/context.d.ts +22 -0
- package/dist/cameleon/context.js +16 -0
- package/dist/cameleon/index.d.ts +31 -0
- package/dist/cameleon/index.js +39 -0
- package/dist/cameleon/primitives/Badge.d.ts +10 -0
- package/dist/cameleon/primitives/Badge.js +12 -0
- package/dist/cameleon/primitives/Button.d.ts +11 -0
- package/dist/cameleon/primitives/Button.js +43 -0
- package/dist/cameleon/primitives/Checkbox.d.ts +10 -0
- package/dist/cameleon/primitives/Checkbox.js +39 -0
- package/dist/cameleon/primitives/Input.d.ts +10 -0
- package/dist/cameleon/primitives/Input.js +13 -0
- package/dist/cameleon/primitives/Radio.d.ts +12 -0
- package/dist/cameleon/primitives/Radio.js +29 -0
- package/dist/cameleon/primitives/Select.d.ts +10 -0
- package/dist/cameleon/primitives/Select.js +27 -0
- package/dist/cameleon/primitives/Slider.d.ts +7 -0
- package/dist/cameleon/primitives/Slider.js +22 -0
- package/dist/cameleon/primitives/Switch.d.ts +9 -0
- package/dist/cameleon/primitives/Switch.js +33 -0
- package/dist/cameleon/primitives/Textarea.d.ts +9 -0
- package/dist/cameleon/primitives/Textarea.js +13 -0
- package/dist/cameleon/primitives/Tooltip.d.ts +14 -0
- package/dist/cameleon/primitives/Tooltip.js +15 -0
- package/dist/cameleon/primitives/index.d.ts +10 -0
- package/dist/cameleon/skins/aurora/index.d.ts +2 -0
- package/dist/cameleon/skins/aurora/index.js +16 -0
- package/dist/cameleon/skins/aurora/meta.d.ts +3 -0
- package/dist/cameleon/skins/aurora/meta.js +61 -0
- package/dist/cameleon/skins/aurora/recipes.d.ts +24 -0
- package/dist/cameleon/skins/aurora/recipes.js +124 -0
- package/dist/cameleon/skins/aurora/tokens.d.ts +6 -0
- package/dist/cameleon/skins/aurora/tokens.js +18 -0
- package/dist/cameleon/skins/brutal/index.d.ts +2 -0
- package/dist/cameleon/skins/brutal/index.js +35 -0
- package/dist/cameleon/skins/brutal/meta.d.ts +3 -0
- package/dist/cameleon/skins/brutal/meta.js +73 -0
- package/dist/cameleon/skins/brutal/ornaments.d.ts +7 -0
- package/dist/cameleon/skins/brutal/ornaments.js +18 -0
- package/dist/cameleon/skins/brutal/recipes.d.ts +23 -0
- package/dist/cameleon/skins/brutal/recipes.js +113 -0
- package/dist/cameleon/skins/brutal/tokens.d.ts +8 -0
- package/dist/cameleon/skins/brutal/tokens.js +23 -0
- package/dist/cameleon/skins/default.d.ts +2 -0
- package/dist/cameleon/skins/default.js +79 -0
- package/dist/cameleon/skins/glass/index.d.ts +2 -0
- package/dist/cameleon/skins/glass/index.js +16 -0
- package/dist/cameleon/skins/glass/meta.d.ts +3 -0
- package/dist/cameleon/skins/glass/meta.js +63 -0
- package/dist/cameleon/skins/glass/recipes.d.ts +24 -0
- package/dist/cameleon/skins/glass/recipes.js +124 -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 +2 -0
- package/dist/cameleon/skins/retro-os/index.js +24 -0
- package/dist/cameleon/skins/retro-os/meta.d.ts +3 -0
- package/dist/cameleon/skins/retro-os/meta.js +61 -0
- package/dist/cameleon/skins/retro-os/ornaments.d.ts +9 -0
- package/dist/cameleon/skins/retro-os/ornaments.js +28 -0
- package/dist/cameleon/skins/retro-os/recipes.d.ts +35 -0
- package/dist/cameleon/skins/retro-os/recipes.js +126 -0
- package/dist/cameleon/skins/retro-os/tokens.d.ts +16 -0
- package/dist/cameleon/skins/retro-os/tokens.js +23 -0
- package/dist/cameleon/skins/terminal/index.d.ts +2 -0
- package/dist/cameleon/skins/terminal/index.js +24 -0
- package/dist/cameleon/skins/terminal/meta.d.ts +3 -0
- package/dist/cameleon/skins/terminal/meta.js +70 -0
- package/dist/cameleon/skins/terminal/ornaments.d.ts +7 -0
- package/dist/cameleon/skins/terminal/ornaments.js +8 -0
- package/dist/cameleon/skins/terminal/recipes.d.ts +25 -0
- package/dist/cameleon/skins/terminal/recipes.js +125 -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 +133 -0
- package/dist/components/agent-plan/AgentPlan.d.ts +25 -0
- package/dist/components/agent-plan/AgentPlan.js +181 -0
- package/dist/components/agent-plan/index.d.ts +2 -0
- package/dist/components/ai-data-table/AiDataTable.d.ts +54 -0
- package/dist/components/ai-data-table/AiDataTable.js +110 -0
- package/dist/components/ai-data-table/index.d.ts +2 -0
- package/dist/components/alert-dialog/AlertDialog.d.ts +35 -0
- package/dist/components/alert-dialog/AlertDialog.js +109 -0
- package/dist/components/alert-dialog/index.d.ts +2 -0
- package/dist/components/animated-beam/AnimatedBeam.d.ts +39 -0
- package/dist/components/animated-beam/AnimatedBeam.js +192 -0
- package/dist/components/animated-beam/index.d.ts +2 -0
- package/dist/components/animated-testimonials/AnimatedTestimonials.d.ts +32 -0
- package/dist/components/animated-testimonials/AnimatedTestimonials.js +172 -0
- package/dist/components/animated-testimonials/index.d.ts +2 -0
- package/dist/components/animated-tooltip/AnimatedTooltip.d.ts +13 -0
- package/dist/components/animated-tooltip/AnimatedTooltip.js +137 -0
- package/dist/components/animated-tooltip/index.d.ts +2 -0
- package/dist/components/apple-card-carousel/AppleCard.d.ts +30 -0
- package/dist/components/apple-card-carousel/AppleCard.js +219 -0
- package/dist/components/apple-card-carousel/AppleCardCarousel.d.ts +14 -0
- package/dist/components/apple-card-carousel/AppleCardCarousel.js +30 -0
- package/dist/components/apple-card-carousel/index.d.ts +4 -0
- package/dist/components/approval-card/ApprovalCard.d.ts +57 -0
- package/dist/components/approval-card/ApprovalCard.js +153 -0
- package/dist/components/approval-card/index.d.ts +2 -0
- package/dist/components/artifact-card/ArtifactCard.d.ts +44 -0
- package/dist/components/artifact-card/ArtifactCard.js +204 -0
- package/dist/components/artifact-card/index.d.ts +2 -0
- package/dist/components/autocomplete/Autocomplete.d.ts +36 -0
- package/dist/components/autocomplete/Autocomplete.js +186 -0
- package/dist/components/autocomplete/AutocompletePanel.d.ts +12 -0
- package/dist/components/autocomplete/AutocompletePanel.js +123 -0
- package/dist/components/autocomplete/index.d.ts +4 -0
- package/dist/components/autocomplete/match.d.ts +6 -0
- package/dist/components/autocomplete/match.js +10 -0
- package/dist/components/autocomplete/types.d.ts +52 -0
- package/dist/components/autocomplete/types.js +6 -0
- package/dist/components/bento-grid/BentoGrid.d.ts +6 -0
- package/dist/components/bento-grid/BentoGrid.js +19 -0
- package/dist/components/bento-grid/BentoGridCard.d.ts +11 -0
- package/dist/components/bento-grid/BentoGridCard.js +49 -0
- package/dist/components/bento-grid/BentoGridItem.d.ts +9 -0
- package/dist/components/bento-grid/BentoGridItem.js +33 -0
- package/dist/components/bento-grid/index.d.ts +6 -0
- package/dist/components/bg-falling-stars/FallingStarsBg.d.ts +24 -0
- package/dist/components/bg-falling-stars/FallingStarsBg.js +134 -0
- package/dist/components/bg-falling-stars/index.d.ts +2 -0
- package/dist/components/bg-stars/StarsBackground.d.ts +40 -0
- package/dist/components/bg-stars/StarsBackground.js +188 -0
- package/dist/components/bg-stars/index.d.ts +2 -0
- package/dist/components/blur-reveal/BlurReveal.d.ts +19 -0
- package/dist/components/blur-reveal/BlurReveal.js +50 -0
- package/dist/components/blur-reveal/index.d.ts +2 -0
- package/dist/components/book/Book.d.ts +13 -0
- package/dist/components/book/Book.js +94 -0
- package/dist/components/book/BookDescription.d.ts +6 -0
- package/dist/components/book/BookDescription.js +9 -0
- package/dist/components/book/BookHeader.d.ts +6 -0
- package/dist/components/book/BookHeader.js +9 -0
- package/dist/components/book/BookTitle.d.ts +6 -0
- package/dist/components/book/BookTitle.js +9 -0
- package/dist/components/book/index.d.ts +132 -0
- package/dist/components/book/index.js +48 -0
- package/dist/components/border-beam/BorderBeam.d.ts +25 -0
- package/dist/components/border-beam/BorderBeam.js +45 -0
- package/dist/components/border-beam/index.d.ts +2 -0
- package/dist/components/box-reveal/BoxReveal.d.ts +20 -0
- package/dist/components/box-reveal/BoxReveal.js +58 -0
- package/dist/components/box-reveal/index.d.ts +2 -0
- package/dist/components/breadcrumb/Breadcrumb.d.ts +49 -0
- package/dist/components/breadcrumb/Breadcrumb.js +61 -0
- package/dist/components/breadcrumb/index.d.ts +2 -0
- package/dist/components/button/Button.d.ts +44 -0
- package/dist/components/button/Button.js +120 -0
- package/dist/components/button/index.d.ts +2 -0
- package/dist/components/button/types.d.ts +4 -0
- package/dist/components/button-group/ButtonGroup.d.ts +23 -0
- package/dist/components/button-group/ButtonGroup.js +30 -0
- package/dist/components/button-group/index.d.ts +4 -0
- package/dist/components/button-group/types.d.ts +34 -0
- package/dist/components/button-group/types.js +7 -0
- package/dist/components/card-3d/CardBody.d.ts +8 -0
- package/dist/components/card-3d/CardBody.js +9 -0
- package/dist/components/card-3d/CardContainer.d.ts +19 -0
- package/dist/components/card-3d/CardContainer.js +61 -0
- package/dist/components/card-3d/CardItem.d.ts +22 -0
- package/dist/components/card-3d/CardItem.js +29 -0
- package/dist/components/card-3d/index.d.ts +6 -0
- package/dist/components/card-spotlight/CardSpotlight.d.ts +16 -0
- package/dist/components/card-spotlight/CardSpotlight.js +65 -0
- package/dist/components/card-spotlight/index.d.ts +2 -0
- package/dist/components/chat-error/ChatError.d.ts +32 -0
- package/dist/components/chat-error/ChatError.js +75 -0
- package/dist/components/chat-error/index.d.ts +2 -0
- package/dist/components/chat-message/ChatMessage.d.ts +43 -0
- package/dist/components/chat-message/ChatMessage.js +127 -0
- package/dist/components/chat-message/ChatMessageAction.d.ts +20 -0
- package/dist/components/chat-message/ChatMessageAction.js +58 -0
- package/dist/components/chat-message/ChatMessageActions.d.ts +14 -0
- package/dist/components/chat-message/ChatMessageActions.js +30 -0
- package/dist/components/chat-message/ChatMessageBranches.d.ts +15 -0
- package/dist/components/chat-message/ChatMessageBranches.js +93 -0
- package/dist/components/chat-message/index.d.ts +10 -0
- package/dist/components/chat-message/types.d.ts +38 -0
- package/dist/components/chat-message/types.js +7 -0
- package/dist/components/chat-panel/ChatEmptyState.d.ts +17 -0
- package/dist/components/chat-panel/ChatEmptyState.js +42 -0
- package/dist/components/chat-panel/ChatPanel.d.ts +31 -0
- package/dist/components/chat-panel/ChatPanel.js +163 -0
- package/dist/components/chat-panel/index.d.ts +4 -0
- package/dist/components/checkbox/Checkbox.d.ts +64 -0
- package/dist/components/checkbox/Checkbox.js +123 -0
- package/dist/components/checkbox/index.d.ts +2 -0
- package/dist/components/code-diff/CodeDiff.d.ts +39 -0
- package/dist/components/code-diff/CodeDiff.js +213 -0
- package/dist/components/code-diff/index.d.ts +2 -0
- package/dist/components/colourful-text/ColourfulText.d.ts +28 -0
- package/dist/components/colourful-text/ColourfulText.js +73 -0
- package/dist/components/colourful-text/index.d.ts +2 -0
- package/dist/components/combobox/Combobox.d.ts +53 -0
- package/dist/components/combobox/Combobox.js +248 -0
- package/dist/components/combobox/ComboboxPanel.d.ts +28 -0
- package/dist/components/combobox/ComboboxPanel.js +110 -0
- package/dist/components/combobox/index.d.ts +4 -0
- package/dist/components/combobox/match.d.ts +15 -0
- package/dist/components/combobox/match.js +14 -0
- package/dist/components/combobox/types.d.ts +60 -0
- package/dist/components/combobox/types.js +6 -0
- package/dist/components/command-menu/CommandMenu.d.ts +37 -0
- package/dist/components/command-menu/CommandMenu.js +386 -0
- package/dist/components/command-menu/index.d.ts +3 -0
- package/dist/components/command-menu/match.d.ts +19 -0
- package/dist/components/command-menu/match.js +45 -0
- package/dist/components/command-menu/types.d.ts +19 -0
- package/dist/components/compare/Compare.d.ts +31 -0
- package/dist/components/compare/Compare.js +300 -0
- package/dist/components/compare/StarField.d.ts +22 -0
- package/dist/components/compare/StarField.js +66 -0
- package/dist/components/compare/index.d.ts +4 -0
- package/dist/components/composer/Composer.d.ts +56 -0
- package/dist/components/composer/Composer.js +155 -0
- package/dist/components/composer/ComposerAttachment.d.ts +14 -0
- package/dist/components/composer/ComposerAttachment.js +127 -0
- package/dist/components/composer/ComposerAttachments.d.ts +18 -0
- package/dist/components/composer/ComposerAttachments.js +85 -0
- package/dist/components/composer/ComposerCommandMenu.d.ts +37 -0
- package/dist/components/composer/ComposerCommandMenu.js +208 -0
- package/dist/components/composer/ComposerInput.d.ts +22 -0
- package/dist/components/composer/ComposerInput.js +96 -0
- package/dist/components/composer/ComposerModelPicker.d.ts +32 -0
- package/dist/components/composer/ComposerModelPicker.js +223 -0
- package/dist/components/composer/ComposerSubmit.d.ts +16 -0
- package/dist/components/composer/ComposerSubmit.js +52 -0
- package/dist/components/composer/ComposerToolbar.d.ts +38 -0
- package/dist/components/composer/ComposerToolbar.js +9 -0
- package/dist/components/composer/caret.d.ts +69 -0
- package/dist/components/composer/caret.js +112 -0
- package/dist/components/composer/index.d.ts +18 -0
- package/dist/components/composer/types.d.ts +86 -0
- package/dist/components/composer/types.js +7 -0
- package/dist/components/confetti/Confetti.d.ts +37 -0
- package/dist/components/confetti/Confetti.js +45 -0
- package/dist/components/confetti/ConfettiButton.d.ts +23 -0
- package/dist/components/confetti/ConfettiButton.js +29 -0
- package/dist/components/confetti/context.d.ts +21 -0
- package/dist/components/confetti/context.js +6 -0
- package/dist/components/confetti/index.d.ts +4 -0
- package/dist/components/container-scroll/ContainerScroll.d.ts +10 -0
- package/dist/components/container-scroll/ContainerScroll.js +74 -0
- package/dist/components/container-scroll/index.d.ts +2 -0
- package/dist/components/container-text-flip/ContainerTextFlip.d.ts +9 -0
- package/dist/components/container-text-flip/ContainerTextFlip.js +58 -0
- package/dist/components/container-text-flip/index.d.ts +2 -0
- package/dist/components/context-menu/ContextMenu.d.ts +39 -0
- package/dist/components/context-menu/ContextMenu.js +105 -0
- package/dist/components/context-menu/ContextMenuContent.d.ts +27 -0
- package/dist/components/context-menu/ContextMenuContent.js +97 -0
- package/dist/components/context-menu/ContextMenuTrigger.d.ts +26 -0
- package/dist/components/context-menu/ContextMenuTrigger.js +37 -0
- package/dist/components/context-menu/index.d.ts +20 -0
- package/dist/components/context-menu/types.d.ts +52 -0
- package/dist/components/context-menu/types.js +17 -0
- package/dist/components/context-ring/ContextRing.d.ts +33 -0
- package/dist/components/context-ring/ContextRing.js +257 -0
- package/dist/components/context-ring/index.d.ts +2 -0
- package/dist/components/copy-button/CopyButton.d.ts +39 -0
- package/dist/components/copy-button/CopyButton.js +124 -0
- package/dist/components/copy-button/index.d.ts +2 -0
- package/dist/components/date-picker/DatePicker.d.ts +58 -0
- package/dist/components/date-picker/DatePicker.js +331 -0
- package/dist/components/date-picker/date-utils.d.ts +39 -0
- package/dist/components/date-picker/date-utils.js +85 -0
- package/dist/components/date-picker/index.d.ts +2 -0
- package/dist/components/dialog/Dialog.d.ts +29 -0
- package/dist/components/dialog/Dialog.js +105 -0
- package/dist/components/dialog/DialogSurface.d.ts +2 -0
- package/dist/components/dialog/DialogSurface.js +98 -0
- package/dist/components/dialog/index.d.ts +2 -0
- package/dist/components/dialog/types.d.ts +61 -0
- package/dist/components/dim-siblings/DimSiblings.d.ts +30 -0
- package/dist/components/dim-siblings/DimSiblings.js +47 -0
- package/dist/components/dim-siblings/index.d.ts +2 -0
- package/dist/components/direction-aware-hover/DirectionAwareHover.d.ts +10 -0
- package/dist/components/direction-aware-hover/DirectionAwareHover.js +185 -0
- package/dist/components/direction-aware-hover/index.d.ts +2 -0
- package/dist/components/displacement-text/DisplacementText.d.ts +26 -0
- package/dist/components/displacement-text/DisplacementText.js +185 -0
- package/dist/components/displacement-text/index.d.ts +2 -0
- package/dist/components/dock/Dock.d.ts +28 -0
- package/dist/components/dock/Dock.js +80 -0
- package/dist/components/dock/DockIcon.d.ts +17 -0
- package/dist/components/dock/DockIcon.js +38 -0
- package/dist/components/dock/DockSeparator.d.ts +6 -0
- package/dist/components/dock/DockSeparator.js +20 -0
- package/dist/components/dock/index.d.ts +7 -0
- package/dist/components/dock/types.d.ts +47 -0
- package/dist/components/dock/types.js +15 -0
- package/dist/components/drawer/Drawer.d.ts +34 -0
- package/dist/components/drawer/Drawer.js +237 -0
- package/dist/components/drawer/index.d.ts +2 -0
- package/dist/components/dropdown-menu/DropdownMenu.d.ts +38 -0
- package/dist/components/dropdown-menu/DropdownMenu.js +99 -0
- package/dist/components/dropdown-menu/DropdownMenuContent.d.ts +15 -0
- package/dist/components/dropdown-menu/DropdownMenuContent.js +111 -0
- package/dist/components/dropdown-menu/DropdownMenuItem.d.ts +26 -0
- package/dist/components/dropdown-menu/DropdownMenuItem.js +74 -0
- package/dist/components/dropdown-menu/DropdownMenuLabel.d.ts +15 -0
- package/dist/components/dropdown-menu/DropdownMenuLabel.js +18 -0
- package/dist/components/dropdown-menu/DropdownMenuSeparator.d.ts +6 -0
- package/dist/components/dropdown-menu/DropdownMenuSeparator.js +15 -0
- package/dist/components/dropdown-menu/DropdownMenuSub.d.ts +10 -0
- package/dist/components/dropdown-menu/DropdownMenuSub.js +110 -0
- package/dist/components/dropdown-menu/DropdownMenuSubContent.d.ts +15 -0
- package/dist/components/dropdown-menu/DropdownMenuSubContent.js +139 -0
- package/dist/components/dropdown-menu/DropdownMenuSubTrigger.d.ts +17 -0
- package/dist/components/dropdown-menu/DropdownMenuSubTrigger.js +104 -0
- package/dist/components/dropdown-menu/DropdownMenuTrigger.d.ts +16 -0
- package/dist/components/dropdown-menu/DropdownMenuTrigger.js +67 -0
- package/dist/components/dropdown-menu/index.d.ts +20 -0
- package/dist/components/dropdown-menu/menu-shared.d.ts +39 -0
- package/dist/components/dropdown-menu/menu-shared.js +48 -0
- package/dist/components/dropdown-menu/types.d.ts +159 -0
- package/dist/components/dropdown-menu/types.js +32 -0
- package/dist/components/editorial-engine/EditorialEngine.d.ts +21 -0
- package/dist/components/editorial-engine/EditorialEngine.js +68 -0
- package/dist/components/editorial-engine/engine.d.ts +7 -0
- package/dist/components/editorial-engine/engine.js +558 -0
- package/dist/components/editorial-engine/index.d.ts +2 -0
- package/dist/components/file-upload/FileUpload.d.ts +63 -0
- package/dist/components/file-upload/FileUpload.js +438 -0
- package/dist/components/file-upload/index.d.ts +2 -0
- package/dist/components/fireworks-hdr/FireworksHdr.d.ts +56 -0
- package/dist/components/fireworks-hdr/FireworksHdr.js +426 -0
- package/dist/components/fireworks-hdr/dev.d.ts +1 -0
- package/dist/components/fireworks-hdr/dev.js +8 -0
- package/dist/components/fireworks-hdr/fireworks-shared.d.ts +444 -0
- package/dist/components/fireworks-hdr/fireworks-shared.js +1205 -0
- package/dist/components/fireworks-hdr/index.d.ts +4 -0
- package/dist/components/fireworks-hdr/webgl2-renderer.d.ts +20 -0
- package/dist/components/fireworks-hdr/webgl2-renderer.js +517 -0
- package/dist/components/fireworks-hdr/webgpu-renderer.d.ts +51 -0
- package/dist/components/fireworks-hdr/webgpu-renderer.js +461 -0
- package/dist/components/fireworks-hdr/webgpu-types.d.ts +159 -0
- package/dist/components/flickering-grid/FlickeringGrid.d.ts +33 -0
- package/dist/components/flickering-grid/FlickeringGrid.js +154 -0
- package/dist/components/flickering-grid/index.d.ts +2 -0
- package/dist/components/flip-card/FlipCard.d.ts +8 -0
- package/dist/components/flip-card/FlipCard.js +35 -0
- package/dist/components/flip-card/index.d.ts +2 -0
- package/dist/components/flip-words/FlipWords.d.ts +16 -0
- package/dist/components/flip-words/FlipWords.js +82 -0
- package/dist/components/flip-words/index.d.ts +2 -0
- package/dist/components/fluid-cursor/FluidCursor.d.ts +61 -0
- package/dist/components/fluid-cursor/FluidCursor.js +1479 -0
- package/dist/components/fluid-cursor/fluid-shared.d.ts +74 -0
- package/dist/components/fluid-cursor/fluid-shared.js +120 -0
- package/dist/components/fluid-cursor/index.d.ts +8 -0
- package/dist/components/fluid-cursor/webgpu-engine.d.ts +36 -0
- package/dist/components/fluid-cursor/webgpu-engine.js +922 -0
- package/dist/components/focus/Focus.d.ts +24 -0
- package/dist/components/focus/Focus.js +103 -0
- package/dist/components/focus/index.d.ts +2 -0
- package/dist/components/form-field/FormField.d.ts +46 -0
- package/dist/components/form-field/FormField.js +151 -0
- package/dist/components/form-field/index.d.ts +2 -0
- package/dist/components/frosted-glass/FrostedGlass.d.ts +48 -0
- package/dist/components/frosted-glass/FrostedGlass.js +89 -0
- package/dist/components/frosted-glass/index.d.ts +2 -0
- package/dist/components/glare-card/GlareCard.d.ts +8 -0
- package/dist/components/glare-card/GlareCard.js +103 -0
- package/dist/components/glare-card/index.d.ts +2 -0
- package/dist/components/glow-border/GlowBorder.d.ts +8 -0
- package/dist/components/glow-border/GlowBorder.js +39 -0
- package/dist/components/glow-border/index.d.ts +2 -0
- package/dist/components/glowing-effect/GlowingEffect.d.ts +23 -0
- package/dist/components/glowing-effect/GlowingEffect.js +157 -0
- package/dist/components/glowing-effect/index.d.ts +2 -0
- package/dist/components/gradient-button/GradientButton.d.ts +28 -0
- package/dist/components/gradient-button/GradientButton.js +66 -0
- package/dist/components/gradient-button/index.d.ts +2 -0
- package/dist/components/hover-card/HoverCard.d.ts +57 -0
- package/dist/components/hover-card/HoverCard.js +139 -0
- package/dist/components/hover-card/index.d.ts +2 -0
- package/dist/components/hyper-text/HyperText.d.ts +25 -0
- package/dist/components/hyper-text/HyperText.js +102 -0
- package/dist/components/hyper-text/index.d.ts +2 -0
- package/dist/components/icon-button/IconButton.d.ts +46 -0
- package/dist/components/icon-button/IconButton.js +62 -0
- package/dist/components/icon-button/index.d.ts +2 -0
- package/dist/components/image-generation/ImageGeneration.d.ts +33 -0
- package/dist/components/image-generation/ImageGeneration.js +131 -0
- package/dist/components/image-generation/index.d.ts +2 -0
- package/dist/components/image-trail-cursor/ImageTrailCursor.d.ts +15 -0
- package/dist/components/image-trail-cursor/ImageTrailCursor.js +75 -0
- package/dist/components/image-trail-cursor/index.d.ts +3 -0
- package/dist/components/image-trail-cursor/trail-variants.d.ts +112 -0
- package/dist/components/image-trail-cursor/trail-variants.js +787 -0
- package/dist/components/inline-citation/InlineCitation.d.ts +23 -0
- package/dist/components/inline-citation/InlineCitation.js +179 -0
- package/dist/components/inline-citation/index.d.ts +2 -0
- package/dist/components/input/Input.d.ts +41 -0
- package/dist/components/input/Input.js +74 -0
- package/dist/components/input/index.d.ts +2 -0
- package/dist/components/interactive-grid-pattern/InteractiveGridPattern.d.ts +17 -0
- package/dist/components/interactive-grid-pattern/InteractiveGridPattern.js +89 -0
- package/dist/components/interactive-grid-pattern/index.d.ts +2 -0
- package/dist/components/interactive-hover-button/InteractiveHoverButton.d.ts +18 -0
- package/dist/components/interactive-hover-button/InteractiveHoverButton.js +66 -0
- package/dist/components/interactive-hover-button/index.d.ts +2 -0
- package/dist/components/label/Label.d.ts +18 -0
- package/dist/components/label/Label.js +28 -0
- package/dist/components/label/index.d.ts +2 -0
- package/dist/components/letter-pullup/LetterPullup.d.ts +16 -0
- package/dist/components/letter-pullup/LetterPullup.js +27 -0
- package/dist/components/letter-pullup/index.d.ts +2 -0
- package/dist/components/line-hover-link/LineHoverLink.d.ts +33 -0
- package/dist/components/line-hover-link/LineHoverLink.js +69 -0
- package/dist/components/line-hover-link/index.d.ts +2 -0
- package/dist/components/line-reveal/LineReveal.d.ts +31 -0
- package/dist/components/line-reveal/LineReveal.js +117 -0
- package/dist/components/line-reveal/index.d.ts +2 -0
- package/dist/components/line-shadow-text/LineShadowText.d.ts +18 -0
- package/dist/components/line-shadow-text/LineShadowText.js +26 -0
- package/dist/components/line-shadow-text/index.d.ts +2 -0
- package/dist/components/link/Link.d.ts +30 -0
- package/dist/components/link/Link.js +82 -0
- package/dist/components/link/index.d.ts +2 -0
- package/dist/components/liquid-glass/LiquidGlass.d.ts +49 -0
- package/dist/components/liquid-glass/LiquidGlass.js +165 -0
- package/dist/components/liquid-glass/index.d.ts +2 -0
- package/dist/components/liquid-text/LiquidText.d.ts +35 -0
- package/dist/components/liquid-text/LiquidText.js +882 -0
- package/dist/components/liquid-text/index.d.ts +2 -0
- package/dist/components/logo-cloud/AnimatedLogoCloud.d.ts +13 -0
- package/dist/components/logo-cloud/AnimatedLogoCloud.js +38 -0
- package/dist/components/logo-cloud/IconLogoCloud.d.ts +10 -0
- package/dist/components/logo-cloud/IconLogoCloud.js +20 -0
- package/dist/components/logo-cloud/StaticLogoCloud.d.ts +28 -0
- package/dist/components/logo-cloud/StaticLogoCloud.js +45 -0
- package/dist/components/logo-cloud/index.d.ts +6 -0
- package/dist/components/magnetic/Magnetic.d.ts +35 -0
- package/dist/components/magnetic/Magnetic.js +113 -0
- package/dist/components/magnetic/index.d.ts +2 -0
- package/dist/components/marquee/Marquee.d.ts +16 -0
- package/dist/components/marquee/Marquee.js +39 -0
- package/dist/components/marquee/ReviewCard.d.ts +8 -0
- package/dist/components/marquee/ReviewCard.js +17 -0
- package/dist/components/marquee/index.d.ts +4 -0
- package/dist/components/matrix-rain/MatrixRain.d.ts +35 -0
- package/dist/components/matrix-rain/MatrixRain.js +130 -0
- package/dist/components/matrix-rain/index.d.ts +2 -0
- package/dist/components/meteors/Meteors.d.ts +21 -0
- package/dist/components/meteors/Meteors.js +45 -0
- package/dist/components/meteors/index.d.ts +2 -0
- package/dist/components/mosaic-glow/MosaicGlow.d.ts +47 -0
- package/dist/components/mosaic-glow/MosaicGlow.js +438 -0
- package/dist/components/mosaic-glow/index.d.ts +2 -0
- package/dist/components/mosaic-glow/mosaic-glow-core.d.ts +94 -0
- package/dist/components/mosaic-glow/mosaic-glow-core.js +190 -0
- package/dist/components/navbar/Navbar.d.ts +25 -0
- package/dist/components/navbar/Navbar.js +27 -0
- package/dist/components/navbar/NavbarLink.d.ts +37 -0
- package/dist/components/navbar/NavbarLink.js +48 -0
- package/dist/components/navbar/index.d.ts +4 -0
- package/dist/components/navigation-menu/NavigationMenu.d.ts +28 -0
- package/dist/components/navigation-menu/NavigationMenu.js +202 -0
- package/dist/components/navigation-menu/NavigationMenuContent.d.ts +8 -0
- package/dist/components/navigation-menu/NavigationMenuContent.js +77 -0
- package/dist/components/navigation-menu/NavigationMenuItem.d.ts +20 -0
- package/dist/components/navigation-menu/NavigationMenuItem.js +18 -0
- package/dist/components/navigation-menu/NavigationMenuLink.d.ts +31 -0
- package/dist/components/navigation-menu/NavigationMenuLink.js +41 -0
- package/dist/components/navigation-menu/NavigationMenuList.d.ts +8 -0
- package/dist/components/navigation-menu/NavigationMenuList.js +33 -0
- package/dist/components/navigation-menu/NavigationMenuTrigger.d.ts +8 -0
- package/dist/components/navigation-menu/NavigationMenuTrigger.js +90 -0
- package/dist/components/navigation-menu/index.d.ts +14 -0
- package/dist/components/navigation-menu/types.d.ts +107 -0
- package/dist/components/navigation-menu/types.js +32 -0
- package/dist/components/neon-border/NeonBorder.d.ts +22 -0
- package/dist/components/neon-border/NeonBorder.js +50 -0
- package/dist/components/neon-border/index.d.ts +2 -0
- package/dist/components/noise-reveal/NoiseReveal.d.ts +29 -0
- package/dist/components/noise-reveal/NoiseReveal.js +329 -0
- package/dist/components/noise-reveal/index.d.ts +2 -0
- package/dist/components/number-input/NumberInput.d.ts +40 -0
- package/dist/components/number-input/NumberInput.js +207 -0
- package/dist/components/number-input/index.d.ts +2 -0
- package/dist/components/number-ticker/NumberTicker.d.ts +22 -0
- package/dist/components/number-ticker/NumberTicker.js +106 -0
- package/dist/components/number-ticker/index.d.ts +2 -0
- package/dist/components/pagination/Pagination.d.ts +43 -0
- package/dist/components/pagination/Pagination.js +156 -0
- package/dist/components/pagination/index.d.ts +2 -0
- package/dist/components/pagination/pagination-range.d.ts +11 -0
- package/dist/components/pagination/pagination-range.js +35 -0
- package/dist/components/password-input/PasswordInput.d.ts +56 -0
- package/dist/components/password-input/PasswordInput.js +246 -0
- package/dist/components/password-input/index.d.ts +2 -0
- package/dist/components/pixel-loader/PixelLoader.d.ts +18 -0
- package/dist/components/pixel-loader/PixelLoader.js +56 -0
- package/dist/components/pixel-loader/index.d.ts +2 -0
- package/dist/components/popover/Popover.d.ts +49 -0
- package/dist/components/popover/Popover.js +81 -0
- package/dist/components/popover/PopoverContent.d.ts +21 -0
- package/dist/components/popover/PopoverContent.js +78 -0
- package/dist/components/popover/index.d.ts +6 -0
- package/dist/components/popover/types.d.ts +64 -0
- package/dist/components/popover/types.js +17 -0
- package/dist/components/presence/Presence.d.ts +40 -0
- package/dist/components/presence/Presence.js +49 -0
- package/dist/components/presence/index.d.ts +2 -0
- package/dist/components/pressable/Pressable.d.ts +27 -0
- package/dist/components/pressable/Pressable.js +86 -0
- package/dist/components/pressable/index.d.ts +2 -0
- package/dist/components/prompt-suggestions/PromptSuggestions.d.ts +25 -0
- package/dist/components/prompt-suggestions/PromptSuggestions.js +68 -0
- package/dist/components/prompt-suggestions/index.d.ts +2 -0
- package/dist/components/pulse-beam/PulseBeam.d.ts +44 -0
- package/dist/components/pulse-beam/PulseBeam.js +197 -0
- package/dist/components/pulse-beam/index.d.ts +2 -0
- package/dist/components/pulse-beam/pulse-beam-data.d.ts +81 -0
- package/dist/components/pulse-beam/pulse-beam-data.js +306 -0
- package/dist/components/pulse-beam/pulse-beam-loop.d.ts +26 -0
- package/dist/components/pulse-beam/pulse-beam-loop.js +58 -0
- package/dist/components/radio-group/RadioGroup.d.ts +56 -0
- package/dist/components/radio-group/RadioGroup.js +82 -0
- package/dist/components/radio-group/RadioGroupItem.d.ts +21 -0
- package/dist/components/radio-group/RadioGroupItem.js +47 -0
- package/dist/components/radio-group/index.d.ts +6 -0
- package/dist/components/radio-group/types.d.ts +50 -0
- package/dist/components/radio-group/types.js +7 -0
- package/dist/components/rainbow-button/RainbowButton.d.ts +21 -0
- package/dist/components/rainbow-button/RainbowButton.js +59 -0
- package/dist/components/rainbow-button/index.d.ts +2 -0
- package/dist/components/reasoning-panel/ReasoningPanel.d.ts +38 -0
- package/dist/components/reasoning-panel/ReasoningPanel.js +172 -0
- package/dist/components/reasoning-panel/index.d.ts +2 -0
- package/dist/components/recommendation-card/RecommendationCard.d.ts +53 -0
- package/dist/components/recommendation-card/RecommendationCard.js +234 -0
- package/dist/components/recommendation-card/index.d.ts +2 -0
- package/dist/components/reveal/Reveal.d.ts +36 -0
- package/dist/components/reveal/Reveal.js +138 -0
- package/dist/components/reveal/index.d.ts +2 -0
- package/dist/components/ripple/Ripple.d.ts +11 -0
- package/dist/components/ripple/Ripple.js +45 -0
- package/dist/components/ripple/index.d.ts +2 -0
- package/dist/components/ripple-button/RippleButton.d.ts +17 -0
- package/dist/components/ripple-button/RippleButton.js +77 -0
- package/dist/components/ripple-button/index.d.ts +2 -0
- package/dist/components/scroll-anchor/ScrollAnchor.d.ts +33 -0
- package/dist/components/scroll-anchor/ScrollAnchor.js +99 -0
- package/dist/components/scroll-anchor/index.d.ts +2 -0
- package/dist/components/scroll-progress/ScrollProgress.d.ts +39 -0
- package/dist/components/scroll-progress/ScrollProgress.js +118 -0
- package/dist/components/scroll-progress/index.d.ts +2 -0
- package/dist/components/search-input/SearchInput.d.ts +56 -0
- package/dist/components/search-input/SearchInput.js +192 -0
- package/dist/components/search-input/index.d.ts +2 -0
- package/dist/components/select/Select.d.ts +44 -0
- package/dist/components/select/Select.js +255 -0
- package/dist/components/select/SelectPanel.d.ts +33 -0
- package/dist/components/select/SelectPanel.js +108 -0
- package/dist/components/select/index.d.ts +3 -0
- package/dist/components/select/types.d.ts +83 -0
- package/dist/components/select/types.js +8 -0
- package/dist/components/sheet/Sheet.d.ts +40 -0
- package/dist/components/sheet/Sheet.js +183 -0
- package/dist/components/sheet/index.d.ts +2 -0
- package/dist/components/shimmer-button/ShimmerButton.d.ts +26 -0
- package/dist/components/shimmer-button/ShimmerButton.js +69 -0
- package/dist/components/shimmer-button/index.d.ts +2 -0
- package/dist/components/sidebar/Sidebar.d.ts +17 -0
- package/dist/components/sidebar/Sidebar.js +27 -0
- package/dist/components/sidebar/SidebarFooter.d.ts +10 -0
- package/dist/components/sidebar/SidebarFooter.js +31 -0
- package/dist/components/sidebar/SidebarGroup.d.ts +10 -0
- package/dist/components/sidebar/SidebarGroup.js +28 -0
- package/dist/components/sidebar/SidebarItem.d.ts +33 -0
- package/dist/components/sidebar/SidebarItem.js +81 -0
- package/dist/components/sidebar/SidebarSeparator.d.ts +5 -0
- package/dist/components/sidebar/SidebarSeparator.js +13 -0
- package/dist/components/sidebar/index.d.ts +12 -0
- package/dist/components/sidebar/types.d.ts +36 -0
- package/dist/components/sidebar/types.js +7 -0
- package/dist/components/skeleton/Skeleton.d.ts +35 -0
- package/dist/components/skeleton/Skeleton.js +106 -0
- package/dist/components/skeleton/index.d.ts +2 -0
- package/dist/components/slider/Slider.d.ts +32 -0
- package/dist/components/slider/Slider.js +119 -0
- package/dist/components/slider/index.d.ts +2 -0
- package/dist/components/smooth-cursor/SmoothCursor.d.ts +18 -0
- package/dist/components/smooth-cursor/SmoothCursor.js +186 -0
- package/dist/components/smooth-cursor/index.d.ts +2 -0
- package/dist/components/sources/SourceCard.d.ts +21 -0
- package/dist/components/sources/SourceCard.js +48 -0
- package/dist/components/sources/Sources.d.ts +31 -0
- package/dist/components/sources/Sources.js +39 -0
- package/dist/components/sources/SourcesList.d.ts +13 -0
- package/dist/components/sources/SourcesList.js +42 -0
- package/dist/components/sources/SourcesTrigger.d.ts +11 -0
- package/dist/components/sources/SourcesTrigger.js +50 -0
- package/dist/components/sources/index.d.ts +10 -0
- package/dist/components/sources/types.d.ts +45 -0
- package/dist/components/sources/types.js +7 -0
- package/dist/components/sparkles/Sparkles.d.ts +35 -0
- package/dist/components/sparkles/Sparkles.js +112 -0
- package/dist/components/sparkles/index.d.ts +2 -0
- package/dist/components/sparkles-text/SparklesText.d.ts +28 -0
- package/dist/components/sparkles-text/SparklesText.js +84 -0
- package/dist/components/sparkles-text/index.d.ts +2 -0
- package/dist/components/status-morph/StatusMorph.d.ts +47 -0
- package/dist/components/status-morph/StatusMorph.js +110 -0
- package/dist/components/status-morph/index.d.ts +2 -0
- package/dist/components/stepper/Step.d.ts +24 -0
- package/dist/components/stepper/Step.js +152 -0
- package/dist/components/stepper/Stepper.d.ts +38 -0
- package/dist/components/stepper/Stepper.js +79 -0
- package/dist/components/stepper/index.d.ts +6 -0
- package/dist/components/stepper/types.d.ts +66 -0
- package/dist/components/stepper/types.js +7 -0
- package/dist/components/sticky-scroll/StickyScroll.d.ts +40 -0
- package/dist/components/sticky-scroll/StickyScroll.js +163 -0
- package/dist/components/sticky-scroll/index.d.ts +2 -0
- package/dist/components/streaming-text/StreamingText.d.ts +20 -0
- package/dist/components/streaming-text/StreamingText.js +32 -0
- package/dist/components/streaming-text/index.d.ts +2 -0
- package/dist/components/subagent-list/SubagentList.d.ts +28 -0
- package/dist/components/subagent-list/SubagentList.js +167 -0
- package/dist/components/subagent-list/index.d.ts +2 -0
- package/dist/components/switch/Switch.d.ts +55 -0
- package/dist/components/switch/Switch.js +77 -0
- package/dist/components/switch/index.d.ts +2 -0
- package/dist/components/tabs/Tabs.d.ts +43 -0
- package/dist/components/tabs/Tabs.js +123 -0
- package/dist/components/tabs/TabsContent.d.ts +26 -0
- package/dist/components/tabs/TabsContent.js +64 -0
- package/dist/components/tabs/TabsList.d.ts +16 -0
- package/dist/components/tabs/TabsList.js +152 -0
- package/dist/components/tabs/TabsTrigger.d.ts +19 -0
- package/dist/components/tabs/TabsTrigger.js +138 -0
- package/dist/components/tabs/index.d.ts +10 -0
- package/dist/components/tabs/types.d.ts +94 -0
- package/dist/components/tabs/types.js +7 -0
- package/dist/components/terminal-block/TerminalBlock.d.ts +27 -0
- package/dist/components/terminal-block/TerminalBlock.js +120 -0
- package/dist/components/terminal-block/ansi.d.ts +30 -0
- package/dist/components/terminal-block/ansi.js +114 -0
- package/dist/components/terminal-block/index.d.ts +2 -0
- package/dist/components/terminal-text/TerminalText.d.ts +11 -0
- package/dist/components/terminal-text/TerminalText.js +140 -0
- package/dist/components/terminal-text/index.d.ts +2 -0
- package/dist/components/text-generate-effect/TextGenerateEffect.d.ts +9 -0
- package/dist/components/text-generate-effect/TextGenerateEffect.js +58 -0
- package/dist/components/text-generate-effect/index.d.ts +2 -0
- package/dist/components/text-reveal-card/TextRevealCard.d.ts +21 -0
- package/dist/components/text-reveal-card/TextRevealCard.js +107 -0
- package/dist/components/text-reveal-card/TextRevealStars.d.ts +25 -0
- package/dist/components/text-reveal-card/TextRevealStars.js +59 -0
- package/dist/components/text-reveal-card/index.d.ts +4 -0
- package/dist/components/text-roll/TextRoll.d.ts +43 -0
- package/dist/components/text-roll/TextRoll.js +242 -0
- package/dist/components/text-roll/index.d.ts +2 -0
- package/dist/components/text-roll/roll-transitions.d.ts +74 -0
- package/dist/components/text-roll/roll-transitions.js +31 -0
- package/dist/components/textarea/Textarea.d.ts +48 -0
- package/dist/components/textarea/Textarea.js +129 -0
- package/dist/components/textarea/index.d.ts +2 -0
- package/dist/components/thinking-indicator/ThinkingIndicator.d.ts +26 -0
- package/dist/components/thinking-indicator/ThinkingIndicator.js +60 -0
- package/dist/components/thinking-indicator/index.d.ts +2 -0
- package/dist/components/thread-list/ThreadList.d.ts +44 -0
- package/dist/components/thread-list/ThreadList.js +178 -0
- package/dist/components/thread-list/index.d.ts +2 -0
- package/dist/components/time-picker/TimePicker.d.ts +44 -0
- package/dist/components/time-picker/TimePicker.js +254 -0
- package/dist/components/time-picker/TimePickerPanel.d.ts +30 -0
- package/dist/components/time-picker/TimePickerPanel.js +94 -0
- package/dist/components/time-picker/index.d.ts +2 -0
- package/dist/components/time-picker/time-utils.d.ts +33 -0
- package/dist/components/time-picker/time-utils.js +65 -0
- package/dist/components/time-picker/types.d.ts +53 -0
- package/dist/components/time-picker/types.js +10 -0
- package/dist/components/timeline/Timeline.d.ts +18 -0
- package/dist/components/timeline/Timeline.js +96 -0
- package/dist/components/timeline/index.d.ts +2 -0
- package/dist/components/toast/Toast.d.ts +16 -0
- package/dist/components/toast/Toast.js +99 -0
- package/dist/components/toast/Toaster.d.ts +19 -0
- package/dist/components/toast/Toaster.js +147 -0
- package/dist/components/toast/index.d.ts +6 -0
- package/dist/components/toast/store.d.ts +102 -0
- package/dist/components/toast/store.js +118 -0
- package/dist/components/toggle/Toggle.d.ts +28 -0
- package/dist/components/toggle/Toggle.js +69 -0
- package/dist/components/toggle/index.d.ts +2 -0
- package/dist/components/toggle-group/ToggleGroup.d.ts +42 -0
- package/dist/components/toggle-group/ToggleGroup.js +150 -0
- package/dist/components/toggle-group/ToggleGroupItem.d.ts +21 -0
- package/dist/components/toggle-group/ToggleGroupItem.js +100 -0
- package/dist/components/toggle-group/index.d.ts +6 -0
- package/dist/components/toggle-group/types.d.ts +75 -0
- package/dist/components/toggle-group/types.js +7 -0
- package/dist/components/tool-call/ToolCall.d.ts +39 -0
- package/dist/components/tool-call/ToolCall.js +195 -0
- package/dist/components/tool-call/index.d.ts +2 -0
- package/dist/components/tool-timeline/ToolTimeline.d.ts +31 -0
- package/dist/components/tool-timeline/ToolTimeline.js +99 -0
- package/dist/components/tool-timeline/index.d.ts +2 -0
- package/dist/components/tooltip/Tooltip.d.ts +36 -0
- package/dist/components/tooltip/Tooltip.js +214 -0
- package/dist/components/tooltip/index.d.ts +2 -0
- package/dist/components/tracing-beam/TracingBeam.d.ts +11 -0
- package/dist/components/tracing-beam/TracingBeam.js +163 -0
- package/dist/components/tracing-beam/index.d.ts +2 -0
- package/dist/components/typing-indicator/TypingIndicator.d.ts +17 -0
- package/dist/components/typing-indicator/TypingIndicator.js +47 -0
- package/dist/components/typing-indicator/index.d.ts +2 -0
- package/dist/components/voice-input/VoiceInput.d.ts +60 -0
- package/dist/components/voice-input/VoiceInput.js +268 -0
- package/dist/components/voice-input/index.d.ts +2 -0
- package/dist/components/web-search/WebSearch.d.ts +37 -0
- package/dist/components/web-search/WebSearch.js +135 -0
- package/dist/components/web-search/index.d.ts +2 -0
- package/dist/index.d.ts +148 -0
- package/dist/index.js +489 -0
- package/dist/internals/Portal.d.ts +35 -0
- package/dist/internals/Portal.js +37 -0
- package/dist/internals/StreamText.d.ts +20 -0
- package/dist/internals/StreamText.js +25 -0
- package/dist/internals/ai-types.d.ts +117 -0
- package/dist/internals/anchor-position.d.ts +79 -0
- package/dist/internals/anchor-position.js +154 -0
- package/dist/internals/calendar-core.d.ts +26 -0
- package/dist/internals/calendar-core.js +57 -0
- package/dist/internals/diff.d.ts +38 -0
- package/dist/internals/diff.js +176 -0
- package/dist/internals/dismissable.d.ts +76 -0
- package/dist/internals/dismissable.js +105 -0
- package/dist/internals/dom/context.d.ts +16 -0
- package/dist/internals/dom/context.js +20 -0
- package/dist/internals/dom/ssr.d.ts +21 -0
- package/dist/internals/dom/ssr.js +21 -0
- package/dist/internals/dom/types.d.ts +9 -0
- package/dist/internals/dom/use-composed-refs.d.ts +15 -0
- package/dist/internals/dom/use-composed-refs.js +34 -0
- package/dist/internals/dom/use-element-ref.d.ts +11 -0
- package/dist/internals/dom/use-element-ref.js +12 -0
- package/dist/internals/dom/use-event-callback.d.ts +14 -0
- package/dist/internals/dom/use-event-callback.js +12 -0
- package/dist/internals/dom/use-inert-attribute.d.ts +26 -0
- package/dist/internals/dom/use-inert-attribute.js +22 -0
- package/dist/internals/dom/use-live-ref.d.ts +10 -0
- package/dist/internals/dom/use-live-ref.js +12 -0
- package/dist/internals/field.d.ts +136 -0
- package/dist/internals/field.js +33 -0
- package/dist/internals/float.d.ts +47 -0
- package/dist/internals/float.js +31 -0
- package/dist/internals/focus-trap.d.ts +82 -0
- package/dist/internals/focus-trap.js +145 -0
- package/dist/internals/host.d.ts +38 -0
- package/dist/internals/host.js +24 -0
- package/dist/internals/listbox.d.ts +101 -0
- package/dist/internals/listbox.js +171 -0
- package/dist/internals/markdown/Markdown.d.ts +22 -0
- package/dist/internals/markdown/Markdown.js +53 -0
- package/dist/internals/markdown/MarkdownInline.d.ts +5 -0
- package/dist/internals/markdown/MarkdownInline.js +40 -0
- package/dist/internals/markdown.d.ts +66 -0
- package/dist/internals/markdown.js +467 -0
- package/dist/internals/menu.d.ts +121 -0
- package/dist/internals/menu.js +217 -0
- package/dist/internals/motion/anchored.d.ts +104 -0
- package/dist/internals/motion/anchored.js +44 -0
- package/dist/internals/motion/animate.d.ts +92 -0
- package/dist/internals/motion/animate.js +84 -0
- package/dist/internals/motion/easing.d.ts +20 -0
- package/dist/internals/motion/easing.js +13 -0
- package/dist/internals/motion/haptics.d.ts +42 -0
- package/dist/internals/motion/haptics.js +29 -0
- package/dist/internals/motion/in-view.d.ts +67 -0
- package/dist/internals/motion/in-view.js +97 -0
- package/dist/internals/motion/media-query.d.ts +50 -0
- package/dist/internals/motion/media-query.js +54 -0
- package/dist/internals/motion/presence.d.ts +108 -0
- package/dist/internals/motion/presence.js +197 -0
- package/dist/internals/motion/presets.d.ts +34 -0
- package/dist/internals/motion/presets.js +19 -0
- package/dist/internals/motion/raf.d.ts +35 -0
- package/dist/internals/motion/raf.js +27 -0
- package/dist/internals/motion/stagger.d.ts +32 -0
- package/dist/internals/motion/stagger.js +15 -0
- package/dist/internals/motion/tokens.d.ts +97 -0
- package/dist/internals/motion/tokens.js +18 -0
- package/dist/internals/motion/transitions.d.ts +66 -0
- package/dist/internals/motion/transitions.js +41 -0
- package/dist/internals/motion/types.d.ts +17 -0
- package/dist/internals/relative-time.d.ts +25 -0
- package/dist/internals/relative-time.js +46 -0
- package/dist/internals/scroll-lock.d.ts +26 -0
- package/dist/internals/scroll-lock.js +65 -0
- package/dist/internals/use-anchor-position.d.ts +54 -0
- package/dist/internals/use-anchor-position.js +87 -0
- package/dist/internals/use-autoscroll.d.ts +43 -0
- package/dist/internals/use-autoscroll.js +128 -0
- package/dist/internals/use-copy.d.ts +54 -0
- package/dist/internals/use-copy.js +67 -0
- package/dist/internals/use-elapsed.d.ts +96 -0
- package/dist/internals/use-elapsed.js +195 -0
- package/dist/internals/use-float.d.ts +49 -0
- package/dist/internals/use-float.js +150 -0
- package/dist/internals/use-id.d.ts +22 -0
- package/dist/internals/use-id.js +20 -0
- package/dist/internals/use-text-stream.d.ts +94 -0
- package/dist/internals/use-text-stream.js +133 -0
- package/dist/internals/waveform-core.d.ts +33 -0
- package/dist/internals/waveform-core.js +39 -0
- package/dist/sound/SoundToggle.d.ts +23 -0
- package/dist/sound/SoundToggle.js +96 -0
- package/dist/sound/engine.d.ts +67 -0
- package/dist/sound/engine.js +370 -0
- package/dist/sound/index.d.ts +7 -0
- package/dist/sound/sound-feedback.d.ts +77 -0
- package/dist/sound/sound-feedback.js +152 -0
- package/dist/sound/sound.d.ts +98 -0
- package/dist/sound/sound.js +309 -0
- package/dist/sound/themes.d.ts +19 -0
- package/dist/sound/themes.js +355 -0
- package/dist/sound/types.d.ts +125 -0
- package/dist/sound/types.js +54 -0
- package/dist/sound/use-sound.d.ts +53 -0
- package/dist/sound/use-sound.js +82 -0
- package/dist/styles.css +7975 -0
- package/dist/utils.d.ts +3 -0
- package/dist/utils.js +8 -0
- package/package.json +96 -0
- package/tailwind.css +132 -0
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { Toast } from "./Toast.js";
|
|
2
|
+
export type { ToastProps } from "./Toast.js";
|
|
3
|
+
export { Toaster } from "./Toaster.js";
|
|
4
|
+
export type { ToasterProps, ToasterPosition } from "./Toaster.js";
|
|
5
|
+
export { toast, dismissToast } from "./store.js";
|
|
6
|
+
export type { ToastVariant, ToastAction, ToastOptions, ToastItem } from "./store.js";
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Toast store — a module-level singleton, unlike every other reactive helper
|
|
3
|
+
* in this library (which is a per-instance factory a component calls).
|
|
4
|
+
* `toast()` has to be callable from anywhere — a submit handler, a promise
|
|
5
|
+
* rejection, code with no component instance in scope at all — so there can
|
|
6
|
+
* only be one stack per app, shared by whichever `<Toaster>` is mounted.
|
|
7
|
+
*
|
|
8
|
+
* This file owns the data and the timers. `Toast.tsx` and `Toaster.tsx`
|
|
9
|
+
* only render what this exposes; they never touch `items` or the timer map
|
|
10
|
+
* directly.
|
|
11
|
+
*
|
|
12
|
+
* Port note: the source's reactive module state becomes a plain module
|
|
13
|
+
* variable plus a listener set — `toastStore.subscribe` is port-added so a
|
|
14
|
+
* `<Toaster>` can read the stack through `useSyncExternalStore`. The
|
|
15
|
+
* consumer-facing surface (`toast`, `dismissToast`, `toastStore.items`) is
|
|
16
|
+
* unchanged.
|
|
17
|
+
*/
|
|
18
|
+
export type ToastVariant = "success" | "error" | "info" | "loading";
|
|
19
|
+
export interface ToastAction {
|
|
20
|
+
/** Label for the toast's single optional action button, e.g. "Retry". */
|
|
21
|
+
label: string;
|
|
22
|
+
/** Called on activation. Does not dismiss the toast on its own — call `dismissToast` from inside if the action should also close it. */
|
|
23
|
+
onClick: () => void;
|
|
24
|
+
}
|
|
25
|
+
export interface ToastOptions {
|
|
26
|
+
/** Primary line. */
|
|
27
|
+
title: string;
|
|
28
|
+
/** Secondary line, shown under the title. */
|
|
29
|
+
description?: string;
|
|
30
|
+
/** Controls the icon, the accent color, and the live region's politeness. Defaults to `"info"`. */
|
|
31
|
+
variant?: ToastVariant;
|
|
32
|
+
/**
|
|
33
|
+
* Milliseconds before auto-dismiss. `Infinity` means sticky — it never
|
|
34
|
+
* auto-dismisses. Defaults to 5000, except for `variant: "loading"`, which
|
|
35
|
+
* defaults to `Infinity`: a loading toast has no natural "done" time, and
|
|
36
|
+
* auto-dismissing it after a fixed delay would misreport an operation
|
|
37
|
+
* that is still running as finished.
|
|
38
|
+
*/
|
|
39
|
+
duration?: number;
|
|
40
|
+
/** A single optional action button. */
|
|
41
|
+
action?: ToastAction;
|
|
42
|
+
}
|
|
43
|
+
export interface ToastItem {
|
|
44
|
+
readonly id: string;
|
|
45
|
+
readonly title: string;
|
|
46
|
+
readonly description?: string;
|
|
47
|
+
readonly variant: ToastVariant;
|
|
48
|
+
readonly duration: number;
|
|
49
|
+
readonly action?: ToastAction;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Queues a toast and returns its id (usable with `dismissToast`). A no-op
|
|
53
|
+
* that returns `""` when called outside the browser: there is no client to
|
|
54
|
+
* show it to, and a module-level list surviving across requests on a
|
|
55
|
+
* long-lived server would leak toasts between unrelated users.
|
|
56
|
+
*/
|
|
57
|
+
export declare function toast(options: ToastOptions): string;
|
|
58
|
+
/** Dismisses a toast immediately and clears its timer. Safe to call with an id that no longer exists. */
|
|
59
|
+
export declare function dismissToast(id: string): void;
|
|
60
|
+
/**
|
|
61
|
+
* Pauses a toast's auto-dismiss countdown — e.g. while the pointer or focus
|
|
62
|
+
* is on it — so `resumeToast` can continue it rather than restart it. A
|
|
63
|
+
* no-op for a sticky toast or one already paused (or already unarmed for
|
|
64
|
+
* some other reason, e.g. no `<Toaster>` currently mounted to run it).
|
|
65
|
+
*/
|
|
66
|
+
export declare function pauseToast(id: string): void;
|
|
67
|
+
/**
|
|
68
|
+
* Resumes a paused toast's countdown from where it left off — the deadline
|
|
69
|
+
* shifts forward by exactly how long it spent paused, so the toast still
|
|
70
|
+
* gets the same amount of on-screen, unpaused time it was promised. A no-op
|
|
71
|
+
* if a live timer is already counting down (nothing to resume).
|
|
72
|
+
*/
|
|
73
|
+
export declare function resumeToast(id: string): void;
|
|
74
|
+
/**
|
|
75
|
+
* Clears every pending timer's *handle* without touching the toasts or their
|
|
76
|
+
* deadlines. `<Toaster>` calls this when it unmounts. Deliberately does not
|
|
77
|
+
* touch `deadline`: unmounting isn't pausing — there is no pointer left
|
|
78
|
+
* hovering anything for a destroyed viewport, so the countdown a toast was
|
|
79
|
+
* promised keeps running in real time whether or not something is currently
|
|
80
|
+
* rendering it. `rearmToastTimers` is the other half of this: whatever a new
|
|
81
|
+
* `<Toaster>` inherits gets a live timer again, counting toward the same
|
|
82
|
+
* deadline. Also clears any stale `pausedAt` — a pause tied to a hover/focus
|
|
83
|
+
* on a now-destroyed element cannot mean anything to whatever mounts next.
|
|
84
|
+
*/
|
|
85
|
+
export declare function clearAllToastTimers(): void;
|
|
86
|
+
/**
|
|
87
|
+
* Re-arms every timer left unarmed with nothing currently pausing it — i.e.
|
|
88
|
+
* every finite-duration toast whose previous `<Toaster>` went away before
|
|
89
|
+
* its time was up. Call this from a `<Toaster>`'s own mount: without it, a
|
|
90
|
+
* toast that outlives one viewport and is picked up by another stays
|
|
91
|
+
* visible forever with no timer ever going to dismiss it, since nothing else
|
|
92
|
+
* re-arms what `clearAllToastTimers` cleared. A deadline already in the past
|
|
93
|
+
* (the gap between viewports was longer than the time left) re-arms to a
|
|
94
|
+
* near-immediate dismiss through the same path, rather than a special case.
|
|
95
|
+
*/
|
|
96
|
+
export declare function rearmToastTimers(): void;
|
|
97
|
+
/** Read-only view of the current toast stack, oldest first. `<Toaster>` renders this directly; nothing else should need to. */
|
|
98
|
+
export declare const toastStore: {
|
|
99
|
+
readonly items: readonly ToastItem[];
|
|
100
|
+
/** Port-added: notifies on every stack change, for `useSyncExternalStore`. */
|
|
101
|
+
subscribe(listener: () => void): () => void;
|
|
102
|
+
};
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
const MAX_VISIBLE = 4;
|
|
3
|
+
const DEFAULT_DURATION = 5e3;
|
|
4
|
+
let items = [];
|
|
5
|
+
let seq = 0;
|
|
6
|
+
const listeners = /* @__PURE__ */ new Set();
|
|
7
|
+
function setItems(next) {
|
|
8
|
+
items = next;
|
|
9
|
+
for (const listener of [...listeners]) {
|
|
10
|
+
listener();
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
const timers = /* @__PURE__ */ new Map();
|
|
14
|
+
function clearHandle(id) {
|
|
15
|
+
const entry = timers.get(id);
|
|
16
|
+
if (entry?.handle !== void 0) {
|
|
17
|
+
clearTimeout(entry.handle);
|
|
18
|
+
entry.handle = void 0;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
function armHandle(id) {
|
|
22
|
+
const entry = timers.get(id);
|
|
23
|
+
if (!entry) return;
|
|
24
|
+
const ms = Math.max(0, entry.deadline - Date.now());
|
|
25
|
+
entry.handle = setTimeout(() => dismissToast(id), ms);
|
|
26
|
+
}
|
|
27
|
+
function toast(options) {
|
|
28
|
+
if (typeof window === "undefined") {
|
|
29
|
+
return "";
|
|
30
|
+
}
|
|
31
|
+
seq += 1;
|
|
32
|
+
const id = `toast-${seq}`;
|
|
33
|
+
const variant = options.variant ?? "info";
|
|
34
|
+
const duration = options.duration ?? (variant === "loading" ? Infinity : DEFAULT_DURATION);
|
|
35
|
+
const item = {
|
|
36
|
+
id,
|
|
37
|
+
title: options.title,
|
|
38
|
+
description: options.description,
|
|
39
|
+
variant,
|
|
40
|
+
duration,
|
|
41
|
+
action: options.action
|
|
42
|
+
};
|
|
43
|
+
const next = [...items, item];
|
|
44
|
+
if (next.length > MAX_VISIBLE) {
|
|
45
|
+
const evicted = next.shift();
|
|
46
|
+
if (evicted) {
|
|
47
|
+
clearHandle(evicted.id);
|
|
48
|
+
timers.delete(evicted.id);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
setItems(next);
|
|
52
|
+
if (Number.isFinite(duration)) {
|
|
53
|
+
timers.set(id, { handle: void 0, deadline: Date.now() + duration, pausedAt: void 0 });
|
|
54
|
+
armHandle(id);
|
|
55
|
+
}
|
|
56
|
+
return id;
|
|
57
|
+
}
|
|
58
|
+
function dismissToast(id) {
|
|
59
|
+
setItems(items.filter((item) => item.id !== id));
|
|
60
|
+
clearHandle(id);
|
|
61
|
+
timers.delete(id);
|
|
62
|
+
}
|
|
63
|
+
function pauseToast(id) {
|
|
64
|
+
const entry = timers.get(id);
|
|
65
|
+
if (!entry || entry.handle === void 0) return;
|
|
66
|
+
clearHandle(id);
|
|
67
|
+
entry.pausedAt = Date.now();
|
|
68
|
+
}
|
|
69
|
+
function resumeToast(id) {
|
|
70
|
+
const entry = timers.get(id);
|
|
71
|
+
if (!entry || entry.handle !== void 0) return;
|
|
72
|
+
if (entry.pausedAt !== void 0) {
|
|
73
|
+
entry.deadline += Date.now() - entry.pausedAt;
|
|
74
|
+
entry.pausedAt = void 0;
|
|
75
|
+
}
|
|
76
|
+
if (entry.deadline <= Date.now()) {
|
|
77
|
+
dismissToast(id);
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
armHandle(id);
|
|
81
|
+
}
|
|
82
|
+
function clearAllToastTimers() {
|
|
83
|
+
for (const entry of timers.values()) {
|
|
84
|
+
if (entry.handle !== void 0) {
|
|
85
|
+
clearTimeout(entry.handle);
|
|
86
|
+
entry.handle = void 0;
|
|
87
|
+
}
|
|
88
|
+
entry.pausedAt = void 0;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
function rearmToastTimers() {
|
|
92
|
+
for (const [id, entry] of timers) {
|
|
93
|
+
if (entry.handle !== void 0) continue;
|
|
94
|
+
if (entry.pausedAt !== void 0) continue;
|
|
95
|
+
armHandle(id);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
const toastStore = {
|
|
99
|
+
get items() {
|
|
100
|
+
return items;
|
|
101
|
+
},
|
|
102
|
+
/** Port-added: notifies on every stack change, for `useSyncExternalStore`. */
|
|
103
|
+
subscribe(listener) {
|
|
104
|
+
listeners.add(listener);
|
|
105
|
+
return () => {
|
|
106
|
+
listeners.delete(listener);
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
};
|
|
110
|
+
export {
|
|
111
|
+
clearAllToastTimers,
|
|
112
|
+
dismissToast,
|
|
113
|
+
pauseToast,
|
|
114
|
+
rearmToastTimers,
|
|
115
|
+
resumeToast,
|
|
116
|
+
toast,
|
|
117
|
+
toastStore
|
|
118
|
+
};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { ButtonHTMLAttributes, ReactNode } from "react";
|
|
2
|
+
export type ToggleSize = "sm" | "md" | "lg";
|
|
3
|
+
export type ToggleVariant = "ghost" | "outline";
|
|
4
|
+
type BaseProps = {
|
|
5
|
+
/** Whether the toggle is currently pressed (active) */
|
|
6
|
+
pressed?: boolean;
|
|
7
|
+
/** Called with the new pressed state whenever the toggle is activated */
|
|
8
|
+
onPressedChange?: (pressed: boolean) => void;
|
|
9
|
+
/** Visual size of the control */
|
|
10
|
+
size?: ToggleSize;
|
|
11
|
+
/** `"ghost"` has no resting border, `"outline"` keeps one at rest */
|
|
12
|
+
variant?: ToggleVariant;
|
|
13
|
+
/** Accessible name — required when `children` is icon-only */
|
|
14
|
+
label?: string;
|
|
15
|
+
/** Toggle content, typically a single glyph or a short label */
|
|
16
|
+
children?: ReactNode;
|
|
17
|
+
/** Additional CSS classes */
|
|
18
|
+
className?: string;
|
|
19
|
+
/**
|
|
20
|
+
* Plays the matching interface cue through the sound controller. Off by
|
|
21
|
+
* default; only audible once the user has enabled sound.
|
|
22
|
+
*/
|
|
23
|
+
sound?: boolean;
|
|
24
|
+
};
|
|
25
|
+
export interface ToggleProps extends BaseProps, Omit<ButtonHTMLAttributes<HTMLButtonElement>, keyof BaseProps> {
|
|
26
|
+
}
|
|
27
|
+
export declare const Toggle: import("react").ForwardRefExoticComponent<ToggleProps & import("react").RefAttributes<HTMLButtonElement>>;
|
|
28
|
+
export {};
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx } from "react/jsx-runtime";
|
|
3
|
+
import { forwardRef, useState } from "react";
|
|
4
|
+
import { cn } from "../../utils.js";
|
|
5
|
+
import { useSoundCue } from "../../sound/use-sound.js";
|
|
6
|
+
/* empty css */
|
|
7
|
+
const SIZE_CLASSES = {
|
|
8
|
+
sm: "size-[30px] rounded-[6px] text-xs",
|
|
9
|
+
md: "size-[36px] rounded-[8px] text-sm",
|
|
10
|
+
lg: "size-[42px] rounded-[10px] text-base"
|
|
11
|
+
};
|
|
12
|
+
const Toggle = forwardRef(
|
|
13
|
+
({
|
|
14
|
+
pressed: pressedProp,
|
|
15
|
+
onPressedChange,
|
|
16
|
+
disabled = false,
|
|
17
|
+
size = "md",
|
|
18
|
+
variant = "ghost",
|
|
19
|
+
label,
|
|
20
|
+
children,
|
|
21
|
+
className,
|
|
22
|
+
onClick,
|
|
23
|
+
sound = false,
|
|
24
|
+
...restProps
|
|
25
|
+
}, ref) => {
|
|
26
|
+
const [pressed, setPressed] = useState(pressedProp ?? false);
|
|
27
|
+
const playCue = useSoundCue(sound);
|
|
28
|
+
const classes = cn(
|
|
29
|
+
// No `transition-colors` here: the colocated CSS below declares a
|
|
30
|
+
// `transition` shorthand on this same element, and it is loaded after
|
|
31
|
+
// Tailwind's utility layer, so the utility would have been silently
|
|
32
|
+
// replaced anyway. The colour channel is re-declared by hand there
|
|
33
|
+
// instead.
|
|
34
|
+
"ft-toggle inline-flex shrink-0 cursor-pointer items-center justify-center font-medium",
|
|
35
|
+
"focus-visible:outline-none",
|
|
36
|
+
"disabled:pointer-events-none disabled:opacity-50",
|
|
37
|
+
SIZE_CLASSES[size],
|
|
38
|
+
variant === "outline" && "border border-border",
|
|
39
|
+
pressed ? "bg-secondary text-secondary-foreground" : "text-muted-foreground hover:bg-accent hover:text-accent-foreground",
|
|
40
|
+
className
|
|
41
|
+
);
|
|
42
|
+
function toggle(event) {
|
|
43
|
+
onClick?.(event);
|
|
44
|
+
if (disabled) return;
|
|
45
|
+
const next = !pressed;
|
|
46
|
+
setPressed(next);
|
|
47
|
+
playCue(next ? "toggle-on" : "toggle-off");
|
|
48
|
+
onPressedChange?.(next);
|
|
49
|
+
}
|
|
50
|
+
return /* @__PURE__ */ jsx(
|
|
51
|
+
"button",
|
|
52
|
+
{
|
|
53
|
+
ref,
|
|
54
|
+
type: "button",
|
|
55
|
+
className: classes,
|
|
56
|
+
"aria-pressed": pressed,
|
|
57
|
+
"aria-label": label,
|
|
58
|
+
disabled,
|
|
59
|
+
onClick: toggle,
|
|
60
|
+
...restProps,
|
|
61
|
+
children
|
|
62
|
+
}
|
|
63
|
+
);
|
|
64
|
+
}
|
|
65
|
+
);
|
|
66
|
+
Toggle.displayName = "Toggle";
|
|
67
|
+
export {
|
|
68
|
+
Toggle
|
|
69
|
+
};
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
export interface ToggleGroupProps {
|
|
3
|
+
/** Whether one item can be active at a time, or several. Defaults to `"single"`. */
|
|
4
|
+
type?: "single" | "multiple";
|
|
5
|
+
/**
|
|
6
|
+
* The active value(s) — a string when `type="single"`, an array of strings
|
|
7
|
+
* when `type="multiple"`. Omit it entirely to let the group own its own
|
|
8
|
+
* selection and report every change through `onValueChange`.
|
|
9
|
+
*/
|
|
10
|
+
value?: string | string[];
|
|
11
|
+
/** Called with the new value, shaped to match `type`, whenever the selection changes. */
|
|
12
|
+
onValueChange?: (value: string | string[]) => void;
|
|
13
|
+
/** Disables every item in the group. */
|
|
14
|
+
disabled?: boolean;
|
|
15
|
+
/** Sizes every item. */
|
|
16
|
+
size?: "sm" | "md" | "lg";
|
|
17
|
+
/** The rail's stacking axis. Arrow keys work in both pairs regardless — see the README. */
|
|
18
|
+
orientation?: "horizontal" | "vertical";
|
|
19
|
+
/** Accessible name for the group. */
|
|
20
|
+
label?: string;
|
|
21
|
+
/** The `ToggleGroupItem`s. */
|
|
22
|
+
children?: ReactNode;
|
|
23
|
+
/** Additional CSS classes */
|
|
24
|
+
className?: string;
|
|
25
|
+
/**
|
|
26
|
+
* Plays the matching interface cue through the sound controller. Off by
|
|
27
|
+
* default; only audible once the user has enabled sound.
|
|
28
|
+
*/
|
|
29
|
+
sound?: boolean;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* A rail of mutually-aware toggles with one selection model and one roving
|
|
33
|
+
* tab stop.
|
|
34
|
+
*
|
|
35
|
+
* The root element arrives through the ref channel rather than a `ref` prop,
|
|
36
|
+
* per PORTING.md — the Svelte source declares `ref = $bindable(null)`.
|
|
37
|
+
*
|
|
38
|
+
* Rest props are not spread: the Svelte source reads only these props off
|
|
39
|
+
* `$props()` and has no `...restProps`, so the port carries no wider
|
|
40
|
+
* attribute surface than the component it mirrors.
|
|
41
|
+
*/
|
|
42
|
+
export declare const ToggleGroup: import("react").ForwardRefExoticComponent<ToggleGroupProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx } from "react/jsx-runtime";
|
|
3
|
+
import { forwardRef, useRef, useState, useCallback } from "react";
|
|
4
|
+
import { cn } from "../../utils.js";
|
|
5
|
+
import { useComposedRefs } from "../../internals/dom/use-composed-refs.js";
|
|
6
|
+
import { useSoundCue } from "../../sound/use-sound.js";
|
|
7
|
+
import { TOGGLE_GROUP_KEY } from "./types.js";
|
|
8
|
+
/* empty css */
|
|
9
|
+
const ToggleGroup = forwardRef(
|
|
10
|
+
({
|
|
11
|
+
type = "single",
|
|
12
|
+
value: valueProp,
|
|
13
|
+
onValueChange,
|
|
14
|
+
disabled = false,
|
|
15
|
+
size = "md",
|
|
16
|
+
orientation = "horizontal",
|
|
17
|
+
label,
|
|
18
|
+
children,
|
|
19
|
+
className,
|
|
20
|
+
sound = false
|
|
21
|
+
}, forwardedRef) => {
|
|
22
|
+
const rootRef = useRef(null);
|
|
23
|
+
const setRootRef = useComposedRefs(forwardedRef, rootRef);
|
|
24
|
+
const [uncontrolledValue, setUncontrolledValue] = useState("");
|
|
25
|
+
const isControlled = valueProp !== void 0;
|
|
26
|
+
const value = isControlled ? valueProp : uncontrolledValue;
|
|
27
|
+
function toArray(current) {
|
|
28
|
+
if (type === "single") {
|
|
29
|
+
if (Array.isArray(current)) return current.length > 0 ? [current[0]] : [];
|
|
30
|
+
return current === "" ? [] : [current];
|
|
31
|
+
}
|
|
32
|
+
return Array.isArray(current) ? current : current === "" ? [] : [current];
|
|
33
|
+
}
|
|
34
|
+
const selected = toArray(value);
|
|
35
|
+
const [registeredOrder, setRegisteredOrder] = useState([]);
|
|
36
|
+
const [focusedValueState, setFocusedValueState] = useState(null);
|
|
37
|
+
const playCue = useSoundCue(sound);
|
|
38
|
+
function isSelected(itemValue) {
|
|
39
|
+
return selected.includes(itemValue);
|
|
40
|
+
}
|
|
41
|
+
function commit(next) {
|
|
42
|
+
if (type === "single") {
|
|
43
|
+
const shaped = next[0] ?? "";
|
|
44
|
+
if (!isControlled) setUncontrolledValue(shaped);
|
|
45
|
+
onValueChange?.(shaped);
|
|
46
|
+
} else {
|
|
47
|
+
if (!isControlled) setUncontrolledValue(next);
|
|
48
|
+
onValueChange?.(next);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
function toggle(itemValue) {
|
|
52
|
+
if (disabled) return;
|
|
53
|
+
const current = toArray(value);
|
|
54
|
+
const isOn = current.includes(itemValue);
|
|
55
|
+
playCue(type === "multiple" ? isOn ? "toggle-off" : "toggle-on" : "select");
|
|
56
|
+
if (type === "single") {
|
|
57
|
+
commit(isOn ? [] : [itemValue]);
|
|
58
|
+
} else {
|
|
59
|
+
commit(isOn ? current.filter((v) => v !== itemValue) : [...current, itemValue]);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
const register = useCallback((itemValue) => {
|
|
63
|
+
setRegisteredOrder((order) => order.includes(itemValue) ? order : [...order, itemValue]);
|
|
64
|
+
}, []);
|
|
65
|
+
const unregister = useCallback((itemValue) => {
|
|
66
|
+
setRegisteredOrder((order) => {
|
|
67
|
+
const index = order.indexOf(itemValue);
|
|
68
|
+
if (index === -1) return order;
|
|
69
|
+
const next = order.slice();
|
|
70
|
+
next.splice(index, 1);
|
|
71
|
+
return next;
|
|
72
|
+
});
|
|
73
|
+
}, []);
|
|
74
|
+
const focus = useCallback((itemValue) => {
|
|
75
|
+
setFocusedValueState(itemValue);
|
|
76
|
+
}, []);
|
|
77
|
+
const orderedEnabledButtons = useCallback(() => {
|
|
78
|
+
const root = rootRef.current;
|
|
79
|
+
if (!root) return [];
|
|
80
|
+
return Array.from(
|
|
81
|
+
root.querySelectorAll("[data-ft-toggle-item]:not(:disabled)")
|
|
82
|
+
);
|
|
83
|
+
}, []);
|
|
84
|
+
const goTo = useCallback((button) => {
|
|
85
|
+
const nextValue = button.dataset.value;
|
|
86
|
+
if (nextValue === void 0) return;
|
|
87
|
+
setFocusedValueState(nextValue);
|
|
88
|
+
button.focus();
|
|
89
|
+
}, []);
|
|
90
|
+
const move = useCallback(
|
|
91
|
+
(from, delta) => {
|
|
92
|
+
const buttons = orderedEnabledButtons();
|
|
93
|
+
if (buttons.length === 0) return;
|
|
94
|
+
const fromIndex = buttons.findIndex((el) => el.dataset.value === from);
|
|
95
|
+
const base = fromIndex === -1 ? 0 : fromIndex;
|
|
96
|
+
const nextIndex = ((base + delta) % buttons.length + buttons.length) % buttons.length;
|
|
97
|
+
goTo(buttons[nextIndex]);
|
|
98
|
+
},
|
|
99
|
+
[goTo, orderedEnabledButtons]
|
|
100
|
+
);
|
|
101
|
+
const moveToEdge = useCallback(
|
|
102
|
+
(edge) => {
|
|
103
|
+
const buttons = orderedEnabledButtons();
|
|
104
|
+
if (buttons.length === 0) return;
|
|
105
|
+
goTo(edge === "first" ? buttons[0] : buttons[buttons.length - 1]);
|
|
106
|
+
},
|
|
107
|
+
[goTo, orderedEnabledButtons]
|
|
108
|
+
);
|
|
109
|
+
let focusedValue = null;
|
|
110
|
+
if (focusedValueState !== null && registeredOrder.includes(focusedValueState)) {
|
|
111
|
+
focusedValue = focusedValueState;
|
|
112
|
+
} else if (registeredOrder.length > 0) {
|
|
113
|
+
focusedValue = registeredOrder.find((v) => selected.includes(v)) ?? registeredOrder[0];
|
|
114
|
+
}
|
|
115
|
+
const context = {
|
|
116
|
+
type,
|
|
117
|
+
value: selected,
|
|
118
|
+
disabled,
|
|
119
|
+
size,
|
|
120
|
+
orientation,
|
|
121
|
+
isSelected,
|
|
122
|
+
toggle,
|
|
123
|
+
register,
|
|
124
|
+
unregister,
|
|
125
|
+
focusedValue,
|
|
126
|
+
focus,
|
|
127
|
+
move,
|
|
128
|
+
moveToEdge
|
|
129
|
+
};
|
|
130
|
+
return /* @__PURE__ */ jsx(TOGGLE_GROUP_KEY.Provider, { value: context, children: /* @__PURE__ */ jsx(
|
|
131
|
+
"div",
|
|
132
|
+
{
|
|
133
|
+
ref: setRootRef,
|
|
134
|
+
className: cn(
|
|
135
|
+
"ft-toggle-group border-border bg-background inline-flex w-fit border",
|
|
136
|
+
orientation === "vertical" ? "flex-col" : "flex-row",
|
|
137
|
+
className
|
|
138
|
+
),
|
|
139
|
+
"data-orientation": orientation,
|
|
140
|
+
role: "group",
|
|
141
|
+
"aria-label": label,
|
|
142
|
+
children
|
|
143
|
+
}
|
|
144
|
+
) });
|
|
145
|
+
}
|
|
146
|
+
);
|
|
147
|
+
ToggleGroup.displayName = "ToggleGroup";
|
|
148
|
+
export {
|
|
149
|
+
ToggleGroup
|
|
150
|
+
};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
export interface ToggleGroupItemProps {
|
|
3
|
+
/** This item's value — what gets added to or removed from the group's selection. */
|
|
4
|
+
value: string;
|
|
5
|
+
/** Disables just this item, independent of the group's own `disabled`. */
|
|
6
|
+
disabled?: boolean;
|
|
7
|
+
/** Accessible name, for icon-only content. Falls back to the rendered content. */
|
|
8
|
+
label?: string;
|
|
9
|
+
/** The item's content, typically a glyph or a short label. */
|
|
10
|
+
children?: ReactNode;
|
|
11
|
+
/** Additional CSS classes */
|
|
12
|
+
className?: string;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* One toggle in a `ToggleGroup` rail.
|
|
16
|
+
*
|
|
17
|
+
* The element arrives through the ref channel rather than a `ref` prop, per
|
|
18
|
+
* PORTING.md — the Svelte source declares `ref = $bindable(null)`. Rest props
|
|
19
|
+
* are not spread, for the same reason as on the root.
|
|
20
|
+
*/
|
|
21
|
+
export declare const ToggleGroupItem: import("react").ForwardRefExoticComponent<ToggleGroupItemProps & import("react").RefAttributes<HTMLButtonElement>>;
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx } from "react/jsx-runtime";
|
|
3
|
+
import { forwardRef, useContext, useRef, useEffect } from "react";
|
|
4
|
+
import { cn } from "../../utils.js";
|
|
5
|
+
import { useComposedRefs } from "../../internals/dom/use-composed-refs.js";
|
|
6
|
+
import { TOGGLE_GROUP_KEY } from "./types.js";
|
|
7
|
+
/* empty css */
|
|
8
|
+
const SIZE_CLASSES = {
|
|
9
|
+
sm: "h-[26px] min-w-[26px] rounded-[4px] px-2 text-xs",
|
|
10
|
+
md: "h-[30px] min-w-[32px] rounded-[6px] px-2.5 text-sm",
|
|
11
|
+
lg: "h-[34px] min-w-[36px] rounded-[8px] px-3 text-base"
|
|
12
|
+
};
|
|
13
|
+
const ToggleGroupItem = forwardRef(
|
|
14
|
+
({ value, disabled = false, label, children, className }, forwardedRef) => {
|
|
15
|
+
const group = useContext(TOGGLE_GROUP_KEY);
|
|
16
|
+
const innerRef = useRef(null);
|
|
17
|
+
const setRef = useComposedRefs(forwardedRef, innerRef);
|
|
18
|
+
const isDisabled = disabled || (group?.disabled ?? false);
|
|
19
|
+
const isSelected = group?.isSelected(value) ?? false;
|
|
20
|
+
const size = group?.size ?? "md";
|
|
21
|
+
const tabIndexAttr = group ? group.focusedValue === value ? 0 : -1 : void 0;
|
|
22
|
+
const classes = cn(
|
|
23
|
+
// No `transition-colors`: the colocated stylesheet puts a `transition`
|
|
24
|
+
// shorthand on this same element, and its rules are unlayered while
|
|
25
|
+
// Tailwind utilities live in `@layer utilities`, so the utility
|
|
26
|
+
// would have been replaced without a trace. The colour channel is
|
|
27
|
+
// re-declared by hand there instead.
|
|
28
|
+
"ft-toggle-group-item inline-flex shrink-0 cursor-pointer items-center justify-center font-medium",
|
|
29
|
+
"focus-visible:outline-none",
|
|
30
|
+
"disabled:pointer-events-none disabled:opacity-50",
|
|
31
|
+
SIZE_CLASSES[size],
|
|
32
|
+
isSelected ? "bg-secondary text-secondary-foreground" : "text-muted-foreground hover:bg-accent hover:text-accent-foreground",
|
|
33
|
+
className
|
|
34
|
+
);
|
|
35
|
+
const register = group?.register;
|
|
36
|
+
const unregister = group?.unregister;
|
|
37
|
+
useEffect(() => {
|
|
38
|
+
if (!register || !unregister || isDisabled) return;
|
|
39
|
+
const registeredValue = value;
|
|
40
|
+
register(registeredValue);
|
|
41
|
+
return () => unregister(registeredValue);
|
|
42
|
+
}, [register, unregister, isDisabled, value]);
|
|
43
|
+
function handleClick() {
|
|
44
|
+
if (isDisabled) return;
|
|
45
|
+
group?.toggle(value);
|
|
46
|
+
group?.focus(value);
|
|
47
|
+
innerRef.current?.focus();
|
|
48
|
+
}
|
|
49
|
+
function handleFocus() {
|
|
50
|
+
if (isDisabled) return;
|
|
51
|
+
group?.focus(value);
|
|
52
|
+
}
|
|
53
|
+
function handleKeydown(event) {
|
|
54
|
+
if (!group || isDisabled) return;
|
|
55
|
+
switch (event.key) {
|
|
56
|
+
case "ArrowRight":
|
|
57
|
+
case "ArrowDown":
|
|
58
|
+
event.preventDefault();
|
|
59
|
+
group.move(value, 1);
|
|
60
|
+
break;
|
|
61
|
+
case "ArrowLeft":
|
|
62
|
+
case "ArrowUp":
|
|
63
|
+
event.preventDefault();
|
|
64
|
+
group.move(value, -1);
|
|
65
|
+
break;
|
|
66
|
+
case "Home":
|
|
67
|
+
event.preventDefault();
|
|
68
|
+
group.moveToEdge("first");
|
|
69
|
+
break;
|
|
70
|
+
case "End":
|
|
71
|
+
event.preventDefault();
|
|
72
|
+
group.moveToEdge("last");
|
|
73
|
+
break;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
return /* @__PURE__ */ jsx(
|
|
77
|
+
"button",
|
|
78
|
+
{
|
|
79
|
+
ref: setRef,
|
|
80
|
+
type: "button",
|
|
81
|
+
"data-ft-toggle-item": "",
|
|
82
|
+
"data-value": value,
|
|
83
|
+
"data-size": size,
|
|
84
|
+
className: classes,
|
|
85
|
+
disabled: isDisabled,
|
|
86
|
+
"aria-pressed": isSelected,
|
|
87
|
+
"aria-label": label,
|
|
88
|
+
tabIndex: tabIndexAttr,
|
|
89
|
+
onClick: handleClick,
|
|
90
|
+
onFocus: handleFocus,
|
|
91
|
+
onKeyDown: handleKeydown,
|
|
92
|
+
children: children !== void 0 ? children : label ?? value
|
|
93
|
+
}
|
|
94
|
+
);
|
|
95
|
+
}
|
|
96
|
+
);
|
|
97
|
+
ToggleGroupItem.displayName = "ToggleGroupItem";
|
|
98
|
+
export {
|
|
99
|
+
ToggleGroupItem
|
|
100
|
+
};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { ToggleGroup } from "./ToggleGroup.js";
|
|
2
|
+
export type { ToggleGroupProps } from "./ToggleGroup.js";
|
|
3
|
+
export { ToggleGroupItem } from "./ToggleGroupItem.js";
|
|
4
|
+
export type { ToggleGroupItemProps } from "./ToggleGroupItem.js";
|
|
5
|
+
export { TOGGLE_GROUP_KEY } from "./types.js";
|
|
6
|
+
export type { ToggleGroupContext } from "./types.js";
|