@flikk/ui 1.0.0-beta.29 → 1.0.0-beta.30
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/CHANGELOG.md +1184 -0
- package/dist/components/ai/CodeBlock/CodeBlock.js +21 -4
- package/dist/components/ai/CodeBlock/CodeBlock.theme.js +0 -1
- package/dist/components/ai/CodeBlock/CodeBlock.types.d.ts +0 -2
- package/dist/components/ai/CodeBlock/LanguageIcon.js +1 -0
- package/dist/components/ai/PromptInput/PromptInput.js +13 -9
- package/dist/components/ai/PromptInput/PromptInput.theme.js +19 -2
- package/dist/components/ai/PromptInput/VoiceRecorder.d.ts +1 -0
- package/dist/components/ai/PromptInput/VoiceRecorder.js +154 -7
- package/dist/components/ai/{PromptSuggestions → PromptSuggestion}/PromptSuggestion.js +1 -0
- package/dist/components/ai/StreamingResponse/AnimatedText.js +1 -0
- package/dist/components/ai/StreamingResponse/ErrorDisplay.js +1 -0
- package/dist/components/ai/StreamingResponse/MarkdownRenderer.js +1 -0
- package/dist/components/ai/StreamingResponse/StreamingCursor.d.ts +2 -2
- package/dist/components/ai/StreamingResponse/StreamingCursor.js +14 -3
- package/dist/components/ai/StreamingResponse/StreamingResponse.animations.d.ts +2 -2
- package/dist/components/ai/StreamingResponse/StreamingResponse.animations.js +17 -11
- package/dist/components/ai/StreamingResponse/StreamingResponse.js +3 -3
- package/dist/components/ai/StreamingResponse/WordAnimationContext.js +3 -1
- package/dist/components/ai/TokenCounter/TokenCounter.js +1 -0
- package/dist/components/ai/index.d.ts +2 -2
- package/dist/components/ai/index.js +4 -5
- package/dist/components/canvas/Background.js +3 -2
- package/dist/components/canvas/CanvasToolbar.js +3 -2
- package/dist/components/canvas/Edge.d.ts +2 -5
- package/dist/components/canvas/Edge.js +18 -2
- package/dist/components/canvas/EdgeLayer.d.ts +2 -1
- package/dist/components/canvas/EdgeLayer.js +20 -10
- package/dist/components/canvas/Handle.js +3 -2
- package/dist/components/canvas/MiniMap.js +1 -0
- package/dist/components/canvas/NodeCanvas.js +19 -15
- package/dist/components/canvas/NodeCanvas.types.d.ts +5 -1
- package/dist/components/canvas/NodeControls.js +3 -2
- package/dist/components/canvas/NodeRenderer.d.ts +4 -1
- package/dist/components/canvas/NodeRenderer.js +18 -9
- package/dist/components/canvas/changes.test.d.ts +1 -0
- package/dist/components/canvas/context/CanvasContext.d.ts +10 -1
- package/dist/components/canvas/context/CanvasContext.js +27 -7
- package/dist/components/canvas/context/ConnectionContext.js +1 -0
- package/dist/components/canvas/context/HandleRegistry.js +1 -0
- package/dist/components/canvas/context/InteractionContext.js +1 -0
- package/dist/components/canvas/context/NodeIdContext.js +1 -0
- package/dist/components/canvas/hooks/useConnection.js +1 -0
- package/dist/components/canvas/hooks/useMarquee.js +1 -0
- package/dist/components/canvas/hooks/useNodeDrag.js +3 -2
- package/dist/components/canvas/hooks/usePanZoom.js +7 -1
- package/dist/components/canvas/hooks/useViewport.js +1 -0
- package/dist/components/canvas/layout.test.d.ts +1 -0
- package/dist/components/canvas/utils.test.d.ts +1 -0
- package/dist/components/charts/ActivityRings/ActivityRings.js +28 -17
- package/dist/components/charts/ActivityRings/ActivityRings.types.d.ts +2 -3
- package/dist/components/charts/ActivityRings/ActivityRings.types.js +2 -1
- package/dist/components/charts/AreaChart/AreaChart.js +170 -157
- package/dist/components/charts/BarChart/BarChart.js +114 -124
- package/dist/components/charts/ChartContainer.d.ts +7 -0
- package/dist/components/charts/ChartContainer.js +10 -7
- package/dist/components/charts/{shared/BarRenderer → ComboChart}/BarRenderer.d.ts +3 -1
- package/dist/components/charts/{shared/BarRenderer → ComboChart}/BarRenderer.js +137 -102
- package/dist/components/charts/{shared/BarRenderer → ComboChart}/BarRenderer.types.d.ts +17 -5
- package/dist/components/charts/ComboChart/ComboChart.js +26 -9
- package/dist/components/charts/ComboChart/ComboChart.types.d.ts +2 -2
- package/dist/components/charts/ComboChart/ComboChart.types.js +4 -0
- package/dist/components/charts/ComboChart/ComboChartCanvas.d.ts +98 -0
- package/dist/components/charts/{shared/ChartContainer/ChartContainer.js → ComboChart/ComboChartCanvas.js} +41 -44
- package/dist/components/charts/{shared/ChartContainer/ChartContainer.types.d.ts → ComboChart/ComboChartCanvas.types.d.ts} +23 -3
- package/dist/components/charts/{shared/LineRenderer → ComboChart}/LineRenderer.d.ts +3 -1
- package/dist/components/charts/{shared/LineRenderer → ComboChart}/LineRenderer.js +27 -14
- package/dist/components/charts/{shared/LineRenderer → ComboChart}/LineRenderer.types.d.ts +11 -5
- package/dist/components/charts/DonutChart/DonutChart.js +2 -1
- package/dist/components/charts/DonutChart/MultiSegmentDonutChart.js +8 -22
- package/dist/components/charts/DonutChart/donut-utils.js +1 -0
- package/dist/components/charts/FunnelChart/FunnelChart.animations.js +1 -48
- package/dist/components/charts/FunnelChart/FunnelChart.d.ts +3 -4
- package/dist/components/charts/FunnelChart/FunnelChart.js +306 -358
- package/dist/components/charts/Heatmap/Heatmap.js +29 -36
- package/dist/components/charts/Heatmap/HeatmapCell.js +1 -0
- package/dist/components/charts/LineChart/LineChart.js +163 -132
- package/dist/components/charts/LineChart/LineChart.types.d.ts +1 -1
- package/dist/components/charts/RadarChart/RadarChart.js +10 -2
- package/dist/components/charts/RadarChart/RadarChart.theme.js +0 -8
- package/dist/components/charts/RadarChart/RadarChart.types.d.ts +0 -8
- package/dist/components/charts/ScatterPlot/ScatterPlot.js +12 -3
- package/dist/components/charts/ScatterPlot/ScatterPlot.theme.d.ts +0 -4
- package/dist/components/charts/ScatterPlot/ScatterPlot.theme.js +0 -5
- package/dist/components/charts/StackedBarChart/StackedBarChart.js +79 -42
- package/dist/components/charts/StackedBarChart/StackedBarChart.types.d.ts +2 -2
- package/dist/components/charts/StackedBarChart/StackedBarChart.types.js +3 -0
- package/dist/components/charts/hooks/index.d.ts +1 -1
- package/dist/components/charts/hooks/useChartAccessibility.js +1 -0
- package/dist/components/charts/hooks/useChartDimensions.js +1 -0
- package/dist/components/charts/hooks/useChartScales.js +1 -1
- package/dist/components/charts/hooks/useChartTheme.js +1 -0
- package/dist/components/charts/hooks/useChartValidation.d.ts +0 -8
- package/dist/components/charts/hooks/useChartValidation.js +1 -0
- package/dist/components/charts/hooks/useTooltipPosition.js +1 -0
- package/dist/components/charts/index.d.ts +3 -3
- package/dist/components/charts/index.js +1 -3
- package/dist/components/charts/shared/ChartCrosshair/ChartCrosshair.js +5 -12
- package/dist/components/charts/shared/ChartErrorBoundary/ChartErrorBoundary.js +1 -0
- package/dist/components/charts/shared/ChartLegend/ChartLegend.d.ts +5 -2
- package/dist/components/charts/shared/ChartLegend/ChartLegend.js +15 -22
- package/dist/components/charts/shared/ChartLegend/ChartLegend.types.d.ts +6 -23
- package/dist/components/charts/shared/ChartLegend/index.d.ts +2 -3
- package/dist/components/charts/shared/ChartMarker/ChartMarker.js +1 -0
- package/dist/components/charts/shared/ChartText/ChartText.js +1 -0
- package/dist/components/charts/shared/ChartTooltip/ChartTooltip.js +4 -13
- package/dist/components/charts/shared/index.d.ts +0 -7
- package/dist/components/charts/theme/chart.theme.js +6 -0
- package/dist/components/charts/types/chart.types.d.ts +15 -0
- package/dist/components/charts/utils/animation-utils.d.ts +95 -0
- package/dist/components/charts/utils/animation-utils.js +150 -2
- package/dist/components/charts/utils/bar-emphasis.d.ts +80 -0
- package/dist/components/charts/utils/bar-emphasis.js +69 -0
- package/dist/components/charts/utils/chart-validation.js +7 -0
- package/dist/components/core/Accordion/Accordion.d.ts +3 -3
- package/dist/components/core/Accordion/Accordion.js +21 -17
- package/dist/components/core/Accordion/Accordion.types.d.ts +35 -1
- package/dist/components/core/Accordion/AccordionBody.js +2 -1
- package/dist/components/core/Accordion/AccordionContext.d.ts +3 -0
- package/dist/components/core/Accordion/AccordionContext.js +15 -0
- package/dist/components/core/Accordion/AccordionItem.js +12 -8
- package/dist/components/core/Accordion/AccordionTrigger.js +7 -4
- package/dist/components/core/Accordion/index.d.ts +2 -2
- package/dist/components/core/Alert/Alert.animations.js +1 -0
- package/dist/components/core/Alert/Alert.js +4 -4
- package/dist/components/core/Alert/Alert.theme.js +0 -5
- package/dist/components/core/Alert/Alert.types.d.ts +0 -8
- package/dist/components/core/Alert/index.d.ts +1 -1
- package/dist/components/core/AlertDialog/AlertDialog.js +15 -1
- package/dist/components/core/Avatar/Avatar.js +58 -14
- package/dist/components/core/Avatar/Avatar.types.d.ts +26 -1
- package/dist/components/core/AvatarGroup/AvatarGroup.animations.js +1 -0
- package/dist/components/core/AvatarGroup/AvatarGroup.js +1 -0
- package/dist/components/core/Badge/Badge.animations.js +1 -0
- package/dist/components/core/Badge/Badge.js +6 -6
- package/dist/components/core/Badge/Badge.theme.js +32 -28
- package/dist/components/core/Badge/Badge.types.d.ts +12 -1
- package/dist/components/core/Breadcrumbs/Breadcrumbs.js +8 -2
- package/dist/components/core/Button/Button.js +23 -17
- package/dist/components/core/Button/Button.ripple.js +1 -4
- package/dist/components/core/Button/Button.theme.d.ts +0 -2
- package/dist/components/core/Button/Button.theme.js +16 -92
- package/dist/components/core/Button/Button.types.d.ts +5 -6
- package/dist/components/core/Calendar/Calendar.animations.js +1 -0
- package/dist/components/core/Calendar/Calendar.js +87 -4
- package/dist/components/core/Calendar/CalendarMini/CalendarMini.animations.js +1 -0
- package/dist/components/core/Calendar/CalendarMini/CalendarMini.js +3 -1
- package/dist/components/core/Card/Card.js +9 -2
- package/dist/components/core/Card/Card.theme.js +3 -1
- package/dist/components/core/Card/Card.types.d.ts +8 -0
- package/dist/components/core/CardStack/CardStack.js +1 -0
- package/dist/components/core/Carousel/Carousel.js +1 -0
- package/dist/components/core/Carousel/CarouselBody.js +5 -2
- package/dist/components/core/Carousel/CarouselContext.js +1 -0
- package/dist/components/core/Carousel/CarouselNext.js +1 -0
- package/dist/components/core/Carousel/CarouselPrevious.js +1 -0
- package/dist/components/core/CommandPalette/CommandItem.js +1 -0
- package/dist/components/core/CommandPalette/CommandPalette.animations.js +1 -0
- package/dist/components/core/CommandPalette/CommandPalette.js +55 -11
- package/dist/components/core/CommandPalette/CommandPalette.theme.js +3 -1
- package/dist/components/core/CommandPalette/CommandPalette.types.d.ts +8 -0
- package/dist/components/core/ContextMenu/ContextMenu.js +27 -5
- package/dist/components/core/ContextMenu/ContextMenu.theme.js +8 -7
- package/dist/components/core/ContextMenu/ContextMenu.types.d.ts +17 -0
- package/dist/components/core/ContextMenu/ContextMenuBody.js +11 -5
- package/dist/components/core/ContextMenu/ContextMenuContext.js +1 -0
- package/dist/components/core/ContextMenu/ContextMenuItem.js +17 -7
- package/dist/components/core/ContextMenu/ContextMenuLabel.js +1 -0
- package/dist/components/core/ContextMenu/ContextMenuSeparator.js +1 -0
- package/dist/components/core/ContextMenu/ContextMenuSub.js +4 -3
- package/dist/components/core/ContextMenu/ContextMenuSubBody.js +7 -3
- package/dist/components/core/ContextMenu/ContextMenuSubTrigger.js +3 -2
- package/dist/components/core/ContextMenu/ContextMenuTrigger.js +8 -0
- package/dist/components/core/DotSeparator/DotSeparator.js +1 -0
- package/dist/components/core/DragDrop/DragDrop.js +50 -31
- package/dist/components/core/Drawer/Drawer.animations.js +9 -8
- package/dist/components/core/Drawer/Drawer.d.ts +3 -3
- package/dist/components/core/Drawer/Drawer.js +14 -15
- package/dist/components/core/Drawer/Drawer.theme.js +8 -6
- package/dist/components/core/Drawer/Drawer.types.d.ts +8 -0
- package/dist/components/core/Drawer/DrawerBody.js +2 -1
- package/dist/components/core/Drawer/DrawerContext.d.ts +3 -0
- package/dist/components/core/Drawer/DrawerContext.js +15 -0
- package/dist/components/core/Drawer/DrawerFooter.js +2 -1
- package/dist/components/core/Drawer/DrawerHeader.js +3 -2
- package/dist/components/core/Drawer/DrawerSubtitle.js +2 -1
- package/dist/components/core/Drawer/DrawerTitle.js +2 -1
- package/dist/components/core/Dropdown/Dropdown.js +23 -9
- package/dist/components/core/Dropdown/Dropdown.theme.js +4 -3
- package/dist/components/core/Dropdown/Dropdown.types.d.ts +8 -0
- package/dist/components/core/Dropdown/DropdownContext.js +1 -0
- package/dist/components/core/Dropdown/DropdownItem.js +1 -0
- package/dist/components/core/Dropdown/DropdownMenu.js +22 -22
- package/dist/components/core/Dropdown/DropdownSection.js +1 -0
- package/dist/components/core/Dropdown/DropdownSeparator.js +1 -0
- package/dist/components/core/Dropdown/DropdownTrigger.js +21 -1
- package/dist/components/core/HeroCard/HeroCard.js +1 -0
- package/dist/components/core/HeroCard/HeroCard.theme.js +1 -1
- package/dist/components/core/ImagePlaceholder/ImagePlaceholder.js +11 -2
- package/dist/components/core/ImagePlaceholder/ImagePlaceholder.theme.js +2 -2
- package/dist/components/core/Link/Link.d.ts +1 -1
- package/dist/components/core/Link/Link.js +58 -29
- package/dist/components/core/Link/Link.types.d.ts +25 -8
- package/dist/components/core/Masonry/Masonry.js +87 -75
- package/dist/components/core/Masonry/Masonry.theme.js +10 -4
- package/dist/components/core/MenuItem/MenuItem.js +17 -1
- package/dist/components/core/MenuItem/MenuItem.theme.js +6 -2
- package/dist/components/core/Message/Message.js +2 -1
- package/dist/components/core/Message/MessageActions.js +1 -0
- package/dist/components/core/Message/MessageAudio.js +2 -1
- package/dist/components/core/Message/MessageAvatar.js +1 -0
- package/dist/components/core/Message/MessageBody.js +1 -0
- package/dist/components/core/Message/MessageContext.js +1 -0
- package/dist/components/core/Message/MessageFile.js +1 -0
- package/dist/components/core/Message/MessageImage.js +1 -0
- package/dist/components/core/Message/MessageList.js +1 -0
- package/dist/components/core/Message/MessageReactions.js +1 -0
- package/dist/components/core/Message/MessageStatusIndicator.js +3 -2
- package/dist/components/core/Message/MessageTimestamp.js +1 -0
- package/dist/components/core/Message/TypeWriter.d.ts +1 -1
- package/dist/components/core/Message/TypeWriter.js +74 -9
- package/dist/components/core/Modal/Modal.animations.d.ts +1 -1
- package/dist/components/core/Modal/Modal.animations.js +10 -25
- package/dist/components/core/Modal/Modal.d.ts +3 -5
- package/dist/components/core/Modal/Modal.js +15 -15
- package/dist/components/core/Modal/Modal.theme.js +7 -5
- package/dist/components/core/Modal/Modal.types.d.ts +8 -0
- package/dist/components/core/Modal/ModalBody.js +2 -1
- package/dist/components/core/Modal/ModalContext.d.ts +3 -0
- package/dist/components/core/Modal/ModalContext.js +16 -0
- package/dist/components/core/Modal/ModalFooter.js +3 -2
- package/dist/components/core/Modal/ModalHeader.js +3 -2
- package/dist/components/core/Modal/ModalSubtitle.js +2 -1
- package/dist/components/core/Modal/ModalTitle.js +2 -1
- package/dist/components/core/ModalStack/ModalStack.animations.js +1 -0
- package/dist/components/core/ModalStack/ModalStack.js +2 -1
- package/dist/components/core/ModalStack/ModalStackModal.js +18 -10
- package/dist/components/core/NavItem/NavItem.js +15 -3
- package/dist/components/core/OfflineIndicator/OfflineIndicator.js +1 -0
- package/dist/components/core/OfflineIndicator/OfflineIndicator.theme.js +1 -1
- package/dist/components/core/PageHeading/PageHeading.js +8 -3
- package/dist/components/core/PageHeading/PageHeading.theme.js +1 -1
- package/dist/components/core/PageHeading/PageHeading.types.d.ts +12 -1
- package/dist/components/core/PageHeading/PageHeadingBackButton.js +3 -2
- package/dist/components/core/Pagination/Pagination.js +8 -2
- package/dist/components/core/Pagination/Pagination.theme.d.ts +2 -10
- package/dist/components/core/Pagination/Pagination.types.d.ts +11 -1
- package/dist/components/core/Pill/Pill.animations.js +2 -11
- package/dist/components/core/Pill/Pill.js +14 -5
- package/dist/components/core/Pill/Pill.theme.js +8 -8
- package/dist/components/core/Popover/Popover.js +6 -5
- package/dist/components/core/Popover/Popover.theme.js +4 -2
- package/dist/components/core/Popover/Popover.types.d.ts +8 -0
- package/dist/components/core/Popover/PopoverBody.js +19 -21
- package/dist/components/core/Popover/PopoverContext.js +1 -0
- package/dist/components/core/Popover/PopoverTrigger.js +1 -0
- package/dist/components/core/Progress/Progress.js +1 -0
- package/dist/components/core/Rating/Rating.js +13 -5
- package/dist/components/core/ScrollArea/ScrollArea.js +1 -0
- package/dist/components/core/ScrollArea/smooth/SmoothScrollEngine.d.ts +1 -0
- package/dist/components/core/ScrollArea/smooth/SmoothScrollEngine.js +14 -3
- package/dist/components/core/ScrollArea/smooth/SnapPointDetector.js +1 -0
- package/dist/components/core/ScrollArea/smooth/useSmoothScroll.js +1 -0
- package/dist/components/core/Segmented/Segmented.js +3 -2
- package/dist/components/core/Segmented/SegmentedItem.js +2 -1
- package/dist/components/core/Separator/Separator.js +1 -0
- package/dist/components/core/Sidebar/Sidebar.js +1 -0
- package/dist/components/core/Sidebar/SidebarCard.js +1 -0
- package/dist/components/core/Sidebar/SidebarContent.js +1 -0
- package/dist/components/core/Sidebar/SidebarContext.js +1 -0
- package/dist/components/core/Sidebar/SidebarFooter.js +1 -0
- package/dist/components/core/Sidebar/SidebarHeader.js +1 -0
- package/dist/components/core/Sidebar/SidebarLogo.js +1 -0
- package/dist/components/core/Sidebar/SidebarMobileTrigger.js +1 -0
- package/dist/components/core/Sidebar/SidebarNav.js +3 -1
- package/dist/components/core/Sidebar/SidebarNavGroup.js +1 -0
- package/dist/components/core/Sidebar/SidebarSearch.js +1 -0
- package/dist/components/core/Sidebar/SidebarToggle.js +1 -0
- package/dist/components/core/Sidebar/SidebarUserProfile.js +1 -0
- package/dist/components/core/SlidingNumber/SlidingNumber.js +3 -1
- package/dist/components/core/Sortable/Sortable.animations.js +1 -0
- package/dist/components/core/Sortable/Sortable.js +1 -0
- package/dist/components/core/Spinner/Spinner.js +1 -0
- package/dist/components/core/Tabs/Tabs.animations.js +1 -0
- package/dist/components/core/Tabs/Tabs.js +1 -0
- package/dist/components/core/Tabs/Tabs.theme.js +3 -3
- package/dist/components/core/Tabs/TabsBody.js +1 -0
- package/dist/components/core/Tabs/TabsContext.js +1 -0
- package/dist/components/core/Tabs/TabsList.js +1 -0
- package/dist/components/core/Tabs/TabsTrigger.js +34 -10
- package/dist/components/core/Tag/Tag.js +2 -1
- package/dist/components/core/Tag/Tag.theme.js +2 -2
- package/dist/components/core/Toast/Toast.animations.d.ts +3 -2
- package/dist/components/core/Toast/Toast.animations.js +20 -17
- package/dist/components/core/Toast/Toast.js +42 -20
- package/dist/components/core/Toast/Toast.theme.js +5 -8
- package/dist/components/core/Toast/Toast.types.d.ts +30 -20
- package/dist/components/core/Toast/ToastProvider.js +5 -1
- package/dist/components/core/Toast/index.d.ts +1 -1
- package/dist/components/core/Toast/useToast.js +5 -6
- package/dist/components/core/Tooltip/Tooltip.animations.js +19 -53
- package/dist/components/core/Tooltip/Tooltip.d.ts +1 -1
- package/dist/components/core/Tooltip/Tooltip.js +39 -18
- package/dist/components/core/Tooltip/Tooltip.theme.js +4 -2
- package/dist/components/core/Tooltip/Tooltip.types.d.ts +8 -0
- package/dist/components/core/Tree/Tree.animations.d.ts +1 -2
- package/dist/components/core/Tree/Tree.animations.js +20 -58
- package/dist/components/core/Tree/Tree.js +7 -5
- package/dist/components/data-display/DescriptionList/DescriptionList.js +1 -0
- package/dist/components/data-display/Feed/Feed.js +1 -0
- package/dist/components/data-display/GanttChart/GanttChart.d.ts +2 -3
- package/dist/components/data-display/GanttChart/GanttChart.js +5 -21
- package/dist/components/data-display/GanttChart/GanttChartContext.d.ts +5 -0
- package/dist/components/data-display/GanttChart/GanttChartContext.js +26 -0
- package/dist/components/data-display/GanttChart/GanttChartPanel.js +2 -1
- package/dist/components/data-display/GanttChart/GanttDependencyArrows.js +2 -1
- package/dist/components/data-display/GanttChart/GanttGroupBar.js +2 -1
- package/dist/components/data-display/GanttChart/GanttMilestone.js +2 -1
- package/dist/components/data-display/GanttChart/GanttSplitter.js +2 -1
- package/dist/components/data-display/GanttChart/GanttTableGroupRow.js +2 -1
- package/dist/components/data-display/GanttChart/GanttTableHeader.js +2 -1
- package/dist/components/data-display/GanttChart/GanttTablePanel.js +2 -1
- package/dist/components/data-display/GanttChart/GanttTableTaskRow.js +2 -1
- package/dist/components/data-display/GanttChart/GanttTaskBar.js +2 -1
- package/dist/components/data-display/GanttChart/GanttTaskContextMenu.js +2 -1
- package/dist/components/data-display/GanttChart/GanttTimelineGrid.js +2 -1
- package/dist/components/data-display/GanttChart/GanttTimelineHeader.js +2 -1
- package/dist/components/data-display/GanttChart/GanttToolbar.js +2 -1
- package/dist/components/data-display/GanttChart/hooks/useGanttDates.js +1 -0
- package/dist/components/data-display/GanttChart/hooks/useGanttDrag.js +1 -0
- package/dist/components/data-display/GanttChart/hooks/useGanttLayout.js +1 -0
- package/dist/components/data-display/GanttChart/hooks/useGanttScrollSync.js +1 -0
- package/dist/components/data-display/KPI/KPI.js +1 -0
- package/dist/components/data-display/Metric/Metric.js +2 -2
- package/dist/components/data-display/Metric/Metric.theme.js +2 -14
- package/dist/components/data-display/Metric/Metric.types.d.ts +1 -3
- package/dist/components/data-display/Table/Table.animations.js +1 -0
- package/dist/components/data-display/Table/Table.d.ts +2 -7
- package/dist/components/data-display/Table/Table.js +14 -14
- package/dist/components/data-display/Table/Table.types.d.ts +2 -0
- package/dist/components/data-display/Table/TableActions.js +3 -2
- package/dist/components/data-display/Table/TableActionsMenu.js +1 -0
- package/dist/components/data-display/Table/TableBody.js +1 -0
- package/dist/components/data-display/Table/TableCell.d.ts +1 -1
- package/dist/components/data-display/Table/TableCell.js +8 -3
- package/dist/components/data-display/Table/TableColumnManager.js +1 -0
- package/dist/components/data-display/Table/TableContext.d.ts +11 -0
- package/dist/components/data-display/Table/TableContext.js +21 -0
- package/dist/components/data-display/Table/TableDeclarative.js +3 -2
- package/dist/components/data-display/Table/TableFilter.js +9 -5
- package/dist/components/data-display/Table/TableHeader.js +2 -1
- package/dist/components/data-display/Table/TablePagination.js +1 -0
- package/dist/components/data-display/Table/TableRow.js +1 -0
- package/dist/components/data-display/Table/TableSelectionHeader.js +4 -2
- package/dist/components/data-display/Table/hooks/useTableColumns.js +1 -0
- package/dist/components/data-display/Table/hooks/useTableExpansion.js +1 -0
- package/dist/components/data-display/Table/hooks/useTableFilter.js +1 -0
- package/dist/components/data-display/Table/hooks/useTablePagination.js +1 -0
- package/dist/components/data-display/Table/hooks/useTableSelection.js +1 -0
- package/dist/components/data-display/Table/index.js +1 -2
- package/dist/components/data-display/Timeline/Timeline.animations.js +1 -0
- package/dist/components/data-display/Timeline/Timeline.d.ts +2 -2
- package/dist/components/data-display/Timeline/Timeline.js +5 -10
- package/dist/components/data-display/Timeline/Timeline.theme.d.ts +2 -24
- package/dist/components/data-display/Timeline/Timeline.types.d.ts +25 -1
- package/dist/components/data-display/Timeline/TimelineContent.js +2 -1
- package/dist/components/data-display/Timeline/TimelineContext.d.ts +3 -0
- package/dist/components/data-display/Timeline/TimelineContext.js +16 -0
- package/dist/components/data-display/Timeline/TimelineItem.js +5 -4
- package/dist/components/data-display/Timeline/TimelineMarker.js +2 -1
- package/dist/components/effects/AIOrb/hooks/useOrbState.js +1 -0
- package/dist/components/effects/AIOrb/variants/Aura/Aura.js +13 -4
- package/dist/components/effects/AIOrb/variants/DotSphere/DotSphere.d.ts +7 -0
- package/dist/components/effects/AIOrb/variants/DotSphere/DotSphere.impl.d.ts +3 -0
- package/dist/components/effects/AIOrb/variants/DotSphere/DotSphere.impl.js +176 -0
- package/dist/components/effects/AIOrb/variants/DotSphere/DotSphere.js +29 -161
- package/dist/components/effects/AIOrb/variants/Liquid/Liquid.d.ts +8 -0
- package/dist/components/effects/AIOrb/variants/Liquid/Liquid.impl.d.ts +3 -0
- package/dist/components/effects/AIOrb/variants/Liquid/Liquid.impl.js +140 -0
- package/dist/components/effects/AIOrb/variants/Liquid/Liquid.js +29 -127
- package/dist/components/effects/Animated/Animated.d.ts +2 -2
- package/dist/components/effects/Animated/Animated.js +5 -6
- package/dist/components/effects/Animated/AnimatedContext.d.ts +3 -0
- package/dist/components/effects/Animated/AnimatedContext.js +12 -0
- package/dist/components/effects/Animated/AnimatedItem.js +2 -1
- package/dist/components/effects/Aurora/Aurora.js +27 -5
- package/dist/components/effects/ColorPanels/ColorPanels.d.ts +8 -0
- package/dist/components/effects/ColorPanels/ColorPanels.js +66 -0
- package/dist/components/effects/ColorPanels/ColorPanels.shaders.d.ts +12 -0
- package/dist/components/effects/ColorPanels/ColorPanels.shaders.js +218 -0
- package/dist/components/effects/ColorPanels/ColorPanels.types.d.ts +29 -0
- package/dist/components/effects/ColorPanels/ColorPanels.types.js +3 -0
- package/dist/components/effects/ColorPanels/index.d.ts +2 -0
- package/dist/components/effects/CustomCursor/CustomCursor.js +1 -0
- package/dist/components/effects/CustomCursor/CustomCursor.theme.js +0 -2
- package/dist/components/effects/Dithering/Dithering.d.ts +10 -0
- package/dist/components/effects/Dithering/Dithering.js +62 -0
- package/dist/components/effects/Dithering/Dithering.shaders.d.ts +11 -0
- package/dist/components/effects/Dithering/Dithering.shaders.js +166 -0
- package/dist/components/effects/Dithering/Dithering.types.d.ts +31 -0
- package/dist/components/effects/Dithering/Dithering.types.js +17 -0
- package/dist/components/effects/Dithering/index.d.ts +3 -0
- package/dist/components/effects/DotPattern/DotPattern.js +1 -0
- package/dist/components/effects/FlutedGlass/FlutedGlass.d.ts +9 -0
- package/dist/components/effects/FlutedGlass/FlutedGlass.js +80 -0
- package/dist/components/effects/FlutedGlass/FlutedGlass.shaders.d.ts +12 -0
- package/dist/components/effects/FlutedGlass/FlutedGlass.shaders.js +335 -0
- package/dist/components/effects/FlutedGlass/FlutedGlass.types.d.ts +61 -0
- package/dist/components/effects/FlutedGlass/FlutedGlass.types.js +16 -0
- package/dist/components/effects/FlutedGlass/index.d.ts +3 -0
- package/dist/components/effects/GemSmoke/GemSmoke.d.ts +8 -0
- package/dist/components/effects/GemSmoke/GemSmoke.js +70 -0
- package/dist/components/effects/GemSmoke/GemSmoke.shaders.d.ts +18 -0
- package/dist/components/effects/GemSmoke/GemSmoke.shaders.js +181 -0
- package/dist/components/effects/GemSmoke/GemSmoke.types.d.ts +37 -0
- package/dist/components/effects/GemSmoke/GemSmoke.types.js +10 -0
- package/dist/components/effects/GemSmoke/index.d.ts +3 -0
- package/dist/components/effects/GlassEffect/GlassEffect.js +1 -1
- package/dist/components/effects/GlassSurface/GlassSurface.js +2 -16
- package/dist/components/effects/GodRays/GodRays.d.ts +8 -0
- package/dist/components/effects/GodRays/GodRays.js +68 -0
- package/dist/components/effects/GodRays/GodRays.shaders.d.ts +10 -0
- package/dist/components/effects/GodRays/GodRays.shaders.js +128 -0
- package/dist/components/effects/GodRays/GodRays.types.d.ts +25 -0
- package/dist/components/effects/GodRays/GodRays.types.js +3 -0
- package/dist/components/effects/GodRays/index.d.ts +2 -0
- package/dist/components/effects/GradientMesh/GradientMesh.d.ts +9 -0
- package/dist/components/effects/GradientMesh/GradientMesh.js +56 -0
- package/dist/components/effects/GradientMesh/GradientMesh.shaders.d.ts +15 -0
- package/dist/components/effects/GradientMesh/GradientMesh.shaders.js +127 -0
- package/dist/components/effects/GradientMesh/GradientMesh.types.d.ts +17 -0
- package/dist/components/effects/GradientMesh/GradientMesh.types.js +3 -0
- package/dist/components/effects/GradientMesh/index.d.ts +2 -0
- package/dist/components/effects/GrainGradient/GrainGradient.d.ts +9 -0
- package/dist/components/effects/GrainGradient/GrainGradient.js +62 -0
- package/dist/components/effects/GrainGradient/GrainGradient.shaders.d.ts +17 -0
- package/dist/components/effects/GrainGradient/GrainGradient.shaders.js +168 -0
- package/dist/components/effects/GrainGradient/GrainGradient.types.d.ts +26 -0
- package/dist/components/effects/GrainGradient/GrainGradient.types.js +9 -0
- package/dist/components/effects/GrainGradient/index.d.ts +3 -0
- package/dist/components/effects/GridPattern/GridPattern.js +1 -0
- package/dist/components/effects/HalftoneCmyk/HalftoneCmyk.d.ts +10 -0
- package/dist/components/effects/HalftoneCmyk/HalftoneCmyk.js +78 -0
- package/dist/components/effects/HalftoneCmyk/HalftoneCmyk.shaders.d.ts +22 -0
- package/dist/components/effects/HalftoneCmyk/HalftoneCmyk.shaders.js +239 -0
- package/dist/components/effects/HalftoneCmyk/HalftoneCmyk.types.d.ts +52 -0
- package/dist/components/effects/HalftoneCmyk/index.d.ts +2 -0
- package/dist/components/effects/HalftoneDots/HalftoneDots.d.ts +9 -0
- package/dist/components/effects/HalftoneDots/HalftoneDots.js +68 -0
- package/dist/components/effects/HalftoneDots/HalftoneDots.shaders.d.ts +13 -0
- package/dist/components/effects/HalftoneDots/HalftoneDots.shaders.js +296 -0
- package/dist/components/effects/HalftoneDots/HalftoneDots.types.d.ts +43 -0
- package/dist/components/effects/HalftoneDots/HalftoneDots.types.js +12 -0
- package/dist/components/effects/HalftoneDots/index.d.ts +3 -0
- package/dist/components/effects/ImageDithering/ImageDithering.d.ts +9 -0
- package/dist/components/effects/ImageDithering/ImageDithering.js +68 -0
- package/dist/components/effects/ImageDithering/ImageDithering.shaders.d.ts +12 -0
- package/dist/components/effects/ImageDithering/ImageDithering.shaders.js +117 -0
- package/dist/components/effects/ImageDithering/ImageDithering.types.d.ts +30 -0
- package/dist/components/effects/ImageDithering/ImageDithering.types.js +8 -0
- package/dist/components/effects/ImageDithering/index.d.ts +3 -0
- package/dist/components/effects/InteractiveCharacters/InteractiveCharacters.js +1 -0
- package/dist/components/effects/InteractiveCharacters/characters/BlobCharacter.js +1 -0
- package/dist/components/effects/InteractiveCharacters/characters/SmallCharacter.js +1 -0
- package/dist/components/effects/InteractiveCharacters/characters/TallCharacter.js +1 -0
- package/dist/components/effects/InteractiveCharacters/hooks/useBlink.js +1 -0
- package/dist/components/effects/InteractiveCharacters/hooks/useIdleAnimation.js +1 -0
- package/dist/components/effects/InteractiveCharacters/hooks/useMouseTracking.js +1 -0
- package/dist/components/effects/LiquidMetal/LiquidMetal.d.ts +9 -0
- package/dist/components/effects/LiquidMetal/LiquidMetal.js +61 -0
- package/dist/components/effects/LiquidMetal/LiquidMetal.shaders.d.ts +19 -0
- package/dist/components/effects/LiquidMetal/LiquidMetal.shaders.js +202 -0
- package/dist/components/effects/LiquidMetal/LiquidMetal.types.d.ts +34 -0
- package/dist/components/effects/LiquidMetal/LiquidMetal.types.js +9 -0
- package/dist/components/effects/LiquidMetal/index.d.ts +3 -0
- package/dist/components/effects/MagneticElement/MagneticElement.js +1 -0
- package/dist/components/effects/MeshGradient/MeshGradient.d.ts +25 -0
- package/dist/components/effects/MeshGradient/MeshGradient.js +47 -0
- package/dist/components/effects/MeshGradient/MeshGradient.types.d.ts +40 -0
- package/dist/components/effects/MeshGradient/MeshGradient.utils.d.ts +83 -0
- package/dist/components/effects/MeshGradient/MeshGradient.utils.js +112 -0
- package/dist/components/effects/MeshGradient/index.d.ts +4 -0
- package/dist/components/effects/Metaballs/Metaballs.d.ts +8 -0
- package/dist/components/effects/Metaballs/Metaballs.js +59 -0
- package/dist/components/effects/Metaballs/Metaballs.shaders.d.ts +10 -0
- package/dist/components/effects/Metaballs/Metaballs.shaders.js +102 -0
- package/dist/components/effects/Metaballs/Metaballs.types.d.ts +16 -0
- package/dist/components/effects/Metaballs/Metaballs.types.js +3 -0
- package/dist/components/effects/Metaballs/index.d.ts +2 -0
- package/dist/components/effects/Neumorphic/InsetCircleButton.js +1 -0
- package/dist/components/effects/Neumorphic/InsetPill.js +1 -0
- package/dist/components/effects/NoiseOverlay/NoiseOverlay.js +1 -0
- package/dist/components/effects/Overlay/Overlay.js +1 -0
- package/dist/components/effects/PaperTexture/PaperTexture.d.ts +9 -0
- package/dist/components/effects/PaperTexture/PaperTexture.js +61 -0
- package/dist/components/effects/PaperTexture/PaperTexture.shaders.d.ts +22 -0
- package/dist/components/effects/PaperTexture/PaperTexture.shaders.js +145 -0
- package/dist/components/effects/PaperTexture/PaperTexture.types.d.ts +19 -0
- package/dist/components/effects/PaperTexture/index.d.ts +2 -0
- package/dist/components/effects/Particles/Particles.js +1 -0
- package/dist/components/effects/Particles/Particles.scene.js +1 -0
- package/dist/components/effects/Preloader/Preloader.js +1 -0
- package/dist/components/effects/ProgressiveBlur/ProgressiveBlur.js +1 -0
- package/dist/components/effects/PulsingBorder/PulsingBorder.d.ts +27 -0
- package/dist/components/effects/PulsingBorder/PulsingBorder.js +174 -0
- package/dist/components/effects/PulsingBorder/PulsingBorder.shaders.d.ts +14 -0
- package/dist/components/effects/PulsingBorder/PulsingBorder.shaders.js +258 -0
- package/dist/components/effects/PulsingBorder/PulsingBorder.types.d.ts +75 -0
- package/dist/components/effects/PulsingBorder/PulsingBorder.types.js +3 -0
- package/dist/components/effects/PulsingBorder/index.d.ts +2 -0
- package/dist/components/effects/ScrollReveal/ScrollReveal.js +1 -0
- package/dist/components/effects/Shimmer/Shimmer.d.ts +21 -0
- package/dist/components/effects/Shimmer/Shimmer.js +44 -0
- package/dist/components/effects/Shimmer/Shimmer.types.d.ts +49 -0
- package/dist/components/effects/Shimmer/index.d.ts +2 -0
- package/dist/components/effects/SmokeRing/SmokeRing.d.ts +8 -0
- package/dist/components/effects/SmokeRing/SmokeRing.js +62 -0
- package/dist/components/effects/SmokeRing/SmokeRing.shaders.d.ts +14 -0
- package/dist/components/effects/SmokeRing/SmokeRing.shaders.js +130 -0
- package/dist/components/effects/SmokeRing/SmokeRing.types.d.ts +22 -0
- package/dist/components/effects/SmokeRing/SmokeRing.types.js +3 -0
- package/dist/components/effects/SmokeRing/index.d.ts +2 -0
- package/dist/components/effects/StaticGradientMesh/StaticGradientMesh.d.ts +9 -0
- package/dist/components/effects/StaticGradientMesh/StaticGradientMesh.js +59 -0
- package/dist/components/effects/StaticGradientMesh/StaticGradientMesh.shaders.d.ts +14 -0
- package/dist/components/effects/StaticGradientMesh/StaticGradientMesh.shaders.js +129 -0
- package/dist/components/effects/StaticGradientMesh/StaticGradientMesh.types.d.ts +23 -0
- package/dist/components/effects/StaticGradientMesh/StaticGradientMesh.types.js +3 -0
- package/dist/components/effects/StaticGradientMesh/index.d.ts +2 -0
- package/dist/components/effects/StaticRadialGradient/StaticRadialGradient.d.ts +9 -0
- package/dist/components/effects/StaticRadialGradient/StaticRadialGradient.js +66 -0
- package/dist/components/effects/StaticRadialGradient/StaticRadialGradient.shaders.d.ts +13 -0
- package/dist/components/effects/StaticRadialGradient/StaticRadialGradient.shaders.js +169 -0
- package/dist/components/effects/StaticRadialGradient/StaticRadialGradient.types.d.ts +29 -0
- package/dist/components/effects/StaticRadialGradient/StaticRadialGradient.types.js +3 -0
- package/dist/components/effects/StaticRadialGradient/index.d.ts +2 -0
- package/dist/components/effects/StripePattern/StripePattern.js +1 -0
- package/dist/components/effects/TiltCard/TiltCard.glow.js +1 -0
- package/dist/components/effects/TiltCard/TiltCard.js +1 -0
- package/dist/components/effects/Water/Water.d.ts +9 -0
- package/dist/components/effects/Water/Water.js +65 -0
- package/dist/components/effects/Water/Water.shaders.d.ts +11 -0
- package/dist/components/effects/Water/Water.shaders.js +123 -0
- package/dist/components/effects/Water/Water.types.d.ts +25 -0
- package/dist/components/effects/Water/index.d.ts +2 -0
- package/dist/components/effects/index.d.ts +40 -0
- package/dist/components/effects/index.js +21 -0
- package/dist/components/effects/{AIOrb/variants/Aura → shared/ShaderCanvas}/ShaderCanvas.d.ts +4 -8
- package/dist/components/effects/{AIOrb/variants/Aura → shared/ShaderCanvas}/ShaderCanvas.js +109 -3
- package/dist/components/effects/shared/ShaderCanvas/ShaderCanvas.types.d.ts +18 -0
- package/dist/components/effects/shared/ShaderCanvas/index.d.ts +2 -0
- package/dist/components/effects/shared/bayerMatrices.glsl.d.ts +10 -0
- package/dist/components/effects/shared/bayerMatrices.glsl.js +44 -0
- package/dist/components/effects/shared/imageUV.glsl.d.ts +12 -0
- package/dist/components/effects/shared/imageUV.glsl.js +26 -0
- package/dist/components/effects/shared/index.d.ts +7 -0
- package/dist/components/effects/shared/resolveShaderColor.d.ts +13 -0
- package/dist/components/effects/shared/resolveShaderColor.js +62 -0
- package/dist/components/effects/shared/resolveShaderColor.test.d.ts +1 -0
- package/dist/components/effects/shared/shaderNoise.glsl.d.ts +34 -0
- package/dist/components/effects/shared/shaderNoise.glsl.js +84 -0
- package/dist/components/forms/Checkbox/Checkbox.animations.js +1 -0
- package/dist/components/forms/Checkbox/Checkbox.js +8 -8
- package/dist/components/forms/Checkbox/Checkbox.theme.js +5 -4
- package/dist/components/forms/Checkbox/CheckboxContext.js +1 -0
- package/dist/components/forms/Checkbox/CheckboxGroup.js +4 -1
- package/dist/components/forms/ColorPicker/ColorPicker.js +21 -5
- package/dist/components/forms/ColorPicker/ColorPicker.types.d.ts +8 -0
- package/dist/components/forms/ColorPicker/ColorPicker2DCanvas.js +1 -0
- package/dist/components/forms/ColorPicker/ColorPickerBody.js +3 -2
- package/dist/components/forms/ColorPicker/ColorPickerContext.js +1 -0
- package/dist/components/forms/ColorPicker/ColorPickerEyeDropper.js +1 -0
- package/dist/components/forms/ColorPicker/ColorPickerFormatSelector.js +1 -0
- package/dist/components/forms/ColorPicker/ColorPickerGradient.js +1 -0
- package/dist/components/forms/ColorPicker/ColorPickerHeader.js +1 -0
- package/dist/components/forms/ColorPicker/ColorPickerImage.js +1 -0
- package/dist/components/forms/ColorPicker/ColorPickerInput.js +1 -0
- package/dist/components/forms/ColorPicker/ColorPickerPresets.js +1 -0
- package/dist/components/forms/ColorPicker/ColorPickerSavedColors.js +1 -0
- package/dist/components/forms/ColorPicker/ColorPickerSliders.js +1 -0
- package/dist/components/forms/ColorPicker/ColorPickerSwatch.js +1 -0
- package/dist/components/forms/ColorPicker/ColorPickerTrigger.js +17 -2
- package/dist/components/forms/Combobox/Combobox.js +81 -37
- package/dist/components/forms/Combobox/Combobox.types.d.ts +8 -0
- package/dist/components/forms/DatePicker/DatePicker.animations.js +1 -0
- package/dist/components/forms/DatePicker/DatePicker.d.ts +3 -27
- package/dist/components/forms/DatePicker/DatePicker.js +5 -4
- package/dist/components/forms/DatePicker/DatePicker.theme.js +5 -5
- package/dist/components/forms/DatePicker/DatePicker.types.d.ts +15 -0
- package/dist/components/forms/DatePicker/DatePickerBody.js +26 -21
- package/dist/components/forms/DatePicker/DatePickerContext.d.ts +29 -0
- package/dist/components/forms/DatePicker/DatePickerContext.js +6 -0
- package/dist/components/forms/DatePicker/DatePickerPresets.js +2 -1
- package/dist/components/forms/DatePicker/DatePickerTrigger.js +2 -1
- package/dist/components/forms/DateRangePicker/DateRangePicker.d.ts +3 -23
- package/dist/components/forms/DateRangePicker/DateRangePicker.js +18 -7
- package/dist/components/forms/DateRangePicker/DateRangePicker.theme.js +2 -2
- package/dist/components/forms/DateRangePicker/DateRangePicker.types.d.ts +21 -0
- package/dist/components/forms/DateRangePicker/DateRangePickerBody.js +18 -13
- package/dist/components/forms/DateRangePicker/DateRangePickerContext.d.ts +24 -0
- package/dist/components/forms/DateRangePicker/DateRangePickerContext.js +5 -0
- package/dist/components/forms/DateRangePicker/DateRangePickerPresets.js +2 -1
- package/dist/components/forms/DateRangePicker/DateRangePickerTrigger.js +2 -1
- package/dist/components/forms/FileUpload/FileUpload.js +2 -1
- package/dist/components/forms/FileUpload/FileUploadProgress.js +4 -3
- package/dist/components/forms/Input/Input.js +7 -3
- package/dist/components/forms/Input/Input.theme.js +11 -5
- package/dist/components/forms/Input/Input.types.d.ts +6 -0
- package/dist/components/forms/Input/index.d.ts +1 -0
- package/dist/components/forms/Input/inputMasks.d.ts +24 -0
- package/dist/components/forms/Input/inputMasks.js +61 -5
- package/dist/components/forms/InputAddress/InputAddress.d.ts +5 -0
- package/dist/components/forms/InputAddress/InputAddress.js +95 -13
- package/dist/components/forms/InputAddress/InputAddress.theme.js +4 -4
- package/dist/components/forms/InputAddress/InputAddress.types.d.ts +8 -2
- package/dist/components/forms/InputAddress/index.d.ts +1 -1
- package/dist/components/forms/InputCounter/InputCounter.js +63 -44
- package/dist/components/forms/InputCounter/InputCounter.types.d.ts +6 -0
- package/dist/components/forms/InputCreditCard/InputCreditCard.js +9 -3
- package/dist/components/forms/InputCreditCard/InputCreditCard.theme.js +4 -4
- package/dist/components/forms/InputCreditCard/InputCreditCard.types.d.ts +5 -1
- package/dist/components/forms/InputCreditCard/index.d.ts +1 -0
- package/dist/components/forms/InputDate/InputDate.js +1 -0
- package/dist/components/forms/InputOTP/InputOTP.js +21 -9
- package/dist/components/forms/InputOTP/InputOTP.types.d.ts +7 -1
- package/dist/components/forms/InputTag/InputTag.js +65 -21
- package/dist/components/forms/InputTag/InputTag.theme.js +2 -1
- package/dist/components/forms/InputTag/InputTag.types.d.ts +8 -0
- package/dist/components/forms/Mention/Mention.js +12 -5
- package/dist/components/forms/Mention/Mention.theme.js +2 -1
- package/dist/components/forms/Mention/Mention.types.d.ts +8 -0
- package/dist/components/forms/Mention/Mention.utils.js +1 -0
- package/dist/components/forms/Radio/Radio.animations.js +1 -0
- package/dist/components/forms/Radio/Radio.js +5 -1
- package/dist/components/forms/Radio/Radio.theme.js +9 -7
- package/dist/components/forms/Radio/RadioContext.js +1 -0
- package/dist/components/forms/Radio/RadioGroup.js +4 -1
- package/dist/components/forms/RichTextEditor/RichTextEditor.animations.js +1 -0
- package/dist/components/forms/RichTextEditor/RichTextEditor.js +70 -60
- package/dist/components/forms/RichTextEditor/RichTextEditor.theme.js +3 -2
- package/dist/components/forms/RichTextEditor/RichTextEditor.types.d.ts +14 -0
- package/dist/components/forms/Select/Select.animations.js +17 -25
- package/dist/components/forms/Select/Select.d.ts +3 -1
- package/dist/components/forms/Select/Select.js +55 -21
- package/dist/components/forms/Select/Select.theme.js +2 -2
- package/dist/components/forms/Select/Select.types.d.ts +28 -1
- package/dist/components/forms/Select/useSelectState.js +7 -0
- package/dist/components/forms/SelectableCard/SelectableCard.js +1 -0
- package/dist/components/forms/SelectableCard/SelectableCardContext.js +1 -0
- package/dist/components/forms/SelectableCard/SelectableCardGroup.js +1 -0
- package/dist/components/forms/Signature/Signature.js +13 -3
- package/dist/components/forms/Signature/Signature.types.d.ts +6 -0
- package/dist/components/forms/Slider/Slider.js +2 -1
- package/dist/components/forms/Switch/Switch.js +9 -2
- package/dist/components/forms/Switch/Switch.theme.js +5 -3
- package/dist/components/forms/Textarea/Textarea.js +7 -3
- package/dist/components/forms/Textarea/Textarea.types.d.ts +6 -0
- package/dist/components/forms/TimePicker/TimePicker.d.ts +2 -12
- package/dist/components/forms/TimePicker/TimePicker.js +8 -5
- package/dist/components/forms/TimePicker/TimePicker.theme.js +4 -5
- package/dist/components/forms/TimePicker/TimePicker.types.d.ts +15 -0
- package/dist/components/forms/TimePicker/TimePickerContent.js +12 -7
- package/dist/components/forms/TimePicker/TimePickerContext.d.ts +15 -0
- package/dist/components/forms/TimePicker/TimePickerContext.js +6 -0
- package/dist/components/forms/TimePicker/TimePickerTrigger.js +18 -4
- package/dist/components/forms/TimePicker/WheelColumn.js +1 -0
- package/dist/components/forms/TimePicker/useWheelPicker.js +1 -0
- package/dist/components/forms/forms.theme.d.ts +1 -0
- package/dist/components/forms/forms.theme.js +55 -18
- package/dist/components/forms/index.d.ts +1 -0
- package/dist/components/forms/index.js +6 -2
- package/dist/components/generative/GenerativeView.js +1 -0
- package/dist/components/generative/actions.test.d.ts +1 -0
- package/dist/components/generative/registry.js +24 -6
- package/dist/components/generative/schema.generated.js +450 -35
- package/dist/components/generative/streaming.test.d.ts +1 -0
- package/dist/components/generative/tools.test.d.ts +1 -0
- package/dist/components/generative/useGenerativeStream.js +1 -0
- package/dist/components/generative/validate.d.ts +1 -1
- package/dist/components/generative/validate.js +121 -29
- package/dist/components/generative/validate.test.d.ts +1 -0
- package/dist/components/layout/AppShell/AppShell.js +1 -0
- package/dist/components/layout/AppShell/AppShellContext.js +1 -0
- package/dist/components/layout/AppShell/AppShellMain.js +1 -0
- package/dist/components/layout/AppShell/AppShellRightPanel.js +1 -0
- package/dist/components/layout/AppShell/AppShellSidebar.js +1 -0
- package/dist/components/layout/FormLayout/FormLayout.js +1 -1
- package/dist/components/layout/FormLayout/FormLayoutSection.js +1 -0
- package/dist/components/layout/Grid/Grid.d.ts +1 -1
- package/dist/components/layout/Grid/Grid.js +11 -3
- package/dist/components/layout/Grid/Grid.types.d.ts +15 -1
- package/dist/components/layout/Grid/index.d.ts +1 -1
- package/dist/components/layout/Section/Section.js +1 -0
- package/dist/components/layout/Stack/Stack.d.ts +1 -1
- package/dist/components/layout/Stack/Stack.js +11 -3
- package/dist/components/layout/Stack/Stack.types.d.ts +9 -2
- package/dist/components/layout/index.d.ts +0 -1
- package/dist/components/layout/index.js +0 -2
- package/dist/generative.schema.json +450 -35
- package/dist/hooks/useClickOutside.js +1 -0
- package/dist/hooks/useDarkMode.js +1 -0
- package/dist/hooks/useFocusTrap.js +1 -0
- package/dist/hooks/useIsClient.js +1 -0
- package/dist/hooks/useMediaQuery.js +1 -0
- package/dist/hooks/useNetworkStatus.d.ts +0 -4
- package/dist/hooks/useNetworkStatus.js +2 -5
- package/dist/hooks/useOverlay.js +1 -0
- package/dist/hooks/useScaleBackground.js +1 -0
- package/dist/hooks/useSelectPortal.js +1 -0
- package/dist/hooks/useSlidingNumber.js +1 -0
- package/dist/hooks/useStreamingSSE.d.ts +0 -5
- package/dist/hooks/useStreamingSSE.js +1 -5
- package/dist/hooks/useTypewriter.js +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +189 -180
- package/dist/registry.json +1945 -681
- package/dist/styles.css +1 -1
- package/dist/test/render.d.ts +11 -0
- package/dist/test/setup.d.ts +1 -0
- package/dist/theme/SurfaceContext.d.ts +98 -0
- package/dist/theme/SurfaceContext.js +114 -0
- package/dist/theme/ThemeContext.js +19 -0
- package/dist/theme/animations.d.ts +75 -0
- package/dist/theme/animations.js +132 -0
- package/dist/theme/index.d.ts +5 -0
- package/dist/tools.json +458 -35
- package/dist/utils/actionQueue.d.ts +0 -4
- package/dist/utils/actionQueue.js +1 -4
- package/dist/utils/cn.js +21 -1
- package/dist/utils/colorUtils.d.ts +31 -1
- package/dist/utils/colorUtils.js +49 -4
- package/dist/utils/dateUtils.js +21 -16
- package/dist/utils/index.d.ts +1 -1
- package/dist/utils/performanceMonitor.js +1 -0
- package/dist/utils/smoothScrollUtils.js +1 -0
- package/package.json +23 -5
- package/src/global.scss +87 -0
- package/src/styles/theme.css +263 -156
- package/dist/components/charts/shared/BarRenderer/index.d.ts +0 -3
- package/dist/components/charts/shared/ChartContainer/ChartContainer.d.ts +0 -85
- package/dist/components/charts/shared/ChartContainer/index.d.ts +0 -3
- package/dist/components/charts/shared/ChartLegend/ChartLegendContent.d.ts +0 -7
- package/dist/components/charts/shared/ChartLegend/ChartLegendContent.js +0 -18
- package/dist/components/charts/shared/LineRenderer/index.d.ts +0 -2
- package/dist/components/core/Popover/Popover.animations.js +0 -13
- package/dist/components/layout/PageLayout/PageLayout.d.ts +0 -7
- package/dist/components/layout/PageLayout/PageLayout.js +0 -51
- package/dist/components/layout/PageLayout/PageLayout.theme.d.ts +0 -3
- package/dist/components/layout/PageLayout/PageLayout.theme.js +0 -39
- package/dist/components/layout/PageLayout/PageLayout.types.d.ts +0 -84
- package/dist/components/layout/PageLayout/PageLayoutContent.d.ts +0 -3
- package/dist/components/layout/PageLayout/PageLayoutContent.js +0 -14
- package/dist/components/layout/PageLayout/PageLayoutHeader.d.ts +0 -3
- package/dist/components/layout/PageLayout/PageLayoutHeader.js +0 -12
- package/dist/components/layout/PageLayout/PageLayoutSidebar.d.ts +0 -3
- package/dist/components/layout/PageLayout/PageLayoutSidebar.js +0 -14
- package/dist/components/layout/PageLayout/index.d.ts +0 -3
- /package/dist/components/ai/{PromptSuggestions → PromptSuggestion}/PromptSuggestion.d.ts +0 -0
- /package/dist/components/ai/{PromptSuggestions → PromptSuggestion}/PromptSuggestion.theme.d.ts +0 -0
- /package/dist/components/ai/{PromptSuggestions → PromptSuggestion}/PromptSuggestion.theme.js +0 -0
- /package/dist/components/ai/{PromptSuggestions → PromptSuggestion}/PromptSuggestion.types.d.ts +0 -0
- /package/dist/components/ai/{PromptSuggestions → PromptSuggestion}/index.d.ts +0 -0
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
import 'react/jsx-runtime';
|
|
2
|
+
import 'react';
|
|
3
|
+
import { glslDeclarePI, glslRotate2 } from '../shared/shaderNoise.glsl.js';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* GemSmoke fragment shader — adapted from paper-design/shaders'
|
|
7
|
+
* `gem-smoke.ts` (https://github.com/paper-design/shaders, Apache License
|
|
8
|
+
* 2.0).
|
|
9
|
+
*
|
|
10
|
+
* Simplified from the original: plain centered/aspect-corrected UV
|
|
11
|
+
* (gl_FragCoord/iResolution) instead of paper-design's ShaderSizingParams
|
|
12
|
+
* fit/scale/rotation engine.
|
|
13
|
+
*
|
|
14
|
+
* Image-input mode omitted: paper-design's `u_isImage` path expects a
|
|
15
|
+
* specially pre-processed texture (red channel = edge mask, green channel =
|
|
16
|
+
* alpha, read through a 9x9 Gaussian blur) rather than an ordinary photo —
|
|
17
|
+
* that pre-processing step is out of scope for this port. This ships the
|
|
18
|
+
* generative-shape modes only (none/circle/daisy/diamond/metaballs);
|
|
19
|
+
* image-driven logo mode may be added later alongside a documented
|
|
20
|
+
* preprocessing story.
|
|
21
|
+
*/
|
|
22
|
+
const gemSmokeFragmentShader = `#version 300 es
|
|
23
|
+
precision mediump float;
|
|
24
|
+
|
|
25
|
+
uniform float iTime;
|
|
26
|
+
uniform vec2 iResolution;
|
|
27
|
+
|
|
28
|
+
uniform vec4 u_colors[6];
|
|
29
|
+
uniform float u_colorsCount;
|
|
30
|
+
uniform vec4 u_colorBack;
|
|
31
|
+
uniform vec4 u_colorInner;
|
|
32
|
+
|
|
33
|
+
uniform float u_innerDistortion;
|
|
34
|
+
uniform float u_outerDistortion;
|
|
35
|
+
uniform float u_outerGlow;
|
|
36
|
+
uniform float u_innerGlow;
|
|
37
|
+
uniform float u_offset;
|
|
38
|
+
uniform float u_angle;
|
|
39
|
+
uniform float u_size;
|
|
40
|
+
uniform float u_shape;
|
|
41
|
+
uniform float u_speed;
|
|
42
|
+
|
|
43
|
+
out vec4 fragColor;
|
|
44
|
+
|
|
45
|
+
${glslDeclarePI}
|
|
46
|
+
${glslRotate2}
|
|
47
|
+
|
|
48
|
+
float sst(float a, float b, float x) {
|
|
49
|
+
return smoothstep(a, b, x);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
void main() {
|
|
53
|
+
float time = u_speed * iTime;
|
|
54
|
+
|
|
55
|
+
vec2 objectUV = (gl_FragCoord.xy - 0.5 * iResolution.xy) / min(iResolution.x, iResolution.y);
|
|
56
|
+
vec2 uv = objectUV + .5;
|
|
57
|
+
uv.y = 1. - uv.y;
|
|
58
|
+
float edge = 0.;
|
|
59
|
+
|
|
60
|
+
if (u_shape < 1.) {
|
|
61
|
+
vec2 borderUV = objectUV + .5;
|
|
62
|
+
vec2 mask = min(borderUV, 1. - borderUV);
|
|
63
|
+
vec2 pixel_thickness = min(250. / iResolution.xy, vec2(.5));
|
|
64
|
+
float maskX = pow(smoothstep(0.0, pixel_thickness.x, mask.x), .25);
|
|
65
|
+
float maskY = pow(smoothstep(0.0, pixel_thickness.y, mask.y), .25);
|
|
66
|
+
edge = clamp(1. - maskX * maskY, 0., 1.);
|
|
67
|
+
} else if (u_shape < 2.) {
|
|
68
|
+
vec2 shapeUV = (uv - .5) * .67;
|
|
69
|
+
edge = pow(clamp(3. * length(shapeUV), 0., 1.), 18.);
|
|
70
|
+
} else if (u_shape < 3.) {
|
|
71
|
+
vec2 shapeUV = (uv - .5) * 1.68;
|
|
72
|
+
float r = length(shapeUV) * 2.;
|
|
73
|
+
float a = atan(shapeUV.y, shapeUV.x) + .2;
|
|
74
|
+
r *= (1. + .05 * sin(3. * a + 2. * time));
|
|
75
|
+
float f = abs(cos(a * 3.));
|
|
76
|
+
edge = smoothstep(f, f + .7, r);
|
|
77
|
+
edge *= edge;
|
|
78
|
+
} else if (u_shape < 4.) {
|
|
79
|
+
vec2 shapeUV = uv - .5;
|
|
80
|
+
shapeUV = rotate(shapeUV, .25 * PI);
|
|
81
|
+
shapeUV *= 1.42;
|
|
82
|
+
shapeUV += .5;
|
|
83
|
+
vec2 mask = min(shapeUV, 1. - shapeUV);
|
|
84
|
+
vec2 pixel_thickness = vec2(.15);
|
|
85
|
+
float maskX = pow(smoothstep(0.0, pixel_thickness.x, mask.x), .25);
|
|
86
|
+
float maskY = pow(smoothstep(0.0, pixel_thickness.y, mask.y), .25);
|
|
87
|
+
edge = clamp(1. - maskX * maskY, 0., 1.);
|
|
88
|
+
} else {
|
|
89
|
+
vec2 shapeUV = (uv - .5) * 1.3;
|
|
90
|
+
edge = 0.;
|
|
91
|
+
for (int i = 0; i < 5; i++) {
|
|
92
|
+
float fi = float(i);
|
|
93
|
+
float speed = 1.5 + 2. / 3. * sin(fi * 12.345);
|
|
94
|
+
float angle = -fi * 1.5;
|
|
95
|
+
vec2 dir1 = vec2(cos(angle), sin(angle));
|
|
96
|
+
vec2 dir2 = vec2(cos(angle + 1.57), sin(angle + 1.));
|
|
97
|
+
vec2 traj = .4 * (dir1 * sin(time * speed + fi * 1.23) + dir2 * cos(time * (speed * 0.7) + fi * 2.17));
|
|
98
|
+
float d = length(shapeUV + traj);
|
|
99
|
+
edge += pow(1.0 - clamp(d, 0.0, 1.0), 4.0);
|
|
100
|
+
}
|
|
101
|
+
edge = 1. - smoothstep(.65, .9, edge);
|
|
102
|
+
edge = pow(edge, 4.);
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
float imgAlpha = 1. - smoothstep(.9 - 2. * fwidth(edge), .9, edge);
|
|
106
|
+
float roundness = 1. - edge;
|
|
107
|
+
|
|
108
|
+
vec2 smokeUV = objectUV;
|
|
109
|
+
smokeUV = rotate(smokeUV, u_angle * PI / 180.);
|
|
110
|
+
smokeUV *= mix(4., 1., u_size);
|
|
111
|
+
|
|
112
|
+
vec2 innerUV = smokeUV;
|
|
113
|
+
vec2 outerUV = smokeUV;
|
|
114
|
+
|
|
115
|
+
innerUV.y += u_innerDistortion * (1. - sst(0., 1., length(.4 * innerUV)));
|
|
116
|
+
innerUV.y -= .4 * u_innerDistortion;
|
|
117
|
+
innerUV.y += .7 * u_offset * roundness;
|
|
118
|
+
|
|
119
|
+
outerUV.y += u_outerDistortion * (1. - sst(0., 1., length(.4 * outerUV)));
|
|
120
|
+
outerUV.y -= .4 * u_outerDistortion;
|
|
121
|
+
|
|
122
|
+
float innerSwirl = u_innerDistortion * roundness;
|
|
123
|
+
float outerSwirl = u_outerDistortion;
|
|
124
|
+
|
|
125
|
+
for (int i = 1; i < 5; i++) {
|
|
126
|
+
float fi = float(i);
|
|
127
|
+
|
|
128
|
+
float stretchIn = max(length(dFdx(innerUV)), length(dFdy(innerUV)));
|
|
129
|
+
float dampenIn = 1. / (1. + stretchIn * 8.);
|
|
130
|
+
float sIn = innerSwirl * dampenIn;
|
|
131
|
+
innerUV.x += sIn / fi * cos(time + fi * 2.9 * innerUV.y);
|
|
132
|
+
innerUV.y += sIn / fi * cos(time + fi * 1.5 * innerUV.x);
|
|
133
|
+
|
|
134
|
+
float stretchOut = max(length(dFdx(outerUV)), length(dFdy(outerUV)));
|
|
135
|
+
float dampenOut = 1. / (1. + stretchOut * 8.);
|
|
136
|
+
float sOut = outerSwirl * dampenOut;
|
|
137
|
+
outerUV.x += sOut / fi * cos(time + fi * 2.9 * outerUV.y);
|
|
138
|
+
outerUV.y += sOut / fi * cos(time + fi * 1.5 * outerUV.x);
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
float innerShape = exp(-1.5 * dot(innerUV, innerUV));
|
|
142
|
+
float outerShape = exp(-1.5 * dot(outerUV, outerUV));
|
|
143
|
+
|
|
144
|
+
float outerMask = pow(u_outerGlow, 2.) * (1. - imgAlpha);
|
|
145
|
+
float innerMask = (.01 + .99 * u_innerGlow) * imgAlpha;
|
|
146
|
+
|
|
147
|
+
innerShape *= innerMask;
|
|
148
|
+
outerShape *= outerMask;
|
|
149
|
+
|
|
150
|
+
float mixer = (innerShape + outerShape) * u_colorsCount;
|
|
151
|
+
vec4 gradient = u_colors[0];
|
|
152
|
+
gradient.rgb *= gradient.a;
|
|
153
|
+
|
|
154
|
+
float smokeMask = 0.;
|
|
155
|
+
int cntStop = int(u_colorsCount);
|
|
156
|
+
for (int i = 1; i < 7; i++) {
|
|
157
|
+
if (i > cntStop) break;
|
|
158
|
+
float m = sst(0., 1., clamp(mixer - float(i - 1), 0., 1.));
|
|
159
|
+
if (i == 1) smokeMask = m;
|
|
160
|
+
vec4 c = u_colors[i - 1];
|
|
161
|
+
c.rgb *= c.a;
|
|
162
|
+
gradient = mix(gradient, c, m);
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
vec3 color = gradient.rgb * smokeMask;
|
|
166
|
+
float opacity = gradient.a * smokeMask;
|
|
167
|
+
|
|
168
|
+
float innerOpacity = u_colorInner.a * imgAlpha;
|
|
169
|
+
vec3 innerColor = u_colorInner.rgb * innerOpacity;
|
|
170
|
+
color += innerColor * (1.0 - opacity);
|
|
171
|
+
opacity += innerOpacity * (1.0 - opacity);
|
|
172
|
+
|
|
173
|
+
vec3 backColor = u_colorBack.rgb * u_colorBack.a;
|
|
174
|
+
color += backColor * (1.0 - opacity);
|
|
175
|
+
opacity += u_colorBack.a * (1.0 - opacity);
|
|
176
|
+
|
|
177
|
+
fragColor = vec4(color, opacity);
|
|
178
|
+
}
|
|
179
|
+
`;
|
|
180
|
+
|
|
181
|
+
export { gemSmokeFragmentShader };
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type React from "react";
|
|
2
|
+
export declare const GEM_SMOKE_MAX_COLORS = 6;
|
|
3
|
+
export declare const GEM_SMOKE_SHAPES: {
|
|
4
|
+
readonly none: 0;
|
|
5
|
+
readonly circle: 1;
|
|
6
|
+
readonly daisy: 2;
|
|
7
|
+
readonly diamond: 3;
|
|
8
|
+
readonly metaballs: 4;
|
|
9
|
+
};
|
|
10
|
+
export type GemSmokeShape = keyof typeof GEM_SMOKE_SHAPES;
|
|
11
|
+
export interface GemSmokeProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
12
|
+
/** Background CSS color. Default: 'var(--color-background)'. */
|
|
13
|
+
colorBack?: string;
|
|
14
|
+
/** Smoke color ramp, up to 6. Default: a 3-stop primary ramp. */
|
|
15
|
+
colors?: string[];
|
|
16
|
+
/** Color of the inner core glow. Default: 'var(--color-primary-50)'. */
|
|
17
|
+
colorInner?: string;
|
|
18
|
+
/** Shape the inner glow is masked into. Default: 'circle'. */
|
|
19
|
+
shape?: GemSmokeShape;
|
|
20
|
+
/** Inner swirl distortion strength, 0-1+. Default: 0.5. */
|
|
21
|
+
innerDistortion?: number;
|
|
22
|
+
/** Outer swirl distortion strength, 0-1+. Default: 0.3. */
|
|
23
|
+
outerDistortion?: number;
|
|
24
|
+
/** Outer ambient glow strength, 0-1. Default: 0.5. */
|
|
25
|
+
outerGlow?: number;
|
|
26
|
+
/** Inner core glow strength, 0-1. Default: 0.8. */
|
|
27
|
+
innerGlow?: number;
|
|
28
|
+
/** Vertical offset of the inner glow. Default: 0. */
|
|
29
|
+
offset?: number;
|
|
30
|
+
/** Smoke field rotation, degrees. Default: 0. */
|
|
31
|
+
angle?: number;
|
|
32
|
+
/** Overall smoke scale. Default: 0.5. */
|
|
33
|
+
size?: number;
|
|
34
|
+
/** Animation speed multiplier. Default: 1. */
|
|
35
|
+
speed?: number;
|
|
36
|
+
className?: string;
|
|
37
|
+
}
|
|
@@ -22,7 +22,7 @@ const GlassEffect = ({ rounded = 'inherit', blendModeOuter = 'normal', blendMode
|
|
|
22
22
|
// Default gradients with visible contrast on light backgrounds
|
|
23
23
|
const defaultGradientOuter = 'linear-gradient(to bottom, #ffffff 0%, #e5e7eb 40%, #ffffff 100%)';
|
|
24
24
|
const defaultGradientInner = 'linear-gradient(to bottom, #edeff0 0%, #ffffff 100%)';
|
|
25
|
-
return (jsx("div", { className: cn("absolute inset-0 p-[1.5px] border-[1px] border-[var(--color-border)]", "pointer-events-none", // Don't block clicks
|
|
25
|
+
return (jsx("div", { "aria-hidden": "true", className: cn("absolute inset-0 p-[1.5px] border-[1px] border-[var(--color-border)]", "pointer-events-none", // Don't block clicks
|
|
26
26
|
classNameOuter), style: {
|
|
27
27
|
borderRadius: rounded,
|
|
28
28
|
zIndex,
|
|
@@ -1,23 +1,9 @@
|
|
|
1
|
+
"use client";
|
|
1
2
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
3
|
import React__default, { useId, useState, useRef, useMemo, useEffect, useCallback } from 'react';
|
|
3
4
|
import { cn } from '../../../utils/cn.js';
|
|
5
|
+
import { useDarkMode } from '../../../hooks/useDarkMode.js';
|
|
4
6
|
|
|
5
|
-
/**
|
|
6
|
-
* Hook to detect dark mode preference
|
|
7
|
-
*/
|
|
8
|
-
const useDarkMode = () => {
|
|
9
|
-
const [isDark, setIsDark] = useState(false);
|
|
10
|
-
useEffect(() => {
|
|
11
|
-
if (typeof window === "undefined")
|
|
12
|
-
return;
|
|
13
|
-
const mediaQuery = window.matchMedia("(prefers-color-scheme: dark)");
|
|
14
|
-
setIsDark(mediaQuery.matches);
|
|
15
|
-
const handler = (e) => setIsDark(e.matches);
|
|
16
|
-
mediaQuery.addEventListener("change", handler);
|
|
17
|
-
return () => mediaQuery.removeEventListener("change", handler);
|
|
18
|
-
}, []);
|
|
19
|
-
return isDark;
|
|
20
|
-
};
|
|
21
7
|
/**
|
|
22
8
|
* GlassSurface Component
|
|
23
9
|
* Creates a realistic chromatic aberration glass effect using SVG filters.
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import type { GodRaysProps } from "./GodRays.types";
|
|
3
|
+
/**
|
|
4
|
+
* Animated volumetric light-ray burst radiating from center. WebGL2-
|
|
5
|
+
* powered; falls back to a static CSS conic-style gradient when WebGL2 is
|
|
6
|
+
* unavailable or the user prefers reduced motion.
|
|
7
|
+
*/
|
|
8
|
+
export declare const GodRays: React.FC<GodRaysProps>;
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx } from 'react/jsx-runtime';
|
|
3
|
+
import { useMemo, useRef } from 'react';
|
|
4
|
+
import { useReducedMotion } from 'motion/react';
|
|
5
|
+
import { useIsClient } from '../../../hooks/useIsClient.js';
|
|
6
|
+
import { useDarkMode } from '../../../hooks/useDarkMode.js';
|
|
7
|
+
import { cn } from '../../../utils/cn.js';
|
|
8
|
+
import { ShaderCanvas } from '../shared/ShaderCanvas/ShaderCanvas.js';
|
|
9
|
+
import { resolveShaderColors, resolveShaderColor } from '../shared/resolveShaderColor.js';
|
|
10
|
+
import { godRaysFragmentShader } from './GodRays.shaders.js';
|
|
11
|
+
import { GOD_RAYS_MAX_COLORS } from './GodRays.types.js';
|
|
12
|
+
|
|
13
|
+
const DEFAULT_COLORS = ["var(--color-primary-300)", "var(--color-primary)", "var(--color-primary-700)"];
|
|
14
|
+
const DEFAULT_COLOR_BACK = "var(--color-background)";
|
|
15
|
+
const DEFAULT_COLOR_BLOOM = "var(--color-primary-100)";
|
|
16
|
+
function useWebgl2Supported(disabled) {
|
|
17
|
+
return useMemo(() => {
|
|
18
|
+
if (disabled || typeof document === "undefined")
|
|
19
|
+
return false;
|
|
20
|
+
try {
|
|
21
|
+
return !!document.createElement("canvas").getContext("webgl2");
|
|
22
|
+
}
|
|
23
|
+
catch (_a) {
|
|
24
|
+
return false;
|
|
25
|
+
}
|
|
26
|
+
}, [disabled]);
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Animated volumetric light-ray burst radiating from center. WebGL2-
|
|
30
|
+
* powered; falls back to a static CSS conic-style gradient when WebGL2 is
|
|
31
|
+
* unavailable or the user prefers reduced motion.
|
|
32
|
+
*/
|
|
33
|
+
const GodRays = ({ colorBack = DEFAULT_COLOR_BACK, colorBloom = DEFAULT_COLOR_BLOOM, colors = DEFAULT_COLORS, spotty = 0.3, midSize = 0.4, midIntensity = 0.5, density = 0.5, intensity = 0.5, bloom = 0.5, speed = 1, className, style, ...props }) => {
|
|
34
|
+
var _a, _b, _c;
|
|
35
|
+
const isClient = useIsClient();
|
|
36
|
+
const shouldReduceMotion = useReducedMotion();
|
|
37
|
+
const isDark = useDarkMode();
|
|
38
|
+
const webglSupported = useWebgl2Supported(!!shouldReduceMotion);
|
|
39
|
+
const safeColors = colors.length > 0 ? colors.slice(0, GOD_RAYS_MAX_COLORS) : DEFAULT_COLORS;
|
|
40
|
+
const resolvedColors = useMemo(() => resolveShaderColors(safeColors),
|
|
41
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
42
|
+
[safeColors.join("|"), isDark]);
|
|
43
|
+
const resolvedBack = useMemo(() => resolveShaderColor(colorBack),
|
|
44
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
45
|
+
[colorBack, isDark]);
|
|
46
|
+
const resolvedBloom = useMemo(() => resolveShaderColor(colorBloom),
|
|
47
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
48
|
+
[colorBloom, isDark]);
|
|
49
|
+
const uniformsRef = useRef({});
|
|
50
|
+
for (let i = 0; i < GOD_RAYS_MAX_COLORS; i++) {
|
|
51
|
+
uniformsRef.current[`u_colors[${i}]`] =
|
|
52
|
+
(_b = (_a = resolvedColors[i]) !== null && _a !== void 0 ? _a : resolvedColors[resolvedColors.length - 1]) !== null && _b !== void 0 ? _b : [0, 0, 0, 0];
|
|
53
|
+
}
|
|
54
|
+
uniformsRef.current.u_colorsCount = resolvedColors.length;
|
|
55
|
+
uniformsRef.current.u_colorBack = resolvedBack;
|
|
56
|
+
uniformsRef.current.u_colorBloom = resolvedBloom;
|
|
57
|
+
uniformsRef.current.u_spotty = spotty;
|
|
58
|
+
uniformsRef.current.u_midSize = midSize;
|
|
59
|
+
uniformsRef.current.u_midIntensity = midIntensity;
|
|
60
|
+
uniformsRef.current.u_density = density;
|
|
61
|
+
uniformsRef.current.u_intensity = intensity;
|
|
62
|
+
uniformsRef.current.u_bloom = bloom;
|
|
63
|
+
uniformsRef.current.u_speed = speed;
|
|
64
|
+
const fallbackGradient = `radial-gradient(circle, ${(_c = safeColors[safeColors.length - 1]) !== null && _c !== void 0 ? _c : "var(--color-primary)"}, ${colorBack} 70%)`;
|
|
65
|
+
return (jsx("div", { className: cn("absolute inset-0 overflow-hidden pointer-events-none select-none", className), style: style, "aria-hidden": "true", ...props, children: isClient && webglSupported ? (jsx(ShaderCanvas, { fragmentShader: godRaysFragmentShader, uniformsRef: uniformsRef })) : (jsx("div", { className: "absolute inset-0", style: { background: fallbackGradient } })) }));
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
export { GodRays };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GodRays fragment shader — adapted from paper-design/shaders' `god-rays.ts`
|
|
3
|
+
* (https://github.com/paper-design/shaders, Apache License 2.0).
|
|
4
|
+
*
|
|
5
|
+
* Simplified from the original: plain centered/aspect-corrected UV
|
|
6
|
+
* (gl_FragCoord/iResolution) instead of paper-design's ShaderSizingParams
|
|
7
|
+
* fit/scale/rotation engine; pure-hash GLSL (see shared/shaderNoise.glsl.ts)
|
|
8
|
+
* instead of pre-generated noise-texture sampling.
|
|
9
|
+
*/
|
|
10
|
+
export declare const godRaysFragmentShader = "#version 300 es\nprecision mediump float;\n\nuniform float iTime;\nuniform vec2 iResolution;\n\nuniform vec4 u_colorBack;\nuniform vec4 u_colorBloom;\nuniform vec4 u_colors[5];\nuniform float u_colorsCount;\n\nuniform float u_density;\nuniform float u_spotty;\nuniform float u_midSize;\nuniform float u_midIntensity;\nuniform float u_intensity;\nuniform float u_bloom;\nuniform float u_speed;\n\nout vec4 fragColor;\n\n\nconst float PI = 3.14159265359;\nconst float TWO_PI = 6.28318530718;\n\n\nvec2 rotate(vec2 v, float angle) {\n float s = sin(angle);\n float c = cos(angle);\n return mat2(c, -s, s, c) * v;\n}\n\n\nfloat randomR(vec2 st) {\n return fract(sin(dot(st, vec2(12.9898, 78.233))) * 43758.5453123);\n}\n\n\nfloat hash11(float p) {\n return randomR(vec2(p, p * 0.7919));\n}\n\nfloat valueNoise(vec2 st) {\n vec2 i = floor(st);\n vec2 f = fract(st);\n float a = randomR(i);\n float b = randomR(i + vec2(1.0, 0.0));\n float c = randomR(i + vec2(0.0, 1.0));\n float d = randomR(i + vec2(1.0, 1.0));\n vec2 u = f * f * (3.0 - 2.0 * f);\n float x1 = mix(a, b, u.x);\n float x2 = mix(c, d, u.x);\n return mix(x1, x2, u.y);\n}\n\nfloat raysShape(vec2 uv, float r, float freq, float intensity, float radius) {\n float a = atan(uv.y, uv.x);\n vec2 left = vec2(a * freq, r);\n vec2 right = vec2(fract(a / TWO_PI) * TWO_PI * freq, r);\n float n_left = pow(valueNoise(left), intensity);\n float n_right = pow(valueNoise(right), intensity);\n float shape = mix(n_right, n_left, smoothstep(-.15, .15, uv.x));\n return shape;\n}\n\nvoid main() {\n vec2 shape_uv = (gl_FragCoord.xy - 0.5 * iResolution.xy) / min(iResolution.x, iResolution.y);\n\n float t = .2 * u_speed * iTime;\n float radius = length(shape_uv);\n float spots = 6.5 * abs(u_spotty);\n float intensity = 4. - 3. * clamp(u_intensity, 0., 1.);\n\n float midSize = 10. * abs(u_midSize);\n float ms_lo = 0.02 * midSize;\n float ms_hi = max(midSize, 1e-6);\n float middleShape = pow(u_midIntensity, 0.3) * (1. - smoothstep(ms_lo, ms_hi, 3.0 * radius));\n middleShape = pow(middleShape, 5.0);\n\n vec3 accumColor = vec3(0.0);\n float accumAlpha = 0.0;\n\n for (int i = 0; i < 5; i++) {\n if (i >= int(u_colorsCount)) break;\n\n vec2 rotatedUV = rotate(shape_uv, float(i) + 1.0);\n\n float r1 = radius * (1.0 + 0.4 * float(i)) - 3.0 * t;\n float r2 = 0.5 * radius * (1.0 + spots) - 2.0 * t;\n float density = 6. * u_density + step(.5, u_density) * pow(4.5 * (u_density - .5), 4.);\n float f = mix(1.0, 3.0 + 0.5 * float(i), hash11(float(i) * 15.)) * density;\n\n float ray = raysShape(rotatedUV, r1, 5.0 * f, intensity, radius);\n ray *= raysShape(rotatedUV, r2, 4.0 * f, intensity, radius);\n ray += (1. + 4. * ray) * middleShape;\n ray = clamp(ray, 0.0, 1.0);\n\n float srcAlpha = u_colors[i].a * ray;\n vec3 srcColor = u_colors[i].rgb * srcAlpha;\n\n vec3 alphaBlendColor = accumColor + (1.0 - accumAlpha) * srcColor;\n float alphaBlendAlpha = accumAlpha + (1.0 - accumAlpha) * srcAlpha;\n\n vec3 addBlendColor = accumColor + srcColor;\n float addBlendAlpha = accumAlpha + srcAlpha;\n\n accumColor = mix(alphaBlendColor, addBlendColor, u_bloom);\n accumAlpha = mix(alphaBlendAlpha, addBlendAlpha, u_bloom);\n }\n\n float overlayAlpha = u_colorBloom.a;\n vec3 overlayColor = u_colorBloom.rgb * overlayAlpha;\n\n vec3 colorWithOverlay = accumColor + accumAlpha * overlayColor;\n accumColor = mix(accumColor, colorWithOverlay, u_bloom);\n\n vec3 bgColor = u_colorBack.rgb * u_colorBack.a;\n\n vec3 color = accumColor + (1. - accumAlpha) * bgColor;\n float opacity = accumAlpha + (1. - accumAlpha) * u_colorBack.a;\n color = clamp(color, 0., 1.);\n opacity = clamp(opacity, 0., 1.);\n\n fragColor = vec4(color, opacity);\n}\n";
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import 'react/jsx-runtime';
|
|
2
|
+
import 'react';
|
|
3
|
+
import { glslDeclarePI, glslRotate2, glslHashFloat } from '../shared/shaderNoise.glsl.js';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* GodRays fragment shader — adapted from paper-design/shaders' `god-rays.ts`
|
|
7
|
+
* (https://github.com/paper-design/shaders, Apache License 2.0).
|
|
8
|
+
*
|
|
9
|
+
* Simplified from the original: plain centered/aspect-corrected UV
|
|
10
|
+
* (gl_FragCoord/iResolution) instead of paper-design's ShaderSizingParams
|
|
11
|
+
* fit/scale/rotation engine; pure-hash GLSL (see shared/shaderNoise.glsl.ts)
|
|
12
|
+
* instead of pre-generated noise-texture sampling.
|
|
13
|
+
*/
|
|
14
|
+
const godRaysFragmentShader = `#version 300 es
|
|
15
|
+
precision mediump float;
|
|
16
|
+
|
|
17
|
+
uniform float iTime;
|
|
18
|
+
uniform vec2 iResolution;
|
|
19
|
+
|
|
20
|
+
uniform vec4 u_colorBack;
|
|
21
|
+
uniform vec4 u_colorBloom;
|
|
22
|
+
uniform vec4 u_colors[5];
|
|
23
|
+
uniform float u_colorsCount;
|
|
24
|
+
|
|
25
|
+
uniform float u_density;
|
|
26
|
+
uniform float u_spotty;
|
|
27
|
+
uniform float u_midSize;
|
|
28
|
+
uniform float u_midIntensity;
|
|
29
|
+
uniform float u_intensity;
|
|
30
|
+
uniform float u_bloom;
|
|
31
|
+
uniform float u_speed;
|
|
32
|
+
|
|
33
|
+
out vec4 fragColor;
|
|
34
|
+
|
|
35
|
+
${glslDeclarePI}
|
|
36
|
+
${glslRotate2}
|
|
37
|
+
${glslHashFloat}
|
|
38
|
+
|
|
39
|
+
float hash11(float p) {
|
|
40
|
+
return randomR(vec2(p, p * 0.7919));
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
float valueNoise(vec2 st) {
|
|
44
|
+
vec2 i = floor(st);
|
|
45
|
+
vec2 f = fract(st);
|
|
46
|
+
float a = randomR(i);
|
|
47
|
+
float b = randomR(i + vec2(1.0, 0.0));
|
|
48
|
+
float c = randomR(i + vec2(0.0, 1.0));
|
|
49
|
+
float d = randomR(i + vec2(1.0, 1.0));
|
|
50
|
+
vec2 u = f * f * (3.0 - 2.0 * f);
|
|
51
|
+
float x1 = mix(a, b, u.x);
|
|
52
|
+
float x2 = mix(c, d, u.x);
|
|
53
|
+
return mix(x1, x2, u.y);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
float raysShape(vec2 uv, float r, float freq, float intensity, float radius) {
|
|
57
|
+
float a = atan(uv.y, uv.x);
|
|
58
|
+
vec2 left = vec2(a * freq, r);
|
|
59
|
+
vec2 right = vec2(fract(a / TWO_PI) * TWO_PI * freq, r);
|
|
60
|
+
float n_left = pow(valueNoise(left), intensity);
|
|
61
|
+
float n_right = pow(valueNoise(right), intensity);
|
|
62
|
+
float shape = mix(n_right, n_left, smoothstep(-.15, .15, uv.x));
|
|
63
|
+
return shape;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
void main() {
|
|
67
|
+
vec2 shape_uv = (gl_FragCoord.xy - 0.5 * iResolution.xy) / min(iResolution.x, iResolution.y);
|
|
68
|
+
|
|
69
|
+
float t = .2 * u_speed * iTime;
|
|
70
|
+
float radius = length(shape_uv);
|
|
71
|
+
float spots = 6.5 * abs(u_spotty);
|
|
72
|
+
float intensity = 4. - 3. * clamp(u_intensity, 0., 1.);
|
|
73
|
+
|
|
74
|
+
float midSize = 10. * abs(u_midSize);
|
|
75
|
+
float ms_lo = 0.02 * midSize;
|
|
76
|
+
float ms_hi = max(midSize, 1e-6);
|
|
77
|
+
float middleShape = pow(u_midIntensity, 0.3) * (1. - smoothstep(ms_lo, ms_hi, 3.0 * radius));
|
|
78
|
+
middleShape = pow(middleShape, 5.0);
|
|
79
|
+
|
|
80
|
+
vec3 accumColor = vec3(0.0);
|
|
81
|
+
float accumAlpha = 0.0;
|
|
82
|
+
|
|
83
|
+
for (int i = 0; i < 5; i++) {
|
|
84
|
+
if (i >= int(u_colorsCount)) break;
|
|
85
|
+
|
|
86
|
+
vec2 rotatedUV = rotate(shape_uv, float(i) + 1.0);
|
|
87
|
+
|
|
88
|
+
float r1 = radius * (1.0 + 0.4 * float(i)) - 3.0 * t;
|
|
89
|
+
float r2 = 0.5 * radius * (1.0 + spots) - 2.0 * t;
|
|
90
|
+
float density = 6. * u_density + step(.5, u_density) * pow(4.5 * (u_density - .5), 4.);
|
|
91
|
+
float f = mix(1.0, 3.0 + 0.5 * float(i), hash11(float(i) * 15.)) * density;
|
|
92
|
+
|
|
93
|
+
float ray = raysShape(rotatedUV, r1, 5.0 * f, intensity, radius);
|
|
94
|
+
ray *= raysShape(rotatedUV, r2, 4.0 * f, intensity, radius);
|
|
95
|
+
ray += (1. + 4. * ray) * middleShape;
|
|
96
|
+
ray = clamp(ray, 0.0, 1.0);
|
|
97
|
+
|
|
98
|
+
float srcAlpha = u_colors[i].a * ray;
|
|
99
|
+
vec3 srcColor = u_colors[i].rgb * srcAlpha;
|
|
100
|
+
|
|
101
|
+
vec3 alphaBlendColor = accumColor + (1.0 - accumAlpha) * srcColor;
|
|
102
|
+
float alphaBlendAlpha = accumAlpha + (1.0 - accumAlpha) * srcAlpha;
|
|
103
|
+
|
|
104
|
+
vec3 addBlendColor = accumColor + srcColor;
|
|
105
|
+
float addBlendAlpha = accumAlpha + srcAlpha;
|
|
106
|
+
|
|
107
|
+
accumColor = mix(alphaBlendColor, addBlendColor, u_bloom);
|
|
108
|
+
accumAlpha = mix(alphaBlendAlpha, addBlendAlpha, u_bloom);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
float overlayAlpha = u_colorBloom.a;
|
|
112
|
+
vec3 overlayColor = u_colorBloom.rgb * overlayAlpha;
|
|
113
|
+
|
|
114
|
+
vec3 colorWithOverlay = accumColor + accumAlpha * overlayColor;
|
|
115
|
+
accumColor = mix(accumColor, colorWithOverlay, u_bloom);
|
|
116
|
+
|
|
117
|
+
vec3 bgColor = u_colorBack.rgb * u_colorBack.a;
|
|
118
|
+
|
|
119
|
+
vec3 color = accumColor + (1. - accumAlpha) * bgColor;
|
|
120
|
+
float opacity = accumAlpha + (1. - accumAlpha) * u_colorBack.a;
|
|
121
|
+
color = clamp(color, 0., 1.);
|
|
122
|
+
opacity = clamp(opacity, 0., 1.);
|
|
123
|
+
|
|
124
|
+
fragColor = vec4(color, opacity);
|
|
125
|
+
}
|
|
126
|
+
`;
|
|
127
|
+
|
|
128
|
+
export { godRaysFragmentShader };
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type React from "react";
|
|
2
|
+
export declare const GOD_RAYS_MAX_COLORS = 5;
|
|
3
|
+
export interface GodRaysProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
4
|
+
/** Background CSS color. Default: 'var(--color-background)'. */
|
|
5
|
+
colorBack?: string;
|
|
6
|
+
/** Additive highlight/bloom overlay color. Default: 'var(--color-primary-100)'. */
|
|
7
|
+
colorBloom?: string;
|
|
8
|
+
/** Ray colors, up to 5. Default: a 3-stop primary ramp. */
|
|
9
|
+
colors?: string[];
|
|
10
|
+
/** How fragmented/spotty the rays look, 0-1+. Default: 0.3. */
|
|
11
|
+
spotty?: number;
|
|
12
|
+
/** Central glow size. Default: 0.4. */
|
|
13
|
+
midSize?: number;
|
|
14
|
+
/** Central glow intensity, 0-1. Default: 0.5. */
|
|
15
|
+
midIntensity?: number;
|
|
16
|
+
/** Ray density. Default: 0.5. */
|
|
17
|
+
density?: number;
|
|
18
|
+
/** Ray sharpness, 0-1. Default: 0.5. */
|
|
19
|
+
intensity?: number;
|
|
20
|
+
/** Additive-vs-alpha blend for overlapping rays, 0-1. Default: 0.5. */
|
|
21
|
+
bloom?: number;
|
|
22
|
+
/** Animation speed multiplier. Default: 1. */
|
|
23
|
+
speed?: number;
|
|
24
|
+
className?: string;
|
|
25
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import type { GradientMeshProps } from "./GradientMesh.types";
|
|
3
|
+
/**
|
|
4
|
+
* Animated blob mesh gradient — several drifting, weighted color blobs
|
|
5
|
+
* blended into a soft organic gradient, with subtle grain. WebGL2-powered;
|
|
6
|
+
* falls back to a static CSS gradient when WebGL2 is unavailable or the
|
|
7
|
+
* user prefers reduced motion.
|
|
8
|
+
*/
|
|
9
|
+
export declare const GradientMesh: React.FC<GradientMeshProps>;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx } from 'react/jsx-runtime';
|
|
3
|
+
import { useMemo, useRef } from 'react';
|
|
4
|
+
import { useReducedMotion } from 'motion/react';
|
|
5
|
+
import { useIsClient } from '../../../hooks/useIsClient.js';
|
|
6
|
+
import { useDarkMode } from '../../../hooks/useDarkMode.js';
|
|
7
|
+
import { cn } from '../../../utils/cn.js';
|
|
8
|
+
import { ShaderCanvas } from '../shared/ShaderCanvas/ShaderCanvas.js';
|
|
9
|
+
import { resolveShaderColors } from '../shared/resolveShaderColor.js';
|
|
10
|
+
import { gradientMeshFragmentShader } from './GradientMesh.shaders.js';
|
|
11
|
+
import { GRADIENT_MESH_MAX_COLORS } from './GradientMesh.types.js';
|
|
12
|
+
|
|
13
|
+
const DEFAULT_COLORS = ["var(--color-primary-300)", "var(--color-primary)", "var(--color-primary-700)"];
|
|
14
|
+
function useWebgl2Supported(disabled) {
|
|
15
|
+
return useMemo(() => {
|
|
16
|
+
if (disabled || typeof document === "undefined")
|
|
17
|
+
return false;
|
|
18
|
+
try {
|
|
19
|
+
return !!document.createElement("canvas").getContext("webgl2");
|
|
20
|
+
}
|
|
21
|
+
catch (_a) {
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
}, [disabled]);
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Animated blob mesh gradient — several drifting, weighted color blobs
|
|
28
|
+
* blended into a soft organic gradient, with subtle grain. WebGL2-powered;
|
|
29
|
+
* falls back to a static CSS gradient when WebGL2 is unavailable or the
|
|
30
|
+
* user prefers reduced motion.
|
|
31
|
+
*/
|
|
32
|
+
const GradientMesh = ({ colors = DEFAULT_COLORS, distortion = 0.4, swirl = 0.3, grainMixer = 0.2, grainOverlay = 0.1, speed = 1, className, style, ...props }) => {
|
|
33
|
+
var _a, _b;
|
|
34
|
+
const isClient = useIsClient();
|
|
35
|
+
const shouldReduceMotion = useReducedMotion();
|
|
36
|
+
const isDark = useDarkMode();
|
|
37
|
+
const webglSupported = useWebgl2Supported(!!shouldReduceMotion);
|
|
38
|
+
const safeColors = colors.length > 0 ? colors.slice(0, GRADIENT_MESH_MAX_COLORS) : DEFAULT_COLORS;
|
|
39
|
+
const resolvedColors = useMemo(() => resolveShaderColors(safeColors),
|
|
40
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
41
|
+
[safeColors.join("|"), isDark]);
|
|
42
|
+
const uniformsRef = useRef({});
|
|
43
|
+
for (let i = 0; i < GRADIENT_MESH_MAX_COLORS; i++) {
|
|
44
|
+
uniformsRef.current[`u_colors[${i}]`] = (_b = (_a = resolvedColors[i]) !== null && _a !== void 0 ? _a : resolvedColors[resolvedColors.length - 1]) !== null && _b !== void 0 ? _b : [0, 0, 0, 0];
|
|
45
|
+
}
|
|
46
|
+
uniformsRef.current.u_colorsCount = resolvedColors.length;
|
|
47
|
+
uniformsRef.current.u_distortion = distortion;
|
|
48
|
+
uniformsRef.current.u_swirl = swirl;
|
|
49
|
+
uniformsRef.current.u_grainMixer = grainMixer;
|
|
50
|
+
uniformsRef.current.u_grainOverlay = grainOverlay;
|
|
51
|
+
uniformsRef.current.u_speed = speed;
|
|
52
|
+
const fallbackGradient = `linear-gradient(135deg, ${safeColors.join(", ")})`;
|
|
53
|
+
return (jsx("div", { className: cn("absolute inset-0 overflow-hidden pointer-events-none select-none", className), style: style, "aria-hidden": "true", ...props, children: isClient && webglSupported ? (jsx(ShaderCanvas, { fragmentShader: gradientMeshFragmentShader, uniformsRef: uniformsRef })) : (jsx("div", { className: "absolute inset-0", style: { background: fallbackGradient } })) }));
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
export { GradientMesh };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GradientMesh fragment shader — adapted from paper-design/shaders' `mesh-gradient.ts`
|
|
3
|
+
* (https://github.com/paper-design/shaders, Apache License 2.0). Renamed from
|
|
4
|
+
* paper-design's "Mesh Gradient" to avoid a naming collision with this
|
|
5
|
+
* library's existing `MeshGradient` (an unrelated SVG-based deterministic
|
|
6
|
+
* seed→blob avatar generator).
|
|
7
|
+
*
|
|
8
|
+
* Simplified from the original: plain centered/aspect-corrected UV
|
|
9
|
+
* (gl_FragCoord/iResolution) instead of paper-design's ShaderSizingParams
|
|
10
|
+
* fit/scale/rotation engine; pure-hash GLSL (see shared/shaderNoise.glsl.ts)
|
|
11
|
+
* instead of pre-generated noise-texture sampling. This shader's own UV
|
|
12
|
+
* convention already matched a roughly unit-scale range, so its magic
|
|
13
|
+
* numbers (grain UV *1000, distance^3.5, etc.) port over unchanged.
|
|
14
|
+
*/
|
|
15
|
+
export declare const gradientMeshFragmentShader = "#version 300 es\nprecision mediump float;\n\nuniform float iTime;\nuniform vec2 iResolution;\n\nuniform vec4 u_colors[10];\nuniform float u_colorsCount;\nuniform float u_distortion;\nuniform float u_swirl;\nuniform float u_grainMixer;\nuniform float u_grainOverlay;\nuniform float u_speed;\n\nout vec4 fragColor;\n\n\nconst float PI = 3.14159265359;\nconst float TWO_PI = 6.28318530718;\n\n\nvec2 rotate(vec2 v, float angle) {\n float s = sin(angle);\n float c = cos(angle);\n return mat2(c, -s, s, c) * v;\n}\n\n\nfloat randomR(vec2 st) {\n return fract(sin(dot(st, vec2(12.9898, 78.233))) * 43758.5453123);\n}\n\n\nfloat hash21(vec2 p) {\n return randomR(p);\n}\n\nfloat valueNoise(vec2 st) {\n vec2 i = floor(st);\n vec2 f = fract(st);\n float a = hash21(i);\n float b = hash21(i + vec2(1.0, 0.0));\n float c = hash21(i + vec2(0.0, 1.0));\n float d = hash21(i + vec2(1.0, 1.0));\n vec2 u = f * f * (3.0 - 2.0 * f);\n float x1 = mix(a, b, u.x);\n float x2 = mix(c, d, u.x);\n return mix(x1, x2, u.y);\n}\n\nfloat noise(vec2 n, vec2 seedOffset) {\n return valueNoise(n + seedOffset);\n}\n\nvec2 getPosition(int i, float t) {\n float a = float(i) * .37;\n float b = .6 + fract(float(i) / 3.) * .9;\n float c = .8 + fract(float(i + 1) / 4.);\n float x = sin(t * b + a);\n float y = cos(t * c + a * 1.5);\n return .5 + .5 * vec2(x, y);\n}\n\nvoid main() {\n vec2 uv = (gl_FragCoord.xy - 0.5 * iResolution.xy) / min(iResolution.x, iResolution.y);\n uv += .5;\n vec2 grainUV = uv * 1000.;\n\n float grain = noise(grainUV, vec2(0.));\n float mixerGrain = .4 * u_grainMixer * (grain - .5);\n\n const float firstFrameOffset = 41.5;\n float t = .5 * u_speed * iTime + firstFrameOffset;\n\n float radius = smoothstep(0., 1., length(uv - .5));\n float center = 1. - radius;\n for (float i = 1.; i <= 2.; i++) {\n uv.x += u_distortion * center / i * sin(t + i * .4 * smoothstep(.0, 1., uv.y)) * cos(.2 * t + i * 2.4 * smoothstep(.0, 1., uv.y));\n uv.y += u_distortion * center / i * cos(t + i * 2. * smoothstep(.0, 1., uv.x));\n }\n\n vec2 uvRotated = uv;\n uvRotated -= vec2(.5);\n float angle = 3. * u_swirl * radius;\n uvRotated = rotate(uvRotated, -angle);\n uvRotated += vec2(.5);\n\n vec3 color = vec3(0.);\n float opacity = 0.;\n float totalWeight = 0.;\n\n for (int i = 0; i < 10; i++) {\n if (i >= int(u_colorsCount)) break;\n vec2 pos = getPosition(i, t) + mixerGrain;\n vec3 colorFraction = u_colors[i].rgb * u_colors[i].a;\n float opacityFraction = u_colors[i].a;\n float dist = length(uvRotated - pos);\n dist = pow(dist, 3.5);\n float weight = 1. / (dist + 1e-3);\n color += colorFraction * weight;\n opacity += opacityFraction * weight;\n totalWeight += weight;\n }\n color /= max(1e-4, totalWeight);\n opacity /= max(1e-4, totalWeight);\n\n float grainOverlay = valueNoise(rotate(grainUV, 1.) + vec2(3.));\n grainOverlay = mix(grainOverlay, valueNoise(rotate(grainUV, 2.) + vec2(-1.)), .5);\n grainOverlay = pow(grainOverlay, 1.3);\n float grainOverlayV = grainOverlay * 2. - 1.;\n vec3 grainOverlayColor = vec3(step(0., grainOverlayV));\n float grainOverlayStrength = u_grainOverlay * abs(grainOverlayV);\n grainOverlayStrength = pow(grainOverlayStrength, .8);\n color = mix(color, grainOverlayColor, .35 * grainOverlayStrength);\n opacity += .5 * grainOverlayStrength;\n opacity = clamp(opacity, 0., 1.);\n\n fragColor = vec4(color, opacity);\n}\n";
|