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,87 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useState, useCallback, useRef } from "react";
|
|
3
|
+
import { attachAnchorPosition } from "./anchor-position.js";
|
|
4
|
+
import { useIsomorphicLayoutEffect } from "./dom/ssr.js";
|
|
5
|
+
import { useEventCallback } from "./dom/use-event-callback.js";
|
|
6
|
+
import { useLiveRef } from "./dom/use-live-ref.js";
|
|
7
|
+
function useAnchorPosition(node, options) {
|
|
8
|
+
const { side = "bottom", align = "center", offset, enabled = true, recomputeKey } = options;
|
|
9
|
+
const [placement, setPlacement] = useState(() => ({ side, align }));
|
|
10
|
+
const anchorRef = useLiveRef(options.anchor);
|
|
11
|
+
const sideRef = useLiveRef(side);
|
|
12
|
+
const alignRef = useLiveRef(align);
|
|
13
|
+
const offsetRef = useLiveRef(offset);
|
|
14
|
+
const recomputeKeyRef = useLiveRef(recomputeKey);
|
|
15
|
+
const resolveAnchor = useCallback(() => {
|
|
16
|
+
const anchor = anchorRef.current;
|
|
17
|
+
if (!anchor) return null;
|
|
18
|
+
if (typeof anchor === "function") return anchor();
|
|
19
|
+
if ("current" in anchor) return anchor.current;
|
|
20
|
+
return anchor;
|
|
21
|
+
}, [anchorRef]);
|
|
22
|
+
const onPlacement = useEventCallback(options.onPlacement);
|
|
23
|
+
const handlePlacement = useCallback(
|
|
24
|
+
(nextSide, nextAlign) => {
|
|
25
|
+
setPlacement(
|
|
26
|
+
(prev) => prev.side === nextSide && prev.align === nextAlign ? prev : { side: nextSide, align: nextAlign }
|
|
27
|
+
);
|
|
28
|
+
onPlacement(nextSide, nextAlign);
|
|
29
|
+
},
|
|
30
|
+
[onPlacement]
|
|
31
|
+
);
|
|
32
|
+
const handleRef = useRef(null);
|
|
33
|
+
const appliedRef = useRef(null);
|
|
34
|
+
useIsomorphicLayoutEffect(() => {
|
|
35
|
+
if (!node || !enabled) return;
|
|
36
|
+
const handle = attachAnchorPosition(node, {
|
|
37
|
+
anchor: resolveAnchor,
|
|
38
|
+
side: sideRef.current,
|
|
39
|
+
align: alignRef.current,
|
|
40
|
+
offset: offsetRef.current,
|
|
41
|
+
onPlacement: handlePlacement
|
|
42
|
+
});
|
|
43
|
+
handleRef.current = handle;
|
|
44
|
+
appliedRef.current = {
|
|
45
|
+
side: sideRef.current,
|
|
46
|
+
align: alignRef.current,
|
|
47
|
+
offset: offsetRef.current,
|
|
48
|
+
anchor: resolveAnchor(),
|
|
49
|
+
recomputeKey: recomputeKeyRef.current
|
|
50
|
+
};
|
|
51
|
+
return () => {
|
|
52
|
+
handleRef.current = null;
|
|
53
|
+
appliedRef.current = null;
|
|
54
|
+
handle.destroy();
|
|
55
|
+
};
|
|
56
|
+
}, [
|
|
57
|
+
node,
|
|
58
|
+
enabled,
|
|
59
|
+
resolveAnchor,
|
|
60
|
+
handlePlacement,
|
|
61
|
+
sideRef,
|
|
62
|
+
alignRef,
|
|
63
|
+
offsetRef,
|
|
64
|
+
recomputeKeyRef
|
|
65
|
+
]);
|
|
66
|
+
useIsomorphicLayoutEffect(() => {
|
|
67
|
+
const handle = handleRef.current;
|
|
68
|
+
const applied = appliedRef.current;
|
|
69
|
+
if (!handle || !applied) return;
|
|
70
|
+
const nextAnchor = resolveAnchor();
|
|
71
|
+
if (applied.side === side && applied.align === align && applied.offset === offset && applied.anchor === nextAnchor && applied.recomputeKey === recomputeKey) {
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
appliedRef.current = { side, align, offset, anchor: nextAnchor, recomputeKey };
|
|
75
|
+
handle.update({
|
|
76
|
+
anchor: resolveAnchor,
|
|
77
|
+
side,
|
|
78
|
+
align,
|
|
79
|
+
offset,
|
|
80
|
+
onPlacement: handlePlacement
|
|
81
|
+
});
|
|
82
|
+
}, [node, side, align, offset, recomputeKey, options.anchor, resolveAnchor, handlePlacement]);
|
|
83
|
+
return placement;
|
|
84
|
+
}
|
|
85
|
+
export {
|
|
86
|
+
useAnchorPosition
|
|
87
|
+
};
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Autoscroll (scroll anchor)
|
|
3
|
+
*
|
|
4
|
+
* Keeps a scrollable container pinned to its bottom edge while new content
|
|
5
|
+
* streams in, and lets go the moment the reader scrolls up to look back.
|
|
6
|
+
*
|
|
7
|
+
* "Stuck" is a pure function of the distance from the bottom, recomputed on
|
|
8
|
+
* every scroll event. There is no programmatic-scroll flag to get out of
|
|
9
|
+
* sync: whatever the scrollbar says is the truth. It stays a closure
|
|
10
|
+
* variable in `attachAutoscroll` — never React state — for exactly that
|
|
11
|
+
* reason.
|
|
12
|
+
*/
|
|
13
|
+
export interface AutoscrollOptions {
|
|
14
|
+
/** Set to false to release the container and disconnect every listener. */
|
|
15
|
+
enabled?: boolean;
|
|
16
|
+
/** How close to the bottom (px) still counts as pinned. */
|
|
17
|
+
bottomThreshold?: number;
|
|
18
|
+
/**
|
|
19
|
+
* Start pinned and jump to the bottom on connect, whatever the
|
|
20
|
+
* container's scroll position says. For a region that mounts with
|
|
21
|
+
* content already in it — a reasoning trace joined mid-stream, a
|
|
22
|
+
* replayed transcript — a fresh container sits at scrollTop 0, which
|
|
23
|
+
* reads as "the reader scrolled up" and would leave every later chunk
|
|
24
|
+
* stranded at the top.
|
|
25
|
+
*/
|
|
26
|
+
pinOnConnect?: boolean;
|
|
27
|
+
/** Called only when the pinned state flips, never on every scroll. */
|
|
28
|
+
onStickChange?: (stuck: boolean) => void;
|
|
29
|
+
}
|
|
30
|
+
/** Jump a container to its bottom. Smooth by default. */
|
|
31
|
+
export declare function scrollToBottom(node: HTMLElement, behavior?: ScrollBehavior): void;
|
|
32
|
+
export interface AutoscrollHandle {
|
|
33
|
+
update(next: AutoscrollOptions): void;
|
|
34
|
+
destroy(): void;
|
|
35
|
+
}
|
|
36
|
+
export declare function attachAutoscroll(node: HTMLElement, opts?: AutoscrollOptions): AutoscrollHandle;
|
|
37
|
+
/**
|
|
38
|
+
* Keeps `node` pinned to its bottom edge while content streams in. Mounts
|
|
39
|
+
* and destroys the core in a layout effect — `pinOnConnect`'s jump writes
|
|
40
|
+
* `scrollTop`, and a post-paint write is a visible jump — and re-syncs
|
|
41
|
+
* whenever an option that changes the pinning rules changes.
|
|
42
|
+
*/
|
|
43
|
+
export declare function useAutoscroll(node: HTMLElement | null, options?: AutoscrollOptions): void;
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useRef } from "react";
|
|
3
|
+
import { useEventCallback } from "./dom/use-event-callback.js";
|
|
4
|
+
import { useIsomorphicLayoutEffect } from "./dom/ssr.js";
|
|
5
|
+
const DEFAULT_BOTTOM_THRESHOLD = 40;
|
|
6
|
+
function scrollToBottom(node, behavior = "smooth") {
|
|
7
|
+
if (typeof node.scrollTo === "function") {
|
|
8
|
+
node.scrollTo({ top: node.scrollHeight, behavior });
|
|
9
|
+
} else {
|
|
10
|
+
node.scrollTop = node.scrollHeight;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
function attachAutoscroll(node, opts = {}) {
|
|
14
|
+
let options = opts;
|
|
15
|
+
let frame = null;
|
|
16
|
+
let mutations = null;
|
|
17
|
+
let resizes = null;
|
|
18
|
+
let connected = false;
|
|
19
|
+
function isAtBottom() {
|
|
20
|
+
const threshold = options.bottomThreshold ?? DEFAULT_BOTTOM_THRESHOLD;
|
|
21
|
+
return node.scrollHeight - node.scrollTop - node.clientHeight <= threshold;
|
|
22
|
+
}
|
|
23
|
+
let stuck = isAtBottom();
|
|
24
|
+
function handleScroll() {
|
|
25
|
+
const next = isAtBottom();
|
|
26
|
+
if (next === stuck) return;
|
|
27
|
+
stuck = next;
|
|
28
|
+
options.onStickChange?.(next);
|
|
29
|
+
}
|
|
30
|
+
function pin() {
|
|
31
|
+
frame = null;
|
|
32
|
+
if (!stuck) return;
|
|
33
|
+
node.scrollTop = node.scrollHeight;
|
|
34
|
+
}
|
|
35
|
+
function schedulePin() {
|
|
36
|
+
if (!stuck || frame !== null) return;
|
|
37
|
+
frame = requestAnimationFrame(pin);
|
|
38
|
+
}
|
|
39
|
+
function observeRows(records) {
|
|
40
|
+
if (!resizes) return;
|
|
41
|
+
for (const record of records) {
|
|
42
|
+
if (record.target !== node) continue;
|
|
43
|
+
for (const added of record.addedNodes) {
|
|
44
|
+
if (added instanceof Element) resizes.observe(added);
|
|
45
|
+
}
|
|
46
|
+
for (const removed of record.removedNodes) {
|
|
47
|
+
if (removed instanceof Element) resizes.unobserve(removed);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
function restick() {
|
|
52
|
+
if (stuck || !isAtBottom()) return;
|
|
53
|
+
stuck = true;
|
|
54
|
+
options.onStickChange?.(true);
|
|
55
|
+
}
|
|
56
|
+
function handleMutations(records) {
|
|
57
|
+
observeRows(records);
|
|
58
|
+
restick();
|
|
59
|
+
schedulePin();
|
|
60
|
+
}
|
|
61
|
+
function handleResize() {
|
|
62
|
+
restick();
|
|
63
|
+
schedulePin();
|
|
64
|
+
}
|
|
65
|
+
function connect() {
|
|
66
|
+
if (connected) return;
|
|
67
|
+
connected = true;
|
|
68
|
+
if (options.pinOnConnect) {
|
|
69
|
+
stuck = true;
|
|
70
|
+
node.scrollTop = node.scrollHeight;
|
|
71
|
+
}
|
|
72
|
+
node.addEventListener("scroll", handleScroll, { passive: true });
|
|
73
|
+
mutations = new MutationObserver(handleMutations);
|
|
74
|
+
mutations.observe(node, { childList: true, subtree: true, characterData: true });
|
|
75
|
+
if (typeof ResizeObserver !== "undefined") {
|
|
76
|
+
resizes = new ResizeObserver(handleResize);
|
|
77
|
+
resizes.observe(node);
|
|
78
|
+
for (const row of node.children) resizes.observe(row);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
function disconnect() {
|
|
82
|
+
connected = false;
|
|
83
|
+
node.removeEventListener("scroll", handleScroll);
|
|
84
|
+
mutations?.disconnect();
|
|
85
|
+
mutations = null;
|
|
86
|
+
resizes?.disconnect();
|
|
87
|
+
resizes = null;
|
|
88
|
+
if (frame !== null) {
|
|
89
|
+
cancelAnimationFrame(frame);
|
|
90
|
+
frame = null;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
if (options.enabled !== false) connect();
|
|
94
|
+
return {
|
|
95
|
+
update(next = {}) {
|
|
96
|
+
const wasConnected = connected;
|
|
97
|
+
options = next;
|
|
98
|
+
if (next.enabled === false) {
|
|
99
|
+
disconnect();
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
connect();
|
|
103
|
+
if (wasConnected) handleScroll();
|
|
104
|
+
},
|
|
105
|
+
destroy: disconnect
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
function useAutoscroll(node, options = {}) {
|
|
109
|
+
const handleRef = useRef(null);
|
|
110
|
+
const onStickChange = useEventCallback(options.onStickChange);
|
|
111
|
+
useIsomorphicLayoutEffect(() => {
|
|
112
|
+
if (!node) return;
|
|
113
|
+
const handle = attachAutoscroll(node, { ...options, onStickChange });
|
|
114
|
+
handleRef.current = handle;
|
|
115
|
+
return () => {
|
|
116
|
+
handle.destroy();
|
|
117
|
+
handleRef.current = null;
|
|
118
|
+
};
|
|
119
|
+
}, [node]);
|
|
120
|
+
useIsomorphicLayoutEffect(() => {
|
|
121
|
+
handleRef.current?.update({ ...options, onStickChange });
|
|
122
|
+
}, [node, options.enabled, options.bottomThreshold, onStickChange]);
|
|
123
|
+
}
|
|
124
|
+
export {
|
|
125
|
+
attachAutoscroll,
|
|
126
|
+
scrollToBottom,
|
|
127
|
+
useAutoscroll
|
|
128
|
+
};
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copy-to-clipboard state.
|
|
3
|
+
*
|
|
4
|
+
* Wraps the async clipboard write in a `copied` flag that falls back to
|
|
5
|
+
* `false` on its own, so a button can show a transient "Copied!" label
|
|
6
|
+
* without owning a timer. Nothing is scheduled at construction, and the
|
|
7
|
+
* clipboard API is only touched inside `copy()`, which keeps `createCopy`
|
|
8
|
+
* safe to call during a render.
|
|
9
|
+
*/
|
|
10
|
+
export interface CopyState {
|
|
11
|
+
/** True from a successful copy until `resetMs` has elapsed. */
|
|
12
|
+
readonly copied: boolean;
|
|
13
|
+
/** Writes `text` to the clipboard. Resolves false instead of throwing. */
|
|
14
|
+
copy(text: string): Promise<boolean>;
|
|
15
|
+
/** Cancels a pending reset. Call from the consumer's teardown. */
|
|
16
|
+
destroy(): void;
|
|
17
|
+
/**
|
|
18
|
+
* Undoes a `destroy()`, so the instance accepts copies again.
|
|
19
|
+
*
|
|
20
|
+
* Not part of the Svelte source's surface, and needed for the same
|
|
21
|
+
* reason `subscribe` is: Svelte runs a teardown exactly once, at the end
|
|
22
|
+
* of the owner's life, so `destroyed` there is a one-way latch. React
|
|
23
|
+
* runs the whole mount/teardown/mount rehearsal in development
|
|
24
|
+
* StrictMode, which latches `destroyed` on an instance that is about to
|
|
25
|
+
* be used for real — after which `copy()` returns early forever and
|
|
26
|
+
* `copied` never flips. `useCopy` pairs `arm()` with `destroy()` in one
|
|
27
|
+
* effect so the rehearsal is a no-op; a pure-factory consumer that calls
|
|
28
|
+
* `destroy()` once never touches this.
|
|
29
|
+
*/
|
|
30
|
+
arm(): void;
|
|
31
|
+
/**
|
|
32
|
+
* Subscribe to every change of `copied`. Not part of the Svelte source's
|
|
33
|
+
* surface — the React counterpart of the `$state` rune that made `copied`
|
|
34
|
+
* reactive there; `useCopy` is what actually reads this.
|
|
35
|
+
*/
|
|
36
|
+
subscribe(listener: () => void): () => void;
|
|
37
|
+
}
|
|
38
|
+
export declare function createCopy(resetMs?: number): CopyState;
|
|
39
|
+
export interface UseCopyResult {
|
|
40
|
+
readonly copied: boolean;
|
|
41
|
+
copy(text: string): Promise<boolean>;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* `copied` flips true on a successful `copy()` and resets after `resetMs`.
|
|
45
|
+
* Built once per component instance; `destroy()` — the direct analogue of
|
|
46
|
+
* the source's "call from the consumer's teardown" — runs in the hook's own
|
|
47
|
+
* cleanup, so it can never be forgotten (D-5).
|
|
48
|
+
*
|
|
49
|
+
* The effect arms the instance on the way in and destroys it on the way out,
|
|
50
|
+
* as one pair. StrictMode's mount/teardown/mount rehearsal therefore leaves
|
|
51
|
+
* a live, usable instance behind instead of a permanently destroyed one; a
|
|
52
|
+
* real unmount still ends on `destroy()`, since nothing arms it again.
|
|
53
|
+
*/
|
|
54
|
+
export declare function useCopy(resetMs?: number): UseCopyResult;
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useSyncExternalStore, useEffect } from "react";
|
|
3
|
+
import { useConstant } from "./dom/ssr.js";
|
|
4
|
+
function createCopy(resetMs = 2e3) {
|
|
5
|
+
let copied = false;
|
|
6
|
+
let timer;
|
|
7
|
+
let destroyed = false;
|
|
8
|
+
let ticket = 0;
|
|
9
|
+
const listeners = /* @__PURE__ */ new Set();
|
|
10
|
+
function notify() {
|
|
11
|
+
for (const listener of listeners) listener();
|
|
12
|
+
}
|
|
13
|
+
function clearTimer() {
|
|
14
|
+
if (timer !== void 0) {
|
|
15
|
+
clearTimeout(timer);
|
|
16
|
+
timer = void 0;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
return {
|
|
20
|
+
get copied() {
|
|
21
|
+
return copied;
|
|
22
|
+
},
|
|
23
|
+
async copy(text) {
|
|
24
|
+
if (typeof navigator === "undefined" || !navigator.clipboard?.writeText) return false;
|
|
25
|
+
const mine = ++ticket;
|
|
26
|
+
try {
|
|
27
|
+
await navigator.clipboard.writeText(text);
|
|
28
|
+
} catch {
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
if (destroyed || mine !== ticket) return true;
|
|
32
|
+
copied = true;
|
|
33
|
+
notify();
|
|
34
|
+
clearTimer();
|
|
35
|
+
timer = setTimeout(() => {
|
|
36
|
+
copied = false;
|
|
37
|
+
timer = void 0;
|
|
38
|
+
notify();
|
|
39
|
+
}, resetMs);
|
|
40
|
+
return true;
|
|
41
|
+
},
|
|
42
|
+
destroy() {
|
|
43
|
+
destroyed = true;
|
|
44
|
+
clearTimer();
|
|
45
|
+
},
|
|
46
|
+
arm() {
|
|
47
|
+
destroyed = false;
|
|
48
|
+
},
|
|
49
|
+
subscribe(listener) {
|
|
50
|
+
listeners.add(listener);
|
|
51
|
+
return () => listeners.delete(listener);
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
function useCopy(resetMs = 2e3) {
|
|
56
|
+
const state = useConstant(() => createCopy(resetMs));
|
|
57
|
+
const copied = useSyncExternalStore(state.subscribe, () => state.copied, () => state.copied);
|
|
58
|
+
useEffect(() => {
|
|
59
|
+
state.arm();
|
|
60
|
+
return state.destroy;
|
|
61
|
+
}, [state]);
|
|
62
|
+
return { copied, copy: state.copy };
|
|
63
|
+
}
|
|
64
|
+
export {
|
|
65
|
+
createCopy,
|
|
66
|
+
useCopy
|
|
67
|
+
};
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Elapsed-time state.
|
|
3
|
+
*
|
|
4
|
+
* Every value is derived from the wall clock (`Date.now() - since`) on each
|
|
5
|
+
* tick rather than accumulated tick by tick, so a throttled background tab
|
|
6
|
+
* that fires one interval instead of sixty still reports the true elapsed
|
|
7
|
+
* duration.
|
|
8
|
+
*
|
|
9
|
+
* Nothing is scheduled at construction time: timers only exist between
|
|
10
|
+
* `start()` and `stop()`, which keeps `createElapsed`/`createNow` safe to
|
|
11
|
+
* build during a render. Consumers start them from an effect — `useElapsed`
|
|
12
|
+
* and `useNow` do this for you.
|
|
13
|
+
*/
|
|
14
|
+
/**
|
|
15
|
+
* Format a duration in milliseconds as a compact stopwatch string:
|
|
16
|
+
* `"0s"`, `"42s"`, `"1m 05s"`, `"1h 03m"`. Negative and non-finite input
|
|
17
|
+
* collapses to `"0s"`.
|
|
18
|
+
*/
|
|
19
|
+
export declare function formatElapsed(ms: number): string;
|
|
20
|
+
export interface ElapsedOptions {
|
|
21
|
+
/** Epoch ms the duration is measured from. Defaults to the moment `start()` runs. */
|
|
22
|
+
since?: number;
|
|
23
|
+
/** How often the reported value refreshes. Defaults to 1000. */
|
|
24
|
+
tickMs?: number;
|
|
25
|
+
}
|
|
26
|
+
export interface ElapsedState {
|
|
27
|
+
readonly ms: number;
|
|
28
|
+
readonly text: string;
|
|
29
|
+
readonly running: boolean;
|
|
30
|
+
/** Start (or restart) ticking. Returns the matching stop function. */
|
|
31
|
+
start(since?: number): () => void;
|
|
32
|
+
stop(): void;
|
|
33
|
+
/**
|
|
34
|
+
* Subscribe to every change of `ms`/`running`. Not part of the Svelte
|
|
35
|
+
* source's surface — the React counterpart of the `$state` runes that
|
|
36
|
+
* made `ms`/`running` reactive there; `useElapsed` is what actually reads
|
|
37
|
+
* this. Pure factory consumers never need it.
|
|
38
|
+
*/
|
|
39
|
+
subscribe(listener: () => void): () => void;
|
|
40
|
+
}
|
|
41
|
+
/** Reactive stopwatch: milliseconds since `since`, refreshed every `tickMs`. */
|
|
42
|
+
export declare function createElapsed(opts?: ElapsedOptions): ElapsedState;
|
|
43
|
+
export interface NowState {
|
|
44
|
+
readonly value: number;
|
|
45
|
+
/** Start refreshing. Returns the matching stop function. */
|
|
46
|
+
start(): () => void;
|
|
47
|
+
stop(): void;
|
|
48
|
+
/** Subscribe to every refresh. See `ElapsedState.subscribe`. */
|
|
49
|
+
subscribe(listener: () => void): () => void;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* A single shared "now" that a whole list can read, so a thread of fifty
|
|
53
|
+
* timestamps costs one interval instead of fifty.
|
|
54
|
+
*/
|
|
55
|
+
export declare function createNow(refreshMs?: number): NowState;
|
|
56
|
+
export interface UseElapsedResult {
|
|
57
|
+
readonly ms: number;
|
|
58
|
+
readonly text: string;
|
|
59
|
+
readonly running: boolean;
|
|
60
|
+
start(since?: number): () => void;
|
|
61
|
+
stop(): void;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Reactive stopwatch. Built once (`ElapsedOptions` is read only at mount,
|
|
65
|
+
* matching the Svelte source's `createElapsed(opts)` call site — a changed
|
|
66
|
+
* `tickMs`/`since` prop does not retarget a running timer) and subscribed
|
|
67
|
+
* through `useSyncExternalStore`; `text` is derived per render from `ms`,
|
|
68
|
+
* exactly as the source's getter does. Nothing is scheduled by the hook
|
|
69
|
+
* itself — call the returned `start()` from your own effect or handler,
|
|
70
|
+
* same as the Svelte side.
|
|
71
|
+
*
|
|
72
|
+
* A client-only render reads the live value straight away, exactly as
|
|
73
|
+
* before; only a hydration render takes the deterministic seed, and the
|
|
74
|
+
* layout effect below replaces it before the first paint.
|
|
75
|
+
*/
|
|
76
|
+
export declare function useElapsed(options?: ElapsedOptions): UseElapsedResult;
|
|
77
|
+
/**
|
|
78
|
+
* A shared "now", refreshed every `refreshMs` (30s by default) and reused by
|
|
79
|
+
* every `useNow` call in the tree — the React-native form of `createNow`'s
|
|
80
|
+
* whole reason for existing: a thread of fifty timestamps shares one
|
|
81
|
+
* interval instead of paying for fifty. The refresh cadence is set by
|
|
82
|
+
* whichever consumer mounts first; a later `useNow` with a different
|
|
83
|
+
* `refreshMs` shares the interval already running rather than starting a
|
|
84
|
+
* second one. The interval stops once the last consumer unmounts.
|
|
85
|
+
*
|
|
86
|
+
* Before the first consumer anywhere on the page has mounted, the clock has
|
|
87
|
+
* no value to give and the hook returns `NaN` — the sentinel a server render
|
|
88
|
+
* and the hydration render that follows it are guaranteed to agree on, and
|
|
89
|
+
* the one `formatRelativeTime` turns into an empty label rather than a wrong
|
|
90
|
+
* one. Callers must therefore either pass the value straight to
|
|
91
|
+
* `formatRelativeTime` (which guards it) or check `Number.isFinite` before
|
|
92
|
+
* doing arithmetic with it. Every later consumer, including one that mounts
|
|
93
|
+
* after the clock has been torn down and rebuilt, renders a real timestamp
|
|
94
|
+
* immediately.
|
|
95
|
+
*/
|
|
96
|
+
export declare function useNow(refreshMs?: number): number;
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useSyncExternalStore, useReducer, useEffect } from "react";
|
|
3
|
+
import { useIsomorphicLayoutEffect, useConstant } from "./dom/ssr.js";
|
|
4
|
+
import { useLiveRef } from "./dom/use-live-ref.js";
|
|
5
|
+
const MINUTE = 6e4;
|
|
6
|
+
const HOUR = 36e5;
|
|
7
|
+
function pad(value) {
|
|
8
|
+
return value < 10 ? `0${value}` : String(value);
|
|
9
|
+
}
|
|
10
|
+
function formatElapsed(ms) {
|
|
11
|
+
if (!Number.isFinite(ms) || ms <= 0) return "0s";
|
|
12
|
+
const seconds = Math.floor(ms / 1e3);
|
|
13
|
+
if (ms < MINUTE) return `${seconds}s`;
|
|
14
|
+
if (ms < HOUR) return `${Math.floor(ms / MINUTE)}m ${pad(seconds % 60)}s`;
|
|
15
|
+
return `${Math.floor(ms / HOUR)}h ${pad(Math.floor(ms % HOUR / MINUTE))}m`;
|
|
16
|
+
}
|
|
17
|
+
function createElapsed(opts = {}) {
|
|
18
|
+
const tickMs = opts.tickMs ?? 1e3;
|
|
19
|
+
let since = opts.since;
|
|
20
|
+
let ms = since === void 0 ? 0 : Math.max(0, Date.now() - since);
|
|
21
|
+
let running = false;
|
|
22
|
+
let timer;
|
|
23
|
+
const listeners = /* @__PURE__ */ new Set();
|
|
24
|
+
function notify() {
|
|
25
|
+
for (const listener of listeners) listener();
|
|
26
|
+
}
|
|
27
|
+
function sync() {
|
|
28
|
+
ms = Math.max(0, Date.now() - since);
|
|
29
|
+
notify();
|
|
30
|
+
}
|
|
31
|
+
function stop() {
|
|
32
|
+
if (timer !== void 0) {
|
|
33
|
+
clearInterval(timer);
|
|
34
|
+
timer = void 0;
|
|
35
|
+
}
|
|
36
|
+
if (running) {
|
|
37
|
+
running = false;
|
|
38
|
+
notify();
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
function start(nextSince) {
|
|
42
|
+
stop();
|
|
43
|
+
since = nextSince ?? since ?? Date.now();
|
|
44
|
+
sync();
|
|
45
|
+
running = true;
|
|
46
|
+
timer = setInterval(sync, tickMs);
|
|
47
|
+
notify();
|
|
48
|
+
return stop;
|
|
49
|
+
}
|
|
50
|
+
return {
|
|
51
|
+
get ms() {
|
|
52
|
+
return ms;
|
|
53
|
+
},
|
|
54
|
+
get text() {
|
|
55
|
+
return formatElapsed(ms);
|
|
56
|
+
},
|
|
57
|
+
get running() {
|
|
58
|
+
return running;
|
|
59
|
+
},
|
|
60
|
+
start,
|
|
61
|
+
stop,
|
|
62
|
+
subscribe(listener) {
|
|
63
|
+
listeners.add(listener);
|
|
64
|
+
return () => listeners.delete(listener);
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
function createNow(refreshMs = 3e4) {
|
|
69
|
+
let value = Date.now();
|
|
70
|
+
let timer;
|
|
71
|
+
const listeners = /* @__PURE__ */ new Set();
|
|
72
|
+
function notify() {
|
|
73
|
+
for (const listener of listeners) listener();
|
|
74
|
+
}
|
|
75
|
+
function stop() {
|
|
76
|
+
if (timer !== void 0) {
|
|
77
|
+
clearInterval(timer);
|
|
78
|
+
timer = void 0;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
function start() {
|
|
82
|
+
stop();
|
|
83
|
+
value = Date.now();
|
|
84
|
+
timer = setInterval(() => {
|
|
85
|
+
value = Date.now();
|
|
86
|
+
notify();
|
|
87
|
+
}, refreshMs);
|
|
88
|
+
return stop;
|
|
89
|
+
}
|
|
90
|
+
return {
|
|
91
|
+
get value() {
|
|
92
|
+
return value;
|
|
93
|
+
},
|
|
94
|
+
start,
|
|
95
|
+
stop,
|
|
96
|
+
subscribe(listener) {
|
|
97
|
+
listeners.add(listener);
|
|
98
|
+
return () => listeners.delete(listener);
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
function getServerElapsed() {
|
|
103
|
+
return 0;
|
|
104
|
+
}
|
|
105
|
+
function useElapsed(options = {}) {
|
|
106
|
+
const elapsed = useConstant(() => createElapsed(options));
|
|
107
|
+
const ms = useSyncExternalStore(elapsed.subscribe, () => elapsed.ms, getServerElapsed);
|
|
108
|
+
const running = useSyncExternalStore(
|
|
109
|
+
elapsed.subscribe,
|
|
110
|
+
() => elapsed.running,
|
|
111
|
+
// Deterministic on both sides for a different reason: nothing has
|
|
112
|
+
// started the stopwatch by the time the first render runs, so the
|
|
113
|
+
// store's own value is `false` here too.
|
|
114
|
+
() => false
|
|
115
|
+
);
|
|
116
|
+
const rendered = useLiveRef(ms);
|
|
117
|
+
const [, bump] = useReducer(bumpReducer, 0);
|
|
118
|
+
useIsomorphicLayoutEffect(() => {
|
|
119
|
+
if (elapsed.ms !== rendered.current) bump();
|
|
120
|
+
}, [elapsed, bump]);
|
|
121
|
+
useEffect(() => elapsed.stop, [elapsed]);
|
|
122
|
+
return { ms, text: formatElapsed(ms), running, start: elapsed.start, stop: elapsed.stop };
|
|
123
|
+
}
|
|
124
|
+
const sharedClock = (() => {
|
|
125
|
+
const listeners = /* @__PURE__ */ new Set();
|
|
126
|
+
let clock = null;
|
|
127
|
+
let stopClock = null;
|
|
128
|
+
let retained = 0;
|
|
129
|
+
let value = Number.NaN;
|
|
130
|
+
function publish() {
|
|
131
|
+
if (clock) value = clock.value;
|
|
132
|
+
for (const listener of listeners) listener();
|
|
133
|
+
}
|
|
134
|
+
return {
|
|
135
|
+
getValue() {
|
|
136
|
+
return value;
|
|
137
|
+
},
|
|
138
|
+
subscribe(listener) {
|
|
139
|
+
listeners.add(listener);
|
|
140
|
+
return () => {
|
|
141
|
+
listeners.delete(listener);
|
|
142
|
+
};
|
|
143
|
+
},
|
|
144
|
+
/**
|
|
145
|
+
* Keep the interval running for as long as the returned release is
|
|
146
|
+
* uncalled. Each release is idempotent and belongs to exactly one
|
|
147
|
+
* retain, so however React interleaves mounts, remounts and
|
|
148
|
+
* rehearsals, the count cannot drift.
|
|
149
|
+
*/
|
|
150
|
+
retain(refreshMs) {
|
|
151
|
+
retained += 1;
|
|
152
|
+
if (retained === 1) {
|
|
153
|
+
clock = createNow(refreshMs);
|
|
154
|
+
clock.subscribe(publish);
|
|
155
|
+
stopClock = clock.start();
|
|
156
|
+
publish();
|
|
157
|
+
}
|
|
158
|
+
let released = false;
|
|
159
|
+
return () => {
|
|
160
|
+
if (released) return;
|
|
161
|
+
released = true;
|
|
162
|
+
retained -= 1;
|
|
163
|
+
if (retained === 0) {
|
|
164
|
+
stopClock?.();
|
|
165
|
+
stopClock = null;
|
|
166
|
+
clock = null;
|
|
167
|
+
}
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
};
|
|
171
|
+
})();
|
|
172
|
+
function getServerNow() {
|
|
173
|
+
return Number.NaN;
|
|
174
|
+
}
|
|
175
|
+
function bumpReducer(n) {
|
|
176
|
+
return n + 1;
|
|
177
|
+
}
|
|
178
|
+
function useNow(refreshMs = 3e4) {
|
|
179
|
+
const value = useSyncExternalStore(sharedClock.subscribe, sharedClock.getValue, getServerNow);
|
|
180
|
+
const rendered = useLiveRef(value);
|
|
181
|
+
const [, bump] = useReducer(bumpReducer, 0);
|
|
182
|
+
useIsomorphicLayoutEffect(() => {
|
|
183
|
+
const release = sharedClock.retain(refreshMs);
|
|
184
|
+
if (sharedClock.getValue() !== rendered.current) bump();
|
|
185
|
+
return release;
|
|
186
|
+
}, [refreshMs, bump]);
|
|
187
|
+
return value;
|
|
188
|
+
}
|
|
189
|
+
export {
|
|
190
|
+
createElapsed,
|
|
191
|
+
createNow,
|
|
192
|
+
formatElapsed,
|
|
193
|
+
useElapsed,
|
|
194
|
+
useNow
|
|
195
|
+
};
|