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,223 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsxs, Fragment, jsx } from "react/jsx-runtime";
|
|
3
|
+
import { useContext, useState, useEffect, useCallback } from "react";
|
|
4
|
+
import { cn } from "../../utils.js";
|
|
5
|
+
import { useIsomorphicLayoutEffect } from "../../internals/dom/ssr.js";
|
|
6
|
+
import { useElementRef } from "../../internals/dom/use-element-ref.js";
|
|
7
|
+
import { useEventCallback } from "../../internals/dom/use-event-callback.js";
|
|
8
|
+
import { useLiveRef } from "../../internals/dom/use-live-ref.js";
|
|
9
|
+
import { useFancyId } from "../../internals/use-id.js";
|
|
10
|
+
import { useSoundCue } from "../../sound/use-sound.js";
|
|
11
|
+
import { useFloat } from "../../internals/use-float.js";
|
|
12
|
+
import { COMPOSER_CONTEXT_KEY } from "./types.js";
|
|
13
|
+
/* empty css */
|
|
14
|
+
function ComposerModelPicker({
|
|
15
|
+
models,
|
|
16
|
+
value: valueProp,
|
|
17
|
+
onValueChange,
|
|
18
|
+
onChange,
|
|
19
|
+
label = "Model",
|
|
20
|
+
className
|
|
21
|
+
}) {
|
|
22
|
+
const composer = useContext(COMPOSER_CONTEXT_KEY);
|
|
23
|
+
const playCue = useSoundCue(composer?.sound);
|
|
24
|
+
const uid = useFancyId();
|
|
25
|
+
const menuId = `${uid}-menu`;
|
|
26
|
+
const optionId = (index) => `${uid}-option-${index}`;
|
|
27
|
+
const [uncontrolledValue, setUncontrolledValue] = useState(void 0);
|
|
28
|
+
const value = valueProp !== void 0 ? valueProp : uncontrolledValue;
|
|
29
|
+
const [open, setOpen] = useState(false);
|
|
30
|
+
const [activeIndex, setActiveIndex] = useState(0);
|
|
31
|
+
const [triggerEl, triggerRef] = useElementRef();
|
|
32
|
+
const [menuEl, menuRef] = useElementRef();
|
|
33
|
+
const triggerLive = useLiveRef(triggerEl);
|
|
34
|
+
const menuLive = useLiveRef(menuEl);
|
|
35
|
+
const selectedId = value ?? models[0]?.id;
|
|
36
|
+
const selected = models.find((model) => model.id === selectedId);
|
|
37
|
+
const activeId = models[activeIndex] ? optionId(activeIndex) : void 0;
|
|
38
|
+
const isDisabled = (composer?.disabled ?? false) || models.length === 0;
|
|
39
|
+
function applyValue(next) {
|
|
40
|
+
if (valueProp === void 0) setUncontrolledValue(next);
|
|
41
|
+
onValueChange?.(next);
|
|
42
|
+
}
|
|
43
|
+
const openMenu = useEventCallback(() => {
|
|
44
|
+
if (isDisabled || open) return;
|
|
45
|
+
const current = models.findIndex((model) => model.id === selectedId);
|
|
46
|
+
setActiveIndex(current >= 0 ? current : 0);
|
|
47
|
+
setOpen(true);
|
|
48
|
+
playCue("open");
|
|
49
|
+
});
|
|
50
|
+
const closeMenu = useEventCallback(
|
|
51
|
+
(returnFocus, reason = "dismiss") => {
|
|
52
|
+
if (!open) return;
|
|
53
|
+
setOpen(false);
|
|
54
|
+
if (reason === "dismiss") playCue("close");
|
|
55
|
+
if (returnFocus) triggerLive.current?.focus();
|
|
56
|
+
}
|
|
57
|
+
);
|
|
58
|
+
const move = useEventCallback((delta) => {
|
|
59
|
+
if (models.length === 0) return;
|
|
60
|
+
setActiveIndex((index) => (index + delta + models.length) % models.length);
|
|
61
|
+
});
|
|
62
|
+
const select = useEventCallback((index) => {
|
|
63
|
+
const model = models[index];
|
|
64
|
+
if (!model || isDisabled) return;
|
|
65
|
+
const changed = model.id !== selectedId;
|
|
66
|
+
applyValue(model.id);
|
|
67
|
+
if (changed) playCue("select");
|
|
68
|
+
closeMenu(true, changed ? "commit" : "dismiss");
|
|
69
|
+
if (changed) onChange?.(model.id);
|
|
70
|
+
});
|
|
71
|
+
function handleTriggerKeydown(event) {
|
|
72
|
+
if (event.key !== "ArrowDown" && event.key !== "ArrowUp") return;
|
|
73
|
+
event.preventDefault();
|
|
74
|
+
openMenu();
|
|
75
|
+
}
|
|
76
|
+
function handleMenuKeydown(event) {
|
|
77
|
+
switch (event.key) {
|
|
78
|
+
case "ArrowDown":
|
|
79
|
+
event.preventDefault();
|
|
80
|
+
move(1);
|
|
81
|
+
break;
|
|
82
|
+
case "ArrowUp":
|
|
83
|
+
event.preventDefault();
|
|
84
|
+
move(-1);
|
|
85
|
+
break;
|
|
86
|
+
case "Enter":
|
|
87
|
+
case " ":
|
|
88
|
+
event.preventDefault();
|
|
89
|
+
select(activeIndex);
|
|
90
|
+
break;
|
|
91
|
+
case "Escape":
|
|
92
|
+
event.preventDefault();
|
|
93
|
+
closeMenu(true);
|
|
94
|
+
break;
|
|
95
|
+
case "Tab":
|
|
96
|
+
closeMenu(true);
|
|
97
|
+
break;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
useEffect(() => {
|
|
101
|
+
if (!open) return;
|
|
102
|
+
const onPointerDown = (event) => {
|
|
103
|
+
const target = event.target;
|
|
104
|
+
if (target && (menuLive.current?.contains(target) || triggerLive.current?.contains(target)))
|
|
105
|
+
return;
|
|
106
|
+
closeMenu(false);
|
|
107
|
+
};
|
|
108
|
+
document.addEventListener("mousedown", onPointerDown, true);
|
|
109
|
+
return () => document.removeEventListener("mousedown", onPointerDown, true);
|
|
110
|
+
}, [open, closeMenu, menuLive, triggerLive]);
|
|
111
|
+
useIsomorphicLayoutEffect(() => {
|
|
112
|
+
if (!open) return;
|
|
113
|
+
menuEl?.focus();
|
|
114
|
+
}, [open, menuEl]);
|
|
115
|
+
useEffect(() => {
|
|
116
|
+
if (isDisabled) setOpen(false);
|
|
117
|
+
}, [isDisabled]);
|
|
118
|
+
const anchor = useCallback(
|
|
119
|
+
() => triggerLive.current?.getBoundingClientRect() ?? null,
|
|
120
|
+
[triggerLive]
|
|
121
|
+
);
|
|
122
|
+
useFloat(menuEl, { anchor, placement: "top-start", offset: 6 });
|
|
123
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
124
|
+
/* @__PURE__ */ jsxs(
|
|
125
|
+
"button",
|
|
126
|
+
{
|
|
127
|
+
ref: triggerRef,
|
|
128
|
+
type: "button",
|
|
129
|
+
className: cn(
|
|
130
|
+
"ft-composer-model text-foreground/70 hover:bg-muted hover:text-foreground inline-flex max-w-full cursor-pointer items-center gap-1.5 rounded-md px-2 py-1 font-mono text-xs transition-colors focus-visible:outline-none disabled:pointer-events-none disabled:opacity-40",
|
|
131
|
+
className
|
|
132
|
+
),
|
|
133
|
+
disabled: isDisabled,
|
|
134
|
+
"data-open": open ? "" : void 0,
|
|
135
|
+
"aria-haspopup": "listbox",
|
|
136
|
+
"aria-expanded": open,
|
|
137
|
+
"aria-controls": open ? menuId : void 0,
|
|
138
|
+
"aria-label": selected ? `${label}: ${selected.label}` : label,
|
|
139
|
+
onClick: () => open ? closeMenu(true) : openMenu(),
|
|
140
|
+
onKeyDown: handleTriggerKeydown,
|
|
141
|
+
children: [
|
|
142
|
+
/* @__PURE__ */ jsx("span", { className: "truncate", children: selected?.label ?? label }),
|
|
143
|
+
selected?.badge ? /* @__PURE__ */ jsx("span", { className: "ft-composer-model-badge shrink-0 rounded px-1 py-px text-[0.625rem] tracking-wide", children: selected.badge }) : null,
|
|
144
|
+
/* @__PURE__ */ jsx(
|
|
145
|
+
"svg",
|
|
146
|
+
{
|
|
147
|
+
className: "ft-composer-model-chevron size-3 shrink-0",
|
|
148
|
+
viewBox: "0 0 16 16",
|
|
149
|
+
fill: "none",
|
|
150
|
+
stroke: "currentColor",
|
|
151
|
+
strokeWidth: "1.5",
|
|
152
|
+
strokeLinecap: "round",
|
|
153
|
+
strokeLinejoin: "round",
|
|
154
|
+
"aria-hidden": "true",
|
|
155
|
+
children: /* @__PURE__ */ jsx("path", { d: "m4 6 4 4 4-4" })
|
|
156
|
+
}
|
|
157
|
+
)
|
|
158
|
+
]
|
|
159
|
+
}
|
|
160
|
+
),
|
|
161
|
+
open ? /* @__PURE__ */ jsx(
|
|
162
|
+
"div",
|
|
163
|
+
{
|
|
164
|
+
ref: menuRef,
|
|
165
|
+
id: menuId,
|
|
166
|
+
role: "listbox",
|
|
167
|
+
tabIndex: -1,
|
|
168
|
+
"aria-label": label,
|
|
169
|
+
"aria-activedescendant": activeId,
|
|
170
|
+
className: "ft-composer-model-menu z-50 max-h-64 min-w-52 overflow-y-auto rounded-lg border p-1 shadow-lg outline-none",
|
|
171
|
+
onKeyDown: handleMenuKeydown,
|
|
172
|
+
children: models.map((model, index) => (
|
|
173
|
+
/*
|
|
174
|
+
A button carrying `role="option"`: the row has to be clickable and
|
|
175
|
+
it has to be an option, and starting from a button is what keeps
|
|
176
|
+
the press, the pointer cursor and the disabled semantics native.
|
|
177
|
+
`tabindex="-1"` keeps it out of the tab order, where the listbox
|
|
178
|
+
does the walking.
|
|
179
|
+
*/
|
|
180
|
+
/* @__PURE__ */ jsxs(
|
|
181
|
+
"button",
|
|
182
|
+
{
|
|
183
|
+
type: "button",
|
|
184
|
+
role: "option",
|
|
185
|
+
tabIndex: -1,
|
|
186
|
+
id: optionId(index),
|
|
187
|
+
"aria-selected": model.id === selectedId,
|
|
188
|
+
"data-active": index === activeIndex ? "" : void 0,
|
|
189
|
+
className: "ft-composer-model-option flex w-full cursor-pointer flex-col items-start gap-0.5 rounded-md px-2 py-1.5 text-left",
|
|
190
|
+
onClick: () => select(index),
|
|
191
|
+
onMouseEnter: () => setActiveIndex(index),
|
|
192
|
+
children: [
|
|
193
|
+
/* @__PURE__ */ jsxs("span", { className: "flex w-full items-center gap-1.5", children: [
|
|
194
|
+
/* @__PURE__ */ jsx("span", { className: "truncate text-xs font-medium", children: model.label }),
|
|
195
|
+
model.badge ? /* @__PURE__ */ jsx("span", { className: "ft-composer-model-badge shrink-0 rounded px-1 py-px text-[0.625rem] tracking-wide", children: model.badge }) : null,
|
|
196
|
+
model.id === selectedId ? /* @__PURE__ */ jsx(
|
|
197
|
+
"svg",
|
|
198
|
+
{
|
|
199
|
+
className: "ml-auto size-3 shrink-0",
|
|
200
|
+
viewBox: "0 0 16 16",
|
|
201
|
+
fill: "none",
|
|
202
|
+
stroke: "currentColor",
|
|
203
|
+
strokeWidth: "2",
|
|
204
|
+
strokeLinecap: "round",
|
|
205
|
+
strokeLinejoin: "round",
|
|
206
|
+
"aria-hidden": "true",
|
|
207
|
+
children: /* @__PURE__ */ jsx("path", { d: "m3 8.5 3.5 3.5L13 5" })
|
|
208
|
+
}
|
|
209
|
+
) : null
|
|
210
|
+
] }),
|
|
211
|
+
model.description ? /* @__PURE__ */ jsx("span", { className: "ft-composer-model-description text-[0.6875rem] leading-snug", children: model.description }) : null
|
|
212
|
+
]
|
|
213
|
+
},
|
|
214
|
+
`${model.id}#${index}`
|
|
215
|
+
)
|
|
216
|
+
))
|
|
217
|
+
}
|
|
218
|
+
) : null
|
|
219
|
+
] });
|
|
220
|
+
}
|
|
221
|
+
export {
|
|
222
|
+
ComposerModelPicker
|
|
223
|
+
};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
/**
|
|
3
|
+
* Props for ComposerSubmit
|
|
4
|
+
*/
|
|
5
|
+
export interface ComposerSubmitProps {
|
|
6
|
+
/** Accessible name while the composer is idle. */
|
|
7
|
+
label?: string;
|
|
8
|
+
/** Accessible name while a response is streaming. */
|
|
9
|
+
stopLabel?: string;
|
|
10
|
+
/** Replaces the built-in icon. Rendered in both the send and the stop state. */
|
|
11
|
+
children?: ReactNode;
|
|
12
|
+
/** Additional CSS classes */
|
|
13
|
+
className?: string;
|
|
14
|
+
}
|
|
15
|
+
/** The send button, which becomes a stop button for as long as a response is arriving. */
|
|
16
|
+
export declare function ComposerSubmit({ label, stopLabel, children, className, }: ComposerSubmitProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useContext } from "react";
|
|
4
|
+
import { cn } from "../../utils.js";
|
|
5
|
+
import { COMPOSER_CONTEXT_KEY } from "./types.js";
|
|
6
|
+
function ComposerSubmit({
|
|
7
|
+
label = "Send",
|
|
8
|
+
stopLabel = "Stop",
|
|
9
|
+
children,
|
|
10
|
+
className
|
|
11
|
+
}) {
|
|
12
|
+
const composer = useContext(COMPOSER_CONTEXT_KEY);
|
|
13
|
+
const streaming = composer?.streaming ?? false;
|
|
14
|
+
const empty = (composer?.value.current ?? "").trim() === "" && (composer?.attachments.current.length ?? 0) === 0;
|
|
15
|
+
const stoppable = composer?.stoppable ?? false;
|
|
16
|
+
const isDisabled = (composer?.disabled ?? false) || (streaming ? !stoppable : empty);
|
|
17
|
+
const name = streaming ? stopLabel : label;
|
|
18
|
+
return /* @__PURE__ */ jsx(
|
|
19
|
+
"button",
|
|
20
|
+
{
|
|
21
|
+
type: streaming ? "button" : "submit",
|
|
22
|
+
className: cn(
|
|
23
|
+
"ft-composer-submit bg-foreground text-background hover:bg-foreground/90 focus-visible:ring-ring inline-flex size-8 shrink-0 cursor-pointer items-center justify-center rounded-lg transition-colors focus-visible:ring-2 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-40",
|
|
24
|
+
className
|
|
25
|
+
),
|
|
26
|
+
disabled: isDisabled,
|
|
27
|
+
"aria-label": name,
|
|
28
|
+
title: name,
|
|
29
|
+
onClick: streaming ? () => composer?.stop() : void 0,
|
|
30
|
+
children: children ?? (streaming ? /* @__PURE__ */ jsx("svg", { viewBox: "0 0 16 16", className: "size-3.5", "aria-hidden": "true", children: /* @__PURE__ */ jsx("rect", { x: "3", y: "3", width: "10", height: "10", rx: "2", fill: "currentColor" }) }) : /* @__PURE__ */ jsxs(
|
|
31
|
+
"svg",
|
|
32
|
+
{
|
|
33
|
+
viewBox: "0 0 16 16",
|
|
34
|
+
className: "size-4",
|
|
35
|
+
fill: "none",
|
|
36
|
+
stroke: "currentColor",
|
|
37
|
+
strokeWidth: "1.5",
|
|
38
|
+
strokeLinecap: "round",
|
|
39
|
+
strokeLinejoin: "round",
|
|
40
|
+
"aria-hidden": "true",
|
|
41
|
+
children: [
|
|
42
|
+
/* @__PURE__ */ jsx("path", { d: "M14 2 2 6.8l4.6 2.6L9.2 14z" }),
|
|
43
|
+
/* @__PURE__ */ jsx("path", { d: "M14 2 6.6 9.4" })
|
|
44
|
+
]
|
|
45
|
+
}
|
|
46
|
+
))
|
|
47
|
+
}
|
|
48
|
+
);
|
|
49
|
+
}
|
|
50
|
+
export {
|
|
51
|
+
ComposerSubmit
|
|
52
|
+
};
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
/**
|
|
3
|
+
* Props for ComposerToolbar
|
|
4
|
+
*/
|
|
5
|
+
export interface ComposerToolbarProps {
|
|
6
|
+
/** The controls on the rail, laid out left to right in source order. */
|
|
7
|
+
children?: ReactNode;
|
|
8
|
+
/** Additional CSS classes */
|
|
9
|
+
className?: string;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* The bottom rail of a composer: one row, one gap, no opinions about what sits
|
|
13
|
+
* on it. A model picker, an attach button and a send button are all just
|
|
14
|
+
* children here, laid out left to right in source order.
|
|
15
|
+
*
|
|
16
|
+
* The trailing spacer convention
|
|
17
|
+
* ------------------------------
|
|
18
|
+
* The rail lays everything out from the left. Anything that belongs on the
|
|
19
|
+
* right — the send button, a token meter — is pushed there by a spacer the
|
|
20
|
+
* integrator writes into `children`, rather than by a second slot this
|
|
21
|
+
* component would have to invent:
|
|
22
|
+
*
|
|
23
|
+
* ```tsx
|
|
24
|
+
* <ComposerToolbar>
|
|
25
|
+
* <ComposerModelPicker models={models} />
|
|
26
|
+
* <div className="flex-1" />
|
|
27
|
+
* <ComposerSubmit />
|
|
28
|
+
* </ComposerToolbar>
|
|
29
|
+
* ```
|
|
30
|
+
*
|
|
31
|
+
* One flexible box, any number of groups, and the split stays visible in the
|
|
32
|
+
* consumer's markup instead of being buried in ours.
|
|
33
|
+
*
|
|
34
|
+
* Deliberately not `role="toolbar"`: that role promises arrow-key roving focus
|
|
35
|
+
* between its controls, and a row that announces itself as a toolbar without
|
|
36
|
+
* implementing that is worse for a keyboard user than a plain row of tab stops.
|
|
37
|
+
*/
|
|
38
|
+
export declare function ComposerToolbar({ children, className }: ComposerToolbarProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx } from "react/jsx-runtime";
|
|
3
|
+
import { cn } from "../../utils.js";
|
|
4
|
+
function ComposerToolbar({ children, className }) {
|
|
5
|
+
return /* @__PURE__ */ jsx("div", { className: cn("ft-composer-toolbar flex items-center gap-1", className), children });
|
|
6
|
+
}
|
|
7
|
+
export {
|
|
8
|
+
ComposerToolbar
|
|
9
|
+
};
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Caret arithmetic and caret geometry for the composer's trigger menus.
|
|
3
|
+
*
|
|
4
|
+
* Two jobs, one file, because a completion menu needs both at the same moment:
|
|
5
|
+
* *what* the reader is typing after a trigger character, and *where* on screen
|
|
6
|
+
* that trigger sits so the menu can be pinned to it.
|
|
7
|
+
*
|
|
8
|
+
* `findTokenStart` and `findTriggerToken` are pure — no DOM, no globals,
|
|
9
|
+
* exhaustively testable. `measureCaretRect` has to touch the DOM, since a
|
|
10
|
+
* textarea exposes no caret geometry of its own: the only way to find out where
|
|
11
|
+
* character *n* landed is to lay the same text out again in an element that can
|
|
12
|
+
* be measured.
|
|
13
|
+
*/
|
|
14
|
+
import type { FloatRect } from "../../internals/float.js";
|
|
15
|
+
/** The trigger token the caret currently sits in. */
|
|
16
|
+
export interface TriggerToken {
|
|
17
|
+
/** Index of the trigger character itself, within the value. */
|
|
18
|
+
start: number;
|
|
19
|
+
/** Everything typed between the trigger and the caret. Empty right after the trigger. */
|
|
20
|
+
query: string;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Where the trigger token under `caret` starts, or -1 when there is none.
|
|
24
|
+
*
|
|
25
|
+
* This is *the* definition of a trigger token, and the only one: both the menus
|
|
26
|
+
* that open on a token and the `insertText` that replaces one measure it here,
|
|
27
|
+
* so the span a menu matched and the span a completion overwrites can never
|
|
28
|
+
* drift apart.
|
|
29
|
+
*
|
|
30
|
+
* The token is the whitespace-delimited run ending at the caret, and it counts
|
|
31
|
+
* as a trigger only when it opens with something other than a letter or a digit.
|
|
32
|
+
* That deliberately avoids a hardcoded trigger vocabulary: `/`, `@`, `#`, `:`
|
|
33
|
+
* and whatever a menu invents all behave the same, while an ordinary word — or a
|
|
34
|
+
* `/` sitting mid-word, as in a path fragment — does not.
|
|
35
|
+
*
|
|
36
|
+
* The walk counts code points rather than code units. Reading one unit would
|
|
37
|
+
* mistake the leading half of an astral character for a non-alphanumeric and
|
|
38
|
+
* swallow the whole word: `𝐀𝐁` is two letters, not a trigger token, and a caret
|
|
39
|
+
* the platform dropped between two halves belongs to the character as a whole.
|
|
40
|
+
*/
|
|
41
|
+
export declare function findTokenStart(value: string, caret: number): number;
|
|
42
|
+
/**
|
|
43
|
+
* The trigger token under `caret`, or `null` when there is none.
|
|
44
|
+
*
|
|
45
|
+
* The same run `findTokenStart` reports, narrowed to the menus that own it: the
|
|
46
|
+
* run has to open with the exact `trigger` string. So `/de` and `@jo` open their
|
|
47
|
+
* own menu and nobody else's; `src/lib` opens neither, because its slash is
|
|
48
|
+
* mid-word, and neither does a caret sitting before the trigger it would
|
|
49
|
+
* otherwise match.
|
|
50
|
+
*
|
|
51
|
+
* The token deliberately ends *at the caret* rather than at the end of the word:
|
|
52
|
+
* completing `@jo|rdan` should search for `jo`, which is what the reader has
|
|
53
|
+
* actually committed to.
|
|
54
|
+
*/
|
|
55
|
+
export declare function findTriggerToken(value: string, caret: number, trigger: string): TriggerToken | null;
|
|
56
|
+
/**
|
|
57
|
+
* Where character `index` of a textarea sits, in viewport coordinates.
|
|
58
|
+
*
|
|
59
|
+
* The mirror-div technique: a hidden div inherits the textarea's font, padding,
|
|
60
|
+
* borders and content width, receives the text up to `index`, and then a marker
|
|
61
|
+
* span holding the rest. The span's offset is the caret's offset, because the
|
|
62
|
+
* two layouts are the same layout. The rest is bookkeeping — the textarea's own
|
|
63
|
+
* position, its border, and how far it has been scrolled.
|
|
64
|
+
*
|
|
65
|
+
* Returns a zero-width rect one line tall, which is exactly what a float wants
|
|
66
|
+
* as a virtual anchor. Under jsdom nothing has a layout, so everything measures
|
|
67
|
+
* zero; the shape still holds and nothing throws.
|
|
68
|
+
*/
|
|
69
|
+
export declare function measureCaretRect(textarea: HTMLTextAreaElement, index: number): FloatRect;
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
function splitsPair(value, index) {
|
|
3
|
+
const high = value.charCodeAt(index - 1);
|
|
4
|
+
const low = value.charCodeAt(index);
|
|
5
|
+
return high >= 55296 && high <= 56319 && low >= 56320 && low <= 57343;
|
|
6
|
+
}
|
|
7
|
+
function tokenEnd(value, caret) {
|
|
8
|
+
const end = Math.max(0, Math.min(caret, value.length));
|
|
9
|
+
return end > 0 && end < value.length && splitsPair(value, end) ? end - 1 : end;
|
|
10
|
+
}
|
|
11
|
+
function findTokenStart(value, caret) {
|
|
12
|
+
const end = tokenEnd(value, caret);
|
|
13
|
+
let start = end;
|
|
14
|
+
while (start > 0) {
|
|
15
|
+
const step = splitsPair(value, start - 1) ? 2 : 1;
|
|
16
|
+
if (/\s/u.test(value.slice(start - step, start))) break;
|
|
17
|
+
start -= step;
|
|
18
|
+
}
|
|
19
|
+
if (start === end) return -1;
|
|
20
|
+
const first = String.fromCodePoint(value.codePointAt(start));
|
|
21
|
+
return /[\p{L}\p{N}]/u.test(first) ? -1 : start;
|
|
22
|
+
}
|
|
23
|
+
function findTriggerToken(value, caret, trigger) {
|
|
24
|
+
if (trigger === "") return null;
|
|
25
|
+
const end = tokenEnd(value, caret);
|
|
26
|
+
const start = findTokenStart(value, end);
|
|
27
|
+
if (start < 0) return null;
|
|
28
|
+
const token = value.slice(start, end);
|
|
29
|
+
if (!token.startsWith(trigger)) return null;
|
|
30
|
+
return { start, query: token.slice(trigger.length) };
|
|
31
|
+
}
|
|
32
|
+
const MIRRORED_STYLES = [
|
|
33
|
+
"border-bottom-width",
|
|
34
|
+
"border-left-width",
|
|
35
|
+
"border-right-width",
|
|
36
|
+
"border-top-width",
|
|
37
|
+
"direction",
|
|
38
|
+
"font-family",
|
|
39
|
+
"font-size",
|
|
40
|
+
"font-stretch",
|
|
41
|
+
"font-style",
|
|
42
|
+
"font-variant",
|
|
43
|
+
"font-weight",
|
|
44
|
+
"letter-spacing",
|
|
45
|
+
"line-height",
|
|
46
|
+
"padding-bottom",
|
|
47
|
+
"padding-left",
|
|
48
|
+
"padding-right",
|
|
49
|
+
"padding-top",
|
|
50
|
+
"tab-size",
|
|
51
|
+
"text-align",
|
|
52
|
+
"text-indent",
|
|
53
|
+
"text-transform",
|
|
54
|
+
"word-spacing"
|
|
55
|
+
];
|
|
56
|
+
const FALLBACK_LINE_HEIGHT = 20;
|
|
57
|
+
const NORMAL_LINE_RATIO = 1.5;
|
|
58
|
+
function px(input) {
|
|
59
|
+
const parsed = Number.parseFloat(input);
|
|
60
|
+
return Number.isFinite(parsed) ? parsed : 0;
|
|
61
|
+
}
|
|
62
|
+
function measureCaretRect(textarea, index) {
|
|
63
|
+
const box = textarea.getBoundingClientRect();
|
|
64
|
+
const doc = textarea.ownerDocument;
|
|
65
|
+
const win = doc.defaultView;
|
|
66
|
+
if (!win) return { x: box.left, y: box.top, width: 0, height: box.height };
|
|
67
|
+
const style = win.getComputedStyle(textarea);
|
|
68
|
+
const declaredLine = Number.parseFloat(style.lineHeight);
|
|
69
|
+
const fontSize = Number.parseFloat(style.fontSize);
|
|
70
|
+
const line = Number.isFinite(declaredLine) && declaredLine > 0 ? declaredLine : Number.isFinite(fontSize) && fontSize > 0 ? fontSize * NORMAL_LINE_RATIO : FALLBACK_LINE_HEIGHT;
|
|
71
|
+
const mirror = doc.createElement("div");
|
|
72
|
+
for (const property of MIRRORED_STYLES) {
|
|
73
|
+
mirror.style.setProperty(property, style.getPropertyValue(property));
|
|
74
|
+
}
|
|
75
|
+
const inner = textarea.clientWidth || box.width;
|
|
76
|
+
mirror.style.boxSizing = "content-box";
|
|
77
|
+
mirror.style.width = `${Math.max(0, inner - px(style.paddingLeft) - px(style.paddingRight))}px`;
|
|
78
|
+
mirror.style.height = "auto";
|
|
79
|
+
mirror.style.position = "absolute";
|
|
80
|
+
mirror.style.top = "0";
|
|
81
|
+
mirror.style.left = "-9999px";
|
|
82
|
+
mirror.style.visibility = "hidden";
|
|
83
|
+
mirror.style.overflow = "hidden";
|
|
84
|
+
mirror.style.whiteSpace = "pre-wrap";
|
|
85
|
+
mirror.style.overflowWrap = "break-word";
|
|
86
|
+
const value = textarea.value;
|
|
87
|
+
const clamped = Math.max(0, Math.min(index, value.length));
|
|
88
|
+
mirror.textContent = value.slice(0, clamped);
|
|
89
|
+
const marker = doc.createElement("span");
|
|
90
|
+
marker.textContent = value.slice(clamped) || ".";
|
|
91
|
+
mirror.appendChild(marker);
|
|
92
|
+
doc.body.appendChild(mirror);
|
|
93
|
+
let top = 0;
|
|
94
|
+
let left = 0;
|
|
95
|
+
try {
|
|
96
|
+
top = marker.offsetTop;
|
|
97
|
+
left = marker.offsetLeft;
|
|
98
|
+
} finally {
|
|
99
|
+
mirror.remove();
|
|
100
|
+
}
|
|
101
|
+
return {
|
|
102
|
+
x: box.left + px(style.borderLeftWidth) + left - textarea.scrollLeft,
|
|
103
|
+
y: box.top + px(style.borderTopWidth) + top - textarea.scrollTop,
|
|
104
|
+
width: 0,
|
|
105
|
+
height: line
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
export {
|
|
109
|
+
findTokenStart,
|
|
110
|
+
findTriggerToken,
|
|
111
|
+
measureCaretRect
|
|
112
|
+
};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export { Composer } from "./Composer.js";
|
|
2
|
+
export type { ComposerProps } from "./Composer.js";
|
|
3
|
+
export { ComposerInput } from "./ComposerInput.js";
|
|
4
|
+
export type { ComposerInputProps } from "./ComposerInput.js";
|
|
5
|
+
export { ComposerSubmit } from "./ComposerSubmit.js";
|
|
6
|
+
export type { ComposerSubmitProps } from "./ComposerSubmit.js";
|
|
7
|
+
export { ComposerToolbar } from "./ComposerToolbar.js";
|
|
8
|
+
export type { ComposerToolbarProps } from "./ComposerToolbar.js";
|
|
9
|
+
export { ComposerModelPicker } from "./ComposerModelPicker.js";
|
|
10
|
+
export type { ComposerModelPickerProps } from "./ComposerModelPicker.js";
|
|
11
|
+
export { ComposerAttachments } from "./ComposerAttachments.js";
|
|
12
|
+
export type { ComposerAttachmentsProps } from "./ComposerAttachments.js";
|
|
13
|
+
export { ComposerAttachment } from "./ComposerAttachment.js";
|
|
14
|
+
export type { ComposerAttachmentProps } from "./ComposerAttachment.js";
|
|
15
|
+
export { ComposerCommandMenu } from "./ComposerCommandMenu.js";
|
|
16
|
+
export type { ComposerCommandMenuProps } from "./ComposerCommandMenu.js";
|
|
17
|
+
export { COMPOSER_CONTEXT_KEY } from "./types.js";
|
|
18
|
+
export type { ComposerContext } from "./types.js";
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The contract between the composer root and its parts.
|
|
3
|
+
*
|
|
4
|
+
* `Composer` owns the draft — the text, the attachments, the textarea element —
|
|
5
|
+
* and publishes a live, read-only view of it plus the handful of commands a part
|
|
6
|
+
* may issue. Every part reads it through context instead of having six values
|
|
7
|
+
* and four callbacks threaded back down as props, and every part must render
|
|
8
|
+
* harmlessly (inert, no-op) when the context is absent, so a part dropped
|
|
9
|
+
* outside a composer degrades instead of throwing.
|
|
10
|
+
*
|
|
11
|
+
* The root rebuilds the object on every render, which is what makes a part that
|
|
12
|
+
* reads `value.current` re-render when the draft changes. The commands are
|
|
13
|
+
* identity-stable and always call the root's latest logic, so a handle captured
|
|
14
|
+
* once — a menu's long-lived listener, a test's probe — never goes stale.
|
|
15
|
+
*
|
|
16
|
+
* `textareaRef` is typed read-only because exactly one part writes it —
|
|
17
|
+
* `ComposerInput`, which registers its own element through a documented cast to
|
|
18
|
+
* the writable shape the root actually publishes. Everyone else reads. It is the
|
|
19
|
+
* one member of the object that is NOT rebuilt per render: the root publishes a
|
|
20
|
+
* single accessor pair backed by a ref, so a write lands immediately and still
|
|
21
|
+
* wakes the parts that render off it.
|
|
22
|
+
*/
|
|
23
|
+
import type { AttachmentData } from "../../internals/ai-types.js";
|
|
24
|
+
/** What the root publishes. Parts read it; only the root writes it. */
|
|
25
|
+
export interface ComposerContext {
|
|
26
|
+
/** The current draft text, exactly as typed — untrimmed. */
|
|
27
|
+
readonly value: {
|
|
28
|
+
readonly current: string;
|
|
29
|
+
};
|
|
30
|
+
/** The attachments riding along with the draft. The consumer owns this list. */
|
|
31
|
+
readonly attachments: {
|
|
32
|
+
readonly current: AttachmentData[];
|
|
33
|
+
};
|
|
34
|
+
/** Nothing may be typed, sent, or attached. */
|
|
35
|
+
readonly disabled: boolean;
|
|
36
|
+
/** A response is arriving: send becomes stop. */
|
|
37
|
+
readonly streaming: boolean;
|
|
38
|
+
/**
|
|
39
|
+
* Whether `stop()` reaches anyone. The root always publishes a callable
|
|
40
|
+
* `stop`, so a control asking "is there a handler behind it" has to ask this
|
|
41
|
+
* instead — otherwise a stop button offers itself with nothing to stop.
|
|
42
|
+
*/
|
|
43
|
+
readonly stoppable: boolean;
|
|
44
|
+
/** The live textarea, once `ComposerInput` has mounted one. */
|
|
45
|
+
readonly textareaRef: {
|
|
46
|
+
readonly current: HTMLTextAreaElement | null;
|
|
47
|
+
};
|
|
48
|
+
/**
|
|
49
|
+
* Whether this composer plays sound cues — forwarded from the root's own
|
|
50
|
+
* `sound` prop. Parts read `composer?.sound ?? false`, so a part rendered
|
|
51
|
+
* outside a `Composer` stays silent rather than throwing.
|
|
52
|
+
*/
|
|
53
|
+
readonly sound?: boolean;
|
|
54
|
+
/** Send the draft. No-ops while disabled, while streaming, and on an empty draft. */
|
|
55
|
+
submit(): void;
|
|
56
|
+
/** Interrupt the stream. No-ops unless the composer is streaming. */
|
|
57
|
+
stop(): void;
|
|
58
|
+
/** Replace the draft outright. */
|
|
59
|
+
setValue(next: string): void;
|
|
60
|
+
/**
|
|
61
|
+
* Splice `text` in at the caret. With `replaceTriggerToken`, the trigger token
|
|
62
|
+
* the caret sits in — the whitespace-delimited run before it, when that run
|
|
63
|
+
* opens with a non-alphanumeric character — is replaced instead, and the
|
|
64
|
+
* completion closes with a trailing space.
|
|
65
|
+
*/
|
|
66
|
+
insertText(text: string, replaceTriggerToken?: boolean): void;
|
|
67
|
+
/** Hand files to the consumer. It uploads them and pushes onto `attachments`. */
|
|
68
|
+
addFiles(files: File[]): void;
|
|
69
|
+
/** Drop one attachment from the draft by id. */
|
|
70
|
+
removeAttachment(id: string): void;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* The context the parts read to find their root.
|
|
74
|
+
*
|
|
75
|
+
* The source publishes it under a `Symbol` context key; React's own context
|
|
76
|
+
* object plays that role here, so the exported name is kept and the value is a
|
|
77
|
+
* `React.Context` rather than a symbol:
|
|
78
|
+
*
|
|
79
|
+
* ```tsx
|
|
80
|
+
* const composer = useContext(COMPOSER_CONTEXT_KEY);
|
|
81
|
+
* ```
|
|
82
|
+
*
|
|
83
|
+
* Read it as optional — a part rendered outside a `Composer` gets `undefined`
|
|
84
|
+
* rather than throwing.
|
|
85
|
+
*/
|
|
86
|
+
export declare const COMPOSER_CONTEXT_KEY: import("react").Context<ComposerContext | undefined>;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
import type { GlobalOptions as ConfettiGlobalOptions, Options as ConfettiOptions } from "canvas-confetti";
|
|
3
|
+
/**
|
|
4
|
+
* The imperative surface the root exposes.
|
|
5
|
+
*
|
|
6
|
+
* The Svelte source declares `export function fire(...)`, which Svelte 5 hangs
|
|
7
|
+
* off the component instance (`bind:this={c}; c.fire()`). React has no instance,
|
|
8
|
+
* so the same method is published through the ref channel. This is the ONE place
|
|
9
|
+
* the port's `forwardRef` is not backed by a `ref = $bindable` declaration: the
|
|
10
|
+
* ref carries the handle, not the DOM node, because there is no bindable node to
|
|
11
|
+
* carry and dropping `fire` would delete a public method.
|
|
12
|
+
*/
|
|
13
|
+
export interface ConfettiHandle {
|
|
14
|
+
/** Fire the canvas instance. `opts` is merged over the component's `options`. */
|
|
15
|
+
fire: (opts?: ConfettiOptions) => void;
|
|
16
|
+
}
|
|
17
|
+
export interface ConfettiProps {
|
|
18
|
+
/** Default confetti options, merged under every `fire()` call. */
|
|
19
|
+
options?: ConfettiOptions;
|
|
20
|
+
/** Canvas creation options, read once when the instance is created. */
|
|
21
|
+
globalOptions?: ConfettiGlobalOptions;
|
|
22
|
+
/** Skip the automatic fire on mount. */
|
|
23
|
+
manualStart?: boolean;
|
|
24
|
+
/** Canvas CSS classes. */
|
|
25
|
+
className?: string;
|
|
26
|
+
/** Content rendered next to the canvas — typically the buttons that fire it. */
|
|
27
|
+
children?: ReactNode;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Canvas wrapper owning one `canvas-confetti` instance and publishing its
|
|
31
|
+
* `fire` through context, so any `ConfettiButton` below it paints onto this
|
|
32
|
+
* canvas rather than the library's own full-page one.
|
|
33
|
+
*
|
|
34
|
+
* Rest props are not spread: the Svelte source reads only these props off
|
|
35
|
+
* `$props()` and has no `...restProps`.
|
|
36
|
+
*/
|
|
37
|
+
export declare const Confetti: import("react").ForwardRefExoticComponent<ConfettiProps & import("react").RefAttributes<ConfettiHandle>>;
|