@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,49 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
/** Visual style of the shimmer. */
|
|
3
|
+
export type ShimmerVariant = "text" | "surface";
|
|
4
|
+
export interface ShimmerProps extends React.HTMLAttributes<HTMLElement> {
|
|
5
|
+
/**
|
|
6
|
+
* Element or component to render as. Lets Shimmer *be* the element instead of
|
|
7
|
+
* wrapping it (e.g. `as="h1"`).
|
|
8
|
+
* @default "span" for `variant="text"`, "div" for `variant="surface"`
|
|
9
|
+
*/
|
|
10
|
+
as?: React.ElementType;
|
|
11
|
+
/**
|
|
12
|
+
* - `text` — muted glyphs with a brighter highlight band sweeping across
|
|
13
|
+
* (the "AI thinking" look). Shimmers the text itself.
|
|
14
|
+
* - `surface` — a highlight band sweeps across the box; supply the placeholder
|
|
15
|
+
* background via `className`.
|
|
16
|
+
* @default "text"
|
|
17
|
+
*/
|
|
18
|
+
variant?: ShimmerVariant;
|
|
19
|
+
/**
|
|
20
|
+
* When `false`, renders the static base color with no sweep — useful to
|
|
21
|
+
* start/stop a "thinking" state without unmounting.
|
|
22
|
+
* @default true
|
|
23
|
+
*/
|
|
24
|
+
active?: boolean;
|
|
25
|
+
/**
|
|
26
|
+
* Animation duration in seconds.
|
|
27
|
+
* @default 2
|
|
28
|
+
*/
|
|
29
|
+
duration?: number;
|
|
30
|
+
/**
|
|
31
|
+
* Width of the highlight band, `0`–`100`. Lower = tighter, brighter streak.
|
|
32
|
+
* Only affects `variant="text"`.
|
|
33
|
+
* @default 20
|
|
34
|
+
*/
|
|
35
|
+
spread?: number;
|
|
36
|
+
/**
|
|
37
|
+
* Base / dim color. Any CSS color or variable. Maps to `--shimmer-color`.
|
|
38
|
+
* @default var(--color-text-muted)
|
|
39
|
+
*/
|
|
40
|
+
color?: string;
|
|
41
|
+
/**
|
|
42
|
+
* Sweep highlight color. Maps to `--shimmer-highlight` (text) or
|
|
43
|
+
* `--shimmer-surface-highlight` (surface).
|
|
44
|
+
*/
|
|
45
|
+
highlightColor?: string;
|
|
46
|
+
/** Additional className for style overrides (shadcn pattern, wins). */
|
|
47
|
+
className?: string;
|
|
48
|
+
children?: React.ReactNode;
|
|
49
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import type { SmokeRingProps } from "./SmokeRing.types";
|
|
3
|
+
/**
|
|
4
|
+
* Animated turbulent smoke ring — a noise-distorted ring gradient. WebGL2-
|
|
5
|
+
* powered; falls back to a static CSS ring approximation when WebGL2 is
|
|
6
|
+
* unavailable or the user prefers reduced motion.
|
|
7
|
+
*/
|
|
8
|
+
export declare const SmokeRing: React.FC<SmokeRingProps>;
|
|
@@ -0,0 +1,62 @@
|
|
|
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 { smokeRingFragmentShader } from './SmokeRing.shaders.js';
|
|
11
|
+
import { SMOKE_RING_MAX_COLORS } from './SmokeRing.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
|
+
function useWebgl2Supported(disabled) {
|
|
16
|
+
return useMemo(() => {
|
|
17
|
+
if (disabled || typeof document === "undefined")
|
|
18
|
+
return false;
|
|
19
|
+
try {
|
|
20
|
+
return !!document.createElement("canvas").getContext("webgl2");
|
|
21
|
+
}
|
|
22
|
+
catch (_a) {
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
}, [disabled]);
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Animated turbulent smoke ring — a noise-distorted ring gradient. WebGL2-
|
|
29
|
+
* powered; falls back to a static CSS ring approximation when WebGL2 is
|
|
30
|
+
* unavailable or the user prefers reduced motion.
|
|
31
|
+
*/
|
|
32
|
+
const SmokeRing = ({ colorBack = DEFAULT_COLOR_BACK, colors = DEFAULT_COLORS, noiseScale = 1, thickness = 0.3, radius = 0.35, innerShape = 0.5, noiseIterations = 4, speed = 1, className, style, ...props }) => {
|
|
33
|
+
var _a, _b, _c;
|
|
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, SMOKE_RING_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 resolvedBack = useMemo(() => resolveShaderColor(colorBack),
|
|
43
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
44
|
+
[colorBack, isDark]);
|
|
45
|
+
const uniformsRef = useRef({});
|
|
46
|
+
for (let i = 0; i < SMOKE_RING_MAX_COLORS; i++) {
|
|
47
|
+
uniformsRef.current[`u_colors[${i}]`] =
|
|
48
|
+
(_b = (_a = resolvedColors[i]) !== null && _a !== void 0 ? _a : resolvedColors[resolvedColors.length - 1]) !== null && _b !== void 0 ? _b : [0, 0, 0, 0];
|
|
49
|
+
}
|
|
50
|
+
uniformsRef.current.u_colorsCount = resolvedColors.length;
|
|
51
|
+
uniformsRef.current.u_colorBack = resolvedBack;
|
|
52
|
+
uniformsRef.current.u_noiseScale = noiseScale;
|
|
53
|
+
uniformsRef.current.u_thickness = thickness;
|
|
54
|
+
uniformsRef.current.u_radius = radius;
|
|
55
|
+
uniformsRef.current.u_innerShape = innerShape;
|
|
56
|
+
uniformsRef.current.u_noiseIterations = noiseIterations;
|
|
57
|
+
uniformsRef.current.u_speed = speed;
|
|
58
|
+
const fallbackGradient = `radial-gradient(circle, transparent 30%, ${(_c = safeColors[Math.floor(safeColors.length / 2)]) !== null && _c !== void 0 ? _c : "var(--color-primary)"} 45%, transparent 60%), ${colorBack}`;
|
|
59
|
+
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: smokeRingFragmentShader, uniformsRef: uniformsRef })) : (jsx("div", { className: "absolute inset-0", style: { background: fallbackGradient } })) }));
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
export { SmokeRing };
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SmokeRing fragment shader — adapted from paper-design/shaders'
|
|
3
|
+
* `smoke-ring.ts` (https://github.com/paper-design/shaders, Apache License
|
|
4
|
+
* 2.0).
|
|
5
|
+
*
|
|
6
|
+
* Simplified from the original: plain centered/aspect-corrected UV
|
|
7
|
+
* (gl_FragCoord/iResolution) instead of paper-design's ShaderSizingParams
|
|
8
|
+
* fit/scale/rotation engine; pure-hash GLSL (see shared/shaderNoise.glsl.ts)
|
|
9
|
+
* instead of pre-generated noise-texture sampling. The color-ramp loop also
|
|
10
|
+
* adds an explicit `i > idxLast` bounds check so fewer than the maximum 10
|
|
11
|
+
* colors renders correctly (the unset trailing `u_colors[]` slots are never
|
|
12
|
+
* blended in).
|
|
13
|
+
*/
|
|
14
|
+
export declare const smokeRingFragmentShader = "#version 300 es\nprecision mediump float;\n\nuniform float iTime;\nuniform vec2 iResolution;\n\nuniform vec4 u_colorBack;\nuniform vec4 u_colors[10];\nuniform float u_colorsCount;\n\nuniform float u_thickness;\nuniform float u_radius;\nuniform float u_innerShape;\nuniform float u_noiseScale;\nuniform float u_noiseIterations;\nuniform float u_speed;\n\nout vec4 fragColor;\n\n\nconst float PI = 3.14159265359;\nconst float TWO_PI = 6.28318530718;\n\n\nfloat randomR(vec2 st) {\n return fract(sin(dot(st, vec2(12.9898, 78.233))) * 43758.5453123);\n}\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\nvec2 fbm(vec2 n0, vec2 n1) {\n vec2 total = vec2(0.0);\n float amplitude = .4;\n for (int i = 0; i < 8; i++) {\n if (i >= int(u_noiseIterations)) break;\n total.x += valueNoise(n0) * amplitude;\n total.y += valueNoise(n1) * amplitude;\n n0 *= 1.99;\n n1 *= 1.99;\n amplitude *= 0.65;\n }\n return total;\n}\n\nfloat getNoise(vec2 uv, vec2 pUv, float t) {\n vec2 pUvLeft = pUv + .03 * t;\n float period = max(abs(u_noiseScale * TWO_PI), 1e-6);\n vec2 pUvRight = vec2(fract(pUv.x / period) * period, pUv.y) + .03 * t;\n vec2 noiseVal = fbm(pUvLeft, pUvRight);\n return mix(noiseVal.y, noiseVal.x, smoothstep(-.25, .25, uv.x));\n}\n\nfloat getRingShape(vec2 uv) {\n float radius = u_radius;\n float thickness = u_thickness;\n float distance = length(uv);\n float ringValue = 1. - smoothstep(radius, radius + thickness, distance);\n ringValue *= smoothstep(radius - pow(u_innerShape, 3.) * thickness, radius, distance);\n return ringValue;\n}\n\nvoid main() {\n vec2 shape_uv = (gl_FragCoord.xy - 0.5 * iResolution.xy) / min(iResolution.x, iResolution.y);\n\n float t = u_speed * iTime;\n float cycleDuration = 3.;\n float period2 = 2.0 * cycleDuration;\n float localTime1 = fract((0.1 * t + cycleDuration) / period2) * period2;\n float localTime2 = fract((0.1 * t) / period2) * period2;\n float timeBlend = .5 + .5 * sin(.1 * t * PI / cycleDuration - .5 * PI);\n\n float atg = atan(shape_uv.y, shape_uv.x) + .001;\n float l = length(shape_uv);\n float radialOffset = .5 * l - inversesqrt(max(1e-4, l));\n vec2 polar_uv1 = vec2(atg, localTime1 - radialOffset) * u_noiseScale;\n vec2 polar_uv2 = vec2(atg, localTime2 - radialOffset) * u_noiseScale;\n\n float noise1 = getNoise(shape_uv, polar_uv1, t);\n float noise2 = getNoise(shape_uv, polar_uv2, t);\n float noiseVal = mix(noise1, noise2, timeBlend);\n\n shape_uv *= (.8 + 1.2 * noiseVal);\n\n float ringShape = getRingShape(shape_uv);\n\n float mixer = ringShape * ringShape * (u_colorsCount - 1.);\n int idxLast = int(u_colorsCount) - 1;\n vec4 gradient = u_colors[idxLast];\n gradient.rgb *= gradient.a;\n for (int i = 9; i >= 0; i--) {\n if (i > idxLast) continue;\n float localT = clamp(mixer - float(idxLast - i - 1), 0., 1.);\n vec4 c = u_colors[i];\n c.rgb *= c.a;\n gradient = mix(gradient, c, localT);\n }\n\n vec3 color = gradient.rgb * ringShape;\n float opacity = gradient.a * ringShape;\n vec3 bgColor = u_colorBack.rgb * u_colorBack.a;\n color = color + bgColor * (1. - opacity);\n opacity = opacity + u_colorBack.a * (1. - opacity);\n\n fragColor = vec4(color, opacity);\n}\n";
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import 'react/jsx-runtime';
|
|
2
|
+
import 'react';
|
|
3
|
+
import { glslDeclarePI, glslHashFloat } from '../shared/shaderNoise.glsl.js';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* SmokeRing fragment shader — adapted from paper-design/shaders'
|
|
7
|
+
* `smoke-ring.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; pure-hash GLSL (see shared/shaderNoise.glsl.ts)
|
|
13
|
+
* instead of pre-generated noise-texture sampling. The color-ramp loop also
|
|
14
|
+
* adds an explicit `i > idxLast` bounds check so fewer than the maximum 10
|
|
15
|
+
* colors renders correctly (the unset trailing `u_colors[]` slots are never
|
|
16
|
+
* blended in).
|
|
17
|
+
*/
|
|
18
|
+
const smokeRingFragmentShader = `#version 300 es
|
|
19
|
+
precision mediump float;
|
|
20
|
+
|
|
21
|
+
uniform float iTime;
|
|
22
|
+
uniform vec2 iResolution;
|
|
23
|
+
|
|
24
|
+
uniform vec4 u_colorBack;
|
|
25
|
+
uniform vec4 u_colors[10];
|
|
26
|
+
uniform float u_colorsCount;
|
|
27
|
+
|
|
28
|
+
uniform float u_thickness;
|
|
29
|
+
uniform float u_radius;
|
|
30
|
+
uniform float u_innerShape;
|
|
31
|
+
uniform float u_noiseScale;
|
|
32
|
+
uniform float u_noiseIterations;
|
|
33
|
+
uniform float u_speed;
|
|
34
|
+
|
|
35
|
+
out vec4 fragColor;
|
|
36
|
+
|
|
37
|
+
${glslDeclarePI}
|
|
38
|
+
${glslHashFloat}
|
|
39
|
+
|
|
40
|
+
float valueNoise(vec2 st) {
|
|
41
|
+
vec2 i = floor(st);
|
|
42
|
+
vec2 f = fract(st);
|
|
43
|
+
float a = randomR(i);
|
|
44
|
+
float b = randomR(i + vec2(1.0, 0.0));
|
|
45
|
+
float c = randomR(i + vec2(0.0, 1.0));
|
|
46
|
+
float d = randomR(i + vec2(1.0, 1.0));
|
|
47
|
+
vec2 u = f * f * (3.0 - 2.0 * f);
|
|
48
|
+
float x1 = mix(a, b, u.x);
|
|
49
|
+
float x2 = mix(c, d, u.x);
|
|
50
|
+
return mix(x1, x2, u.y);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
vec2 fbm(vec2 n0, vec2 n1) {
|
|
54
|
+
vec2 total = vec2(0.0);
|
|
55
|
+
float amplitude = .4;
|
|
56
|
+
for (int i = 0; i < 8; i++) {
|
|
57
|
+
if (i >= int(u_noiseIterations)) break;
|
|
58
|
+
total.x += valueNoise(n0) * amplitude;
|
|
59
|
+
total.y += valueNoise(n1) * amplitude;
|
|
60
|
+
n0 *= 1.99;
|
|
61
|
+
n1 *= 1.99;
|
|
62
|
+
amplitude *= 0.65;
|
|
63
|
+
}
|
|
64
|
+
return total;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
float getNoise(vec2 uv, vec2 pUv, float t) {
|
|
68
|
+
vec2 pUvLeft = pUv + .03 * t;
|
|
69
|
+
float period = max(abs(u_noiseScale * TWO_PI), 1e-6);
|
|
70
|
+
vec2 pUvRight = vec2(fract(pUv.x / period) * period, pUv.y) + .03 * t;
|
|
71
|
+
vec2 noiseVal = fbm(pUvLeft, pUvRight);
|
|
72
|
+
return mix(noiseVal.y, noiseVal.x, smoothstep(-.25, .25, uv.x));
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
float getRingShape(vec2 uv) {
|
|
76
|
+
float radius = u_radius;
|
|
77
|
+
float thickness = u_thickness;
|
|
78
|
+
float distance = length(uv);
|
|
79
|
+
float ringValue = 1. - smoothstep(radius, radius + thickness, distance);
|
|
80
|
+
ringValue *= smoothstep(radius - pow(u_innerShape, 3.) * thickness, radius, distance);
|
|
81
|
+
return ringValue;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
void main() {
|
|
85
|
+
vec2 shape_uv = (gl_FragCoord.xy - 0.5 * iResolution.xy) / min(iResolution.x, iResolution.y);
|
|
86
|
+
|
|
87
|
+
float t = u_speed * iTime;
|
|
88
|
+
float cycleDuration = 3.;
|
|
89
|
+
float period2 = 2.0 * cycleDuration;
|
|
90
|
+
float localTime1 = fract((0.1 * t + cycleDuration) / period2) * period2;
|
|
91
|
+
float localTime2 = fract((0.1 * t) / period2) * period2;
|
|
92
|
+
float timeBlend = .5 + .5 * sin(.1 * t * PI / cycleDuration - .5 * PI);
|
|
93
|
+
|
|
94
|
+
float atg = atan(shape_uv.y, shape_uv.x) + .001;
|
|
95
|
+
float l = length(shape_uv);
|
|
96
|
+
float radialOffset = .5 * l - inversesqrt(max(1e-4, l));
|
|
97
|
+
vec2 polar_uv1 = vec2(atg, localTime1 - radialOffset) * u_noiseScale;
|
|
98
|
+
vec2 polar_uv2 = vec2(atg, localTime2 - radialOffset) * u_noiseScale;
|
|
99
|
+
|
|
100
|
+
float noise1 = getNoise(shape_uv, polar_uv1, t);
|
|
101
|
+
float noise2 = getNoise(shape_uv, polar_uv2, t);
|
|
102
|
+
float noiseVal = mix(noise1, noise2, timeBlend);
|
|
103
|
+
|
|
104
|
+
shape_uv *= (.8 + 1.2 * noiseVal);
|
|
105
|
+
|
|
106
|
+
float ringShape = getRingShape(shape_uv);
|
|
107
|
+
|
|
108
|
+
float mixer = ringShape * ringShape * (u_colorsCount - 1.);
|
|
109
|
+
int idxLast = int(u_colorsCount) - 1;
|
|
110
|
+
vec4 gradient = u_colors[idxLast];
|
|
111
|
+
gradient.rgb *= gradient.a;
|
|
112
|
+
for (int i = 9; i >= 0; i--) {
|
|
113
|
+
if (i > idxLast) continue;
|
|
114
|
+
float localT = clamp(mixer - float(idxLast - i - 1), 0., 1.);
|
|
115
|
+
vec4 c = u_colors[i];
|
|
116
|
+
c.rgb *= c.a;
|
|
117
|
+
gradient = mix(gradient, c, localT);
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
vec3 color = gradient.rgb * ringShape;
|
|
121
|
+
float opacity = gradient.a * ringShape;
|
|
122
|
+
vec3 bgColor = u_colorBack.rgb * u_colorBack.a;
|
|
123
|
+
color = color + bgColor * (1. - opacity);
|
|
124
|
+
opacity = opacity + u_colorBack.a * (1. - opacity);
|
|
125
|
+
|
|
126
|
+
fragColor = vec4(color, opacity);
|
|
127
|
+
}
|
|
128
|
+
`;
|
|
129
|
+
|
|
130
|
+
export { smokeRingFragmentShader };
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type React from "react";
|
|
2
|
+
export declare const SMOKE_RING_MAX_COLORS = 10;
|
|
3
|
+
export declare const SMOKE_RING_MAX_NOISE_ITERATIONS = 8;
|
|
4
|
+
export interface SmokeRingProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
5
|
+
/** Background CSS color. Default: 'var(--color-background)'. */
|
|
6
|
+
colorBack?: string;
|
|
7
|
+
/** Ring color ramp, up to 10. Default: a 3-stop primary ramp. */
|
|
8
|
+
colors?: string[];
|
|
9
|
+
/** Turbulence scale of the ring's noise distortion. Default: 1. */
|
|
10
|
+
noiseScale?: number;
|
|
11
|
+
/** Ring thickness. Default: 0.3. */
|
|
12
|
+
thickness?: number;
|
|
13
|
+
/** Ring radius. Default: 0.35. */
|
|
14
|
+
radius?: number;
|
|
15
|
+
/** Inner-edge softness/shape, 0-1. Default: 0.5. */
|
|
16
|
+
innerShape?: number;
|
|
17
|
+
/** fbm octave count, 1-8 (higher = more detailed turbulence). Default: 4. */
|
|
18
|
+
noiseIterations?: number;
|
|
19
|
+
/** Animation speed multiplier. Default: 1. */
|
|
20
|
+
speed?: number;
|
|
21
|
+
className?: string;
|
|
22
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import type { StaticGradientMeshProps } from "./StaticGradientMesh.types";
|
|
3
|
+
/**
|
|
4
|
+
* Non-animated blob mesh gradient — a static arrangement of weighted color
|
|
5
|
+
* blobs blended into a soft organic gradient, with subtle grain. WebGL2-
|
|
6
|
+
* powered; falls back to a static CSS gradient when WebGL2 is unavailable.
|
|
7
|
+
* Being static, it needs no `prefers-reduced-motion` handling.
|
|
8
|
+
*/
|
|
9
|
+
export declare const StaticGradientMesh: React.FC<StaticGradientMeshProps>;
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx } from 'react/jsx-runtime';
|
|
3
|
+
import { useMemo, useRef } from 'react';
|
|
4
|
+
import { useIsClient } from '../../../hooks/useIsClient.js';
|
|
5
|
+
import 'motion/react';
|
|
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 { staticGradientMeshFragmentShader } from './StaticGradientMesh.shaders.js';
|
|
11
|
+
import { STATIC_GRADIENT_MESH_MAX_COLORS } from './StaticGradientMesh.types.js';
|
|
12
|
+
|
|
13
|
+
const DEFAULT_COLORS = ["var(--color-primary-300)", "var(--color-primary)", "var(--color-primary-700)"];
|
|
14
|
+
function useWebgl2Supported() {
|
|
15
|
+
return useMemo(() => {
|
|
16
|
+
if (typeof document === "undefined")
|
|
17
|
+
return false;
|
|
18
|
+
try {
|
|
19
|
+
return !!document.createElement("canvas").getContext("webgl2");
|
|
20
|
+
}
|
|
21
|
+
catch (_a) {
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
}, []);
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Non-animated blob mesh gradient — a static arrangement of weighted color
|
|
28
|
+
* blobs blended into a soft organic gradient, with subtle grain. WebGL2-
|
|
29
|
+
* powered; falls back to a static CSS gradient when WebGL2 is unavailable.
|
|
30
|
+
* Being static, it needs no `prefers-reduced-motion` handling.
|
|
31
|
+
*/
|
|
32
|
+
const StaticGradientMesh = ({ colors = DEFAULT_COLORS, positions = 0, waveX = 0.3, waveXShift = 0, waveY = 0.3, waveYShift = 0, mixing = 0.5, grainMixer = 0.2, grainOverlay = 0.1, className, style, ...props }) => {
|
|
33
|
+
var _a, _b;
|
|
34
|
+
const isClient = useIsClient();
|
|
35
|
+
const isDark = useDarkMode();
|
|
36
|
+
const webglSupported = useWebgl2Supported();
|
|
37
|
+
const safeColors = colors.length > 0 ? colors.slice(0, STATIC_GRADIENT_MESH_MAX_COLORS) : DEFAULT_COLORS;
|
|
38
|
+
const resolvedColors = useMemo(() => resolveShaderColors(safeColors),
|
|
39
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
40
|
+
[safeColors.join("|"), isDark]);
|
|
41
|
+
const uniformsRef = useRef({});
|
|
42
|
+
for (let i = 0; i < STATIC_GRADIENT_MESH_MAX_COLORS; i++) {
|
|
43
|
+
uniformsRef.current[`u_colors[${i}]`] =
|
|
44
|
+
(_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_positions = positions;
|
|
48
|
+
uniformsRef.current.u_waveX = waveX;
|
|
49
|
+
uniformsRef.current.u_waveXShift = waveXShift;
|
|
50
|
+
uniformsRef.current.u_waveY = waveY;
|
|
51
|
+
uniformsRef.current.u_waveYShift = waveYShift;
|
|
52
|
+
uniformsRef.current.u_mixing = mixing;
|
|
53
|
+
uniformsRef.current.u_grainMixer = grainMixer;
|
|
54
|
+
uniformsRef.current.u_grainOverlay = grainOverlay;
|
|
55
|
+
const fallbackGradient = `linear-gradient(135deg, ${safeColors.join(", ")})`;
|
|
56
|
+
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: staticGradientMeshFragmentShader, uniformsRef: uniformsRef })) : (jsx("div", { className: "absolute inset-0", style: { background: fallbackGradient } })) }));
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
export { StaticGradientMesh };
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* StaticGradientMesh fragment shader — adapted from paper-design/shaders'
|
|
3
|
+
* `static-mesh-gradient.ts` (https://github.com/paper-design/shaders, Apache
|
|
4
|
+
* License 2.0). Renamed from paper-design's "Static Mesh Gradient" to avoid
|
|
5
|
+
* a naming collision with this library's existing `MeshGradient` (an
|
|
6
|
+
* unrelated SVG-based deterministic 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. Non-animated — a fixed
|
|
12
|
+
* `positions` seed substitutes for time, matching the original's design.
|
|
13
|
+
*/
|
|
14
|
+
export declare const staticGradientMeshFragmentShader = "#version 300 es\nprecision mediump float;\n\nuniform vec2 iResolution;\n\nuniform vec4 u_colors[10];\nuniform float u_colorsCount;\nuniform float u_positions;\nuniform float u_waveX;\nuniform float u_waveXShift;\nuniform float u_waveY;\nuniform float u_waveYShift;\nuniform float u_mixing;\nuniform float u_grainMixer;\nuniform float u_grainOverlay;\n\nout vec4 fragColor;\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 + mod(float(i), 3.) * .3;\n float c = .8 + mod(float(i + 1), 4.) * 0.25;\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 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_waveX * center / i * cos(TWO_PI * u_waveXShift + i * 2. * smoothstep(.0, 1., uv.y));\n uv.y += u_waveY * center / i * cos(TWO_PI * u_waveYShift + i * 2. * smoothstep(.0, 1., uv.x));\n }\n\n vec3 color = vec3(0.);\n float opacity = 0.;\n float totalWeight = 0.;\n float positionSeed = 25. + .33 * u_positions;\n\n for (int i = 0; i < 10; i++) {\n if (i >= int(u_colorsCount)) break;\n vec2 pos = getPosition(i, positionSeed) + mixerGrain;\n float dist = length(uv - pos);\n vec3 colorFraction = u_colors[i].rgb * u_colors[i].a;\n float opacityFraction = u_colors[i].a;\n\n float mixing = pow(u_mixing, .7);\n float power = mix(2., 1., mixing);\n dist = pow(dist, power);\n\n float w = 1. / (dist + 1e-3);\n float baseSharpness = mix(.0, 8., clamp(w, 0., 1.));\n float sharpness = mix(baseSharpness, 1., mixing);\n w = pow(w, sharpness);\n color += colorFraction * w;\n opacity += opacityFraction * w;\n totalWeight += w;\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";
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import 'react/jsx-runtime';
|
|
2
|
+
import 'react';
|
|
3
|
+
import { glslRotate2, glslHashFloat } from '../shared/shaderNoise.glsl.js';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* StaticGradientMesh fragment shader — adapted from paper-design/shaders'
|
|
7
|
+
* `static-mesh-gradient.ts` (https://github.com/paper-design/shaders, Apache
|
|
8
|
+
* License 2.0). Renamed from paper-design's "Static Mesh Gradient" to avoid
|
|
9
|
+
* a naming collision with this library's existing `MeshGradient` (an
|
|
10
|
+
* unrelated SVG-based deterministic seed→blob avatar generator).
|
|
11
|
+
*
|
|
12
|
+
* Simplified from the original: plain centered/aspect-corrected UV
|
|
13
|
+
* (gl_FragCoord/iResolution) instead of paper-design's ShaderSizingParams
|
|
14
|
+
* fit/scale/rotation engine; pure-hash GLSL (see shared/shaderNoise.glsl.ts)
|
|
15
|
+
* instead of pre-generated noise-texture sampling. Non-animated — a fixed
|
|
16
|
+
* `positions` seed substitutes for time, matching the original's design.
|
|
17
|
+
*/
|
|
18
|
+
const staticGradientMeshFragmentShader = `#version 300 es
|
|
19
|
+
precision mediump float;
|
|
20
|
+
|
|
21
|
+
uniform vec2 iResolution;
|
|
22
|
+
|
|
23
|
+
uniform vec4 u_colors[10];
|
|
24
|
+
uniform float u_colorsCount;
|
|
25
|
+
uniform float u_positions;
|
|
26
|
+
uniform float u_waveX;
|
|
27
|
+
uniform float u_waveXShift;
|
|
28
|
+
uniform float u_waveY;
|
|
29
|
+
uniform float u_waveYShift;
|
|
30
|
+
uniform float u_mixing;
|
|
31
|
+
uniform float u_grainMixer;
|
|
32
|
+
uniform float u_grainOverlay;
|
|
33
|
+
|
|
34
|
+
out vec4 fragColor;
|
|
35
|
+
|
|
36
|
+
const float PI = 3.14159265359;
|
|
37
|
+
const float TWO_PI = 6.28318530718;
|
|
38
|
+
|
|
39
|
+
${glslRotate2}
|
|
40
|
+
${glslHashFloat}
|
|
41
|
+
|
|
42
|
+
float hash21(vec2 p) {
|
|
43
|
+
return randomR(p);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
float valueNoise(vec2 st) {
|
|
47
|
+
vec2 i = floor(st);
|
|
48
|
+
vec2 f = fract(st);
|
|
49
|
+
float a = hash21(i);
|
|
50
|
+
float b = hash21(i + vec2(1.0, 0.0));
|
|
51
|
+
float c = hash21(i + vec2(0.0, 1.0));
|
|
52
|
+
float d = hash21(i + vec2(1.0, 1.0));
|
|
53
|
+
vec2 u = f * f * (3.0 - 2.0 * f);
|
|
54
|
+
float x1 = mix(a, b, u.x);
|
|
55
|
+
float x2 = mix(c, d, u.x);
|
|
56
|
+
return mix(x1, x2, u.y);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
float noise(vec2 n, vec2 seedOffset) {
|
|
60
|
+
return valueNoise(n + seedOffset);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
vec2 getPosition(int i, float t) {
|
|
64
|
+
float a = float(i) * .37;
|
|
65
|
+
float b = .6 + mod(float(i), 3.) * .3;
|
|
66
|
+
float c = .8 + mod(float(i + 1), 4.) * 0.25;
|
|
67
|
+
float x = sin(t * b + a);
|
|
68
|
+
float y = cos(t * c + a * 1.5);
|
|
69
|
+
return .5 + .5 * vec2(x, y);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
void main() {
|
|
73
|
+
vec2 uv = (gl_FragCoord.xy - 0.5 * iResolution.xy) / min(iResolution.x, iResolution.y);
|
|
74
|
+
uv += .5;
|
|
75
|
+
vec2 grainUV = uv * 1000.;
|
|
76
|
+
|
|
77
|
+
float grain = noise(grainUV, vec2(0.));
|
|
78
|
+
float mixerGrain = .4 * u_grainMixer * (grain - .5);
|
|
79
|
+
|
|
80
|
+
float radius = smoothstep(0., 1., length(uv - .5));
|
|
81
|
+
float center = 1. - radius;
|
|
82
|
+
for (float i = 1.; i <= 2.; i++) {
|
|
83
|
+
uv.x += u_waveX * center / i * cos(TWO_PI * u_waveXShift + i * 2. * smoothstep(.0, 1., uv.y));
|
|
84
|
+
uv.y += u_waveY * center / i * cos(TWO_PI * u_waveYShift + i * 2. * smoothstep(.0, 1., uv.x));
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
vec3 color = vec3(0.);
|
|
88
|
+
float opacity = 0.;
|
|
89
|
+
float totalWeight = 0.;
|
|
90
|
+
float positionSeed = 25. + .33 * u_positions;
|
|
91
|
+
|
|
92
|
+
for (int i = 0; i < 10; i++) {
|
|
93
|
+
if (i >= int(u_colorsCount)) break;
|
|
94
|
+
vec2 pos = getPosition(i, positionSeed) + mixerGrain;
|
|
95
|
+
float dist = length(uv - pos);
|
|
96
|
+
vec3 colorFraction = u_colors[i].rgb * u_colors[i].a;
|
|
97
|
+
float opacityFraction = u_colors[i].a;
|
|
98
|
+
|
|
99
|
+
float mixing = pow(u_mixing, .7);
|
|
100
|
+
float power = mix(2., 1., mixing);
|
|
101
|
+
dist = pow(dist, power);
|
|
102
|
+
|
|
103
|
+
float w = 1. / (dist + 1e-3);
|
|
104
|
+
float baseSharpness = mix(.0, 8., clamp(w, 0., 1.));
|
|
105
|
+
float sharpness = mix(baseSharpness, 1., mixing);
|
|
106
|
+
w = pow(w, sharpness);
|
|
107
|
+
color += colorFraction * w;
|
|
108
|
+
opacity += opacityFraction * w;
|
|
109
|
+
totalWeight += w;
|
|
110
|
+
}
|
|
111
|
+
color /= max(1e-4, totalWeight);
|
|
112
|
+
opacity /= max(1e-4, totalWeight);
|
|
113
|
+
|
|
114
|
+
float grainOverlay = valueNoise(rotate(grainUV, 1.) + vec2(3.));
|
|
115
|
+
grainOverlay = mix(grainOverlay, valueNoise(rotate(grainUV, 2.) + vec2(-1.)), .5);
|
|
116
|
+
grainOverlay = pow(grainOverlay, 1.3);
|
|
117
|
+
float grainOverlayV = grainOverlay * 2. - 1.;
|
|
118
|
+
vec3 grainOverlayColor = vec3(step(0., grainOverlayV));
|
|
119
|
+
float grainOverlayStrength = u_grainOverlay * abs(grainOverlayV);
|
|
120
|
+
grainOverlayStrength = pow(grainOverlayStrength, .8);
|
|
121
|
+
color = mix(color, grainOverlayColor, .35 * grainOverlayStrength);
|
|
122
|
+
opacity += .5 * grainOverlayStrength;
|
|
123
|
+
opacity = clamp(opacity, 0., 1.);
|
|
124
|
+
|
|
125
|
+
fragColor = vec4(color, opacity);
|
|
126
|
+
}
|
|
127
|
+
`;
|
|
128
|
+
|
|
129
|
+
export { staticGradientMeshFragmentShader };
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type React from "react";
|
|
2
|
+
export declare const STATIC_GRADIENT_MESH_MAX_COLORS = 10;
|
|
3
|
+
export interface StaticGradientMeshProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
4
|
+
/** Blob colors (hex, rgb(), named, or var(--...)), up to 10. Default: a 3-stop primary ramp. */
|
|
5
|
+
colors?: string[];
|
|
6
|
+
/** Seeds the (fixed) blob layout — change to get a different arrangement. Default: 0. */
|
|
7
|
+
positions?: number;
|
|
8
|
+
/** Horizontal wave warp strength. Default: 0.3. */
|
|
9
|
+
waveX?: number;
|
|
10
|
+
/** Horizontal wave phase shift, 0-1. Default: 0. */
|
|
11
|
+
waveXShift?: number;
|
|
12
|
+
/** Vertical wave warp strength. Default: 0.3. */
|
|
13
|
+
waveY?: number;
|
|
14
|
+
/** Vertical wave phase shift, 0-1. Default: 0. */
|
|
15
|
+
waveYShift?: number;
|
|
16
|
+
/** Blend sharpness between blobs, 0-1 (0 = sharp, 1 = soft). Default: 0.5. */
|
|
17
|
+
mixing?: number;
|
|
18
|
+
/** Grain influence on blob positions, 0-1. Default: 0.2. */
|
|
19
|
+
grainMixer?: number;
|
|
20
|
+
/** Post-composite grain overlay strength, 0-1. Default: 0.1. */
|
|
21
|
+
grainOverlay?: number;
|
|
22
|
+
className?: string;
|
|
23
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import type { StaticRadialGradientProps } from "./StaticRadialGradient.types";
|
|
3
|
+
/**
|
|
4
|
+
* Non-animated radial (conic-influenced) gradient — a soft radial color ramp
|
|
5
|
+
* with an optional angular light-source distortion and grain. WebGL2-
|
|
6
|
+
* powered; falls back to a static CSS radial-gradient when WebGL2 is
|
|
7
|
+
* unavailable. Being static, it needs no `prefers-reduced-motion` handling.
|
|
8
|
+
*/
|
|
9
|
+
export declare const StaticRadialGradient: React.FC<StaticRadialGradientProps>;
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx } from 'react/jsx-runtime';
|
|
3
|
+
import { useMemo, useRef } from 'react';
|
|
4
|
+
import { useIsClient } from '../../../hooks/useIsClient.js';
|
|
5
|
+
import 'motion/react';
|
|
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 { staticRadialGradientFragmentShader } from './StaticRadialGradient.shaders.js';
|
|
11
|
+
import { STATIC_RADIAL_GRADIENT_MAX_COLORS } from './StaticRadialGradient.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
|
+
function useWebgl2Supported() {
|
|
16
|
+
return useMemo(() => {
|
|
17
|
+
if (typeof document === "undefined")
|
|
18
|
+
return false;
|
|
19
|
+
try {
|
|
20
|
+
return !!document.createElement("canvas").getContext("webgl2");
|
|
21
|
+
}
|
|
22
|
+
catch (_a) {
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
}, []);
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Non-animated radial (conic-influenced) gradient — a soft radial color ramp
|
|
29
|
+
* with an optional angular light-source distortion and grain. WebGL2-
|
|
30
|
+
* powered; falls back to a static CSS radial-gradient when WebGL2 is
|
|
31
|
+
* unavailable. Being static, it needs no `prefers-reduced-motion` handling.
|
|
32
|
+
*/
|
|
33
|
+
const StaticRadialGradient = ({ colorBack = DEFAULT_COLOR_BACK, colors = DEFAULT_COLORS, radius = 0.8, focalDistance = 1, focalAngle = 0, falloff = 0, mixing = 0.3, distortion = 0, distortionShift = 0, distortionFreq = 0, grainMixer = 0.1, grainOverlay = 0.05, className, style, ...props }) => {
|
|
34
|
+
var _a, _b;
|
|
35
|
+
const isClient = useIsClient();
|
|
36
|
+
const isDark = useDarkMode();
|
|
37
|
+
const webglSupported = useWebgl2Supported();
|
|
38
|
+
const safeColors = colors.length > 0 ? colors.slice(0, STATIC_RADIAL_GRADIENT_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 resolvedBack = useMemo(() => resolveShaderColor(colorBack),
|
|
43
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
44
|
+
[colorBack, isDark]);
|
|
45
|
+
const uniformsRef = useRef({});
|
|
46
|
+
for (let i = 0; i < STATIC_RADIAL_GRADIENT_MAX_COLORS; i++) {
|
|
47
|
+
uniformsRef.current[`u_colors[${i}]`] =
|
|
48
|
+
(_b = (_a = resolvedColors[i]) !== null && _a !== void 0 ? _a : resolvedColors[resolvedColors.length - 1]) !== null && _b !== void 0 ? _b : [0, 0, 0, 0];
|
|
49
|
+
}
|
|
50
|
+
uniformsRef.current.u_colorsCount = resolvedColors.length;
|
|
51
|
+
uniformsRef.current.u_colorBack = resolvedBack;
|
|
52
|
+
uniformsRef.current.u_radius = radius;
|
|
53
|
+
uniformsRef.current.u_focalDistance = focalDistance;
|
|
54
|
+
uniformsRef.current.u_focalAngle = focalAngle;
|
|
55
|
+
uniformsRef.current.u_falloff = falloff;
|
|
56
|
+
uniformsRef.current.u_mixing = mixing;
|
|
57
|
+
uniformsRef.current.u_distortion = distortion;
|
|
58
|
+
uniformsRef.current.u_distortionShift = distortionShift;
|
|
59
|
+
uniformsRef.current.u_distortionFreq = distortionFreq;
|
|
60
|
+
uniformsRef.current.u_grainMixer = grainMixer;
|
|
61
|
+
uniformsRef.current.u_grainOverlay = grainOverlay;
|
|
62
|
+
const fallbackGradient = `radial-gradient(circle, ${safeColors.join(", ")}, ${colorBack})`;
|
|
63
|
+
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: staticRadialGradientFragmentShader, uniformsRef: uniformsRef })) : (jsx("div", { className: "absolute inset-0", style: { background: fallbackGradient } })) }));
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
export { StaticRadialGradient };
|