@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
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
"use client";
|
|
1
2
|
import { jsx } from 'react/jsx-runtime';
|
|
2
3
|
import { useRef, useEffect } from 'react';
|
|
3
4
|
|
|
@@ -10,11 +11,13 @@ void main() {
|
|
|
10
11
|
* Minimal raw WebGL2 canvas renderer for fullscreen fragment shaders.
|
|
11
12
|
* - Built-in uniforms: iTime (float), iResolution (vec2)
|
|
12
13
|
* - Custom uniforms read from `uniformsRef` each frame (no stale closures)
|
|
14
|
+
* - Optional sampler2D uniforms read from `texturesRef` (image loading,
|
|
15
|
+
* texture upload, mipmaps, transparent-pixel placeholder while unset/loading)
|
|
13
16
|
* - ResizeObserver for responsive canvas sizing
|
|
14
|
-
* - rAF animation loop with cleanup on unmount
|
|
17
|
+
* - rAF animation loop, paused while the tab is hidden, with cleanup on unmount
|
|
15
18
|
* - Graceful degradation: renders nothing if WebGL2 unavailable
|
|
16
19
|
*/
|
|
17
|
-
const ShaderCanvas = ({ fragmentShader, uniformsRef, maxDpr = 2, className, style, }) => {
|
|
20
|
+
const ShaderCanvas = ({ fragmentShader, uniformsRef, texturesRef, onTextureLoad, maxDpr = 2, className, style, }) => {
|
|
18
21
|
const canvasRef = useRef(null);
|
|
19
22
|
useEffect(() => {
|
|
20
23
|
const canvas = canvasRef.current;
|
|
@@ -80,6 +83,81 @@ const ShaderCanvas = ({ fragmentShader, uniformsRef, maxDpr = 2, className, styl
|
|
|
80
83
|
}
|
|
81
84
|
return (_a = customLocs.get(name)) !== null && _a !== void 0 ? _a : null;
|
|
82
85
|
};
|
|
86
|
+
// ── Texture uniforms ───────────────────────────────────────────────
|
|
87
|
+
const textureEntries = new Map();
|
|
88
|
+
let nextTextureUnit = 0;
|
|
89
|
+
// Operates on whatever texture is currently bound to TEXTURE_2D — every
|
|
90
|
+
// call site binds the target texture immediately before calling this.
|
|
91
|
+
const configureTexture = () => {
|
|
92
|
+
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
|
|
93
|
+
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
|
|
94
|
+
};
|
|
95
|
+
const createPlaceholderTexture = () => {
|
|
96
|
+
const texture = gl.createTexture();
|
|
97
|
+
gl.bindTexture(gl.TEXTURE_2D, texture);
|
|
98
|
+
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, 1, 1, 0, gl.RGBA, gl.UNSIGNED_BYTE, new Uint8Array([0, 0, 0, 0]));
|
|
99
|
+
configureTexture();
|
|
100
|
+
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);
|
|
101
|
+
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);
|
|
102
|
+
return texture;
|
|
103
|
+
};
|
|
104
|
+
const uploadImage = (entry, img, name) => {
|
|
105
|
+
if (hasBeenDisposed)
|
|
106
|
+
return;
|
|
107
|
+
gl.bindTexture(gl.TEXTURE_2D, entry.texture);
|
|
108
|
+
gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, true);
|
|
109
|
+
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, img);
|
|
110
|
+
gl.generateMipmap(gl.TEXTURE_2D);
|
|
111
|
+
configureTexture();
|
|
112
|
+
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR_MIPMAP_LINEAR);
|
|
113
|
+
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);
|
|
114
|
+
gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, false);
|
|
115
|
+
const naturalWidth = img.naturalWidth || img.width;
|
|
116
|
+
const naturalHeight = img.naturalHeight || img.height;
|
|
117
|
+
if (naturalWidth > 0 && naturalHeight > 0) {
|
|
118
|
+
onTextureLoad === null || onTextureLoad === void 0 ? void 0 : onTextureLoad(name, naturalWidth / naturalHeight);
|
|
119
|
+
}
|
|
120
|
+
};
|
|
121
|
+
const loadTexture = (entry, source, name) => {
|
|
122
|
+
if (typeof source === "string") {
|
|
123
|
+
const img = new Image();
|
|
124
|
+
img.crossOrigin = "anonymous";
|
|
125
|
+
img.onload = () => uploadImage(entry, img, name);
|
|
126
|
+
img.src = source;
|
|
127
|
+
}
|
|
128
|
+
else if (source.complete && source.naturalWidth > 0) {
|
|
129
|
+
uploadImage(entry, source, name);
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
source.addEventListener("load", () => uploadImage(entry, source, name), {
|
|
133
|
+
once: true,
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
};
|
|
137
|
+
const syncTextures = () => {
|
|
138
|
+
const sources = texturesRef === null || texturesRef === void 0 ? void 0 : texturesRef.current;
|
|
139
|
+
if (!sources)
|
|
140
|
+
return;
|
|
141
|
+
for (const name in sources) {
|
|
142
|
+
let entry = textureEntries.get(name);
|
|
143
|
+
if (!entry) {
|
|
144
|
+
entry = {
|
|
145
|
+
texture: createPlaceholderTexture(),
|
|
146
|
+
sourceKey: undefined,
|
|
147
|
+
unit: nextTextureUnit++,
|
|
148
|
+
};
|
|
149
|
+
textureEntries.set(name, entry);
|
|
150
|
+
}
|
|
151
|
+
const source = sources[name];
|
|
152
|
+
if (source && source !== entry.sourceKey) {
|
|
153
|
+
entry.sourceKey = source;
|
|
154
|
+
loadTexture(entry, source, name);
|
|
155
|
+
}
|
|
156
|
+
else if (!source) {
|
|
157
|
+
entry.sourceKey = undefined;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
};
|
|
83
161
|
// ── Resize handling ────────────────────────────────────────────────
|
|
84
162
|
const dpr = Math.min(window.devicePixelRatio || 1, maxDpr);
|
|
85
163
|
let width = 0;
|
|
@@ -103,9 +181,11 @@ const ShaderCanvas = ({ fragmentShader, uniformsRef, maxDpr = 2, className, styl
|
|
|
103
181
|
gl.enable(gl.BLEND);
|
|
104
182
|
gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA);
|
|
105
183
|
let rafId = 0;
|
|
184
|
+
let hasBeenDisposed = false;
|
|
106
185
|
const startTime = performance.now();
|
|
107
186
|
const frame = () => {
|
|
108
187
|
rafId = requestAnimationFrame(frame);
|
|
188
|
+
syncTextures();
|
|
109
189
|
const t = (performance.now() - startTime) / 1000;
|
|
110
190
|
gl.uniform1f(uTime, t);
|
|
111
191
|
gl.uniform2f(uRes, width, height);
|
|
@@ -128,12 +208,38 @@ const ShaderCanvas = ({ fragmentShader, uniformsRef, maxDpr = 2, className, styl
|
|
|
128
208
|
gl.uniform4f(loc, val[0], val[1], val[2], val[3]);
|
|
129
209
|
}
|
|
130
210
|
}
|
|
211
|
+
// Bind texture uniforms
|
|
212
|
+
for (const [name, entry] of textureEntries) {
|
|
213
|
+
const loc = getCustomLoc(name);
|
|
214
|
+
if (!loc)
|
|
215
|
+
continue;
|
|
216
|
+
gl.activeTexture(gl.TEXTURE0 + entry.unit);
|
|
217
|
+
gl.bindTexture(gl.TEXTURE_2D, entry.texture);
|
|
218
|
+
gl.uniform1i(loc, entry.unit);
|
|
219
|
+
}
|
|
131
220
|
gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4);
|
|
132
221
|
};
|
|
133
|
-
|
|
222
|
+
const handleVisibilityChange = () => {
|
|
223
|
+
if (document.hidden) {
|
|
224
|
+
cancelAnimationFrame(rafId);
|
|
225
|
+
rafId = 0;
|
|
226
|
+
}
|
|
227
|
+
else if (rafId === 0) {
|
|
228
|
+
rafId = requestAnimationFrame(frame);
|
|
229
|
+
}
|
|
230
|
+
};
|
|
231
|
+
if (!document.hidden) {
|
|
232
|
+
rafId = requestAnimationFrame(frame);
|
|
233
|
+
}
|
|
234
|
+
document.addEventListener("visibilitychange", handleVisibilityChange);
|
|
134
235
|
return () => {
|
|
236
|
+
hasBeenDisposed = true;
|
|
237
|
+
document.removeEventListener("visibilitychange", handleVisibilityChange);
|
|
135
238
|
cancelAnimationFrame(rafId);
|
|
136
239
|
observer.disconnect();
|
|
240
|
+
for (const entry of textureEntries.values()) {
|
|
241
|
+
gl.deleteTexture(entry.texture);
|
|
242
|
+
}
|
|
137
243
|
gl.deleteProgram(program);
|
|
138
244
|
gl.deleteShader(vs);
|
|
139
245
|
gl.deleteShader(fs);
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type React from "react";
|
|
2
|
+
/** A texture source: a URL to fetch, or an already-available image element. */
|
|
3
|
+
export type ShaderTextureSource = string | HTMLImageElement;
|
|
4
|
+
export interface ShaderCanvasProps {
|
|
5
|
+
fragmentShader: string;
|
|
6
|
+
uniformsRef: React.MutableRefObject<Record<string, number | number[]>>;
|
|
7
|
+
/**
|
|
8
|
+
* Optional sampler2D uniforms, keyed by GLSL uniform name (e.g. "u_image").
|
|
9
|
+
* A key with an `undefined` value binds a 1x1 transparent placeholder so the
|
|
10
|
+
* shader never samples garbage while an image is loading or unset.
|
|
11
|
+
*/
|
|
12
|
+
texturesRef?: React.MutableRefObject<Record<string, ShaderTextureSource | undefined>>;
|
|
13
|
+
/** Fires once a texture finishes loading, with its natural aspect ratio (width / height). */
|
|
14
|
+
onTextureLoad?: (name: string, aspectRatio: number) => void;
|
|
15
|
+
maxDpr?: number;
|
|
16
|
+
className?: string;
|
|
17
|
+
style?: React.CSSProperties;
|
|
18
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared ordered-dithering (Bayer matrix) GLSL, adapted from paper-design/shaders'
|
|
3
|
+
* Dithering and ImageDithering fragment shaders
|
|
4
|
+
* (https://github.com/paper-design/shaders, Apache License 2.0). Both effects
|
|
5
|
+
* in this repo (`Dithering`, `ImageDithering`) interpolate this identical
|
|
6
|
+
* lookup-table logic rather than duplicating it.
|
|
7
|
+
*
|
|
8
|
+
* Consume via template-literal interpolation (e.g. `${glslBayerMatrices}`).
|
|
9
|
+
*/
|
|
10
|
+
export declare const glslBayerMatrices = "\nconst int bayer2x2[4] = int[4](0, 2, 3, 1);\nconst int bayer4x4[16] = int[16](\n 0, 8, 2, 10,\n 12, 4, 14, 6,\n 3, 11, 1, 9,\n 15, 7, 13, 5\n);\nconst int bayer8x8[64] = int[64](\n 0, 32, 8, 40, 2, 34, 10, 42,\n 48, 16, 56, 24, 50, 18, 58, 26,\n 12, 44, 4, 36, 14, 46, 6, 38,\n 60, 28, 52, 20, 62, 30, 54, 22,\n 3, 35, 11, 43, 1, 33, 9, 41,\n 51, 19, 59, 27, 49, 17, 57, 25,\n 15, 47, 7, 39, 13, 45, 5, 37,\n 63, 31, 55, 23, 61, 29, 53, 21\n);\n\nfloat getBayerValue(vec2 uv, int size) {\n ivec2 pos = ivec2(fract(uv / float(size)) * float(size));\n int index = pos.y * size + pos.x;\n\n if (size == 2) {\n return float(bayer2x2[index]) / 4.0;\n } else if (size == 4) {\n return float(bayer4x4[index]) / 16.0;\n } else if (size == 8) {\n return float(bayer8x8[index]) / 64.0;\n }\n return 0.0;\n}\n";
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared ordered-dithering (Bayer matrix) GLSL, adapted from paper-design/shaders'
|
|
3
|
+
* Dithering and ImageDithering fragment shaders
|
|
4
|
+
* (https://github.com/paper-design/shaders, Apache License 2.0). Both effects
|
|
5
|
+
* in this repo (`Dithering`, `ImageDithering`) interpolate this identical
|
|
6
|
+
* lookup-table logic rather than duplicating it.
|
|
7
|
+
*
|
|
8
|
+
* Consume via template-literal interpolation (e.g. `${glslBayerMatrices}`).
|
|
9
|
+
*/
|
|
10
|
+
const glslBayerMatrices = `
|
|
11
|
+
const int bayer2x2[4] = int[4](0, 2, 3, 1);
|
|
12
|
+
const int bayer4x4[16] = int[16](
|
|
13
|
+
0, 8, 2, 10,
|
|
14
|
+
12, 4, 14, 6,
|
|
15
|
+
3, 11, 1, 9,
|
|
16
|
+
15, 7, 13, 5
|
|
17
|
+
);
|
|
18
|
+
const int bayer8x8[64] = int[64](
|
|
19
|
+
0, 32, 8, 40, 2, 34, 10, 42,
|
|
20
|
+
48, 16, 56, 24, 50, 18, 58, 26,
|
|
21
|
+
12, 44, 4, 36, 14, 46, 6, 38,
|
|
22
|
+
60, 28, 52, 20, 62, 30, 54, 22,
|
|
23
|
+
3, 35, 11, 43, 1, 33, 9, 41,
|
|
24
|
+
51, 19, 59, 27, 49, 17, 57, 25,
|
|
25
|
+
15, 47, 7, 39, 13, 45, 5, 37,
|
|
26
|
+
63, 31, 55, 23, 61, 29, 53, 21
|
|
27
|
+
);
|
|
28
|
+
|
|
29
|
+
float getBayerValue(vec2 uv, int size) {
|
|
30
|
+
ivec2 pos = ivec2(fract(uv / float(size)) * float(size));
|
|
31
|
+
int index = pos.y * size + pos.x;
|
|
32
|
+
|
|
33
|
+
if (size == 2) {
|
|
34
|
+
return float(bayer2x2[index]) / 4.0;
|
|
35
|
+
} else if (size == 4) {
|
|
36
|
+
return float(bayer4x4[index]) / 16.0;
|
|
37
|
+
} else if (size == 8) {
|
|
38
|
+
return float(bayer8x8[index]) / 64.0;
|
|
39
|
+
}
|
|
40
|
+
return 0.0;
|
|
41
|
+
}
|
|
42
|
+
`;
|
|
43
|
+
|
|
44
|
+
export { glslBayerMatrices };
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared "cover fit" image-UV helper for the image-filter effects (Water,
|
|
3
|
+
* ImageDithering, PaperTexture, FlutedGlass, HalftoneDots, HalftoneCmyk).
|
|
4
|
+
* Maps the fullscreen fragment UV to the image's own UV space so the image
|
|
5
|
+
* fills its container edge-to-edge without distortion (matching CSS
|
|
6
|
+
* `object-fit: cover`), given the image's aspect ratio (natural width /
|
|
7
|
+
* natural height) as a uniform. Assumes the fragment UV is
|
|
8
|
+
* `gl_FragCoord.xy / iResolution.xy` and the texture was uploaded with
|
|
9
|
+
* `UNPACK_FLIP_Y_WEBGL = true` (see shared/ShaderCanvas), so this produces a
|
|
10
|
+
* right-side-up sample with no manual Y-flip needed at the call site.
|
|
11
|
+
*/
|
|
12
|
+
export declare const glslImageCoverUV = "\nvec2 getImageCoverUV(vec2 fragUV, vec2 resolution, float imageAspectRatio) {\n float containerAspect = resolution.x / resolution.y;\n // Container wider (relative to its height) than the image: sample a\n // narrower vertical slice of the image (crop top/bottom) so it fills the\n // container width with no letterboxing. Container narrower/taller than\n // the image: sample a narrower horizontal slice (crop left/right) instead.\n vec2 scale = containerAspect > imageAspectRatio\n ? vec2(1.0, imageAspectRatio / containerAspect)\n : vec2(containerAspect / imageAspectRatio, 1.0);\n return (fragUV - 0.5) * scale + 0.5;\n}\n";
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared "cover fit" image-UV helper for the image-filter effects (Water,
|
|
3
|
+
* ImageDithering, PaperTexture, FlutedGlass, HalftoneDots, HalftoneCmyk).
|
|
4
|
+
* Maps the fullscreen fragment UV to the image's own UV space so the image
|
|
5
|
+
* fills its container edge-to-edge without distortion (matching CSS
|
|
6
|
+
* `object-fit: cover`), given the image's aspect ratio (natural width /
|
|
7
|
+
* natural height) as a uniform. Assumes the fragment UV is
|
|
8
|
+
* `gl_FragCoord.xy / iResolution.xy` and the texture was uploaded with
|
|
9
|
+
* `UNPACK_FLIP_Y_WEBGL = true` (see shared/ShaderCanvas), so this produces a
|
|
10
|
+
* right-side-up sample with no manual Y-flip needed at the call site.
|
|
11
|
+
*/
|
|
12
|
+
const glslImageCoverUV = `
|
|
13
|
+
vec2 getImageCoverUV(vec2 fragUV, vec2 resolution, float imageAspectRatio) {
|
|
14
|
+
float containerAspect = resolution.x / resolution.y;
|
|
15
|
+
// Container wider (relative to its height) than the image: sample a
|
|
16
|
+
// narrower vertical slice of the image (crop top/bottom) so it fills the
|
|
17
|
+
// container width with no letterboxing. Container narrower/taller than
|
|
18
|
+
// the image: sample a narrower horizontal slice (crop left/right) instead.
|
|
19
|
+
vec2 scale = containerAspect > imageAspectRatio
|
|
20
|
+
? vec2(1.0, imageAspectRatio / containerAspect)
|
|
21
|
+
: vec2(containerAspect / imageAspectRatio, 1.0);
|
|
22
|
+
return (fragUV - 0.5) * scale + 0.5;
|
|
23
|
+
}
|
|
24
|
+
`;
|
|
25
|
+
|
|
26
|
+
export { glslImageCoverUV };
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { ShaderCanvas } from "./ShaderCanvas";
|
|
2
|
+
export type { ShaderCanvasProps, ShaderTextureSource } from "./ShaderCanvas";
|
|
3
|
+
export { resolveShaderColor, resolveShaderColors } from "./resolveShaderColor";
|
|
4
|
+
export type { RGBA } from "./resolveShaderColor";
|
|
5
|
+
export { glslHashFloat, glslHashVec2, glslValueNoise, glslSimplexNoise2D, glslSimplexFbm, glslDeclarePI, glslRotate2, } from "./shaderNoise.glsl";
|
|
6
|
+
export { glslBayerMatrices } from "./bayerMatrices.glsl";
|
|
7
|
+
export { glslImageCoverUV } from "./imageUV.glsl";
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/** Normalized RGBA color as 0-1 floats, suitable for a WebGL uniform. */
|
|
2
|
+
export type RGBA = [number, number, number, number];
|
|
3
|
+
/**
|
|
4
|
+
* Resolves any valid CSS color string — hex, rgb()/rgba(), oklch(), named
|
|
5
|
+
* colors, or a `var(--custom-property)` reference (including FlikkUI theme
|
|
6
|
+
* tokens defined on :root/.dark) — to a normalized [r, g, b, a] float array
|
|
7
|
+
* (0-1) suitable for a WebGL uniform. Client-only; must be called after
|
|
8
|
+
* mount, never at module scope (SSR safety, CLAUDE.md §11). Returns
|
|
9
|
+
* `fallback` if the string can't be resolved (e.g. during SSR).
|
|
10
|
+
*/
|
|
11
|
+
export declare function resolveShaderColor(colorStr: string, fallback?: RGBA): RGBA;
|
|
12
|
+
/** Resolves an array of colors in one pass, reusing a single probe element. */
|
|
13
|
+
export declare function resolveShaderColors(colorStrs: string[], fallback?: RGBA): RGBA[];
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
const DEFAULT_FALLBACK = [0.5, 0.5, 0.5, 1];
|
|
3
|
+
let probeEl = null;
|
|
4
|
+
let probeCtx;
|
|
5
|
+
function getProbeEl() {
|
|
6
|
+
if (!probeEl) {
|
|
7
|
+
probeEl = document.createElement("span");
|
|
8
|
+
probeEl.style.position = "absolute";
|
|
9
|
+
probeEl.style.width = "0";
|
|
10
|
+
probeEl.style.height = "0";
|
|
11
|
+
probeEl.style.overflow = "hidden";
|
|
12
|
+
probeEl.style.pointerEvents = "none";
|
|
13
|
+
probeEl.setAttribute("aria-hidden", "true");
|
|
14
|
+
}
|
|
15
|
+
return probeEl;
|
|
16
|
+
}
|
|
17
|
+
/** Lazily-created 1x1 canvas used to normalize any CSS color (rgb, hex, named,
|
|
18
|
+
* oklch, lab, color(), etc.) to straight sRGB bytes via getImageData — canvas
|
|
19
|
+
* fillStyle accepts every CSS color syntax and always renders into sRGB,
|
|
20
|
+
* which getComputedStyle's `color` serialization does not reliably do (some
|
|
21
|
+
* browsers echo back oklch()/lab() strings for tokens authored in that space). */
|
|
22
|
+
function getProbeCtx() {
|
|
23
|
+
if (probeCtx === undefined) {
|
|
24
|
+
const canvas = document.createElement("canvas");
|
|
25
|
+
canvas.width = 1;
|
|
26
|
+
canvas.height = 1;
|
|
27
|
+
probeCtx = canvas.getContext("2d", { willReadFrequently: true });
|
|
28
|
+
}
|
|
29
|
+
return probeCtx;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Resolves any valid CSS color string — hex, rgb()/rgba(), oklch(), named
|
|
33
|
+
* colors, or a `var(--custom-property)` reference (including FlikkUI theme
|
|
34
|
+
* tokens defined on :root/.dark) — to a normalized [r, g, b, a] float array
|
|
35
|
+
* (0-1) suitable for a WebGL uniform. Client-only; must be called after
|
|
36
|
+
* mount, never at module scope (SSR safety, CLAUDE.md §11). Returns
|
|
37
|
+
* `fallback` if the string can't be resolved (e.g. during SSR).
|
|
38
|
+
*/
|
|
39
|
+
function resolveShaderColor(colorStr, fallback = DEFAULT_FALLBACK) {
|
|
40
|
+
if (typeof document === "undefined")
|
|
41
|
+
return fallback;
|
|
42
|
+
const el = getProbeEl();
|
|
43
|
+
el.style.color = "";
|
|
44
|
+
el.style.color = colorStr;
|
|
45
|
+
document.body.appendChild(el);
|
|
46
|
+
const computed = getComputedStyle(el).color;
|
|
47
|
+
document.body.removeChild(el);
|
|
48
|
+
const ctx = getProbeCtx();
|
|
49
|
+
if (!ctx)
|
|
50
|
+
return fallback;
|
|
51
|
+
ctx.clearRect(0, 0, 1, 1);
|
|
52
|
+
ctx.fillStyle = computed;
|
|
53
|
+
ctx.fillRect(0, 0, 1, 1);
|
|
54
|
+
const [r, g, b, a] = ctx.getImageData(0, 0, 1, 1).data;
|
|
55
|
+
return [r / 255, g / 255, b / 255, a / 255];
|
|
56
|
+
}
|
|
57
|
+
/** Resolves an array of colors in one pass, reusing a single probe element. */
|
|
58
|
+
function resolveShaderColors(colorStrs, fallback = DEFAULT_FALLBACK) {
|
|
59
|
+
return colorStrs.map((c) => resolveShaderColor(c, fallback));
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
export { resolveShaderColor, resolveShaderColors };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared GLSL noise primitives, consumed via template-literal interpolation
|
|
3
|
+
* (e.g. `${glslHashFloat}`) inside individual `*.shaders.ts` fragment shader
|
|
4
|
+
* sources. There is no GLSL `#include` mechanism, so consumers must
|
|
5
|
+
* interpolate snippets in dependency order (e.g. glslHashFloat before
|
|
6
|
+
* glslValueNoise, glslSimplexNoise2D before glslSimplexFbm).
|
|
7
|
+
*
|
|
8
|
+
* These pure-hash functions stand in for paper-design/shaders' pre-generated
|
|
9
|
+
* noise-texture sampling (`u_noiseTexture` + `textureRandomizerR`) — a
|
|
10
|
+
* deliberate simplification that removes an entire texture-generation
|
|
11
|
+
* subsystem in exchange for a tiny amount of extra ALU cost per pixel.
|
|
12
|
+
*/
|
|
13
|
+
/** Pure-hash pseudo-random float in [0,1) for a vec2 input, no texture lookup.
|
|
14
|
+
* Adapted from paper-design/shaders' DotOrbit/GodRays/SmokeRing fragment
|
|
15
|
+
* shaders (https://github.com/paper-design/shaders, Apache License 2.0). */
|
|
16
|
+
export declare const glslHashFloat = "\nfloat randomR(vec2 st) {\n return fract(sin(dot(st, vec2(12.9898, 78.233))) * 43758.5453123);\n}\n";
|
|
17
|
+
/** Pure-hash pseudo-random vec2, no texture lookup. Same source as glslHashFloat. */
|
|
18
|
+
export declare const glslHashVec2 = "\nvec2 randomGB(vec2 st) {\n return vec2(\n fract(sin(dot(st, vec2(12.9898, 78.233))) * 43758.5453123),\n fract(sin(dot(st, vec2(93.9898, 67.345))) * 24634.6345123)\n );\n}\n";
|
|
19
|
+
/** Bilinear-interpolated value noise built on glslHashFloat. Requires
|
|
20
|
+
* glslHashFloat to be interpolated earlier in the same shader source. */
|
|
21
|
+
export declare const glslValueNoise = "\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";
|
|
22
|
+
/** Ashima Arts / Stefan Gustavson 2D simplex noise (ISC license) — generic,
|
|
23
|
+
* ubiquitous prior art in the WebGL shader ecosystem, NOT paper-design's own
|
|
24
|
+
* IP. Used as the low-level noise primitive under some ported effects whose
|
|
25
|
+
* higher-level composition logic IS credited to paper-design in their own
|
|
26
|
+
* doc comments (e.g. GrainGradient, Dithering, Water, LiquidMetal). */
|
|
27
|
+
export declare const glslSimplexNoise2D = "\nvec3 mod289(vec3 x) { return x - floor(x * (1.0 / 289.0)) * 289.0; }\nvec2 mod289(vec2 x) { return x - floor(x * (1.0 / 289.0)) * 289.0; }\nvec3 permute(vec3 x) { return mod289(((x * 34.0) + 1.0) * x); }\n\nfloat snoise(vec2 v) {\n const vec4 C = vec4(0.211324865405187, 0.366025403784439,\n -0.577350269189626, 0.024390243902439);\n vec2 i = floor(v + dot(v, C.yy));\n vec2 x0 = v - i + dot(i, C.xx);\n\n vec2 i1 = (x0.x > x0.y) ? vec2(1.0, 0.0) : vec2(0.0, 1.0);\n vec4 x12 = x0.xyxy + C.xxzz;\n x12.xy -= i1;\n\n i = mod289(i);\n vec3 p = permute(permute(i.y + vec3(0.0, i1.y, 1.0)) + i.x + vec3(0.0, i1.x, 1.0));\n\n vec3 m = max(0.5 - vec3(dot(x0, x0), dot(x12.xy, x12.xy), dot(x12.zw, x12.zw)), 0.0);\n m = m * m;\n m = m * m;\n\n vec3 x = 2.0 * fract(p * C.www) - 1.0;\n vec3 h = abs(x) - 0.5;\n vec3 ox = floor(x + 0.5);\n vec3 a0 = x - ox;\n\n m *= 1.79284291400159 - 0.85373472095314 * (a0 * a0 + h * h);\n\n vec3 g;\n g.x = a0.x * x0.x + h.x * x0.y;\n g.yz = a0.yz * x12.xz + h.yz * x12.yw;\n return 130.0 * dot(m, g);\n}\n";
|
|
28
|
+
/** Small fractional-Brownian-motion built on glslSimplexNoise2D. Requires
|
|
29
|
+
* glslSimplexNoise2D to be interpolated earlier in the same shader source. */
|
|
30
|
+
export declare const glslSimplexFbm = "\nfloat fbm(vec2 st) {\n float value = 0.0;\n float amplitude = 0.5;\n for (int i = 0; i < 4; i++) {\n value += amplitude * snoise(st);\n st *= 2.0;\n amplitude *= 0.5;\n }\n return value;\n}\n";
|
|
31
|
+
/** Common PI / TWO_PI constants, interpolated first in most shaders. */
|
|
32
|
+
export declare const glslDeclarePI = "\nconst float PI = 3.14159265359;\nconst float TWO_PI = 6.28318530718;\n";
|
|
33
|
+
/** 2D rotation helper matching paper-design's `rotate(vec2, float)` signature. */
|
|
34
|
+
export declare const glslRotate2 = "\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";
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared GLSL noise primitives, consumed via template-literal interpolation
|
|
3
|
+
* (e.g. `${glslHashFloat}`) inside individual `*.shaders.ts` fragment shader
|
|
4
|
+
* sources. There is no GLSL `#include` mechanism, so consumers must
|
|
5
|
+
* interpolate snippets in dependency order (e.g. glslHashFloat before
|
|
6
|
+
* glslValueNoise, glslSimplexNoise2D before glslSimplexFbm).
|
|
7
|
+
*
|
|
8
|
+
* These pure-hash functions stand in for paper-design/shaders' pre-generated
|
|
9
|
+
* noise-texture sampling (`u_noiseTexture` + `textureRandomizerR`) — a
|
|
10
|
+
* deliberate simplification that removes an entire texture-generation
|
|
11
|
+
* subsystem in exchange for a tiny amount of extra ALU cost per pixel.
|
|
12
|
+
*/
|
|
13
|
+
/** Pure-hash pseudo-random float in [0,1) for a vec2 input, no texture lookup.
|
|
14
|
+
* Adapted from paper-design/shaders' DotOrbit/GodRays/SmokeRing fragment
|
|
15
|
+
* shaders (https://github.com/paper-design/shaders, Apache License 2.0). */
|
|
16
|
+
const glslHashFloat = `
|
|
17
|
+
float randomR(vec2 st) {
|
|
18
|
+
return fract(sin(dot(st, vec2(12.9898, 78.233))) * 43758.5453123);
|
|
19
|
+
}
|
|
20
|
+
`;
|
|
21
|
+
/** Pure-hash pseudo-random vec2, no texture lookup. Same source as glslHashFloat. */
|
|
22
|
+
const glslHashVec2 = `
|
|
23
|
+
vec2 randomGB(vec2 st) {
|
|
24
|
+
return vec2(
|
|
25
|
+
fract(sin(dot(st, vec2(12.9898, 78.233))) * 43758.5453123),
|
|
26
|
+
fract(sin(dot(st, vec2(93.9898, 67.345))) * 24634.6345123)
|
|
27
|
+
);
|
|
28
|
+
}
|
|
29
|
+
`;
|
|
30
|
+
/** Ashima Arts / Stefan Gustavson 2D simplex noise (ISC license) — generic,
|
|
31
|
+
* ubiquitous prior art in the WebGL shader ecosystem, NOT paper-design's own
|
|
32
|
+
* IP. Used as the low-level noise primitive under some ported effects whose
|
|
33
|
+
* higher-level composition logic IS credited to paper-design in their own
|
|
34
|
+
* doc comments (e.g. GrainGradient, Dithering, Water, LiquidMetal). */
|
|
35
|
+
const glslSimplexNoise2D = `
|
|
36
|
+
vec3 mod289(vec3 x) { return x - floor(x * (1.0 / 289.0)) * 289.0; }
|
|
37
|
+
vec2 mod289(vec2 x) { return x - floor(x * (1.0 / 289.0)) * 289.0; }
|
|
38
|
+
vec3 permute(vec3 x) { return mod289(((x * 34.0) + 1.0) * x); }
|
|
39
|
+
|
|
40
|
+
float snoise(vec2 v) {
|
|
41
|
+
const vec4 C = vec4(0.211324865405187, 0.366025403784439,
|
|
42
|
+
-0.577350269189626, 0.024390243902439);
|
|
43
|
+
vec2 i = floor(v + dot(v, C.yy));
|
|
44
|
+
vec2 x0 = v - i + dot(i, C.xx);
|
|
45
|
+
|
|
46
|
+
vec2 i1 = (x0.x > x0.y) ? vec2(1.0, 0.0) : vec2(0.0, 1.0);
|
|
47
|
+
vec4 x12 = x0.xyxy + C.xxzz;
|
|
48
|
+
x12.xy -= i1;
|
|
49
|
+
|
|
50
|
+
i = mod289(i);
|
|
51
|
+
vec3 p = permute(permute(i.y + vec3(0.0, i1.y, 1.0)) + i.x + vec3(0.0, i1.x, 1.0));
|
|
52
|
+
|
|
53
|
+
vec3 m = max(0.5 - vec3(dot(x0, x0), dot(x12.xy, x12.xy), dot(x12.zw, x12.zw)), 0.0);
|
|
54
|
+
m = m * m;
|
|
55
|
+
m = m * m;
|
|
56
|
+
|
|
57
|
+
vec3 x = 2.0 * fract(p * C.www) - 1.0;
|
|
58
|
+
vec3 h = abs(x) - 0.5;
|
|
59
|
+
vec3 ox = floor(x + 0.5);
|
|
60
|
+
vec3 a0 = x - ox;
|
|
61
|
+
|
|
62
|
+
m *= 1.79284291400159 - 0.85373472095314 * (a0 * a0 + h * h);
|
|
63
|
+
|
|
64
|
+
vec3 g;
|
|
65
|
+
g.x = a0.x * x0.x + h.x * x0.y;
|
|
66
|
+
g.yz = a0.yz * x12.xz + h.yz * x12.yw;
|
|
67
|
+
return 130.0 * dot(m, g);
|
|
68
|
+
}
|
|
69
|
+
`;
|
|
70
|
+
/** Common PI / TWO_PI constants, interpolated first in most shaders. */
|
|
71
|
+
const glslDeclarePI = `
|
|
72
|
+
const float PI = 3.14159265359;
|
|
73
|
+
const float TWO_PI = 6.28318530718;
|
|
74
|
+
`;
|
|
75
|
+
/** 2D rotation helper matching paper-design's `rotate(vec2, float)` signature. */
|
|
76
|
+
const glslRotate2 = `
|
|
77
|
+
vec2 rotate(vec2 v, float angle) {
|
|
78
|
+
float s = sin(angle);
|
|
79
|
+
float c = cos(angle);
|
|
80
|
+
return mat2(c, -s, s, c) * v;
|
|
81
|
+
}
|
|
82
|
+
`;
|
|
83
|
+
|
|
84
|
+
export { glslDeclarePI, glslHashFloat, glslHashVec2, glslRotate2, glslSimplexNoise2D };
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
"use client";
|
|
1
2
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
3
|
import React__default, { useId, useState, useRef, useEffect } from 'react';
|
|
3
4
|
import { useReducedMotion, AnimatePresence, motion } from 'motion/react';
|
|
@@ -36,12 +37,11 @@ const CheckboxComponent = React__default.forwardRef(({ id: idProp, name: namePro
|
|
|
36
37
|
else {
|
|
37
38
|
isChecked = internalChecked;
|
|
38
39
|
}
|
|
39
|
-
//
|
|
40
|
-
//
|
|
41
|
-
//
|
|
42
|
-
//
|
|
43
|
-
const
|
|
44
|
-
const visualState = isDisabled ? "disabled" : showInvalid ? "invalid" : "default";
|
|
40
|
+
// Message-led invalid: the control + label stay neutral (mirrors Radio). The
|
|
41
|
+
// group's required asterisk + error message carry the error (see CheckboxGroup).
|
|
42
|
+
// `data-state=invalid` is still emitted on the input as an unstyled hook, and
|
|
43
|
+
// `aria-invalid`/`aria-errormessage` live on the group fieldset, not each input.
|
|
44
|
+
const visualState = isDisabled ? "disabled" : "default";
|
|
45
45
|
const inputRef = useRef(null);
|
|
46
46
|
// Set indeterminate property on the input element
|
|
47
47
|
useEffect(() => {
|
|
@@ -69,13 +69,13 @@ const CheckboxComponent = React__default.forwardRef(({ id: idProp, name: namePro
|
|
|
69
69
|
}
|
|
70
70
|
onChange === null || onChange === void 0 ? void 0 : onChange(e.target.checked, value);
|
|
71
71
|
};
|
|
72
|
-
return (jsxs("div", { className: cn(checkboxTheme.baseStyle, className),
|
|
72
|
+
return (jsxs("div", { className: cn(checkboxTheme.baseStyle, className), children: [jsxs("div", { className: cn(checkboxTheme.inputContainerStyle, checkboxTheme.sizes[size]), children: [jsx("input", { ref: (node) => {
|
|
73
73
|
inputRef.current = node;
|
|
74
74
|
if (typeof ref === "function")
|
|
75
75
|
ref(node);
|
|
76
76
|
else if (ref)
|
|
77
77
|
ref.current = node;
|
|
78
|
-
}, type: "checkbox", id: id, name: name, value: value, checked: isChecked, onChange: handleChange, disabled: isDisabled, "aria-describedby": description ? `${id}-description` : undefined, "aria-invalid":
|
|
78
|
+
}, type: "checkbox", ...restProps, id: id, name: name, value: value, checked: isChecked, onChange: handleChange, disabled: isDisabled, "aria-describedby": description ? `${id}-description` : undefined, "aria-invalid": !isInGroup && isInvalid ? true : undefined, "data-state": isDisabled ? "disabled" : isInvalid ? "invalid" : "default", className: cn(checkboxTheme.inputStyle, checkboxTheme.sizes[size], indeterminate && "bg-neutral-200") }), jsxs(AnimatePresence, { mode: "wait", children: [indeterminate && (jsx(motion.svg, { viewBox: "0 0 16 16", fill: "none", className: cn("pointer-events-none col-start-1 row-start-1 self-center justify-self-center text-neutral-600", size === "sm" ? "size-3" : size === "lg" ? "size-5" : "size-4"), children: jsx(motion.path, { d: "M3.5 8 L12.5 8", stroke: "currentColor", strokeWidth: 2.5, strokeLinecap: "round", variants: shouldReduceMotion ? reducedMotionVariants : indeterminateVariants, initial: "unchecked", animate: "checked", exit: "unchecked" }) }, "indeterminate")), isChecked && !indeterminate && (jsx(motion.svg, { viewBox: "0 0 16 16", fill: "none", className: cn("pointer-events-none col-start-1 row-start-1 self-center justify-self-center text-[var(--color-primary-contrast)]", size === "sm" ? "size-3" : size === "lg" ? "size-5" : "size-4"), children: jsx(motion.path, { d: "M3.5 8.5 L6.5 11.5 L12.5 4.5", stroke: "currentColor", strokeWidth: 2.5, strokeLinecap: "round", strokeLinejoin: "round", variants: shouldReduceMotion ? reducedMotionVariants : checkmarkVariants, initial: "unchecked", animate: "checked", exit: "unchecked" }) }, "checkmark"))] })] }), (label || description) && (jsxs("label", { htmlFor: id, className: cn("cursor-pointer", isDisabled && "cursor-not-allowed"), children: [label && (typeof label === 'string' ? (jsx("span", { className: cn(formLabelTheme.baseStyle, formLabelTheme.stateStyles[visualState], "mb-0"), children: label })) : (label)), description && (typeof description === 'string' ? (jsx("div", { id: `${id}-description`, className: checkboxTheme.descriptionStyle, children: description })) : (description))] }))] }));
|
|
79
79
|
});
|
|
80
80
|
CheckboxComponent.displayName = "Checkbox";
|
|
81
81
|
const Checkbox = Object.assign(CheckboxComponent, {
|
|
@@ -6,7 +6,7 @@ const checkboxTheme = {
|
|
|
6
6
|
baseStyle: "relative flex items-start gap-3",
|
|
7
7
|
inputContainerStyle: "relative flex-shrink-0 group grid grid-cols-1",
|
|
8
8
|
// Input styles with light and dark mode variants
|
|
9
|
-
inputStyle: "col-start-1 row-start-1 appearance-none rounded-[
|
|
9
|
+
inputStyle: "col-start-1 row-start-1 appearance-none rounded-[var(--checkbox-radius)] border-2 transition-all duration-400 " +
|
|
10
10
|
// Default state - light
|
|
11
11
|
"border-[var(--color-border)] bg-[var(--color-surface)] " +
|
|
12
12
|
// Default state - dark
|
|
@@ -24,9 +24,10 @@ const checkboxTheme = {
|
|
|
24
24
|
"data-[state=disabled]:border-[var(--color-border)] data-[state=disabled]:bg-[var(--color-background-disabled)] data-[state=disabled]:cursor-not-allowed " +
|
|
25
25
|
// Disabled state - dark
|
|
26
26
|
"dark:disabled:bg-[var(--color-neutral-800)] dark:disabled:border-[var(--color-neutral-600)] " +
|
|
27
|
-
"dark:data-[state=disabled]:bg-[var(--color-neutral-700)] dark:data-[state=disabled]:border-[var(--color-neutral-600)]
|
|
28
|
-
|
|
29
|
-
|
|
27
|
+
"dark:data-[state=disabled]:bg-[var(--color-neutral-700)] dark:data-[state=disabled]:border-[var(--color-neutral-600)]",
|
|
28
|
+
// Invalid is message-led: the control stays neutral (mirrors Radio). The group's
|
|
29
|
+
// required asterisk + error message carry the error (see CheckboxGroup). `data-state=invalid`
|
|
30
|
+
// is still emitted on the input as an unstyled consumer/test hook.
|
|
30
31
|
// Description text - light and dark
|
|
31
32
|
descriptionStyle: "text-sm mt-0.5 " + "text-[var(--color-text-secondary)]/80 " + " ",
|
|
32
33
|
sizes: {
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
"use client";
|
|
1
2
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
3
|
import React__default, { useId, useState, useMemo } from 'react';
|
|
3
4
|
import { cn } from '../../../utils/cn.js';
|
|
@@ -36,7 +37,9 @@ const CheckboxGroup = React__default.forwardRef(({ value: controlledValue, defau
|
|
|
36
37
|
size,
|
|
37
38
|
state,
|
|
38
39
|
}), [groupName, currentValue, size, state]);
|
|
39
|
-
|
|
40
|
+
// Message-led invalid: the legend text stays neutral; the red required asterisk
|
|
41
|
+
// + the error message below carry the error (mirrors RadioGroup).
|
|
42
|
+
const labelState = state === "disabled" ? "disabled" : "default";
|
|
40
43
|
return (jsx(CheckboxGroupContext.Provider, { value: contextValue, children: jsxs("fieldset", { ref: ref, role: "group", "aria-labelledby": label ? labelId : undefined, "aria-describedby": description ? descriptionId : undefined, "aria-required": required || undefined, "aria-invalid": resolvedError ? true : undefined, "aria-errormessage": resolvedError ? errorId : undefined, className: cn("border-0 p-0 m-0", checkboxTheme.groupStyle, className), ...props, children: [label && (typeof label === 'string' ? (jsxs("legend", { id: labelId, className: cn(formLabelTheme.baseStyle, formLabelTheme.stateStyles[labelState]), children: [label, required && (jsx("span", { className: formLabelTheme.requiredIndicatorStyle, children: "*" }))] })) : (label)), description && (typeof description === 'string' ? (jsx("p", { id: descriptionId, className: checkboxTheme.groupDescriptionStyle, children: description })) : (description)), jsx("div", { className: cn(checkboxTheme.groupItemsStyle, orientation === "horizontal" &&
|
|
41
44
|
checkboxTheme.groupHorizontalStyle), children: children }), resolvedError && (typeof resolvedError === 'string' ? (jsx("p", { id: errorId, role: "alert", className: checkboxTheme.groupErrorStyle, children: resolvedError })) : (resolvedError))] }) }));
|
|
42
45
|
});
|