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,104 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsxs, jsx } from "react/jsx-runtime";
|
|
3
|
+
import { useRef, useCallback, useEffect } from "react";
|
|
4
|
+
import { cn } from "../../utils.js";
|
|
5
|
+
import { useMenuItemRef } from "../../internals/menu.js";
|
|
6
|
+
import { useComposedRefs } from "../../internals/dom/use-composed-refs.js";
|
|
7
|
+
import { useMenuContext, useSubContext } from "./types.js";
|
|
8
|
+
const OPEN_INTENT_MS = 150;
|
|
9
|
+
function DropdownMenuSubTrigger({
|
|
10
|
+
disabled = false,
|
|
11
|
+
icon,
|
|
12
|
+
children,
|
|
13
|
+
className
|
|
14
|
+
}) {
|
|
15
|
+
const parentMenu = useMenuContext();
|
|
16
|
+
const sub = useSubContext();
|
|
17
|
+
const itemRef = useRef(null);
|
|
18
|
+
const openIntentTimer = useRef(null);
|
|
19
|
+
const registerRef = useMenuItemRef(parentMenu.focus);
|
|
20
|
+
const { setTriggerRef } = sub;
|
|
21
|
+
const publishTrigger = useCallback(
|
|
22
|
+
(node) => {
|
|
23
|
+
setTriggerRef(node);
|
|
24
|
+
},
|
|
25
|
+
[setTriggerRef]
|
|
26
|
+
);
|
|
27
|
+
const ref = useComposedRefs(itemRef, registerRef, publishTrigger);
|
|
28
|
+
const clearOpenIntent = useCallback(() => {
|
|
29
|
+
if (openIntentTimer.current !== null) {
|
|
30
|
+
clearTimeout(openIntentTimer.current);
|
|
31
|
+
openIntentTimer.current = null;
|
|
32
|
+
}
|
|
33
|
+
}, []);
|
|
34
|
+
useEffect(() => clearOpenIntent, [clearOpenIntent]);
|
|
35
|
+
function handleClick() {
|
|
36
|
+
if (disabled) return;
|
|
37
|
+
if (itemRef.current) parentMenu.focus.focusItem(itemRef.current);
|
|
38
|
+
sub.openSub();
|
|
39
|
+
}
|
|
40
|
+
function handleMouseEnter() {
|
|
41
|
+
if (disabled || !itemRef.current) return;
|
|
42
|
+
sub.keepOpen();
|
|
43
|
+
parentMenu.focus.focusItem(itemRef.current);
|
|
44
|
+
clearOpenIntent();
|
|
45
|
+
openIntentTimer.current = setTimeout(() => {
|
|
46
|
+
openIntentTimer.current = null;
|
|
47
|
+
sub.openSub();
|
|
48
|
+
}, OPEN_INTENT_MS);
|
|
49
|
+
}
|
|
50
|
+
function handleMouseLeave() {
|
|
51
|
+
clearOpenIntent();
|
|
52
|
+
sub.scheduleClose();
|
|
53
|
+
}
|
|
54
|
+
function handleKeydown(event) {
|
|
55
|
+
if (disabled) return;
|
|
56
|
+
if (event.key === "ArrowRight") {
|
|
57
|
+
event.preventDefault();
|
|
58
|
+
sub.openSub();
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
const classes = cn(
|
|
62
|
+
"ft-dropdown-menu-item flex w-full cursor-pointer items-center justify-between gap-[10px] rounded-[6px] px-[10px] py-[7px] text-left text-foreground outline-none",
|
|
63
|
+
"hover:bg-accent hover:text-accent-foreground focus-visible:bg-accent focus-visible:text-accent-foreground",
|
|
64
|
+
"disabled:pointer-events-none disabled:opacity-50",
|
|
65
|
+
className
|
|
66
|
+
);
|
|
67
|
+
return /* @__PURE__ */ jsxs(
|
|
68
|
+
"button",
|
|
69
|
+
{
|
|
70
|
+
ref,
|
|
71
|
+
id: sub.triggerId,
|
|
72
|
+
type: "button",
|
|
73
|
+
role: "menuitem",
|
|
74
|
+
tabIndex: -1,
|
|
75
|
+
disabled,
|
|
76
|
+
"aria-disabled": disabled ? "true" : void 0,
|
|
77
|
+
"aria-haspopup": "menu",
|
|
78
|
+
"aria-expanded": sub.open,
|
|
79
|
+
"aria-controls": sub.open ? sub.contentId : void 0,
|
|
80
|
+
className: classes,
|
|
81
|
+
onClick: handleClick,
|
|
82
|
+
onMouseEnter: handleMouseEnter,
|
|
83
|
+
onMouseLeave: handleMouseLeave,
|
|
84
|
+
onKeyDown: handleKeydown,
|
|
85
|
+
children: [
|
|
86
|
+
/* @__PURE__ */ jsxs("span", { className: "flex items-center gap-[10px]", children: [
|
|
87
|
+
icon ? /* @__PURE__ */ jsx("span", { className: "ft-dropdown-menu-item-icon", "aria-hidden": "true", children: icon }) : null,
|
|
88
|
+
/* @__PURE__ */ jsx("span", { children })
|
|
89
|
+
] }),
|
|
90
|
+
/* @__PURE__ */ jsx(
|
|
91
|
+
"span",
|
|
92
|
+
{
|
|
93
|
+
"aria-hidden": "true",
|
|
94
|
+
className: "ft-dropdown-menu-sub-caret text-muted-foreground text-[10px]",
|
|
95
|
+
children: sub.resolvedSide === "left" ? "‹" : "›"
|
|
96
|
+
}
|
|
97
|
+
)
|
|
98
|
+
]
|
|
99
|
+
}
|
|
100
|
+
);
|
|
101
|
+
}
|
|
102
|
+
export {
|
|
103
|
+
DropdownMenuSubTrigger
|
|
104
|
+
};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
export interface DropdownMenuTriggerProps {
|
|
3
|
+
/** Disables the trigger — the menu cannot be opened. */
|
|
4
|
+
disabled?: boolean;
|
|
5
|
+
/** The trigger's content. */
|
|
6
|
+
children?: ReactNode;
|
|
7
|
+
/** Additional CSS classes, merged onto the trigger. */
|
|
8
|
+
className?: string;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* The button that opens the menu.
|
|
12
|
+
*
|
|
13
|
+
* The source declares `ref = $bindable(null)`, so the button element arrives
|
|
14
|
+
* through the ref channel rather than a prop.
|
|
15
|
+
*/
|
|
16
|
+
export declare const DropdownMenuTrigger: import("react").ForwardRefExoticComponent<DropdownMenuTriggerProps & import("react").RefAttributes<HTMLButtonElement>>;
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx } from "react/jsx-runtime";
|
|
3
|
+
import { forwardRef, useEffect } from "react";
|
|
4
|
+
import { cn } from "../../utils.js";
|
|
5
|
+
import { useComposedRefs } from "../../internals/dom/use-composed-refs.js";
|
|
6
|
+
import { useElementRef } from "../../internals/dom/use-element-ref.js";
|
|
7
|
+
import { useDropdownMenuRoot } from "./types.js";
|
|
8
|
+
/* empty css */
|
|
9
|
+
const DropdownMenuTrigger = forwardRef(
|
|
10
|
+
function DropdownMenuTrigger2({ disabled = false, children, className }, forwardedRef) {
|
|
11
|
+
const ctx = useDropdownMenuRoot();
|
|
12
|
+
const [node, setNode] = useElementRef();
|
|
13
|
+
const ref = useComposedRefs(setNode, forwardedRef);
|
|
14
|
+
const { setTriggerRef } = ctx;
|
|
15
|
+
useEffect(() => {
|
|
16
|
+
setTriggerRef(node);
|
|
17
|
+
return () => setTriggerRef(null);
|
|
18
|
+
}, [setTriggerRef, node]);
|
|
19
|
+
function handleClick() {
|
|
20
|
+
if (disabled) return;
|
|
21
|
+
if (ctx.open) {
|
|
22
|
+
ctx.close({ returnFocus: false });
|
|
23
|
+
} else {
|
|
24
|
+
ctx.openWithFocus("first");
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
function handleKeydown(event) {
|
|
28
|
+
if (disabled) return;
|
|
29
|
+
switch (event.key) {
|
|
30
|
+
case "Enter":
|
|
31
|
+
case " ":
|
|
32
|
+
case "ArrowDown":
|
|
33
|
+
event.preventDefault();
|
|
34
|
+
ctx.openWithFocus("first");
|
|
35
|
+
return;
|
|
36
|
+
case "ArrowUp":
|
|
37
|
+
event.preventDefault();
|
|
38
|
+
ctx.openWithFocus("last");
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
const classes = cn(
|
|
43
|
+
"ft-dropdown-menu-trigger border-border text-foreground hover:bg-accent hover:text-accent-foreground inline-flex cursor-pointer items-center gap-1.5 rounded-[8px] border px-[14px] py-[7px] text-[12px] font-medium transition-colors focus-visible:ring-[3px] focus-visible:ring-[var(--ft-nav-accent)]/35 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50",
|
|
44
|
+
className
|
|
45
|
+
);
|
|
46
|
+
return /* @__PURE__ */ jsx(
|
|
47
|
+
"button",
|
|
48
|
+
{
|
|
49
|
+
ref,
|
|
50
|
+
id: ctx.triggerId,
|
|
51
|
+
type: "button",
|
|
52
|
+
disabled,
|
|
53
|
+
className: classes,
|
|
54
|
+
"aria-haspopup": "menu",
|
|
55
|
+
"aria-expanded": ctx.open,
|
|
56
|
+
"aria-controls": ctx.open ? ctx.contentId : void 0,
|
|
57
|
+
onClick: handleClick,
|
|
58
|
+
onKeyDown: handleKeydown,
|
|
59
|
+
children
|
|
60
|
+
}
|
|
61
|
+
);
|
|
62
|
+
}
|
|
63
|
+
);
|
|
64
|
+
DropdownMenuTrigger.displayName = "DropdownMenuTrigger";
|
|
65
|
+
export {
|
|
66
|
+
DropdownMenuTrigger
|
|
67
|
+
};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export { DropdownMenu } from "./DropdownMenu.js";
|
|
2
|
+
export type { DropdownMenuProps } from "./DropdownMenu.js";
|
|
3
|
+
export { DropdownMenuTrigger } from "./DropdownMenuTrigger.js";
|
|
4
|
+
export type { DropdownMenuTriggerProps } from "./DropdownMenuTrigger.js";
|
|
5
|
+
export { DropdownMenuContent } from "./DropdownMenuContent.js";
|
|
6
|
+
export type { DropdownMenuContentProps } from "./DropdownMenuContent.js";
|
|
7
|
+
export { DropdownMenuItem } from "./DropdownMenuItem.js";
|
|
8
|
+
export type { DropdownMenuItemProps } from "./DropdownMenuItem.js";
|
|
9
|
+
export { DropdownMenuSeparator } from "./DropdownMenuSeparator.js";
|
|
10
|
+
export type { DropdownMenuSeparatorProps } from "./DropdownMenuSeparator.js";
|
|
11
|
+
export { DropdownMenuLabel } from "./DropdownMenuLabel.js";
|
|
12
|
+
export type { DropdownMenuLabelProps } from "./DropdownMenuLabel.js";
|
|
13
|
+
export { DropdownMenuSub } from "./DropdownMenuSub.js";
|
|
14
|
+
export type { DropdownMenuSubProps } from "./DropdownMenuSub.js";
|
|
15
|
+
export { DropdownMenuSubTrigger } from "./DropdownMenuSubTrigger.js";
|
|
16
|
+
export type { DropdownMenuSubTriggerProps } from "./DropdownMenuSubTrigger.js";
|
|
17
|
+
export { DropdownMenuSubContent } from "./DropdownMenuSubContent.js";
|
|
18
|
+
export type { DropdownMenuSubContentProps } from "./DropdownMenuSubContent.js";
|
|
19
|
+
export { MENU_KEY, SUB_KEY, DROPDOWN_MENU_KEY } from "./types.js";
|
|
20
|
+
export type { MenuContext, MenuCloseOptions, SubContext, DropdownMenuRootContext, } from "./types.js";
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { MenuContext } from "./types.js";
|
|
2
|
+
export interface MenuContentKeydownOptions {
|
|
3
|
+
/** Called on Tab. Never calls `preventDefault` itself — the browser's own Tab traversal continues from whatever the menu core left focused. */
|
|
4
|
+
onTab?: () => void;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Wires ArrowUp/Down, Home/End and single-character typeahead to a level's
|
|
8
|
+
* menu-focus core, and Tab to `options.onTab`. Identical semantics whether
|
|
9
|
+
* the panel is a `DropdownMenuContent` or its nested `*SubContent` — the keys
|
|
10
|
+
* navigate whatever level currently holds real DOM focus, regardless of how
|
|
11
|
+
* that level's panel was opened or positioned.
|
|
12
|
+
*
|
|
13
|
+
* ArrowRight/ArrowLeft are deliberately not handled here: their key strings
|
|
14
|
+
* are more than one character, so the typeahead fallback below already
|
|
15
|
+
* ignores them, and `*SubTrigger`/`*SubContent` each own their half of that
|
|
16
|
+
* pair directly on the element the key is actually about.
|
|
17
|
+
*
|
|
18
|
+
* Takes the native `KeyboardEvent` shape React's synthetic event satisfies
|
|
19
|
+
* structurally, so a caller passes `event` straight through with no unwrap.
|
|
20
|
+
*/
|
|
21
|
+
export declare function handleMenuContentKeydown(event: Pick<KeyboardEvent, "key" | "ctrlKey" | "metaKey" | "altKey"> & {
|
|
22
|
+
preventDefault(): void;
|
|
23
|
+
}, ctx: MenuContext, options?: MenuContentKeydownOptions): void;
|
|
24
|
+
/**
|
|
25
|
+
* One level's registry of currently-open submenus, keyed by each submenu's
|
|
26
|
+
* own trigger element. A `*Sub` calls `closeSiblingSubs` right before
|
|
27
|
+
* opening itself, so only one submenu is ever open per level — the same
|
|
28
|
+
* exclusivity a native menu bar gives you for free. Each `*Content`/
|
|
29
|
+
* `*SubContent` owns one of these for its own direct children; it is never
|
|
30
|
+
* shared across levels, which is what keeps a deeply nested submenu from
|
|
31
|
+
* closing an unrelated one two levels up.
|
|
32
|
+
*
|
|
33
|
+
* Allocation-only, so a component builds one through `useConstant`: it
|
|
34
|
+
* installs no listener and starts no timer.
|
|
35
|
+
*/
|
|
36
|
+
export declare function createOpenSubRegistry(): {
|
|
37
|
+
registerOpenSub(triggerEl: HTMLElement, close: () => void): () => void;
|
|
38
|
+
closeSiblingSubs(exceptTriggerEl: HTMLElement): void;
|
|
39
|
+
};
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
function handleMenuContentKeydown(event, ctx, options = {}) {
|
|
3
|
+
switch (event.key) {
|
|
4
|
+
case "ArrowDown":
|
|
5
|
+
event.preventDefault();
|
|
6
|
+
ctx.focus.move(1);
|
|
7
|
+
return;
|
|
8
|
+
case "ArrowUp":
|
|
9
|
+
event.preventDefault();
|
|
10
|
+
ctx.focus.move(-1);
|
|
11
|
+
return;
|
|
12
|
+
case "Home":
|
|
13
|
+
event.preventDefault();
|
|
14
|
+
ctx.focus.moveToEdge("first");
|
|
15
|
+
return;
|
|
16
|
+
case "End":
|
|
17
|
+
event.preventDefault();
|
|
18
|
+
ctx.focus.moveToEdge("last");
|
|
19
|
+
return;
|
|
20
|
+
case "Tab":
|
|
21
|
+
options.onTab?.();
|
|
22
|
+
return;
|
|
23
|
+
default:
|
|
24
|
+
if (event.key.length === 1 && !event.ctrlKey && !event.metaKey && !event.altKey) {
|
|
25
|
+
ctx.focus.typeahead(event.key);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
function createOpenSubRegistry() {
|
|
30
|
+
const openSubs = /* @__PURE__ */ new Map();
|
|
31
|
+
return {
|
|
32
|
+
registerOpenSub(triggerEl, close) {
|
|
33
|
+
openSubs.set(triggerEl, close);
|
|
34
|
+
return () => {
|
|
35
|
+
if (openSubs.get(triggerEl) === close) openSubs.delete(triggerEl);
|
|
36
|
+
};
|
|
37
|
+
},
|
|
38
|
+
closeSiblingSubs(exceptTriggerEl) {
|
|
39
|
+
for (const [triggerEl, close] of openSubs) {
|
|
40
|
+
if (triggerEl !== exceptTriggerEl) close();
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
export {
|
|
46
|
+
createOpenSubRegistry,
|
|
47
|
+
handleMenuContentKeydown
|
|
48
|
+
};
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The three contracts this family publishes, and the React contexts that
|
|
3
|
+
* carry them.
|
|
4
|
+
*
|
|
5
|
+
* The Svelte source publishes each one under a `unique symbol` context key;
|
|
6
|
+
* React's own context object plays that role here, so the exported names are
|
|
7
|
+
* kept and the values are `React.Context` objects rather than symbols — the
|
|
8
|
+
* same substitution `ToggleGroup` makes for `TOGGLE_GROUP_KEY`:
|
|
9
|
+
*
|
|
10
|
+
* ```tsx
|
|
11
|
+
* const menu = useContext(MENU_KEY);
|
|
12
|
+
* ```
|
|
13
|
+
*/
|
|
14
|
+
import type { Context } from "react";
|
|
15
|
+
import type { Side, Align } from "../../internals/anchor-position.js";
|
|
16
|
+
import type { MenuFocusState } from "../../internals/menu.js";
|
|
17
|
+
/**
|
|
18
|
+
* Options accepted by a menu's own `close`/`closeAll`, shared across every
|
|
19
|
+
* level (root, item, sub) so one call site's options object works
|
|
20
|
+
* everywhere it's forwarded to.
|
|
21
|
+
*/
|
|
22
|
+
export interface MenuCloseOptions {
|
|
23
|
+
/** Whether closing returns DOM focus to the trigger. Defaults to `true` wherever it's read. */
|
|
24
|
+
returnFocus?: boolean;
|
|
25
|
+
/**
|
|
26
|
+
* Suppresses the `close` sound cue for this particular close call —
|
|
27
|
+
* used when the caller is about to play its own cue instead (an item's
|
|
28
|
+
* `select`), so exactly one cue fires per interaction, never both.
|
|
29
|
+
* Has no effect when the root's own `sound` prop is off.
|
|
30
|
+
*/
|
|
31
|
+
silent?: boolean;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Shared by a menu family's content panels for their item-level children —
|
|
35
|
+
* `*Item`, `*Separator`, `*Label`, `*Sub`, `*SubTrigger`, `*SubContent`. Two
|
|
36
|
+
* families behave identically once a panel is open — same menu-focus wiring,
|
|
37
|
+
* same submenu intent-delay behaviour — and only how the panel itself opens
|
|
38
|
+
* and where it anchors differs.
|
|
39
|
+
*
|
|
40
|
+
* Both a top-level `*Content` and a nested `*SubContent` provide one of
|
|
41
|
+
* these under `MENU_KEY` — a `*SubContent` shadows its parent's for its own
|
|
42
|
+
* subtree, so `*Item`/`*Separator`/`*Label` never need to know which level
|
|
43
|
+
* they are at.
|
|
44
|
+
*/
|
|
45
|
+
export interface MenuContext {
|
|
46
|
+
/** The menu-focus core for this level's own items — not a nested submenu's, which has its own. */
|
|
47
|
+
readonly focus: MenuFocusState;
|
|
48
|
+
/**
|
|
49
|
+
* The Tailwind font-size class items at this level should render at —
|
|
50
|
+
* `"text-[13px]"` under `DropdownMenu`. `*Item`/`*SubTrigger` set no
|
|
51
|
+
* font-size of their own and simply inherit it via normal CSS from
|
|
52
|
+
* whichever panel renders them — this field only exists for `*SubContent`
|
|
53
|
+
* to read and pass through. A `*SubContent` is portalled to
|
|
54
|
+
* `document.body` independently of its parent panel (also portalled
|
|
55
|
+
* there), so the two end up as DOM *siblings* once open, not
|
|
56
|
+
* ancestor/descendant — CSS inheritance from the root panel to a nested
|
|
57
|
+
* submenu's own items doesn't reach across that gap the way it does from
|
|
58
|
+
* a panel straight to its own direct items. React context isn't
|
|
59
|
+
* DOM-based, though: it follows the *component* tree, which portalling a
|
|
60
|
+
* node doesn't change, so this field crosses the same gap CSS can't.
|
|
61
|
+
*/
|
|
62
|
+
readonly itemTextClass: string;
|
|
63
|
+
/**
|
|
64
|
+
* Whether this menu family plays sound cues — forwarded from the root's
|
|
65
|
+
* own `sound` prop. Optional so a family that builds its own
|
|
66
|
+
* `MenuContext` without this field keeps compiling unchanged; reads as
|
|
67
|
+
* falsy there, which is the correct "no sound" behaviour.
|
|
68
|
+
*/
|
|
69
|
+
readonly sound?: boolean;
|
|
70
|
+
/**
|
|
71
|
+
* Whether the menu TREE this level belongs to is still open — not just
|
|
72
|
+
* this level's own mount. Closing the root flips only the root's state
|
|
73
|
+
* and tears every nested level down with it, so a submenu's own
|
|
74
|
+
* `sub.open` stays true for the whole of that outro. Anything asking "is
|
|
75
|
+
* this panel a live top layer?" — an exit transition picking its curve, a
|
|
76
|
+
* dismissable deciding whether an Escape is its to swallow — has to read
|
|
77
|
+
* this instead. A `*SubContent` republishes it as its own liveness, so
|
|
78
|
+
* the answer composes down a chain of nested submenus.
|
|
79
|
+
*/
|
|
80
|
+
readonly rootOpen: boolean;
|
|
81
|
+
/** Closes the whole menu, root included. What selecting an item and pressing Tab both do. */
|
|
82
|
+
closeAll(options?: MenuCloseOptions): void;
|
|
83
|
+
/** Registers a currently-open submenu at this level, keyed by its trigger element. Returns an unregister function. */
|
|
84
|
+
registerOpenSub(triggerEl: HTMLElement, close: () => void): () => void;
|
|
85
|
+
/** Closes every open submenu at this level except the one whose trigger is `exceptTriggerEl` — only one submenu open per level, like a native menu bar. */
|
|
86
|
+
closeSiblingSubs(exceptTriggerEl: HTMLElement): void;
|
|
87
|
+
}
|
|
88
|
+
export declare const MENU_KEY: Context<MenuContext | undefined>;
|
|
89
|
+
/** Reads the enclosing level's `MenuContext`. Internal. */
|
|
90
|
+
export declare function useMenuContext(): MenuContext;
|
|
91
|
+
/**
|
|
92
|
+
* The contract between a `*Sub` boundary and its own `*SubTrigger` and
|
|
93
|
+
* `*SubContent` — distinct from `MenuContext`, which is about a level's
|
|
94
|
+
* *items*, not the one boundary component coordinating a single submenu's
|
|
95
|
+
* open state and hover-intent timers.
|
|
96
|
+
*/
|
|
97
|
+
export interface SubContext {
|
|
98
|
+
readonly open: boolean;
|
|
99
|
+
readonly contentId: string;
|
|
100
|
+
/** The sub-trigger's own id — read by `*SubContent` for `aria-labelledby`, so the submenu panel announces the row that opened it. */
|
|
101
|
+
readonly triggerId: string;
|
|
102
|
+
readonly triggerRef: HTMLElement | null;
|
|
103
|
+
/**
|
|
104
|
+
* The side the submenu actually rendered on, as last reported by
|
|
105
|
+
* `useAnchorPosition`'s `onPlacement` — `"right"` until a flip moves it
|
|
106
|
+
* to `"left"`. `SubTrigger` reads this to mirror its caret;
|
|
107
|
+
* ArrowRight/Left keep their fixed meaning ("into the submenu" / "back to
|
|
108
|
+
* the trigger") regardless of which side that visually is.
|
|
109
|
+
*/
|
|
110
|
+
readonly resolvedSide: Side;
|
|
111
|
+
/**
|
|
112
|
+
* The cross-axis alignment the submenu actually rendered with, as last
|
|
113
|
+
* reported by `onPlacement`. `"start"` until a clamp near a viewport edge
|
|
114
|
+
* slides the panel along that axis, after which the requested corner is
|
|
115
|
+
* no longer the one touching the trigger. `SubContent` reads this for its
|
|
116
|
+
* entrance origin, so the panel grows from the corner nearest the trigger
|
|
117
|
+
* rather than from the far one.
|
|
118
|
+
*/
|
|
119
|
+
readonly resolvedAlign: Align;
|
|
120
|
+
setTriggerRef(el: HTMLElement | null): void;
|
|
121
|
+
setPlacement(side: Side, align: Align): void;
|
|
122
|
+
/** Opens the submenu. Idempotent — does nothing if already open. */
|
|
123
|
+
openSub(): void;
|
|
124
|
+
/**
|
|
125
|
+
* Closes the submenu, optionally returning DOM focus to its trigger.
|
|
126
|
+
* `silent` suppresses the submenu's `close` cue (parent-driven closes).
|
|
127
|
+
*/
|
|
128
|
+
closeSub(returnFocus: boolean, silent?: boolean): void;
|
|
129
|
+
/** Cancels a pending close-intent timer. Called when the pointer enters the trigger or the content. */
|
|
130
|
+
keepOpen(): void;
|
|
131
|
+
/** Starts the close-intent timer. Called when the pointer leaves the trigger or the content. */
|
|
132
|
+
scheduleClose(): void;
|
|
133
|
+
}
|
|
134
|
+
export declare const SUB_KEY: Context<SubContext | undefined>;
|
|
135
|
+
/** Reads the enclosing `DropdownMenuSub`'s context. Internal. */
|
|
136
|
+
export declare function useSubContext(): SubContext;
|
|
137
|
+
/** The contract between `DropdownMenu` and its own `DropdownMenuTrigger`/`DropdownMenuContent`. */
|
|
138
|
+
export interface DropdownMenuRootContext {
|
|
139
|
+
readonly contentId: string;
|
|
140
|
+
readonly triggerId: string;
|
|
141
|
+
readonly side: Side;
|
|
142
|
+
readonly align: Align;
|
|
143
|
+
readonly offset: number;
|
|
144
|
+
readonly loop: boolean;
|
|
145
|
+
readonly open: boolean;
|
|
146
|
+
/** Which end to focus once the content mounts — set by whichever key opened the trigger. */
|
|
147
|
+
readonly focusEdge: "first" | "last";
|
|
148
|
+
readonly triggerRef: HTMLElement | null;
|
|
149
|
+
/** Whether this menu plays sound cues — mirrors `DropdownMenuProps.sound`. */
|
|
150
|
+
readonly sound: boolean;
|
|
151
|
+
setTriggerRef(el: HTMLElement | null): void;
|
|
152
|
+
/** Opens the menu (if not already open) and requests that its content focus `edge` once mounted. */
|
|
153
|
+
openWithFocus(edge: "first" | "last"): void;
|
|
154
|
+
/** Closes the menu. Returns focus to the trigger by default. */
|
|
155
|
+
close(options?: MenuCloseOptions): void;
|
|
156
|
+
}
|
|
157
|
+
export declare const DROPDOWN_MENU_KEY: Context<DropdownMenuRootContext | undefined>;
|
|
158
|
+
/** Reads the enclosing `DropdownMenu`'s context. Internal. */
|
|
159
|
+
export declare function useDropdownMenuRoot(): DropdownMenuRootContext;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { createContext, useContext } from "react";
|
|
3
|
+
function useRequiredContext(context, name) {
|
|
4
|
+
const value = useContext(context);
|
|
5
|
+
if (value === void 0) {
|
|
6
|
+
throw new Error(`${name} is missing: this component must be rendered inside its provider.`);
|
|
7
|
+
}
|
|
8
|
+
return value;
|
|
9
|
+
}
|
|
10
|
+
const MENU_KEY = createContext(void 0);
|
|
11
|
+
MENU_KEY.displayName = "MenuContext";
|
|
12
|
+
function useMenuContext() {
|
|
13
|
+
return useRequiredContext(MENU_KEY, "MenuContext");
|
|
14
|
+
}
|
|
15
|
+
const SUB_KEY = createContext(void 0);
|
|
16
|
+
SUB_KEY.displayName = "MenuSubContext";
|
|
17
|
+
function useSubContext() {
|
|
18
|
+
return useRequiredContext(SUB_KEY, "MenuSubContext");
|
|
19
|
+
}
|
|
20
|
+
const DROPDOWN_MENU_KEY = createContext(void 0);
|
|
21
|
+
DROPDOWN_MENU_KEY.displayName = "DropdownMenuRootContext";
|
|
22
|
+
function useDropdownMenuRoot() {
|
|
23
|
+
return useRequiredContext(DROPDOWN_MENU_KEY, "DropdownMenuRootContext");
|
|
24
|
+
}
|
|
25
|
+
export {
|
|
26
|
+
DROPDOWN_MENU_KEY,
|
|
27
|
+
MENU_KEY,
|
|
28
|
+
SUB_KEY,
|
|
29
|
+
useDropdownMenuRoot,
|
|
30
|
+
useMenuContext,
|
|
31
|
+
useSubContext
|
|
32
|
+
};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Props for EditorialEngine
|
|
3
|
+
*
|
|
4
|
+
* Live magazine layout: multi-column text flow with cursor handoff,
|
|
5
|
+
* auto-fitted headline, drop cap, pullquotes, and body text reflowing in
|
|
6
|
+
* real time around draggable animated orbs. All line breaking is computed
|
|
7
|
+
* from cached font metrics — the render loop performs zero DOM reads.
|
|
8
|
+
*/
|
|
9
|
+
export interface EditorialEngineProps {
|
|
10
|
+
/** Headline, auto-sized to the widest font that breaks no word */
|
|
11
|
+
headline?: string;
|
|
12
|
+
/** Body copy (plain text, paragraphs separated by blank lines) */
|
|
13
|
+
body?: string;
|
|
14
|
+
/** Up to two pullquotes embedded in the columns */
|
|
15
|
+
pullquotes?: string[];
|
|
16
|
+
/** Font family stack used for all text */
|
|
17
|
+
fontFamily?: string;
|
|
18
|
+
/** Additional CSS classes for the stage */
|
|
19
|
+
className?: string;
|
|
20
|
+
}
|
|
21
|
+
export declare function EditorialEngine({ headline, body, pullquotes, fontFamily, className, }: EditorialEngineProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsxs, jsx } from "react/jsx-runtime";
|
|
3
|
+
import { useRef, useState, useEffect } from "react";
|
|
4
|
+
import { cn } from "../../utils.js";
|
|
5
|
+
import { createEditorialEngine } from "./engine.js";
|
|
6
|
+
/* empty css */
|
|
7
|
+
const DEFAULT_HEADLINE = "TEXT THAT FLOWS AROUND ANYTHING";
|
|
8
|
+
const DEFAULT_BODY = `Print designers have flowed text around images, illustrations, and odd-shaped figures for more than a century. The web never caught up. CSS gives us float, and more recently shape-outside, but both only push text away from one side of one static box. Flowing text through multiple columns, around several moving obstacles at once, filling the gaps on both sides — the browser has no answer for that.
|
|
9
|
+
|
|
10
|
+
The reason is not a lack of imagination. It is the cost of asking. Every question about text — how wide is this word, where does this line break, how tall is this paragraph — must go through the browser's layout engine, and the layout engine answers by reflowing the document. Ask too often and the interface stutters. So we learned not to ask, and our text stayed in rigid rectangles.
|
|
11
|
+
|
|
12
|
+
This page asks hundreds of times per frame. Every line of text you are reading was positioned by arithmetic, not by the browser. The pretext library measured every word once, up front, against a canvas font engine. After that, layout is pure math: given a width, it returns line breaks, line widths, and a cursor pointing at exactly where the text stopped.
|
|
13
|
+
|
|
14
|
+
That cursor is what makes columns work. The first column consumes text until it runs out of vertical space, then hands its cursor to the second column, which continues mid-sentence without duplication or gaps. Newspapers have done this on paper forever; on the web it has always required hidden elements and fragile content splitting.
|
|
15
|
+
|
|
16
|
+
The orbs drifting across the page are obstacles, not decoration. Each frame, the engine intersects every text line's vertical band with every orb, subtracts the blocked intervals from the column width, and fills every remaining slot — text flows on both sides of an orb at once, something shape-outside cannot express at all.
|
|
17
|
+
|
|
18
|
+
Drag an orb and the paragraphs part around it in real time. Click one and it pauses. Resize the window and the headline re-fits itself, searching for the largest font size that breaks no word across lines — a binary search that costs microseconds because each probe is arithmetic, not reflow.
|
|
19
|
+
|
|
20
|
+
The drop cap at the top of this article is another obstacle: a rectangle carved out of the first column's first three lines. The pullquotes are the same trick at a larger scale. Everything you see is one mechanism — carve the blocked intervals out of each line's band, lay out text in whatever space remains.
|
|
21
|
+
|
|
22
|
+
When the engine finishes a frame, it writes positions and text content to a pool of absolutely positioned elements, and nothing else. The browser never computes layout for this page's body text, because every coordinate is already known. A full reflow of every line around five moving obstacles typically costs a fraction of a millisecond.
|
|
23
|
+
|
|
24
|
+
Cheap text measurement changes what interfaces can be. Virtualized lists can know every item's exact height before rendering it. Chat bubbles can shrink-wrap to their tightest width. Labels can dodge chart elements as you zoom. Documents can flow around widgets that other people are dragging in real time.
|
|
25
|
+
|
|
26
|
+
None of this needs a new browser API or a standards process. It needs cached font metrics, a line breaker, and the willingness to stop asking the DOM questions it answers slowly. The text on this page stopped asking. And so it flows.`;
|
|
27
|
+
const DEFAULT_PULLQUOTES = [
|
|
28
|
+
"“Text flows on both sides of a moving obstacle at once — something shape-outside cannot express at all.”",
|
|
29
|
+
"“Every coordinate is already known. The browser never computes layout for this text.”"
|
|
30
|
+
];
|
|
31
|
+
const DEFAULT_FONT_FAMILY = '"Iowan Old Style", "Palatino Linotype", "Book Antiqua", Palatino, serif';
|
|
32
|
+
function EditorialEngine({
|
|
33
|
+
headline = DEFAULT_HEADLINE,
|
|
34
|
+
body = DEFAULT_BODY,
|
|
35
|
+
pullquotes = DEFAULT_PULLQUOTES,
|
|
36
|
+
fontFamily = DEFAULT_FONT_FAMILY,
|
|
37
|
+
className
|
|
38
|
+
}) {
|
|
39
|
+
const layerRef = useRef(null);
|
|
40
|
+
const [ready, setReady] = useState(false);
|
|
41
|
+
const pullquotesKey = pullquotes.join("\0");
|
|
42
|
+
useEffect(() => {
|
|
43
|
+
const layer = layerRef.current;
|
|
44
|
+
if (layer === null) return;
|
|
45
|
+
const options = { headline, body, pullquotes, fontFamily };
|
|
46
|
+
let destroy = null;
|
|
47
|
+
let cancelled = false;
|
|
48
|
+
document.fonts.ready.then(() => {
|
|
49
|
+
if (cancelled) return;
|
|
50
|
+
destroy = createEditorialEngine(layer, options);
|
|
51
|
+
setReady(true);
|
|
52
|
+
});
|
|
53
|
+
return () => {
|
|
54
|
+
cancelled = true;
|
|
55
|
+
destroy?.();
|
|
56
|
+
};
|
|
57
|
+
}, [headline, body, pullquotesKey, fontFamily]);
|
|
58
|
+
return /* @__PURE__ */ jsxs("div", { className: cn("ee-stage", className, ready && "ready"), style: { fontFamily }, children: [
|
|
59
|
+
/* @__PURE__ */ jsxs("div", { className: cn("ee-fallback", ready && "ee-sr-only"), children: [
|
|
60
|
+
/* @__PURE__ */ jsx("h2", { children: headline }),
|
|
61
|
+
/* @__PURE__ */ jsx("p", { children: body })
|
|
62
|
+
] }),
|
|
63
|
+
/* @__PURE__ */ jsx("div", { ref: layerRef, className: "ee-layer", "aria-hidden": "true" })
|
|
64
|
+
] });
|
|
65
|
+
}
|
|
66
|
+
export {
|
|
67
|
+
EditorialEngine
|
|
68
|
+
};
|