@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,4 +1,5 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
+
import type { SurfaceElevation } from "../../../theme/SurfaceContext";
|
|
2
3
|
/**
|
|
3
4
|
* Size variants for DatePicker components
|
|
4
5
|
*/
|
|
@@ -93,6 +94,13 @@ export interface DatePickerProps extends Omit<React.HTMLAttributes<HTMLDivElemen
|
|
|
93
94
|
placement?: DatePickerPlacement;
|
|
94
95
|
/** Offset from trigger element */
|
|
95
96
|
offset?: number;
|
|
97
|
+
/**
|
|
98
|
+
* Pin the popover surface elevation rung (overrides the automatic relative lift).
|
|
99
|
+
* A rung number (1–8) or a semantic alias ("surface"/"raised"/"overlay"…).
|
|
100
|
+
*/
|
|
101
|
+
elevation?: SurfaceElevation;
|
|
102
|
+
/** `false` opts out of the relative lift — paints at the popover's base rung. */
|
|
103
|
+
lift?: boolean;
|
|
96
104
|
/** Children (for compound component usage) */
|
|
97
105
|
children?: React.ReactNode;
|
|
98
106
|
}
|
|
@@ -124,6 +132,13 @@ export interface DatePickerBodyProps {
|
|
|
124
132
|
placement?: DatePickerPlacement;
|
|
125
133
|
offset?: number;
|
|
126
134
|
presets?: DateRangePreset[];
|
|
135
|
+
/**
|
|
136
|
+
* Pin the popover surface elevation rung (overrides the automatic relative lift).
|
|
137
|
+
* A rung number (1–8) or a semantic alias ("surface"/"raised"/"overlay"…).
|
|
138
|
+
*/
|
|
139
|
+
elevation?: SurfaceElevation;
|
|
140
|
+
/** `false` opts out of the relative lift — paints at the popover's base rung. */
|
|
141
|
+
lift?: boolean;
|
|
127
142
|
children?: React.ReactNode;
|
|
128
143
|
}
|
|
129
144
|
/**
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
"use client";
|
|
1
2
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
2
3
|
import React__default, { useContext, useState, useCallback, useMemo, useEffect } from 'react';
|
|
3
4
|
import { AnimatePresence, motion } from 'motion/react';
|
|
@@ -6,19 +7,23 @@ import { Calendar } from '../../core/Calendar/Calendar.js';
|
|
|
6
7
|
import '../../core/Calendar/CalendarMini/CalendarMini.js';
|
|
7
8
|
import { Button } from '../../core/Button/Button.js';
|
|
8
9
|
import { cn } from '../../../utils/cn.js';
|
|
9
|
-
import { DatePickerContext } from './
|
|
10
|
+
import { DatePickerContext } from './DatePickerContext.js';
|
|
10
11
|
import { DatePickerPresets } from './DatePickerPresets.js';
|
|
11
12
|
import { useSelectPortal } from '../../../hooks/useSelectPortal.js';
|
|
12
13
|
import { formatDateCustom } from '../../../utils/dateUtils.js';
|
|
13
14
|
import { createDropdownAnimations } from './DatePicker.animations.js';
|
|
14
15
|
import { useIsClient } from '../../../hooks/useIsClient.js';
|
|
15
16
|
import { useDarkMode } from '../../../hooks/useDarkMode.js';
|
|
17
|
+
import { useSurfaceElevation, SurfaceProvider, surfaceClasses } from '../../../theme/SurfaceContext.js';
|
|
16
18
|
|
|
17
19
|
/**
|
|
18
20
|
* DatePicker Body Component - contains the Calendar and optional Presets
|
|
19
21
|
* Uses portal positioning like Select component
|
|
20
22
|
*/
|
|
21
|
-
const DatePickerBody = ({ isOpen, className, onClose, portal = true, placement = "bottom-start", offset = 4, presets, children, }) => {
|
|
23
|
+
const DatePickerBody = ({ isOpen, className, onClose, portal = true, placement = "bottom-start", offset = 4, presets, elevation, lift, children, }) => {
|
|
24
|
+
// Relative elevation: the popover lifts above its host surface (overlay base = 5)
|
|
25
|
+
// so a DatePicker inside a Popover/Modal still reads as a higher plane.
|
|
26
|
+
const surfaceLevel = useSurfaceElevation({ baseRung: 5, offset: 2, elevation, lift });
|
|
22
27
|
const context = useContext(DatePickerContext);
|
|
23
28
|
if (!context) {
|
|
24
29
|
throw new Error("DatePickerBody must be used within a DatePicker");
|
|
@@ -165,7 +170,7 @@ const DatePickerBody = ({ isOpen, className, onClose, portal = true, placement =
|
|
|
165
170
|
document.removeEventListener("keydown", handleKeyDown);
|
|
166
171
|
};
|
|
167
172
|
}, [isOpen, onClose]);
|
|
168
|
-
const contentElement = (jsx(AnimatePresence, { mode: "wait", children: isOpen && (
|
|
173
|
+
const contentElement = (jsx(AnimatePresence, { mode: "wait", children: isOpen && (jsx(motion.div, { ref: combinedRef, className: cn(surfaceClasses(surfaceLevel, { translucent: true, shadow: !showPresets }), showPresets ? theme.bodyWithPresetsStyle : theme.bodyStyle, className), style: {
|
|
169
174
|
...cssVariables,
|
|
170
175
|
...(portal
|
|
171
176
|
? {
|
|
@@ -174,26 +179,26 @@ const DatePickerBody = ({ isOpen, className, onClose, portal = true, placement =
|
|
|
174
179
|
minWidth: `${position.width}px`,
|
|
175
180
|
}
|
|
176
181
|
: {}),
|
|
177
|
-
}, variants: animations, initial: "initial", animate: isReady ? "visible" : "initial", exit: "exit", children: [showPresets && presets && (jsx(DatePickerPresets, { presets: presets, setTempRange: setTempRange, onPresetSelect: handlePresetSelect })), jsx("div", { className: "flex flex-col flex-1", children: mode === "range" ? (
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
182
|
+
}, variants: animations, initial: "initial", animate: isReady ? "visible" : "initial", exit: "exit", children: jsxs(SurfaceProvider, { level: surfaceLevel, children: [showPresets && presets && (jsx(DatePickerPresets, { presets: presets, setTempRange: setTempRange, onPresetSelect: handlePresetSelect })), jsx("div", { className: "flex flex-col flex-1", children: mode === "range" ? (
|
|
183
|
+
// Dual calendar for range mode
|
|
184
|
+
jsxs(Fragment, { children: [jsx("div", { className: "flex justify-between items-start gap-6 p-4", children: children || (jsxs(Fragment, { children: [jsx("div", { className: "flex-1 min-w-fit", children: jsx(Calendar, { mode: "range", value: tempRange, onChange: (value) => {
|
|
185
|
+
setTempRange(value); // Update temp state only
|
|
186
|
+
}, viewDate: leftCalendarDate, onViewDateChange: setLeftCalendarDate, onNavigatePrev: handleNavigatePrev, onNavigateNext: null, minDate: minDate, maxDate: maxDate, isDateDisabled: isDateDisabled, showToday: showToday, selectTodayByDefault: selectTodayByDefault, weekdays: weekdays, months: months, yearRange: yearRange, size: "md" }) }), jsx("div", { className: "flex-1 min-w-fit", children: jsx(Calendar, { mode: "range", value: tempRange, onChange: (value) => {
|
|
187
|
+
setTempRange(value); // Update temp state only
|
|
188
|
+
}, viewDate: rightCalendarDate, onViewDateChange: (newDate) => {
|
|
189
|
+
// Adjust left calendar when right calendar changes
|
|
190
|
+
const adjustedLeft = new Date(newDate);
|
|
191
|
+
adjustedLeft.setMonth(adjustedLeft.getMonth() - 1);
|
|
192
|
+
setLeftCalendarDate(adjustedLeft);
|
|
193
|
+
}, onNavigatePrev: null, onNavigateNext: handleNavigateNext, minDate: minDate, maxDate: maxDate, isDateDisabled: isDateDisabled, showToday: showToday, selectTodayByDefault: false, weekdays: weekdays, months: months, yearRange: yearRange, size: "md" }) })] })) }), jsxs("div", { className: "flex items-center justify-between px-4 py-3 border-t border-[var(--color-border)]", children: [jsx("div", { className: "text-sm text-[var(--color-text-muted)]", children: formatRangeDisplay(tempRange) }), jsxs("div", { className: "flex items-center gap-2", children: [jsx(Button, { variant: "outline", color: "neutral", size: "sm", onClick: handleCancel, children: "Cancel" }), jsx(Button, { variant: "filled", size: "sm", onClick: handleApply, disabled: !(tempRange === null || tempRange === void 0 ? void 0 : tempRange.start) || !(tempRange === null || tempRange === void 0 ? void 0 : tempRange.end), children: "Apply" })] })] })] })) : (
|
|
194
|
+
// Single calendar for single mode
|
|
195
|
+
jsx("div", { className: "flex-1 p-4", children: children || (jsx(Calendar, { mode: "single", value: selectedValue, onChange: (value) => {
|
|
196
|
+
handleDateSelect(value);
|
|
197
|
+
onClose === null || onClose === void 0 ? void 0 : onClose();
|
|
198
|
+
}, minDate: minDate, maxDate: maxDate, isDateDisabled: isDateDisabled, showToday: showToday, selectTodayByDefault: selectTodayByDefault, weekdays: weekdays, months: months, yearRange: yearRange, size: "md" })) })) })] }) })) }));
|
|
194
199
|
// Use portal if enabled and client-side - wrap with dark class for dark mode support
|
|
195
200
|
if (portal && isClient) {
|
|
196
|
-
return createPortal(jsx("div", { className: isDarkMode ? "dark" : undefined, children: contentElement }), document.body);
|
|
201
|
+
return createPortal(jsx("div", { "data-flikkui-portal": "", className: isDarkMode ? "dark" : undefined, children: contentElement }), document.body);
|
|
197
202
|
}
|
|
198
203
|
return contentElement;
|
|
199
204
|
};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import type { DatePickerState, DatePickerSize, DateRange, DatePickerMode, DatePickerTheme } from "./DatePicker.types";
|
|
3
|
+
export interface DatePickerContextType {
|
|
4
|
+
mode: DatePickerMode;
|
|
5
|
+
isOpen: boolean;
|
|
6
|
+
setIsOpen: React.Dispatch<React.SetStateAction<boolean>>;
|
|
7
|
+
selectedValue: Date | DateRange | undefined;
|
|
8
|
+
setSelectedValue: React.Dispatch<React.SetStateAction<Date | DateRange | undefined>>;
|
|
9
|
+
minDate?: Date;
|
|
10
|
+
maxDate?: Date;
|
|
11
|
+
isDateDisabled?: (date: Date) => boolean;
|
|
12
|
+
showToday?: boolean;
|
|
13
|
+
selectTodayByDefault?: boolean;
|
|
14
|
+
weekdays?: string[];
|
|
15
|
+
months?: string[];
|
|
16
|
+
yearRange?: {
|
|
17
|
+
start: number;
|
|
18
|
+
end: number;
|
|
19
|
+
};
|
|
20
|
+
handleDateSelect: (date: Date) => void;
|
|
21
|
+
handleRangeSelect?: (range: DateRange) => void;
|
|
22
|
+
size: DatePickerSize;
|
|
23
|
+
state: DatePickerState;
|
|
24
|
+
theme: DatePickerTheme;
|
|
25
|
+
triggerRef: React.RefObject<HTMLButtonElement | null>;
|
|
26
|
+
contentRef: React.RefObject<HTMLDivElement | null>;
|
|
27
|
+
}
|
|
28
|
+
export declare const DatePickerContext: React.Context<DatePickerContextType | undefined>;
|
|
29
|
+
export declare const useDatePickerContext: () => DatePickerContextType;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
"use client";
|
|
1
2
|
import { jsx } from 'react/jsx-runtime';
|
|
2
3
|
import { useContext } from 'react';
|
|
3
|
-
import { DatePickerContext } from './
|
|
4
|
+
import { DatePickerContext } from './DatePickerContext.js';
|
|
4
5
|
import { cn } from '../../../utils/cn.js';
|
|
5
6
|
|
|
6
7
|
const DatePickerPresets = ({ presets, className, setTempRange, onPresetSelect, }) => {
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
+
"use client";
|
|
1
2
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
3
|
import { useContext } from 'react';
|
|
3
4
|
import { CalendarIcon } from '@heroicons/react/24/outline';
|
|
4
5
|
import { cn } from '../../../utils/cn.js';
|
|
5
|
-
import { DatePickerContext } from './
|
|
6
|
+
import { DatePickerContext } from './DatePickerContext.js';
|
|
6
7
|
|
|
7
8
|
/**
|
|
8
9
|
* DatePicker Trigger Component - styled like form input
|
|
@@ -1,30 +1,10 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import type { DateRangePickerProps
|
|
2
|
+
import type { DateRangePickerProps } from "./DateRangePicker.types";
|
|
3
3
|
import { DateRangePickerTrigger } from "./DateRangePickerTrigger";
|
|
4
4
|
import { DateRangePickerBody } from "./DateRangePickerBody";
|
|
5
5
|
import { DateRangePickerPresets } from "./DateRangePickerPresets";
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
setIsOpen: React.Dispatch<React.SetStateAction<boolean>>;
|
|
9
|
-
selectedRange: DateRange | undefined;
|
|
10
|
-
handleRangeSelect: (range: DateRange) => void;
|
|
11
|
-
minDate?: Date;
|
|
12
|
-
maxDate?: Date;
|
|
13
|
-
isDateDisabled?: (date: Date) => boolean;
|
|
14
|
-
showToday?: boolean;
|
|
15
|
-
weekdays?: string[];
|
|
16
|
-
months?: string[];
|
|
17
|
-
yearRange?: {
|
|
18
|
-
start: number;
|
|
19
|
-
end: number;
|
|
20
|
-
};
|
|
21
|
-
size: DateRangePickerSize;
|
|
22
|
-
state: DateRangePickerState;
|
|
23
|
-
theme: DateRangePickerTheme;
|
|
24
|
-
triggerRef: React.RefObject<HTMLButtonElement | null>;
|
|
25
|
-
contentRef: React.RefObject<HTMLDivElement | null>;
|
|
26
|
-
}
|
|
27
|
-
export declare const DateRangePickerContext: React.Context<DateRangePickerContextType | undefined>;
|
|
6
|
+
import { DateRangePickerContext } from "./DateRangePickerContext";
|
|
7
|
+
export { DateRangePickerContext };
|
|
28
8
|
/**
|
|
29
9
|
* DateRangePicker Component — dedicated range picker with presets and dual calendars
|
|
30
10
|
*/
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
"use client";
|
|
1
2
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
2
|
-
import React__default, {
|
|
3
|
+
import React__default, { useState, useRef, useEffect, useCallback, useMemo } from 'react';
|
|
3
4
|
import { dateRangePickerTheme } from './DateRangePicker.theme.js';
|
|
4
5
|
import { DEFAULT_DATE_RANGE_PRESETS } from './dateRangePresets.js';
|
|
5
6
|
import { FormLabel } from '../FormLabel/FormLabel.js';
|
|
@@ -8,8 +9,8 @@ import { DateRangePickerBody } from './DateRangePickerBody.js';
|
|
|
8
9
|
import { DateRangePickerPresets } from './DateRangePickerPresets.js';
|
|
9
10
|
import { cn } from '../../../utils/cn.js';
|
|
10
11
|
import { formatDateCustom } from '../../../utils/dateUtils.js';
|
|
12
|
+
import { DateRangePickerContext } from './DateRangePickerContext.js';
|
|
11
13
|
|
|
12
|
-
const DateRangePickerContext = createContext(undefined);
|
|
13
14
|
/**
|
|
14
15
|
* Format date for display
|
|
15
16
|
*/
|
|
@@ -38,7 +39,7 @@ const formatDateRange = (range, formatString, options) => {
|
|
|
38
39
|
/**
|
|
39
40
|
* DateRangePicker Component — dedicated range picker with presets and dual calendars
|
|
40
41
|
*/
|
|
41
|
-
const DateRangePickerComponent = React__default.forwardRef(({ id, name, size = "md", state = "default", value, defaultValue, placeholder = "Select date range...", disabled = false, required = false, label, helperText, onChange, onFocus, onBlur, presets = DEFAULT_DATE_RANGE_PRESETS, showPresets = true, minDate, maxDate, isDateDisabled, showToday = true, weekdays, months, dateFormat, formatString, yearRange, className = "", wrapperClassName = "", portal = true, placement = "bottom-start", offset = 4, ...rest }, ref) => {
|
|
42
|
+
const DateRangePickerComponent = React__default.forwardRef(({ id, name, size = "md", state = "default", value, defaultValue, placeholder = "Select date range...", disabled = false, required = false, label, helperText, errorMessage, onChange, onFocus, onBlur, presets = DEFAULT_DATE_RANGE_PRESETS, showPresets = true, minDate, maxDate, isDateDisabled, showToday = true, weekdays, months, dateFormat, formatString, yearRange, className = "", wrapperClassName = "", portal = true, placement = "bottom-start", offset = 4, elevation, lift, ...rest }, ref) => {
|
|
42
43
|
var _a, _b;
|
|
43
44
|
const theme = { ...dateRangePickerTheme };
|
|
44
45
|
const [isOpen, setIsOpen] = useState(false);
|
|
@@ -52,9 +53,16 @@ const DateRangePickerComponent = React__default.forwardRef(({ id, name, size = "
|
|
|
52
53
|
}
|
|
53
54
|
}, [value]);
|
|
54
55
|
const handleRangeSelect = useCallback((newRange) => {
|
|
55
|
-
|
|
56
|
+
// Only update internal state in uncontrolled mode — in controlled mode
|
|
57
|
+
// (`value` provided), the displayed range must come from the `value`
|
|
58
|
+
// prop alone, so it doesn't drift ahead of the parent if it rejects
|
|
59
|
+
// or otherwise doesn't echo the change back. `onChange` still always
|
|
60
|
+
// fires so the parent can decide.
|
|
61
|
+
if (value === undefined) {
|
|
62
|
+
setSelectedRange(newRange);
|
|
63
|
+
}
|
|
56
64
|
onChange === null || onChange === void 0 ? void 0 : onChange(newRange);
|
|
57
|
-
}, [onChange]);
|
|
65
|
+
}, [value, onChange]);
|
|
58
66
|
const handleButtonClick = useCallback(() => {
|
|
59
67
|
if (!disabled) {
|
|
60
68
|
setIsOpen((prev) => !prev);
|
|
@@ -65,6 +73,9 @@ const DateRangePickerComponent = React__default.forwardRef(({ id, name, size = "
|
|
|
65
73
|
: placeholder;
|
|
66
74
|
const generatedId = React__default.useId();
|
|
67
75
|
const pickerId = id || generatedId;
|
|
76
|
+
// errorMessage takes precedence over helperText while invalid; helperText
|
|
77
|
+
// behavior is unchanged otherwise.
|
|
78
|
+
const displayedMessage = state === "invalid" && errorMessage ? errorMessage : helperText;
|
|
68
79
|
return (jsx(DateRangePickerContext.Provider, { value: useMemo(() => ({
|
|
69
80
|
isOpen,
|
|
70
81
|
setIsOpen,
|
|
@@ -96,9 +107,9 @@ const DateRangePickerComponent = React__default.forwardRef(({ id, name, size = "
|
|
|
96
107
|
size,
|
|
97
108
|
state,
|
|
98
109
|
theme,
|
|
99
|
-
]), children: jsxs("div", { ref: ref, className: cn(theme.containerStyle, wrapperClassName), ...rest, children: [label && (typeof label === 'string' ? (jsx(FormLabel, { htmlFor: pickerId, state: state, required: required, children: label })) : (label)), jsx(DateRangePickerTrigger, { id: pickerId, disabled: disabled, isOpen: isOpen, state: state, size: size, onClick: handleButtonClick, onFocus: onFocus, onBlur: onBlur, className: className, "aria-invalid": state === 'invalid' || undefined, "aria-describedby":
|
|
110
|
+
]), children: jsxs("div", { ref: ref, className: cn(theme.containerStyle, wrapperClassName), ...rest, children: [label && (typeof label === 'string' ? (jsx(FormLabel, { htmlFor: pickerId, state: state, required: required, children: label })) : (label)), jsx(DateRangePickerTrigger, { id: pickerId, disabled: disabled, isOpen: isOpen, state: state, size: size, onClick: handleButtonClick, onFocus: onFocus, onBlur: onBlur, className: className, "aria-invalid": state === 'invalid' || undefined, "aria-describedby": displayedMessage ? `${pickerId}-helper` : undefined, children: jsx("span", { className: cn("block truncate", selectedRange && (selectedRange.start || selectedRange.end)
|
|
100
111
|
? theme.valueTextStyle
|
|
101
|
-
: theme.placeholderTextStyle), children: displayValue }) }), jsx(DateRangePickerBody, { isOpen: isOpen, onClose: () => setIsOpen(false), portal: portal, placement: placement, offset: offset, presets: presets, showPresets: showPresets }),
|
|
112
|
+
: theme.placeholderTextStyle), children: displayValue }) }), jsx(DateRangePickerBody, { isOpen: isOpen, onClose: () => setIsOpen(false), portal: portal, placement: placement, offset: offset, presets: presets, showPresets: showPresets, elevation: elevation, lift: lift }), displayedMessage && (typeof displayedMessage === 'string' ? (jsx("p", { id: `${pickerId}-helper`, role: state === 'invalid' ? 'alert' : undefined, className: cn(theme.helperTextStyle, theme.helperTextStates[state]), children: displayedMessage })) : (displayedMessage)), name && selectedRange && (jsxs(Fragment, { children: [jsx("input", { type: "hidden", name: `${name}[start]`, value: ((_a = selectedRange.start) === null || _a === void 0 ? void 0 : _a.toISOString()) || "" }), jsx("input", { type: "hidden", name: `${name}[end]`, value: ((_b = selectedRange.end) === null || _b === void 0 ? void 0 : _b.toISOString()) || "" })] }))] }) }));
|
|
102
113
|
});
|
|
103
114
|
DateRangePickerComponent.displayName = "DateRangePicker";
|
|
104
115
|
// Compound component
|
|
@@ -6,7 +6,7 @@ import { formsBaseTheme } from '../forms.theme.js';
|
|
|
6
6
|
const dateRangePickerTheme = {
|
|
7
7
|
containerStyle: formsBaseTheme.wrapperStyle,
|
|
8
8
|
baseStyle: formsBaseTheme.inputGroupBaseStyle + " justify-between cursor-pointer",
|
|
9
|
-
triggerButtonStyle: "w-full cursor-pointer bg-[var(--
|
|
9
|
+
triggerButtonStyle: "w-full cursor-pointer bg-[var(--field-fill)]",
|
|
10
10
|
placeholderTextStyle: "text-[var(--color-text-placeholder)]",
|
|
11
11
|
valueTextStyle: "text-[var(--color-text-primary)]",
|
|
12
12
|
triggerSizes: {
|
|
@@ -19,7 +19,7 @@ const dateRangePickerTheme = {
|
|
|
19
19
|
triggerFocusStates: formsBaseTheme.focusStates,
|
|
20
20
|
iconEndStyle: formsBaseTheme.iconStyles.right,
|
|
21
21
|
iconEndPadding: formsBaseTheme.iconStyles.padding.right,
|
|
22
|
-
bodyStyle: "flex flex-col sm:flex-row w-fit max-w-[calc(100vw-2rem)] sm:max-w-none
|
|
22
|
+
bodyStyle: "flex flex-col sm:flex-row w-fit max-w-[calc(100vw-2rem)] sm:max-w-none backdrop-blur-md border border-[var(--color-border)] rounded-[var(--popover-radius)] shadow-lg p-0 overflow-hidden z-[1000] fixed",
|
|
23
23
|
presetsContainerStyle: "hidden sm:flex flex-col gap-1 p-3 sm:border-r border-[var(--color-border)] bg-[var(--color-surface-sunken)] sm:min-w-[180px]",
|
|
24
24
|
presetButtonStyle: "w-full text-left px-3 py-2 text-sm font-medium rounded-[calc(var(--radius-base)*0.75)] transition-colors cursor-pointer " +
|
|
25
25
|
"flex items-center justify-between gap-2 " +
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import type { DateRange } from "../../core/Calendar/Calendar.types";
|
|
3
|
+
import type { SurfaceElevation } from "../../../theme/SurfaceContext";
|
|
3
4
|
export type { DateRange };
|
|
4
5
|
/**
|
|
5
6
|
* Size variants for DateRangePicker
|
|
@@ -47,6 +48,12 @@ export interface DateRangePickerProps extends Omit<React.HTMLAttributes<HTMLDivE
|
|
|
47
48
|
label?: React.ReactNode;
|
|
48
49
|
/** Helper text below the field */
|
|
49
50
|
helperText?: React.ReactNode;
|
|
51
|
+
/**
|
|
52
|
+
* Error message shown instead of `helperText` when `state="invalid"`.
|
|
53
|
+
* Takes precedence over `helperText` while invalid; `helperText` is
|
|
54
|
+
* unaffected/still shown as normal otherwise.
|
|
55
|
+
*/
|
|
56
|
+
errorMessage?: React.ReactNode;
|
|
50
57
|
/** Callback fired when a range is applied */
|
|
51
58
|
onChange?: (range: DateRange | null) => void;
|
|
52
59
|
/** Array of preset date ranges */
|
|
@@ -88,6 +95,13 @@ export interface DateRangePickerProps extends Omit<React.HTMLAttributes<HTMLDivE
|
|
|
88
95
|
placement?: DateRangePickerPlacement;
|
|
89
96
|
/** Offset from trigger element */
|
|
90
97
|
offset?: number;
|
|
98
|
+
/**
|
|
99
|
+
* Pin the popover surface elevation rung (overrides the automatic relative lift).
|
|
100
|
+
* A rung number (1–8) or a semantic alias ("surface"/"raised"/"overlay"…).
|
|
101
|
+
*/
|
|
102
|
+
elevation?: SurfaceElevation;
|
|
103
|
+
/** `false` opts out of the relative lift — paints at the popover's base rung. */
|
|
104
|
+
lift?: boolean;
|
|
91
105
|
}
|
|
92
106
|
/**
|
|
93
107
|
* DateRangePicker trigger button props
|
|
@@ -118,6 +132,13 @@ export interface DateRangePickerBodyProps {
|
|
|
118
132
|
offset?: number;
|
|
119
133
|
presets?: DateRangePreset[];
|
|
120
134
|
showPresets?: boolean;
|
|
135
|
+
/**
|
|
136
|
+
* Pin the popover surface elevation rung (overrides the automatic relative lift).
|
|
137
|
+
* A rung number (1–8) or a semantic alias ("surface"/"raised"/"overlay"…).
|
|
138
|
+
*/
|
|
139
|
+
elevation?: SurfaceElevation;
|
|
140
|
+
/** `false` opts out of the relative lift — paints at the popover's base rung. */
|
|
141
|
+
lift?: boolean;
|
|
121
142
|
}
|
|
122
143
|
/**
|
|
123
144
|
* DateRangePicker presets props
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
"use client";
|
|
1
2
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
3
|
import React__default, { useContext, useState, useEffect, useCallback, useMemo } from 'react';
|
|
3
4
|
import { AnimatePresence, motion } from 'motion/react';
|
|
@@ -6,7 +7,7 @@ import { Calendar } from '../../core/Calendar/Calendar.js';
|
|
|
6
7
|
import '../../core/Calendar/CalendarMini/CalendarMini.js';
|
|
7
8
|
import { Button } from '../../core/Button/Button.js';
|
|
8
9
|
import { cn } from '../../../utils/cn.js';
|
|
9
|
-
import { DateRangePickerContext } from './
|
|
10
|
+
import { DateRangePickerContext } from './DateRangePickerContext.js';
|
|
10
11
|
import { DateRangePickerPresets } from './DateRangePickerPresets.js';
|
|
11
12
|
import { useSelectPortal } from '../../../hooks/useSelectPortal.js';
|
|
12
13
|
import { formatDateCustom } from '../../../utils/dateUtils.js';
|
|
@@ -14,11 +15,15 @@ import { createDropdownAnimations } from '../DatePicker/DatePicker.animations.js
|
|
|
14
15
|
import { useIsClient } from '../../../hooks/useIsClient.js';
|
|
15
16
|
import { useMediaQuery } from '../../../hooks/useMediaQuery.js';
|
|
16
17
|
import { useDarkMode } from '../../../hooks/useDarkMode.js';
|
|
18
|
+
import { useSurfaceElevation, SurfaceProvider, surfaceClasses } from '../../../theme/SurfaceContext.js';
|
|
17
19
|
|
|
18
20
|
/**
|
|
19
21
|
* DateRangePicker Body Component — dual calendars + presets sidebar + footer
|
|
20
22
|
*/
|
|
21
|
-
const DateRangePickerBody = ({ isOpen, className, onClose, portal = true, placement = "bottom-start", offset = 4, presets, showPresets = true, }) => {
|
|
23
|
+
const DateRangePickerBody = ({ isOpen, className, onClose, portal = true, placement = "bottom-start", offset = 4, presets, showPresets = true, elevation, lift, }) => {
|
|
24
|
+
// Relative elevation: the popover lifts above its host surface (overlay base = 5)
|
|
25
|
+
// so a DateRangePicker inside a Popover/Modal still reads as a higher plane.
|
|
26
|
+
const surfaceLevel = useSurfaceElevation({ baseRung: 5, offset: 2, elevation, lift });
|
|
22
27
|
const context = useContext(DateRangePickerContext);
|
|
23
28
|
if (!context) {
|
|
24
29
|
throw new Error("DateRangePickerBody must be used within a DateRangePicker");
|
|
@@ -153,7 +158,7 @@ const DateRangePickerBody = ({ isOpen, className, onClose, portal = true, placem
|
|
|
153
158
|
document.removeEventListener("keydown", handleKeyDown);
|
|
154
159
|
};
|
|
155
160
|
}, [isOpen, onClose]);
|
|
156
|
-
const contentElement = (jsx(AnimatePresence, { mode: "wait", children: isOpen && (
|
|
161
|
+
const contentElement = (jsx(AnimatePresence, { mode: "wait", children: isOpen && (jsx(motion.div, { ref: combinedRef, className: cn(surfaceClasses(surfaceLevel, { translucent: true, shadow: false }), theme.bodyStyle, className), style: {
|
|
157
162
|
...cssVariables,
|
|
158
163
|
...(portal
|
|
159
164
|
? {
|
|
@@ -162,17 +167,17 @@ const DateRangePickerBody = ({ isOpen, className, onClose, portal = true, placem
|
|
|
162
167
|
minWidth: `${position.width}px`,
|
|
163
168
|
}
|
|
164
169
|
: {}),
|
|
165
|
-
}, variants: animations, initial: "initial", animate: isReady ? "visible" : "initial", exit: "exit", children: [hasPresets && presets && (jsx(DateRangePickerPresets, { presets: presets, tempRange: tempRange, setTempRange: setTempRange, onPresetSelect: handlePresetSelect })), jsxs("div", { className: "flex flex-col flex-1", children: [jsxs("div", { className: "flex flex-col sm:flex-row justify-between items-center sm:items-start gap-2 sm:gap-6 p-3 sm:p-4", children: [jsx("div", { className: "flex-1 min-w-fit", children: jsx(Calendar, { mode: "range", value: tempRange, onChange: (value) => {
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
170
|
+
}, variants: animations, initial: "initial", animate: isReady ? "visible" : "initial", exit: "exit", children: jsxs(SurfaceProvider, { level: surfaceLevel, children: [hasPresets && presets && (jsx(DateRangePickerPresets, { presets: presets, tempRange: tempRange, setTempRange: setTempRange, onPresetSelect: handlePresetSelect })), jsxs("div", { className: "flex flex-col flex-1", children: [jsxs("div", { className: "flex flex-col sm:flex-row justify-between items-center sm:items-start gap-2 sm:gap-6 p-3 sm:p-4", children: [jsx("div", { className: "flex-1 min-w-fit", children: jsx(Calendar, { mode: "range", value: tempRange, onChange: (value) => {
|
|
171
|
+
setTempRange(value);
|
|
172
|
+
}, viewDate: leftCalendarDate, onViewDateChange: setLeftCalendarDate, onNavigatePrev: handleNavigatePrev, onNavigateNext: isMobile ? handleNavigateNext : null, minDate: minDate, maxDate: maxDate, isDateDisabled: isDateDisabled, showToday: showToday, selectTodayByDefault: false, weekdays: weekdays, months: months, yearRange: yearRange, showOtherMonthDays: false, headerMode: "static", size: "md" }) }), jsx("div", { className: "hidden sm:block flex-1 min-w-fit", children: jsx(Calendar, { mode: "range", value: tempRange, onChange: (value) => {
|
|
173
|
+
setTempRange(value);
|
|
174
|
+
}, viewDate: rightCalendarDate, onViewDateChange: (newDate) => {
|
|
175
|
+
const adjustedLeft = new Date(newDate);
|
|
176
|
+
adjustedLeft.setMonth(adjustedLeft.getMonth() - 1);
|
|
177
|
+
setLeftCalendarDate(adjustedLeft);
|
|
178
|
+
}, onNavigatePrev: null, onNavigateNext: handleNavigateNext, minDate: minDate, maxDate: maxDate, isDateDisabled: isDateDisabled, showToday: showToday, selectTodayByDefault: false, weekdays: weekdays, months: months, yearRange: yearRange, showOtherMonthDays: false, headerMode: "static", size: "md" }) })] }), jsxs("div", { className: "flex flex-col sm:flex-row sm:items-center sm:justify-between gap-2 px-3 sm:px-4 py-3 border-t border-[var(--color-border)]", children: [jsx("div", { className: "text-sm text-center sm:text-left text-[var(--color-text-muted)]", children: formatRangeDisplay(tempRange) }), jsxs("div", { className: "flex w-full sm:w-auto items-center gap-2", children: [jsx(Button, { variant: "outline", color: "neutral", size: "sm", className: "flex-1 sm:flex-initial", onClick: handleCancel, children: "Cancel" }), jsx(Button, { variant: "filled", size: "sm", className: "flex-1 sm:flex-initial", onClick: handleApply, disabled: !(tempRange === null || tempRange === void 0 ? void 0 : tempRange.start) || !(tempRange === null || tempRange === void 0 ? void 0 : tempRange.end), children: "Apply" })] })] })] })] }) })) }));
|
|
174
179
|
if (portal && isClient) {
|
|
175
|
-
return createPortal(jsx("div", { className: isDarkMode ? "dark" : undefined, children: contentElement }), document.body);
|
|
180
|
+
return createPortal(jsx("div", { "data-flikkui-portal": "", className: isDarkMode ? "dark" : undefined, children: contentElement }), document.body);
|
|
176
181
|
}
|
|
177
182
|
return contentElement;
|
|
178
183
|
};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import type { DateRangePickerState, DateRangePickerSize, DateRangePickerTheme, DateRange } from "./DateRangePicker.types";
|
|
3
|
+
export interface DateRangePickerContextType {
|
|
4
|
+
isOpen: boolean;
|
|
5
|
+
setIsOpen: React.Dispatch<React.SetStateAction<boolean>>;
|
|
6
|
+
selectedRange: DateRange | undefined;
|
|
7
|
+
handleRangeSelect: (range: DateRange) => void;
|
|
8
|
+
minDate?: Date;
|
|
9
|
+
maxDate?: Date;
|
|
10
|
+
isDateDisabled?: (date: Date) => boolean;
|
|
11
|
+
showToday?: boolean;
|
|
12
|
+
weekdays?: string[];
|
|
13
|
+
months?: string[];
|
|
14
|
+
yearRange?: {
|
|
15
|
+
start: number;
|
|
16
|
+
end: number;
|
|
17
|
+
};
|
|
18
|
+
size: DateRangePickerSize;
|
|
19
|
+
state: DateRangePickerState;
|
|
20
|
+
theme: DateRangePickerTheme;
|
|
21
|
+
triggerRef: React.RefObject<HTMLButtonElement | null>;
|
|
22
|
+
contentRef: React.RefObject<HTMLDivElement | null>;
|
|
23
|
+
}
|
|
24
|
+
export declare const DateRangePickerContext: React.Context<DateRangePickerContextType | undefined>;
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
"use client";
|
|
1
2
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
3
|
import { useContext } from 'react';
|
|
3
4
|
import { CheckIcon } from '@heroicons/react/24/outline';
|
|
4
|
-
import { DateRangePickerContext } from './
|
|
5
|
+
import { DateRangePickerContext } from './DateRangePickerContext.js';
|
|
5
6
|
import { cn } from '../../../utils/cn.js';
|
|
6
7
|
|
|
7
8
|
/**
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
+
"use client";
|
|
1
2
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
3
|
import { useContext } from 'react';
|
|
3
4
|
import { CalendarIcon } from '@heroicons/react/24/outline';
|
|
4
5
|
import { cn } from '../../../utils/cn.js';
|
|
5
|
-
import { DateRangePickerContext } from './
|
|
6
|
+
import { DateRangePickerContext } from './DateRangePickerContext.js';
|
|
6
7
|
|
|
7
8
|
/**
|
|
8
9
|
* DateRangePicker Trigger Component — styled like form input
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
"use client";
|
|
1
2
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
3
|
import React__default, { useMemo, useId, useRef, useCallback, useState, useEffect } from 'react';
|
|
3
4
|
import { useReducedMotion, AnimatePresence, motion } from 'motion/react';
|
|
@@ -5,8 +6,8 @@ import { fileUploadTheme } from './FileUpload.theme.js';
|
|
|
5
6
|
import { PREVIEW_LAYOUT_SPRING, PREVIEW_ITEM } from './FileUpload.animations.js';
|
|
6
7
|
import { cn } from '../../../utils/cn.js';
|
|
7
8
|
import { CloudArrowUpIcon, DocumentIcon, XMarkIcon } from '@heroicons/react/24/outline';
|
|
8
|
-
import { FormLabel } from '../FormLabel/FormLabel.js';
|
|
9
9
|
import { Button } from '../../core/Button/Button.js';
|
|
10
|
+
import { FormLabel } from '../FormLabel/FormLabel.js';
|
|
10
11
|
|
|
11
12
|
/**
|
|
12
13
|
* FileUpload component - Drag-and-drop file uploader with previews
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
"use client";
|
|
1
2
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
3
|
import React__default, { useState, useEffect } from 'react';
|
|
3
4
|
import { useReducedMotion, motion, AnimatePresence } from 'motion/react';
|
|
4
|
-
import { DocumentIcon, TrashIcon, ArrowPathIcon, XMarkIcon } from '@heroicons/react/24/outline';
|
|
5
|
+
import { DocumentIcon, TrashIcon, ArrowPathIcon, XMarkIcon, CheckIcon } from '@heroicons/react/24/outline';
|
|
5
6
|
import { Icon } from '../../core/Icon/Icon.js';
|
|
6
7
|
import { fileTypes } from '../../core/Icon/data/fileTypes.js';
|
|
7
8
|
import { cn } from '../../../utils/cn.js';
|
|
@@ -60,7 +61,7 @@ const RadialProgress = ({ progress, status, strokeWidth, trackColor, progressCol
|
|
|
60
61
|
setConfirmOpen(open);
|
|
61
62
|
if (!open)
|
|
62
63
|
setIsHovered(false);
|
|
63
|
-
}, placement: "bottom-end", offset: offsetValue, triggerType: "click", children: [jsx(Popover.Trigger, { children: trigger }), jsxs(Popover.Body, { className: "flex items-center p-1 border-[0.5px] rounded-xl gap-0.5 bg-opacity-50 backdrop-blur-md", children: [jsx("span", { className: "text-sm font-semibold text-[var(--color-text-secondary)] px-3", children: label }), jsxs("div", { className: "flex gap-1", children: [jsx(Button, { size: "sm", color: "danger", variant: "filled", onClick: handleConfirm, children: "
|
|
64
|
+
}, placement: "bottom-end", offset: offsetValue, triggerType: "click", children: [jsx(Popover.Trigger, { children: trigger }), jsxs(Popover.Body, { className: "flex items-center p-1 border-[0.5px] rounded-xl gap-0.5 bg-opacity-50 backdrop-blur-md", children: [jsx("span", { className: "text-sm font-semibold text-[var(--color-text-secondary)] px-3", children: label }), jsxs("div", { className: "flex gap-1", children: [jsx(Button, { size: "sm", color: "danger", variant: "filled", onClick: handleConfirm, children: "Yesss" }), jsx(Button, { size: "sm", variant: "soft", color: "neutral", onClick: () => setConfirmOpen(false), children: "No" })] })] })] }));
|
|
64
65
|
// Shared remove button used after completion tick
|
|
65
66
|
const removeButton = (jsx(motion.div, { initial: shouldReduceMotion ? false : REMOVE_BUTTON_ENTER.initial, animate: REMOVE_BUTTON_ENTER.animate, transition: REMOVE_BUTTON_ENTER.transition, className: "shrink-0", children: jsx(Button, { size: "sm", variant: "soft", color: "neutral", "aria-label": "Remove file", iconOnly: true, className: "rounded-full size-8", onClick: confirmRemove ? undefined : () => onRemove === null || onRemove === void 0 ? void 0 : onRemove(), children: jsx(TrashIcon, { className: "size-3.5", strokeWidth: 2 }) }) }, "remove-btn"));
|
|
66
67
|
// Error state: retry + delete buttons (no progress arc/percentage).
|
|
@@ -81,7 +82,7 @@ const RadialProgress = ({ progress, status, strokeWidth, trackColor, progressCol
|
|
|
81
82
|
handleClick();
|
|
82
83
|
}
|
|
83
84
|
}
|
|
84
|
-
: undefined, children: [jsxs("svg", { viewBox: `0 0 ${VIEWBOX} ${VIEWBOX}`, className: "w-full h-full -rotate-90", children: [jsx("circle", { cx: CENTER, cy: CENTER, r: radius, fill: "none", stroke: trackColor, strokeWidth: strokeWidth }), jsx(motion.circle, { cx: CENTER, cy: CENTER, r: radius, fill: "none", stroke: progressColor, strokeWidth: strokeWidth, strokeLinecap: "round", strokeDasharray: circumference, initial: { strokeDashoffset: circumference }, animate: { strokeDashoffset: isComplete ? 0 : offset }, transition: shouldReduceMotion ? { duration: 0 } : PROGRESS_SPRING })] }), jsx("div", { className: "absolute inset-0 flex items-center justify-center", children: jsxs(AnimatePresence, { mode: "wait", initial: false, children: [isUploading && !isHovered && (jsx(motion.span, { className: centerTextStyle, ...(shouldReduceMotion ? {} : CROSSFADE), children: progress }, "percent")), isUploading && isHovered && onRemove && (jsx(motion.span, { ...(shouldReduceMotion ? {} : CROSSFADE), children: jsx(XMarkIcon, { className: "size-4 text-[var(--color-text-muted)]", strokeWidth: 2.5 }) }, "close")), isComplete && !showRemove && (jsx(motion.span, { ...(shouldReduceMotion ? {} : CROSSFADE), children: jsx(
|
|
85
|
+
: undefined, children: [jsxs("svg", { viewBox: `0 0 ${VIEWBOX} ${VIEWBOX}`, className: "w-full h-full -rotate-90", children: [jsx("circle", { cx: CENTER, cy: CENTER, r: radius, fill: "none", stroke: trackColor, strokeWidth: strokeWidth }), jsx(motion.circle, { cx: CENTER, cy: CENTER, r: radius, fill: "none", stroke: progressColor, strokeWidth: strokeWidth, strokeLinecap: "round", strokeDasharray: circumference, initial: { strokeDashoffset: circumference }, animate: { strokeDashoffset: isComplete ? 0 : offset }, transition: shouldReduceMotion ? { duration: 0 } : PROGRESS_SPRING })] }), jsx("div", { className: "absolute inset-0 flex items-center justify-center", children: jsxs(AnimatePresence, { mode: "wait", initial: false, children: [isUploading && !isHovered && (jsx(motion.span, { className: centerTextStyle, ...(shouldReduceMotion ? {} : CROSSFADE), children: progress }, "percent")), isUploading && isHovered && onRemove && (jsx(motion.span, { ...(shouldReduceMotion ? {} : CROSSFADE), children: jsx(XMarkIcon, { className: "size-4 text-[var(--color-text-muted)]", strokeWidth: 2.5 }) }, "close")), isComplete && !showRemove && (jsx(motion.span, { ...(shouldReduceMotion ? {} : CROSSFADE), children: jsx(CheckIcon, { className: cn("size-4", statusIconColor), strokeWidth: 3.5 }) }, "check"))] }) })] }));
|
|
85
86
|
// Determine what to render: radial indicator or remove button
|
|
86
87
|
const showRemoveButton = isComplete && showRemove && onRemove;
|
|
87
88
|
const triggerElement = showRemoveButton ? removeButton : radialElement;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
"use client";
|
|
1
2
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
3
|
import React__default, { useState, useRef, useEffect, useCallback } from 'react';
|
|
3
4
|
import { FormLabel } from '../FormLabel/FormLabel.js';
|
|
@@ -67,7 +68,7 @@ const PasswordStrengthIndicator = ({ inline = false, passwordStrengthIndicator,
|
|
|
67
68
|
// ============================================================================
|
|
68
69
|
// Main Input Component
|
|
69
70
|
// ============================================================================
|
|
70
|
-
const Input = React__default.forwardRef(({ size = "md", state = "default", className = "", label, labelClassName = "", helperText, helperTextClassName = "", wrapperClassName = "", inputGroupClassName = "", iconStart, iconEnd, contentStart, contentEnd, keyboardShortcut, id, required, type = "text", passwordToggle = type === "password", passwordStrengthIndicator, showNumberControls = false, min, max, step = 1, onChange, onValueChange, onFocus, onBlur, value, currencyDecimalPlaces, darkMode = false, showTypeIcon = true, ...props }, ref) => {
|
|
71
|
+
const Input = React__default.forwardRef(({ size = "md", state = "default", className = "", label, labelClassName = "", helperText, errorMessage, helperTextClassName = "", wrapperClassName = "", inputGroupClassName = "", iconStart, iconEnd, contentStart, contentEnd, keyboardShortcut, id, required, type = "text", passwordToggle = type === "password", passwordStrengthIndicator, showNumberControls = false, min, max, step = 1, onChange, onValueChange, onFocus, onBlur, value, currencyDecimalPlaces, darkMode = false, showTypeIcon = true, ...props }, ref) => {
|
|
71
72
|
const [isFocused, setIsFocused] = useState(false);
|
|
72
73
|
const [showPassword, setShowPassword] = useState(false);
|
|
73
74
|
const generatedId = React__default.useId();
|
|
@@ -90,6 +91,9 @@ const Input = React__default.forwardRef(({ size = "md", state = "default", class
|
|
|
90
91
|
const hasLeftIcon = Boolean(finalLeftIcon);
|
|
91
92
|
const isDisabled = state === "disabled";
|
|
92
93
|
const isInvalid = state === "invalid";
|
|
94
|
+
// errorMessage takes precedence over helperText while invalid; helperText
|
|
95
|
+
// behavior is unchanged otherwise.
|
|
96
|
+
const displayedMessage = isInvalid && errorMessage ? errorMessage : helperText;
|
|
93
97
|
const hasRightIcon = Boolean(iconEnd);
|
|
94
98
|
const hasContentStart = Boolean(contentStart);
|
|
95
99
|
const hasContentEnd = Boolean(contentEnd);
|
|
@@ -273,13 +277,13 @@ const Input = React__default.forwardRef(({ size = "md", state = "default", class
|
|
|
273
277
|
typeof min === "number" &&
|
|
274
278
|
numberValue <= min;
|
|
275
279
|
return (jsxs("div", { className: cn(wrapperClasses, stateClass, darkMode && "dark", wrapperClassName), children: [label && (typeof label === 'string' ? (jsxs("div", { className: "flex justify-between items-center", children: [jsx(FormLabel, { htmlFor: inputId, className: labelClassName, state: state, required: required, children: label }), showStrengthWithLabel && (jsx(PasswordStrengthIndicator, { inline: true, passwordStrengthIndicator: passwordStrengthIndicator }))] })) : (jsxs("div", { className: "flex justify-between items-center", children: [label, showStrengthWithLabel && (jsx(PasswordStrengthIndicator, { inline: true, passwordStrengthIndicator: passwordStrengthIndicator }))] }))), jsx("div", { children: jsxs("div", { className: cn(inputGroupClasses, stateClasses, isFocused && (isInvalid ? inputTheme.inputGroupFocusInvalidStyle : inputTheme.inputGroupFocusStyle), inputGroupClassName), onClick: handleInputGroupClick, role: "presentation", children: [hasContentStart && (jsx("div", { "data-slot": "content-start", className: cn(contentStyleClasses, contentStartStyle), children: contentStart })), jsxs("div", { className: "relative flex-1", children: [jsx("input", { ref: setInputRef, id: inputId, type: actualInputType, className: cn(baseClasses, sizeClasses, hasLeftIcon && iconStartPadding, (hasRightIcon || isPasswordField || displayNumberControls) &&
|
|
276
|
-
iconEndPadding, className), disabled: isDisabled, "aria-invalid": isInvalid, "aria-describedby":
|
|
280
|
+
iconEndPadding, className), disabled: isDisabled, "aria-invalid": isInvalid, "aria-describedby": displayedMessage ? `${inputId}-helper` : undefined, required: required, min: min, max: max, step: step, value: value, onChange: handleInputChange, onFocus: (e) => {
|
|
277
281
|
setIsFocused(true);
|
|
278
282
|
onFocus === null || onFocus === void 0 ? void 0 : onFocus(e);
|
|
279
283
|
}, onBlur: (e) => {
|
|
280
284
|
setIsFocused(false);
|
|
281
285
|
onBlur === null || onBlur === void 0 ? void 0 : onBlur(e);
|
|
282
|
-
}, placeholder: props.placeholder, ...props }), hasLeftIcon && (jsx("div", { className: iconStartClasses, children: finalLeftIcon })), hasRightIcon && !isPasswordField && !displayNumberControls && (jsx("div", { className: iconEndClasses, children: iconEnd })), isPasswordField && (jsx(PasswordToggleButton, { showPassword: showPassword, onToggle: handleTogglePassword, passwordToggleClasses: passwordToggleClasses })), displayNumberControls && (jsx(NumberButtons, { isDisabled: isDisabled, isAtMax: isAtMax, isAtMin: isAtMin, onIncrement: handleIncrement, onDecrement: handleDecrement, numberButtonsContainerClasses: numberButtonsContainerClasses, numberButtonClasses: numberButtonClasses })), hasKeyboardShortcut && (jsx("div", { className: inputTheme.keyboardShortcutStyle, children: keyboardShortcut }))] }), hasContentEnd && (jsx("div", { "data-slot": "content-end", className: cn(contentStyleClasses, contentEndStyle), children: contentEnd }))] }) }), showStrengthBelow && jsx(PasswordStrengthIndicator, { inline: false, passwordStrengthIndicator: passwordStrengthIndicator }),
|
|
286
|
+
}, placeholder: props.placeholder, ...props }), hasLeftIcon && (jsx("div", { className: iconStartClasses, children: finalLeftIcon })), hasRightIcon && !isPasswordField && !displayNumberControls && (jsx("div", { className: iconEndClasses, children: iconEnd })), isPasswordField && (jsx(PasswordToggleButton, { showPassword: showPassword, onToggle: handleTogglePassword, passwordToggleClasses: passwordToggleClasses })), displayNumberControls && (jsx(NumberButtons, { isDisabled: isDisabled, isAtMax: isAtMax, isAtMin: isAtMin, onIncrement: handleIncrement, onDecrement: handleDecrement, numberButtonsContainerClasses: numberButtonsContainerClasses, numberButtonClasses: numberButtonClasses })), hasKeyboardShortcut && (jsx("div", { className: inputTheme.keyboardShortcutStyle, children: keyboardShortcut }))] }), hasContentEnd && (jsx("div", { "data-slot": "content-end", className: cn(contentStyleClasses, contentEndStyle), children: contentEnd }))] }) }), showStrengthBelow && jsx(PasswordStrengthIndicator, { inline: false, passwordStrengthIndicator: passwordStrengthIndicator }), displayedMessage && (typeof displayedMessage === 'string' ? (jsx("div", { id: `${inputId}-helper`, className: cn(helperTextClasses, helperTextClassName), role: isInvalid ? "alert" : undefined, children: displayedMessage })) : (displayedMessage))] }));
|
|
283
287
|
});
|
|
284
288
|
Input.displayName = "Input";
|
|
285
289
|
|