@flikk/ui 1.0.0-beta.26 → 1.0.0-beta.29
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/dist/bg/1.webp +0 -0
- package/dist/bg/10.webp +0 -0
- package/dist/bg/11.webp +0 -0
- package/dist/bg/12.webp +0 -0
- package/dist/bg/13.webp +0 -0
- package/dist/bg/14.webp +0 -0
- package/dist/bg/15.webp +0 -0
- package/dist/bg/16.webp +0 -0
- package/dist/bg/17.webp +0 -0
- package/dist/bg/18.webp +0 -0
- package/dist/bg/19.webp +0 -0
- package/dist/bg/2.webp +0 -0
- package/dist/bg/20.webp +0 -0
- package/dist/bg/21.webp +0 -0
- package/dist/bg/22.webp +0 -0
- package/dist/bg/3.webp +0 -0
- package/dist/bg/4.webp +0 -0
- package/dist/bg/5.webp +0 -0
- package/dist/bg/6.webp +0 -0
- package/dist/bg/7.webp +0 -0
- package/dist/bg/8.webp +0 -0
- package/dist/bg/9.webp +0 -0
- package/dist/components/ai/CodeBlock/CodeBlock.theme.js +1 -1
- package/dist/components/ai/PromptInput/PromptInput.js +7 -140
- package/dist/components/ai/PromptInput/VoiceRecorder.js +0 -85
- package/dist/components/ai/TokenCounter/TokenCounter.theme.js +1 -1
- package/dist/components/canvas/Background.d.ts +19 -0
- package/dist/components/canvas/Background.js +23 -0
- package/dist/components/canvas/BaseNode.d.ts +15 -0
- package/dist/components/canvas/BaseNode.js +20 -0
- package/dist/components/canvas/CanvasToolbar.d.ts +34 -0
- package/dist/components/canvas/CanvasToolbar.js +34 -0
- package/dist/components/canvas/Edge.d.ts +35 -0
- package/dist/components/canvas/Edge.js +97 -0
- package/dist/components/canvas/EdgeLayer.d.ts +18 -0
- package/dist/components/canvas/EdgeLayer.js +111 -0
- package/dist/components/canvas/Handle.d.ts +11 -0
- package/dist/components/canvas/Handle.js +63 -0
- package/dist/components/canvas/MiniMap.d.ts +22 -0
- package/dist/components/canvas/MiniMap.js +105 -0
- package/dist/components/canvas/NodeCanvas.d.ts +10 -0
- package/dist/components/canvas/NodeCanvas.js +477 -0
- package/dist/components/canvas/NodeCanvas.theme.d.ts +7 -0
- package/dist/components/canvas/NodeCanvas.theme.js +9 -0
- package/dist/components/canvas/NodeCanvas.types.d.ts +187 -0
- package/dist/components/canvas/NodeControls.d.ts +25 -0
- package/dist/components/canvas/NodeControls.js +40 -0
- package/dist/components/canvas/NodeRenderer.d.ts +19 -0
- package/dist/components/canvas/NodeRenderer.js +117 -0
- package/dist/components/canvas/changes.d.ts +11 -0
- package/dist/components/canvas/changes.js +76 -0
- package/dist/components/canvas/context/CanvasContext.d.ts +32 -0
- package/dist/components/canvas/context/CanvasContext.js +14 -0
- package/dist/components/canvas/context/ConnectionContext.d.ts +33 -0
- package/dist/components/canvas/context/ConnectionContext.js +13 -0
- package/dist/components/canvas/context/HandleRegistry.d.ts +24 -0
- package/dist/components/canvas/context/HandleRegistry.js +15 -0
- package/dist/components/canvas/context/InteractionContext.d.ts +18 -0
- package/dist/components/canvas/context/InteractionContext.js +14 -0
- package/dist/components/canvas/context/NodeIdContext.d.ts +3 -0
- package/dist/components/canvas/context/NodeIdContext.js +15 -0
- package/dist/components/canvas/hooks/useConnection.d.ts +17 -0
- package/dist/components/canvas/hooks/useConnection.js +29 -0
- package/dist/components/canvas/hooks/useMarquee.d.ts +25 -0
- package/dist/components/canvas/hooks/useMarquee.js +91 -0
- package/dist/components/canvas/hooks/useNodeDrag.d.ts +23 -0
- package/dist/components/canvas/hooks/useNodeDrag.js +110 -0
- package/dist/components/canvas/hooks/usePanZoom.d.ts +30 -0
- package/dist/components/canvas/hooks/usePanZoom.js +189 -0
- package/dist/components/canvas/hooks/useViewport.d.ts +21 -0
- package/dist/components/canvas/hooks/useViewport.js +35 -0
- package/dist/components/canvas/index.d.ts +14 -0
- package/dist/components/canvas/index.js +12 -0
- package/dist/components/canvas/layout.d.ts +22 -0
- package/dist/components/canvas/layout.js +67 -0
- package/dist/components/canvas/utils.d.ts +4 -0
- package/dist/components/canvas/utils.js +16 -0
- package/dist/components/charts/AreaChart/AreaChart.js +136 -101
- package/dist/components/charts/AreaChart/AreaChart.types.d.ts +5 -5
- package/dist/components/charts/AreaChart/AreaChart.types.js +1 -0
- package/dist/components/charts/BarChart/BarChart.js +207 -143
- package/dist/components/charts/BarChart/BarChart.types.d.ts +4 -4
- package/dist/components/charts/BarChart/BarChart.types.js +1 -0
- package/dist/components/charts/ComboChart/ComboChart.types.d.ts +2 -2
- package/dist/components/charts/LineChart/LineChart.js +88 -72
- package/dist/components/charts/LineChart/LineChart.types.d.ts +3 -3
- package/dist/components/charts/RadarChart/RadarChart.js +1 -1
- package/dist/components/charts/RadarChart/RadarChart.theme.js +5 -2
- package/dist/components/charts/ScatterPlot/ScatterPlot.js +62 -72
- package/dist/components/charts/ScatterPlot/ScatterPlot.theme.js +10 -1
- package/dist/components/charts/ScatterPlot/ScatterPlot.types.d.ts +3 -9
- package/dist/components/charts/StackedBarChart/StackedBarChart.js +33 -33
- package/dist/components/charts/StackedBarChart/StackedBarChart.types.d.ts +2 -2
- package/dist/components/charts/hooks/index.d.ts +2 -0
- package/dist/components/charts/hooks/useChartDimensions.d.ts +29 -0
- package/dist/components/charts/hooks/useChartDimensions.js +42 -0
- package/dist/components/charts/shared/ChartTooltip/ChartTooltip.theme.js +1 -1
- package/dist/components/charts/types/chart.types.d.ts +11 -2
- package/dist/components/charts/types/chart.types.js +10 -3
- package/dist/components/core/Avatar/Avatar.js +5 -1
- package/dist/components/core/AvatarGroup/AvatarGroup.js +5 -1
- package/dist/components/core/AvatarGroup/AvatarGroup.theme.js +4 -2
- package/dist/components/core/Badge/Badge.js +1 -1
- package/dist/components/core/Badge/Badge.theme.js +16 -15
- package/dist/components/core/Button/Button.js +1 -1
- package/dist/components/core/Button/Button.theme.js +3 -3
- package/dist/components/core/Calendar/Calendar.theme.js +1 -1
- package/dist/components/core/Card/Card.js +7 -3
- package/dist/components/core/Card/Card.theme.js +3 -3
- package/dist/components/core/Card/Card.types.d.ts +27 -2
- package/dist/components/core/CommandPalette/CommandItem.js +4 -5
- package/dist/components/core/CommandPalette/CommandPalette.js +1 -1
- package/dist/components/core/CommandPalette/CommandPalette.theme.js +11 -13
- package/dist/components/core/CommandPalette/CommandPalette.types.d.ts +0 -2
- package/dist/components/core/ContextMenu/ContextMenu.theme.js +14 -15
- package/dist/components/core/ContextMenu/ContextMenuItem.js +1 -1
- package/dist/components/core/ContextMenu/ContextMenuSubTrigger.js +1 -1
- package/dist/components/core/DotSeparator/DotSeparator.d.ts +3 -0
- package/dist/components/core/DotSeparator/DotSeparator.js +19 -0
- package/dist/components/core/DotSeparator/DotSeparator.theme.d.ts +2 -0
- package/dist/components/core/DotSeparator/DotSeparator.theme.js +10 -0
- package/dist/components/core/DotSeparator/DotSeparator.types.d.ts +25 -0
- package/dist/components/core/DotSeparator/index.d.ts +3 -0
- package/dist/components/core/Dropdown/Dropdown.theme.js +5 -6
- package/dist/components/core/Dropdown/DropdownItem.js +1 -1
- package/dist/components/core/Dropdown/DropdownMenu.js +58 -30
- package/dist/components/core/HeroCard/HeroCard.d.ts +5 -0
- package/dist/components/core/HeroCard/HeroCard.js +99 -0
- package/dist/components/core/HeroCard/HeroCard.theme.d.ts +3 -0
- package/dist/components/core/HeroCard/HeroCard.theme.js +8 -0
- package/dist/components/core/HeroCard/HeroCard.types.d.ts +70 -0
- package/dist/components/core/HeroCard/index.d.ts +4 -0
- package/dist/components/core/Kbd/Kbd.theme.js +1 -1
- package/dist/components/core/MenuItem/MenuItem.js +5 -2
- package/dist/components/core/MenuItem/MenuItem.theme.d.ts +6 -0
- package/dist/components/core/MenuItem/MenuItem.theme.js +19 -16
- package/dist/components/core/MenuItem/MenuItem.types.d.ts +2 -0
- package/dist/components/core/Modal/Modal.d.ts +1 -1
- package/dist/components/core/Modal/Modal.js +2 -7
- package/dist/components/core/Modal/Modal.theme.js +4 -8
- package/dist/components/core/Modal/Modal.types.d.ts +0 -10
- package/dist/components/core/Modal/index.d.ts +1 -1
- package/dist/components/core/ModalStack/ModalStack.d.ts +1 -1
- package/dist/components/core/ModalStack/ModalStack.types.d.ts +1 -2
- package/dist/components/core/ModalStack/ModalStackModal.d.ts +1 -1
- package/dist/components/core/ModalStack/ModalStackModal.js +2 -7
- package/dist/components/core/NavItem/NavItem.js +20 -4
- package/dist/components/core/NavItem/NavItem.theme.js +13 -2
- package/dist/components/core/PageHeading/PageHeading.theme.js +2 -2
- package/dist/components/core/Popover/Popover.theme.js +1 -1
- package/dist/components/core/Popover/Popover.types.d.ts +6 -2
- package/dist/components/core/Popover/PopoverBody.js +10 -3
- package/dist/components/core/ScrollArea/ScrollArea.js +242 -4
- package/dist/components/core/ScrollArea/ScrollArea.types.d.ts +12 -1
- package/dist/components/core/ScrollArea/smooth/SmoothScrollEngine.d.ts +4 -0
- package/dist/components/core/ScrollArea/smooth/SmoothScrollEngine.js +23 -0
- package/dist/components/core/ScrollArea/smooth/useSmoothScroll.js +4 -0
- package/dist/components/core/ScrollArea/smooth/useSmoothScroll.types.d.ts +5 -0
- package/dist/components/core/Segmented/Segmented.theme.js +2 -2
- package/dist/components/core/Sidebar/Sidebar.d.ts +2 -0
- package/dist/components/core/Sidebar/Sidebar.js +15 -7
- package/dist/components/core/Sidebar/Sidebar.types.d.ts +92 -4
- package/dist/components/core/Sidebar/SidebarCard.d.ts +25 -0
- package/dist/components/core/Sidebar/SidebarCard.js +68 -0
- package/dist/components/core/Sidebar/SidebarCard.theme.d.ts +8 -0
- package/dist/components/core/Sidebar/SidebarCard.theme.js +18 -0
- package/dist/components/core/Sidebar/SidebarContent.js +5 -1
- package/dist/components/core/Sidebar/SidebarContext.js +1 -1
- package/dist/components/core/Sidebar/SidebarHeader.js +10 -2
- package/dist/components/core/Sidebar/SidebarLogo.js +38 -3
- package/dist/components/core/Sidebar/SidebarSearch.d.ts +22 -0
- package/dist/components/core/Sidebar/SidebarSearch.js +135 -0
- package/dist/components/core/Sidebar/SidebarToggle.js +1 -1
- package/dist/components/core/Sidebar/SidebarUserProfile.js +2 -2
- package/dist/components/core/Sidebar/index.d.ts +3 -1
- package/dist/components/core/Tag/Tag.js +29 -5
- package/dist/components/core/Tag/Tag.theme.js +13 -8
- package/dist/components/core/Tag/Tag.types.d.ts +7 -0
- package/dist/components/core/Tooltip/Tooltip.js +1 -1
- package/dist/components/core/Tooltip/Tooltip.theme.js +1 -2
- package/dist/components/core/index.d.ts +2 -0
- package/dist/components/core/index.js +6 -0
- package/dist/components/data-display/DescriptionList/DescriptionList.js +23 -7
- package/dist/components/data-display/DescriptionList/DescriptionList.theme.js +10 -3
- package/dist/components/data-display/DescriptionList/DescriptionList.types.d.ts +49 -10
- package/dist/components/data-display/DescriptionList/index.d.ts +1 -1
- package/dist/components/data-display/Feed/Feed.js +28 -5
- package/dist/components/data-display/Feed/Feed.theme.js +1 -1
- package/dist/components/data-display/Feed/Feed.types.d.ts +32 -1
- package/dist/components/data-display/Feed/index.d.ts +1 -1
- package/dist/components/data-display/GanttChart/GanttChart.d.ts +1 -1
- package/dist/components/data-display/GanttChart/GanttChart.js +31 -4
- package/dist/components/data-display/GanttChart/GanttChart.theme.js +19 -17
- package/dist/components/data-display/GanttChart/GanttChart.types.d.ts +19 -0
- package/dist/components/data-display/GanttChart/GanttChart.utils.js +1 -1
- package/dist/components/data-display/GanttChart/GanttChartPanel.d.ts +1 -1
- package/dist/components/data-display/GanttChart/GanttChartPanel.js +3 -3
- package/dist/components/data-display/GanttChart/GanttDependencyArrows.js +7 -4
- package/dist/components/data-display/GanttChart/GanttMilestone.js +5 -5
- package/dist/components/data-display/GanttChart/GanttTablePanel.js +1 -1
- package/dist/components/data-display/GanttChart/GanttTableTaskRow.js +2 -2
- package/dist/components/data-display/GanttChart/GanttTaskBar.js +37 -16
- package/dist/components/data-display/GanttChart/GanttTimelineGrid.js +2 -1
- package/dist/components/data-display/GanttChart/GanttTimelineHeader.js +35 -11
- package/dist/components/data-display/GanttChart/GanttToolbar.js +2 -2
- package/dist/components/data-display/GanttChart/hooks/useGanttDrag.js +3 -2
- package/dist/components/data-display/GanttChart/index.d.ts +1 -1
- package/dist/components/data-display/Metric/Metric.js +8 -8
- package/dist/components/data-display/Metric/Metric.theme.d.ts +3 -2
- package/dist/components/data-display/Metric/Metric.theme.js +50 -68
- package/dist/components/data-display/Metric/Metric.types.d.ts +19 -21
- package/dist/components/data-display/Table/Table.js +2 -2
- package/dist/components/data-display/Table/Table.theme.js +27 -9
- package/dist/components/data-display/Table/Table.types.d.ts +8 -0
- package/dist/components/data-display/Table/TableBody.js +2 -2
- package/dist/components/data-display/Table/TableCell.js +1 -1
- package/dist/components/data-display/Table/TableRow.d.ts +1 -1
- package/dist/components/data-display/Table/TableRow.js +9 -2
- package/dist/components/data-display/Timeline/Timeline.js +27 -5
- package/dist/components/data-display/Timeline/Timeline.theme.d.ts +10 -2
- package/dist/components/data-display/Timeline/Timeline.theme.js +14 -8
- package/dist/components/data-display/Timeline/Timeline.types.d.ts +48 -16
- package/dist/components/data-display/Timeline/Timeline.utils.d.ts +6 -0
- package/dist/components/data-display/Timeline/Timeline.utils.js +11 -0
- package/dist/components/data-display/Timeline/TimelineItem.js +13 -20
- package/dist/components/data-display/Timeline/TimelineMarker.js +10 -8
- package/dist/components/data-display/Timeline/index.d.ts +2 -2
- package/dist/components/effects/3d/index.d.ts +0 -2
- package/dist/components/effects/3d/index.js +0 -1
- package/dist/components/effects/Aurora/Aurora.d.ts +6 -17
- package/dist/components/effects/Aurora/Aurora.js +297 -131
- package/dist/components/effects/Aurora/Aurora.types.d.ts +6 -0
- package/dist/components/effects/DotPattern/DotPattern.js +1 -1
- package/dist/components/effects/Overlay/Overlay.theme.js +1 -2
- package/dist/components/effects/Preloader/Preloader.animations.d.ts +23 -0
- package/dist/components/effects/Preloader/Preloader.animations.js +150 -0
- package/dist/components/effects/Preloader/Preloader.d.ts +3 -0
- package/dist/components/effects/Preloader/Preloader.js +119 -0
- package/dist/components/effects/Preloader/Preloader.types.d.ts +63 -0
- package/dist/components/effects/Preloader/index.d.ts +2 -0
- package/dist/components/effects/ProgressiveBlur/ProgressiveBlur.js +25 -14
- package/dist/components/effects/ProgressiveBlur/ProgressiveBlur.types.d.ts +2 -0
- package/dist/components/effects/TiltCard/TiltCard.d.ts +12 -0
- package/dist/components/effects/TiltCard/TiltCard.glow.d.ts +28 -0
- package/dist/components/effects/TiltCard/TiltCard.glow.js +114 -0
- package/dist/components/effects/TiltCard/TiltCard.js +177 -0
- package/dist/components/effects/{SpotlightBorder/SpotlightBorder.shaders.d.ts → TiltCard/TiltCard.shaders.d.ts} +1 -1
- package/dist/components/effects/{SpotlightBorder/SpotlightBorder.shaders.js → TiltCard/TiltCard.shaders.js} +1 -1
- package/dist/components/effects/TiltCard/TiltCard.types.d.ts +88 -0
- package/dist/components/effects/TiltCard/index.d.ts +2 -0
- package/dist/components/effects/index.d.ts +4 -12
- package/dist/components/effects/index.js +2 -6
- package/dist/components/forms/Checkbox/Checkbox.js +7 -1
- package/dist/components/forms/Combobox/Combobox.js +1 -1
- package/dist/components/forms/Combobox/Combobox.theme.js +2 -4
- package/dist/components/forms/DatePicker/DatePicker.theme.js +11 -18
- package/dist/components/forms/DatePicker/DatePickerTrigger.js +1 -1
- package/dist/components/forms/DateRangePicker/DateRangePicker.theme.js +6 -13
- package/dist/components/forms/DateRangePicker/DateRangePickerTrigger.js +1 -1
- package/dist/components/forms/FileUpload/FileUpload.animations.d.ts +29 -0
- package/dist/components/forms/FileUpload/FileUpload.animations.js +19 -0
- package/dist/components/forms/FileUpload/FileUpload.js +85 -134
- package/dist/components/forms/FileUpload/FileUpload.theme.d.ts +2 -10
- package/dist/components/forms/FileUpload/FileUpload.theme.js +16 -30
- package/dist/components/forms/FileUpload/FileUpload.types.d.ts +26 -10
- package/dist/components/forms/FormLabel/FormLabel.theme.js +1 -1
- package/dist/components/forms/Input/Input.theme.js +13 -10
- package/dist/components/forms/InputCounter/InputCounter.theme.js +1 -1
- package/dist/components/forms/Mention/Mention.js +152 -57
- package/dist/components/forms/Mention/Mention.theme.js +16 -23
- package/dist/components/forms/Mention/Mention.types.d.ts +12 -12
- package/dist/components/forms/Mention/Mention.utils.js +32 -4
- package/dist/components/forms/RichTextEditor/RichTextEditor.js +3 -3
- package/dist/components/forms/RichTextEditor/RichTextEditor.theme.js +5 -5
- package/dist/components/forms/Select/Select.js +2 -2
- package/dist/components/forms/Select/Select.theme.js +3 -3
- package/dist/components/forms/Slider/Slider.theme.js +1 -1
- package/dist/components/forms/Switch/Switch.js +27 -15
- package/dist/components/forms/Switch/Switch.theme.d.ts +36 -6
- package/dist/components/forms/Switch/Switch.theme.js +33 -4
- package/dist/components/forms/Switch/Switch.types.d.ts +12 -2
- package/dist/components/forms/TimePicker/TimePicker.theme.js +1 -2
- package/dist/components/forms/TimePicker/TimePickerContent.js +1 -87
- package/dist/components/forms/TimePicker/TimePickerTrigger.js +1 -1
- package/dist/components/forms/forms.theme.js +21 -16
- package/dist/components/forms/index.d.ts +0 -4
- package/dist/components/forms/index.js +0 -89
- package/dist/components/generative/GenerativeView.d.ts +21 -0
- package/dist/components/generative/GenerativeView.js +116 -0
- package/dist/components/generative/actions.d.ts +26 -0
- package/dist/components/generative/actions.js +51 -0
- package/dist/components/generative/index.d.ts +11 -0
- package/dist/components/generative/index.js +9 -0
- package/dist/components/generative/registry.d.ts +43 -0
- package/dist/components/generative/registry.js +114 -0
- package/dist/components/generative/resolvers.d.ts +35 -0
- package/dist/components/generative/resolvers.js +93 -0
- package/dist/components/generative/schema.generated.d.ts +2 -0
- package/dist/components/generative/schema.generated.js +1639 -0
- package/dist/components/generative/schemaTypes.d.ts +30 -0
- package/dist/components/generative/streaming.d.ts +39 -0
- package/dist/components/generative/streaming.js +283 -0
- package/dist/components/generative/tools.d.ts +21 -0
- package/dist/components/generative/tools.js +54 -0
- package/dist/components/generative/types.d.ts +41 -0
- package/dist/components/generative/useGenerativeStream.d.ts +37 -0
- package/dist/components/generative/useGenerativeStream.js +36 -0
- package/dist/components/generative/validate.d.ts +24 -0
- package/dist/components/generative/validate.js +259 -0
- package/dist/components/layout/AppShell/AppShell.d.ts +10 -0
- package/dist/components/layout/AppShell/AppShell.js +84 -0
- package/dist/components/layout/AppShell/AppShell.theme.d.ts +3 -0
- package/dist/components/layout/AppShell/AppShell.theme.js +42 -0
- package/dist/components/layout/AppShell/AppShell.types.d.ts +127 -0
- package/dist/components/layout/AppShell/AppShellContext.d.ts +14 -0
- package/dist/components/layout/AppShell/AppShellContext.js +19 -0
- package/dist/components/layout/AppShell/AppShellFooter.d.ts +3 -0
- package/dist/components/layout/AppShell/AppShellFooter.js +12 -0
- package/dist/components/layout/AppShell/AppShellHeader.d.ts +3 -0
- package/dist/components/layout/AppShell/AppShellHeader.js +12 -0
- package/dist/components/layout/AppShell/AppShellMain.d.ts +3 -0
- package/dist/components/layout/AppShell/AppShellMain.js +19 -0
- package/dist/components/layout/AppShell/AppShellRightPanel.d.ts +3 -0
- package/dist/components/layout/AppShell/AppShellRightPanel.js +16 -0
- package/dist/components/layout/AppShell/AppShellSidebar.d.ts +3 -0
- package/dist/components/layout/AppShell/AppShellSidebar.js +16 -0
- package/dist/components/layout/AppShell/AppShellTopbar.d.ts +3 -0
- package/dist/components/layout/AppShell/AppShellTopbar.js +12 -0
- package/dist/components/layout/AppShell/index.d.ts +3 -0
- package/dist/components/layout/FormLayout/FormLayout.js +1 -87
- package/dist/components/layout/Grid/Grid.d.ts +3 -0
- package/dist/components/layout/Grid/Grid.js +50 -0
- package/dist/components/layout/Grid/Grid.theme.d.ts +2 -0
- package/dist/components/layout/Grid/Grid.theme.js +35 -0
- package/dist/components/layout/Grid/Grid.types.d.ts +57 -0
- package/dist/components/layout/Grid/index.d.ts +3 -0
- package/dist/components/layout/Section/Section.d.ts +3 -0
- package/dist/components/layout/Section/Section.js +18 -0
- package/dist/components/layout/Section/Section.theme.d.ts +2 -0
- package/dist/components/layout/Section/Section.theme.js +10 -0
- package/dist/components/layout/Section/Section.types.d.ts +34 -0
- package/dist/components/layout/Section/index.d.ts +3 -0
- package/dist/components/layout/Stack/Stack.d.ts +3 -0
- package/dist/components/layout/Stack/Stack.js +19 -0
- package/dist/components/layout/Stack/Stack.theme.d.ts +2 -0
- package/dist/components/layout/Stack/Stack.theme.js +10 -0
- package/dist/components/layout/Stack/Stack.types.d.ts +39 -0
- package/dist/components/layout/Stack/index.d.ts +3 -0
- package/dist/components/layout/index.d.ts +4 -0
- package/dist/components/layout/index.js +8 -0
- package/dist/generative.schema.json +1637 -0
- package/dist/hooks/useSelectPortal.d.ts +10 -2
- package/dist/hooks/useSelectPortal.js +45 -24
- package/dist/index.js +180 -174
- package/dist/registry.json +10205 -0
- package/dist/styles.css +1 -1
- package/dist/tools.json +1731 -0
- package/dist/utils/dateUtils.js +11 -1
- package/package.json +19 -4
- package/src/global.scss +82 -109
- package/src/styles/theme.css +707 -474
- package/dist/bg/1.jpg +0 -0
- package/dist/bg/10.jpg +0 -0
- package/dist/bg/11.jpg +0 -0
- package/dist/bg/14.jpg +0 -0
- package/dist/bg/15.jpg +0 -0
- package/dist/bg/16.jpg +0 -0
- package/dist/bg/17.jpg +0 -0
- package/dist/bg/18.jpg +0 -0
- package/dist/bg/19.jpg +0 -0
- package/dist/bg/2.jpg +0 -0
- package/dist/bg/20.jpg +0 -0
- package/dist/bg/21.jpg +0 -0
- package/dist/bg/22.jpg +0 -0
- package/dist/bg/23.jpg +0 -0
- package/dist/bg/24.jpg +0 -0
- package/dist/bg/3.jpg +0 -0
- package/dist/bg/4.jpg +0 -0
- package/dist/bg/5.jpg +0 -0
- package/dist/bg/6.jpg +0 -0
- package/dist/bg/7.jpg +0 -0
- package/dist/bg/8.jpg +0 -0
- package/dist/bg/9.jpg +0 -0
- package/dist/components/effects/MorphingText/MorphingText.d.ts +0 -17
- package/dist/components/effects/MorphingText/MorphingText.js +0 -125
- package/dist/components/effects/MorphingText/MorphingText.types.d.ts +0 -18
- package/dist/components/effects/MorphingText/index.d.ts +0 -2
- package/dist/components/effects/PageTransition/PageTransition.animations.d.ts +0 -8
- package/dist/components/effects/PageTransition/PageTransition.animations.js +0 -53
- package/dist/components/effects/PageTransition/PageTransition.d.ts +0 -3
- package/dist/components/effects/PageTransition/PageTransition.js +0 -82
- package/dist/components/effects/PageTransition/PageTransition.types.d.ts +0 -15
- package/dist/components/effects/PageTransition/index.d.ts +0 -2
- package/dist/components/effects/ParallaxSection/ParallaxSection.d.ts +0 -26
- package/dist/components/effects/ParallaxSection/ParallaxSection.js +0 -71
- package/dist/components/effects/ParallaxSection/ParallaxSection.types.d.ts +0 -11
- package/dist/components/effects/ParallaxSection/index.d.ts +0 -2
- package/dist/components/effects/Spotlight/Spotlight.d.ts +0 -36
- package/dist/components/effects/Spotlight/Spotlight.js +0 -112
- package/dist/components/effects/Spotlight/Spotlight.types.d.ts +0 -29
- package/dist/components/effects/Spotlight/index.d.ts +0 -2
- package/dist/components/effects/SpotlightBorder/SpotlightBorder.d.ts +0 -18
- package/dist/components/effects/SpotlightBorder/SpotlightBorder.js +0 -213
- package/dist/components/effects/SpotlightBorder/SpotlightBorder.types.d.ts +0 -61
- package/dist/components/effects/SpotlightBorder/index.d.ts +0 -2
- package/dist/components/effects/StickyScroll/StickyScroll.d.ts +0 -30
- package/dist/components/effects/StickyScroll/StickyScroll.js +0 -128
- package/dist/components/effects/StickyScroll/StickyScroll.types.d.ts +0 -19
- package/dist/components/effects/StickyScroll/index.d.ts +0 -2
- package/dist/components/forms/CronInput/CronInput.d.ts +0 -3
- package/dist/components/forms/CronInput/CronInput.js +0 -113
- package/dist/components/forms/CronInput/CronInput.theme.d.ts +0 -6
- package/dist/components/forms/CronInput/CronInput.theme.js +0 -84
- package/dist/components/forms/CronInput/CronInput.types.d.ts +0 -109
- package/dist/components/forms/CronInput/CronInput.utils.d.ts +0 -67
- package/dist/components/forms/CronInput/CronInput.utils.js +0 -505
- package/dist/components/forms/CronInput/index.d.ts +0 -4
- /package/dist/components/effects/{SpotlightBorder/SpotlightBorder.types.js → TiltCard/TiltCard.types.js} +0 -0
|
@@ -13,8 +13,8 @@ import { getDaysBetween, addDays, toDate } from '../../../utils/dateUtils.js';
|
|
|
13
13
|
|
|
14
14
|
const GanttTaskBar = React__default.memo(({ task, group, top }) => {
|
|
15
15
|
var _a;
|
|
16
|
-
const { theme, dayWidth, rangeStart, rowHeight, readonly, readonlyDates, readonlyProgress, onTaskUpdate, onTaskClick, tasks, } = useGanttContext();
|
|
17
|
-
const { hoveredTaskId, setHoveredTaskId, focusedTaskId, setActiveDrag } = useGanttInteraction();
|
|
16
|
+
const { theme, dayWidth, rangeStart, rowHeight, readonly, readonlyDates, readonlyProgress, onTaskUpdate, onTaskClick, tasks, showTaskLabels, } = useGanttContext();
|
|
17
|
+
const { hoveredTaskId, setHoveredTaskId, focusedTaskId, setFocusedTaskId, setActiveDrag, } = useGanttInteraction();
|
|
18
18
|
const [tooltipPos, setTooltipPos] = useState(null);
|
|
19
19
|
const offset = getDayOffset(task.startDate, rangeStart);
|
|
20
20
|
const span = getDaysBetween(task.startDate, task.endDate);
|
|
@@ -26,6 +26,13 @@ const GanttTaskBar = React__default.memo(({ task, group, top }) => {
|
|
|
26
26
|
const canDragProgress = !readonly && !readonlyProgress && !!onTaskUpdate;
|
|
27
27
|
const expectedProgress = calculateExpectedProgress(task.startDate, task.endDate);
|
|
28
28
|
const isBehindSchedule = !task.completed && task.progress < expectedProgress;
|
|
29
|
+
const updateActiveDrag = useCallback((isDragging, deltaX, mode) => {
|
|
30
|
+
if (isDragging) {
|
|
31
|
+
setTooltipPos(null);
|
|
32
|
+
setHoveredTaskId(null);
|
|
33
|
+
}
|
|
34
|
+
setActiveDrag(isDragging ? { taskId: task.id, mode, deltaX } : null);
|
|
35
|
+
}, [setActiveDrag, setHoveredTaskId, task.id]);
|
|
29
36
|
// ----- Drag: Move -----
|
|
30
37
|
const handleMoveDragEnd = useCallback((result) => {
|
|
31
38
|
if (!onTaskUpdate || result.daysDelta === 0)
|
|
@@ -45,8 +52,8 @@ const GanttTaskBar = React__default.memo(({ task, group, top }) => {
|
|
|
45
52
|
disabled: !canDragDates,
|
|
46
53
|
onDragEnd: handleMoveDragEnd,
|
|
47
54
|
onDragStateChange: useCallback((isDragging, deltaX) => {
|
|
48
|
-
|
|
49
|
-
}, [
|
|
55
|
+
updateActiveDrag(isDragging, deltaX, "move");
|
|
56
|
+
}, [updateActiveDrag]),
|
|
50
57
|
});
|
|
51
58
|
// ----- Drag: Resize left -----
|
|
52
59
|
const handleResizeLeftEnd = useCallback((result) => {
|
|
@@ -66,10 +73,8 @@ const GanttTaskBar = React__default.memo(({ task, group, top }) => {
|
|
|
66
73
|
disabled: !canDragDates,
|
|
67
74
|
onDragEnd: handleResizeLeftEnd,
|
|
68
75
|
onDragStateChange: useCallback((isDragging, deltaX) => {
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
: null);
|
|
72
|
-
}, [setActiveDrag, task.id]),
|
|
76
|
+
updateActiveDrag(isDragging, deltaX, "resize-left");
|
|
77
|
+
}, [updateActiveDrag]),
|
|
73
78
|
});
|
|
74
79
|
// ----- Drag: Resize right -----
|
|
75
80
|
const handleResizeRightEnd = useCallback((result) => {
|
|
@@ -89,20 +94,20 @@ const GanttTaskBar = React__default.memo(({ task, group, top }) => {
|
|
|
89
94
|
disabled: !canDragDates,
|
|
90
95
|
onDragEnd: handleResizeRightEnd,
|
|
91
96
|
onDragStateChange: useCallback((isDragging, deltaX) => {
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
: null);
|
|
95
|
-
}, [setActiveDrag, task.id]),
|
|
97
|
+
updateActiveDrag(isDragging, deltaX, "resize-right");
|
|
98
|
+
}, [updateActiveDrag]),
|
|
96
99
|
});
|
|
97
100
|
// ----- Drag: Progress -----
|
|
98
101
|
const handleProgressDragEnd = useCallback((result) => {
|
|
99
102
|
if (!onTaskUpdate)
|
|
100
103
|
return;
|
|
104
|
+
if (result.newProgress === task.progress)
|
|
105
|
+
return;
|
|
101
106
|
onTaskUpdate(task.id, {
|
|
102
107
|
progress: result.newProgress,
|
|
103
108
|
completed: result.newProgress === 100,
|
|
104
109
|
});
|
|
105
|
-
}, [onTaskUpdate, task.id]);
|
|
110
|
+
}, [onTaskUpdate, task.id, task.progress]);
|
|
106
111
|
const progressDrag = useGanttDrag({
|
|
107
112
|
dayWidth,
|
|
108
113
|
mode: "progress",
|
|
@@ -110,6 +115,12 @@ const GanttTaskBar = React__default.memo(({ task, group, top }) => {
|
|
|
110
115
|
originalProgress: task.progress,
|
|
111
116
|
disabled: !canDragProgress,
|
|
112
117
|
onDragEnd: handleProgressDragEnd,
|
|
118
|
+
onDragStateChange: useCallback((isDragging) => {
|
|
119
|
+
if (isDragging) {
|
|
120
|
+
setTooltipPos(null);
|
|
121
|
+
setHoveredTaskId(null);
|
|
122
|
+
}
|
|
123
|
+
}, [setHoveredTaskId]),
|
|
113
124
|
});
|
|
114
125
|
const anyDragging = moveDrag.isDragging ||
|
|
115
126
|
resizeLeftDrag.isDragging ||
|
|
@@ -143,6 +154,10 @@ const GanttTaskBar = React__default.memo(({ task, group, top }) => {
|
|
|
143
154
|
displayProgress = progressDrag.dragProgress;
|
|
144
155
|
}
|
|
145
156
|
const isNarrow = visualWidth <= 80;
|
|
157
|
+
const showInsideLabel = showTaskLabels === "inside" ||
|
|
158
|
+
(showTaskLabels === "auto" && !isNarrow);
|
|
159
|
+
const showOutsideLabel = showTaskLabels === "outside" ||
|
|
160
|
+
(showTaskLabels === "auto" && isNarrow);
|
|
146
161
|
// ----- Hover highlighting (dependency connections) -----
|
|
147
162
|
const isHighlighted = useMemo(() => {
|
|
148
163
|
var _a, _b, _c;
|
|
@@ -163,6 +178,12 @@ const GanttTaskBar = React__default.memo(({ task, group, top }) => {
|
|
|
163
178
|
return;
|
|
164
179
|
onTaskClick === null || onTaskClick === void 0 ? void 0 : onTaskClick(task, e);
|
|
165
180
|
};
|
|
181
|
+
const handleKeyDown = (e) => {
|
|
182
|
+
if ((e.key === "Enter" || e.key === " ") && onTaskClick) {
|
|
183
|
+
e.preventDefault();
|
|
184
|
+
onTaskClick(task, e);
|
|
185
|
+
}
|
|
186
|
+
};
|
|
166
187
|
// ----- Tooltip -----
|
|
167
188
|
const tooltipContent = (jsxs("div", { className: "text-sm space-y-2 min-w-[180px]", children: [jsx("div", { className: "font-semibold text-base", children: task.title }), jsxs("div", { className: "flex items-center gap-1.5 opacity-70", children: [jsx("span", { className: "inline-block size-2 rounded-full shrink-0", style: { backgroundColor: group.color } }), group.title] }), jsxs("div", { className: "space-y-0.5", children: [jsxs("div", { children: [formatDateShort(task.startDate), " \u2014 ", formatDateShort(task.endDate)] }), jsx("div", { className: "opacity-70", children: formatDuration(task.startDate, task.endDate) })] }), jsxs("div", { children: [jsxs("div", { className: "flex justify-between mb-1", children: [jsx("span", { children: "Progress" }), jsxs("span", { className: "font-medium", children: [task.progress, "%"] })] }), jsx("div", { className: "h-1.5 rounded-full bg-white/20 overflow-hidden", children: jsx("div", { className: "h-full rounded-full", style: {
|
|
168
189
|
width: `${task.progress}%`,
|
|
@@ -183,12 +204,12 @@ const GanttTaskBar = React__default.memo(({ task, group, top }) => {
|
|
|
183
204
|
}, onMouseLeave: () => {
|
|
184
205
|
setTooltipPos(null);
|
|
185
206
|
setHoveredTaskId(null);
|
|
186
|
-
}, onClick: onTaskClick ? handleClick : undefined, onPointerDown: canDragDates ? moveDrag.handlePointerDown : undefined, role: "button", "aria-label": task.title, children: [jsxs(motion.div, { className: cn(theme.taskBarStyle, "group", task.completed && "opacity-60", canDragDates && !anyDragging && "cursor-grab", anyDragging && "cursor-grabbing", !canDragDates && "cursor-default", isHighlighted && "ring-2 ring-white/60", isFaded && "opacity-40", isFocused && "ring-2 ring-[var(--color-primary)] ring-offset-
|
|
207
|
+
}, onClick: onTaskClick ? handleClick : undefined, onPointerDown: canDragDates ? moveDrag.handlePointerDown : undefined, onFocus: () => setFocusedTaskId(task.id), onBlur: () => setFocusedTaskId(null), onKeyDown: handleKeyDown, role: onTaskClick ? "button" : "img", tabIndex: onTaskClick ? 0 : undefined, "aria-label": task.title, children: [jsxs(motion.div, { className: cn(theme.taskBarStyle, "group", task.completed && "opacity-60", canDragDates && !anyDragging && "cursor-grab", anyDragging && "cursor-grabbing", !canDragDates && "cursor-default", isHighlighted && "ring-2 ring-white/60", isFaded && "opacity-40", isFocused && "ring-2 ring-[var(--color-primary)] ring-offset-2 ring-offset-[var(--color-background)]"), style: {
|
|
187
208
|
width: visualWidth,
|
|
188
209
|
height: barHeight,
|
|
189
210
|
backgroundColor: barColor,
|
|
190
211
|
border: "1px solid rgba(0,0,0,0.12)",
|
|
191
|
-
borderRadius:
|
|
212
|
+
borderRadius: 999,
|
|
192
213
|
transformOrigin: "left center",
|
|
193
214
|
transition: anyDragging ? "none" : undefined,
|
|
194
215
|
}, variants: taskBarVariants, initial: "hidden", animate: "visible", whileHover: anyDragging ? undefined : { filter: "brightness(0.96)" }, children: [jsx("div", { className: "absolute inset-0 rounded-full", style: {
|
|
@@ -197,7 +218,7 @@ const GanttTaskBar = React__default.memo(({ task, group, top }) => {
|
|
|
197
218
|
} }), isBehindSchedule && (jsx("div", { className: "absolute top-0 bottom-0 w-px", style: {
|
|
198
219
|
left: `${expectedProgress}%`,
|
|
199
220
|
borderLeft: "2px dashed rgba(255,255,255,0.5)",
|
|
200
|
-
} })), task.completed && (jsx("div", { className: "absolute top-1/2 left-2 right-2 h-px bg-white/60", style: { transform: "translateY(-0.5px)" } })), canDragDates && (jsx("div", { className: "absolute left-0 top-0 bottom-0 w-
|
|
221
|
+
} })), task.completed && (jsx("div", { className: "absolute top-1/2 left-2 right-2 h-px bg-white/60", style: { transform: "translateY(-0.5px)" } })), canDragDates && (jsx("div", { className: "absolute left-0 top-0 bottom-0 z-20 w-3 cursor-ew-resize rounded-l-full opacity-0 transition-opacity hover:bg-black/15 group-hover:opacity-100", onPointerDown: resizeLeftDrag.handlePointerDown, "aria-hidden": "true" })), canDragDates && (jsx("div", { className: "absolute right-0 top-0 bottom-0 z-20 w-3 cursor-ew-resize rounded-r-full opacity-0 transition-opacity hover:bg-black/15 group-hover:opacity-100", onPointerDown: resizeRightDrag.handlePointerDown, "aria-hidden": "true" })), canDragProgress && !isNarrow && (jsx("div", { className: "absolute top-0 bottom-0 z-20 flex w-4 cursor-ew-resize items-center justify-center opacity-0 transition-opacity group-hover:opacity-100", style: { left: `calc(${displayProgress}% - 6px)` }, onPointerDown: progressDrag.handlePointerDown, "aria-hidden": "true", children: jsx("div", { className: "h-3.5 w-0.5 rounded-full bg-white/90 shadow" }) })), showInsideLabel && (jsxs("div", { className: "relative z-10 flex min-w-0 items-center gap-1.5 px-1.5 pointer-events-none", children: [task.assignee && (jsx(Avatar, { src: task.assignee.avatar, name: task.assignee.name, size: "xs" })), jsx("span", { className: "truncate text-sm text-[var(--color-text-inverse)] font-medium", children: task.title })] }))] }), showOutsideLabel && (jsx("span", { className: cn(theme.taskLabelOutsideStyle), style: {
|
|
201
222
|
left: visualWidth + 6,
|
|
202
223
|
top: barHeight / 2,
|
|
203
224
|
transform: "translateY(-50%)",
|
|
@@ -9,6 +9,7 @@ const GanttTimelineGrid = ({ days, height, }) => {
|
|
|
9
9
|
const totalWidth = days.length * dayWidth;
|
|
10
10
|
const showVertical = gridLines === "both" || gridLines === "vertical";
|
|
11
11
|
const showHorizontal = gridLines === "both" || gridLines === "horizontal";
|
|
12
|
+
const shouldDrawVerticalLine = (day) => dayWidth >= 12 || day.getDate() === 1 || day.getDay() === 1;
|
|
12
13
|
// Build a dateKey -> holiday lookup
|
|
13
14
|
const holidayMap = useMemo(() => {
|
|
14
15
|
const map = new Map();
|
|
@@ -23,7 +24,7 @@ const GanttTimelineGrid = ({ days, height, }) => {
|
|
|
23
24
|
var _a, _b;
|
|
24
25
|
const key = `${day.getFullYear()}-${day.getMonth()}-${day.getDate()}`;
|
|
25
26
|
const holiday = holidayMap.get(key);
|
|
26
|
-
return (jsx("div", { className: cn("absolute top-0 bottom-0", showVertical && theme.gridLineStyle, isWeekend(day) && theme.weekendStyle), style: { left: i * dayWidth, width: dayWidth }, children: holiday && (jsxs(Fragment, { children: [jsx("div", { className: "absolute inset-0", style: {
|
|
27
|
+
return (jsx("div", { className: cn("absolute top-0 bottom-0", showVertical && shouldDrawVerticalLine(day) && theme.gridLineStyle, isWeekend(day) && theme.weekendStyle), style: { left: i * dayWidth, width: dayWidth }, children: holiday && (jsxs(Fragment, { children: [jsx("div", { className: "absolute inset-0", style: {
|
|
27
28
|
backgroundColor: (_a = holiday.color) !== null && _a !== void 0 ? _a : "var(--color-warning-100, rgba(245, 158, 11, 0.08))",
|
|
28
29
|
} }), jsx("span", { className: "absolute bottom-1 left-1/2 -translate-x-1/2 text-[8px] whitespace-nowrap opacity-60", style: { color: (_b = holiday.color) !== null && _b !== void 0 ? _b : "var(--color-warning, #F59E0B)" }, children: holiday.label })] })) }, i));
|
|
29
30
|
}), showHorizontal &&
|
|
@@ -2,38 +2,62 @@ import { jsxs, jsx } from 'react/jsx-runtime';
|
|
|
2
2
|
import { cn } from '../../../utils/cn.js';
|
|
3
3
|
import { useGanttContext } from './GanttChart.js';
|
|
4
4
|
import { formatDayLabel } from './GanttChart.utils.js';
|
|
5
|
-
import { isSameDay, isWeekend } from '../../../utils/dateUtils.js';
|
|
5
|
+
import { isSameDay, isWeekend, getWeekNumber } from '../../../utils/dateUtils.js';
|
|
6
6
|
|
|
7
7
|
function getDayLabel(day, zoom) {
|
|
8
8
|
switch (zoom) {
|
|
9
9
|
case "day":
|
|
10
10
|
return formatDayLabel(day, zoom);
|
|
11
11
|
case "week":
|
|
12
|
-
|
|
13
|
-
return day.getDay() === 1 ? `${day.getDate()}` : "";
|
|
12
|
+
return day.getDay() === 1 ? `W${getWeekNumber(day)}` : "";
|
|
14
13
|
case "quarter":
|
|
15
|
-
// Show day number on 1st, 8th, 15th, 22nd
|
|
16
14
|
return [1, 8, 15, 22].includes(day.getDate())
|
|
17
15
|
? `${day.getDate()}`
|
|
18
16
|
: "";
|
|
19
17
|
case "month":
|
|
20
|
-
// Show day number on 1st and 15th
|
|
21
|
-
return day.getDate() === 1 || day.getDate() === 15
|
|
22
|
-
? `${day.getDate()}`
|
|
23
|
-
: "";
|
|
24
|
-
case "year":
|
|
25
|
-
// Show only on 1st of each month
|
|
26
18
|
return day.getDate() === 1
|
|
27
19
|
? day.toLocaleDateString("en-US", { month: "short" })
|
|
28
20
|
: "";
|
|
21
|
+
case "year":
|
|
22
|
+
return day.getDate() === 1 && day.getMonth() === 0
|
|
23
|
+
? `${day.getFullYear()}`
|
|
24
|
+
: "";
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
function getHeaderSpans(days, monthSpans, zoom) {
|
|
28
|
+
if (zoom !== "month" && zoom !== "year") {
|
|
29
|
+
return monthSpans;
|
|
30
|
+
}
|
|
31
|
+
const spans = [];
|
|
32
|
+
let currentLabel = "";
|
|
33
|
+
let startIndex = 0;
|
|
34
|
+
days.forEach((day, index) => {
|
|
35
|
+
const label = zoom === "year"
|
|
36
|
+
? `${day.getFullYear()}`
|
|
37
|
+
: day.toLocaleDateString("en-US", { year: "numeric" });
|
|
38
|
+
if (index === 0) {
|
|
39
|
+
currentLabel = label;
|
|
40
|
+
startIndex = 0;
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
if (label !== currentLabel) {
|
|
44
|
+
spans.push({ label: currentLabel, startIndex, span: index - startIndex });
|
|
45
|
+
currentLabel = label;
|
|
46
|
+
startIndex = index;
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
if (days.length > 0) {
|
|
50
|
+
spans.push({ label: currentLabel, startIndex, span: days.length - startIndex });
|
|
29
51
|
}
|
|
52
|
+
return spans;
|
|
30
53
|
}
|
|
31
54
|
const GanttTimelineHeader = ({ days, monthSpans, }) => {
|
|
32
55
|
const { theme, dayWidth, zoom } = useGanttContext();
|
|
33
56
|
const totalWidth = days.length * dayWidth;
|
|
57
|
+
const headerSpans = getHeaderSpans(days, monthSpans, zoom);
|
|
34
58
|
const today = new Date();
|
|
35
59
|
today.setHours(0, 0, 0, 0);
|
|
36
|
-
return (jsxs("div", { className: cn(theme.timelineHeaderStyle), style: { width: totalWidth }, children: [jsx("div", { className: "flex", style: { height: 28 }, children:
|
|
60
|
+
return (jsxs("div", { className: cn(theme.timelineHeaderStyle), style: { width: totalWidth }, children: [jsx("div", { className: "flex", style: { height: 28 }, children: headerSpans.map((span) => (jsx("div", { className: cn(theme.timelineMonthStyle), style: { width: span.span * dayWidth }, children: span.label }, `${span.label}-${span.startIndex}`))) }), jsx("div", { className: "flex", style: { height: 28 }, children: days.map((day, i) => {
|
|
37
61
|
const isToday = isSameDay(day, today);
|
|
38
62
|
const weekend = isWeekend(day);
|
|
39
63
|
return (jsx("div", { className: cn(theme.timelineDayStyle, weekend && "bg-[var(--color-background-secondary)]/50", isToday && "font-semibold text-[var(--color-primary)]"), style: { width: dayWidth }, children: getDayLabel(day, zoom) }, i));
|
|
@@ -15,7 +15,7 @@ const ZOOM_OPTIONS = [
|
|
|
15
15
|
{ value: "year", label: "Year" },
|
|
16
16
|
];
|
|
17
17
|
const GanttToolbar = () => {
|
|
18
|
-
const { theme, zoom, setZoom, hideCompleted, setHideCompleted, onGroupAdd, todayOffset, dayWidth, readonly, } = useGanttContext();
|
|
18
|
+
const { theme, zoom, setZoom, hideCompleted, setHideCompleted, onGroupAdd, todayOffset, dayWidth, readonly, toolbar, } = useGanttContext();
|
|
19
19
|
const handleScrollToToday = () => {
|
|
20
20
|
const container = document.querySelector("[data-gantt-chart-scroll]");
|
|
21
21
|
if (!container || todayOffset === null)
|
|
@@ -23,7 +23,7 @@ const GanttToolbar = () => {
|
|
|
23
23
|
const targetScroll = todayOffset * dayWidth - container.clientWidth / 2;
|
|
24
24
|
container.scrollTo({ left: targetScroll, behavior: "smooth" });
|
|
25
25
|
};
|
|
26
|
-
return (jsxs("div", { className: cn(theme.toolbarStyle), children: [jsxs("div", { className: "flex items-center gap-
|
|
26
|
+
return (jsxs("div", { className: cn(theme.toolbarStyle), children: [jsxs("div", { className: "flex min-w-0 flex-wrap items-center gap-2", children: [toolbar.today && todayOffset !== null && (jsxs(Button, { variant: "outline", color: "neutral", size: "sm", onClick: handleScrollToToday, children: [jsx(CalendarIcon, { className: "size-4" }), "Today"] })), toolbar.zoom && (jsx(Segmented, { value: zoom, onChange: (val) => setZoom(val), size: "sm", "aria-label": "Gantt zoom", className: "max-w-full overflow-x-auto", children: ZOOM_OPTIONS.map((opt) => (jsx(Segmented.Item, { value: opt.value, children: opt.label }, opt.value))) })), toolbar.hideCompleted && (jsx(Checkbox, { id: "gantt-hide-completed", name: "hideCompleted", value: "hideCompleted", checked: hideCompleted, onChange: (checked) => setHideCompleted(checked), label: "Hide completed", size: "sm" }))] }), jsx("div", { className: "flex items-center gap-2", children: toolbar.addGroup && onGroupAdd && !readonly && (jsxs(Button, { variant: "soft", size: "sm", onClick: onGroupAdd, children: [jsx(PlusIcon, { className: "size-3.5" }), "Add group"] })) })] }));
|
|
27
27
|
};
|
|
28
28
|
|
|
29
29
|
export { GanttToolbar };
|
|
@@ -34,7 +34,7 @@ function useGanttDrag({ dayWidth, mode, barWidthPx, originalProgress, disabled =
|
|
|
34
34
|
cancelledRef.current = false;
|
|
35
35
|
didDragRef.current = false;
|
|
36
36
|
const onPointerMove = (ev) => {
|
|
37
|
-
var _a;
|
|
37
|
+
var _a, _b;
|
|
38
38
|
if (cancelledRef.current)
|
|
39
39
|
return;
|
|
40
40
|
const rawDelta = ev.clientX - startXRef.current;
|
|
@@ -52,12 +52,13 @@ function useGanttDrag({ dayWidth, mode, barWidthPx, originalProgress, disabled =
|
|
|
52
52
|
const newProgress = Math.round(Math.max(0, Math.min(100, originalProgress + progressDelta)));
|
|
53
53
|
setDragProgress(newProgress);
|
|
54
54
|
setDragDeltaX(rawDelta);
|
|
55
|
+
(_a = onDragStateChangeRef.current) === null || _a === void 0 ? void 0 : _a.call(onDragStateChangeRef, true, rawDelta);
|
|
55
56
|
}
|
|
56
57
|
else {
|
|
57
58
|
// Move/resize: snap to day grid
|
|
58
59
|
const snappedDelta = Math.round(rawDelta / dayWidth) * dayWidth;
|
|
59
60
|
setDragDeltaX(snappedDelta);
|
|
60
|
-
(
|
|
61
|
+
(_b = onDragStateChangeRef.current) === null || _b === void 0 ? void 0 : _b.call(onDragStateChangeRef, true, snappedDelta);
|
|
61
62
|
}
|
|
62
63
|
};
|
|
63
64
|
const onPointerUp = () => {
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export { GanttChart } from "./GanttChart";
|
|
2
|
-
export type { GanttChartProps, GanttTask, GanttGroup, GanttColumn, GanttZoom, GanttHoliday, GanttChartThemeOverrides, } from "./GanttChart.types";
|
|
2
|
+
export type { GanttChartProps, GanttTask, GanttGroup, GanttColumn, GanttZoom, GanttTaskLabelMode, GanttToolbarOptions, GanttHoliday, GanttChartThemeOverrides, } from "./GanttChart.types";
|
|
3
3
|
export { ganttChartTheme } from "./GanttChart.theme";
|
|
@@ -2,18 +2,18 @@ import { jsx, jsxs } from 'react/jsx-runtime';
|
|
|
2
2
|
import React__default from 'react';
|
|
3
3
|
import { cn } from '../../../utils/cn.js';
|
|
4
4
|
import { metricTheme } from './Metric.theme.js';
|
|
5
|
+
import { Badge } from '../../core/Badge/Badge.js';
|
|
6
|
+
import { Card } from '../../core/Card/Card.js';
|
|
5
7
|
import { ArrowTrendingUpIcon, ArrowTrendingDownIcon } from '@heroicons/react/24/outline';
|
|
6
8
|
|
|
7
9
|
const Metric = React__default.forwardRef(({ value, label, subtitle, trendValue, trendDirection = "up", trendChart, size = "md", variant = "filled", color = "primary", icon, className, ...props }, ref) => {
|
|
8
|
-
|
|
9
|
-
const trendIcon = trendDirection === "up" ? (jsx(ArrowTrendingUpIcon, { className: "size-3.5", strokeWidth: 2.5 })) : (jsx(ArrowTrendingDownIcon, { className: "size-3.5", strokeWidth: 2.5 }));
|
|
10
|
-
const sizeStyles = metricTheme.sizes[size];
|
|
10
|
+
const trendIcon = trendDirection === "up" ? (jsx(ArrowTrendingUpIcon, { className: "size-3", strokeWidth: 2 })) : (jsx(ArrowTrendingDownIcon, { className: "size-3", strokeWidth: 2 }));
|
|
11
11
|
const variantStyles = metricTheme.variants[variant];
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
12
|
+
// Ghost has no surface, so it renders flush (no inset) to align with
|
|
13
|
+
// surrounding content; filled/glass keep their size-based content padding.
|
|
14
|
+
const contentPadding = variant === "ghost" ? "p-0" : metricTheme.contentPaddingSizes[size];
|
|
15
|
+
const iconStyles = cn(metricTheme.iconColors[color], variant === "glass" && metricTheme.iconGlassShadows[color]);
|
|
16
|
+
return (jsx(Card, { ref: ref, className: cn(metricTheme.baseStyle, variantStyles, className), "data-size": size, ...props, children: jsxs("div", { className: "flex flex-col gap-3 ", children: [jsxs("div", { className: cn("flex items-start gap-3", contentPadding), children: [icon && (jsx("div", { className: cn(metricTheme.iconContainerStyle, metricTheme.iconContainerVariants[variant], iconStyles, metricTheme.iconContainerSizes[size]), children: icon })), jsxs("div", { className: "flex flex-col flex-1", children: [typeof label === 'string' ? (jsx("div", { className: cn(metricTheme.labelStyle, metricTheme.labelSizes[size], icon && cn("mb-0 flex items-center", metricTheme.labelIconAlignSizes[size])), children: label })) : label, jsxs("div", { className: "flex items-center gap-2", children: [jsx("div", { className: cn(metricTheme.valueStyle, metricTheme.valueSizes[size]), children: value }), trendValue && (typeof trendValue === 'string' ? (jsx(Badge, { color: trendDirection === "up" ? "success" : "danger", variant: "soft", size: size === "lg" ? "md" : "sm", iconStart: trendIcon, pill: true, children: trendValue })) : trendValue)] }), subtitle && (typeof subtitle === 'string' ? (jsx("div", { className: cn(metricTheme.subtitleStyle, metricTheme.subtitleSizes[size]), children: subtitle })) : subtitle)] })] }), trendChart && (jsx("div", { className: "w-full h-12 flex-shrink-0 -mt-4", children: trendChart }))] }) }));
|
|
17
17
|
});
|
|
18
18
|
Metric.displayName = "Metric";
|
|
19
19
|
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { MetricTheme } from "./Metric.types";
|
|
2
2
|
/**
|
|
3
|
-
* Default theme for the Metric component
|
|
4
|
-
*
|
|
3
|
+
* Default theme for the Metric component.
|
|
4
|
+
* Flat, sub-component-organized structure (Tabs gold standard): one
|
|
5
|
+
* Record<Size, string> per sub-element, CSS variables for all theming.
|
|
5
6
|
*/
|
|
6
7
|
export declare const metricTheme: MetricTheme;
|
|
@@ -1,82 +1,64 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Default theme for the Metric component
|
|
3
|
-
*
|
|
2
|
+
* Default theme for the Metric component.
|
|
3
|
+
* Flat, sub-component-organized structure (Tabs gold standard): one
|
|
4
|
+
* Record<Size, string> per sub-element, CSS variables for all theming.
|
|
4
5
|
*/
|
|
5
6
|
const metricTheme = {
|
|
6
|
-
// Base container
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
// Base container (shared across all variants). Radius + overflow + resting
|
|
8
|
+
// surface come from the Card shell Metric renders into (see Metric.tsx).
|
|
9
|
+
baseStyle: "transition-colors duration-200",
|
|
10
|
+
// Visual style variants — container surface + structure.
|
|
11
|
+
// `filled` adds nothing: it inherits the Card shell's --color-surface-raised.
|
|
12
|
+
// `ghost`/`glass` clear that fill (`!` beats Card's bg utility regardless of
|
|
13
|
+
// source order) so they sit transparent / let the glass gradient read.
|
|
9
14
|
variants: {
|
|
15
|
+
filled: "",
|
|
16
|
+
ghost: "!bg-transparent overflow-visible",
|
|
17
|
+
glass: "glass-effect !bg-transparent",
|
|
18
|
+
},
|
|
19
|
+
// Icon chip base per variant — classes shared across all colors of that variant
|
|
20
|
+
iconContainerVariants: {
|
|
10
21
|
filled: "border border-[var(--color-border)]",
|
|
11
|
-
|
|
22
|
+
ghost: "border border-[var(--color-border)] bg-[var(--color-surface-raised)]/50 shadow-real-lg",
|
|
23
|
+
glass: "glass-effect-2 !ring-0",
|
|
12
24
|
},
|
|
13
|
-
//
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
25
|
+
// Icon tint per semantic color — shared by every variant (the one thing color drives)
|
|
26
|
+
iconColors: {
|
|
27
|
+
neutral: "text-[var(--color-text-primary)]",
|
|
28
|
+
primary: "text-[var(--color-primary)] dark:text-[var(--color-primary-400)]",
|
|
29
|
+
secondary: "text-[var(--color-secondary)] dark:text-[var(--color-secondary-400)]",
|
|
30
|
+
success: "text-[var(--color-success)] dark:text-[var(--color-success-400)]",
|
|
31
|
+
warning: "text-[var(--color-warning)] dark:text-[var(--color-warning-400)]",
|
|
32
|
+
danger: "text-[var(--color-danger)] dark:text-[var(--color-danger-400)]",
|
|
17
33
|
},
|
|
18
|
-
//
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
"dark:bg-[var(--color-background-secondary)]",
|
|
27
|
-
success: "bg-white text-[var(--color-success)] border border-[var(--color-border)] " +
|
|
28
|
-
"dark:bg-[var(--color-background-secondary)]",
|
|
29
|
-
warning: "bg-white text-[var(--color-warning)] border border-[var(--color-border)] " +
|
|
30
|
-
"dark:bg-[var(--color-background-secondary)]",
|
|
31
|
-
danger: "bg-white text-[var(--color-danger)] border border-[var(--color-border)] " +
|
|
32
|
-
"dark:bg-[var(--color-background-secondary)]",
|
|
33
|
-
},
|
|
34
|
-
glass: {
|
|
35
|
-
neutral: "glass-effect-1 !ring-0 text-[var(--color-text-primary)]",
|
|
36
|
-
primary: "glass-effect-2 !ring-0 shadow-lg shadow-blue-500/10 text-[var(--color-primary)] " +
|
|
37
|
-
"dark:text-[var(--color-primary-400)]",
|
|
38
|
-
secondary: "glass-effect-2 !ring-0 shadow-lg shadow-gray-500/10 text-[var(--color-secondary)] " +
|
|
39
|
-
"dark:text-[var(--color-secondary-400)]",
|
|
40
|
-
success: "glass-effect-2 !ring-0 shadow-lg shadow-green-500/10 text-[var(--color-success)] " +
|
|
41
|
-
"dark:text-[var(--color-success-400)]",
|
|
42
|
-
warning: "glass-effect-2 !ring-0 shadow-lg shadow-yellow-500/10 text-[var(--color-warning)] " +
|
|
43
|
-
"dark:text-[var(--color-warning-400)]",
|
|
44
|
-
danger: "glass-effect-2 !ring-0 shadow-lg shadow-rose-500/10 text-[var(--color-danger)] " +
|
|
45
|
-
"dark:text-[var(--color-danger-400)]",
|
|
46
|
-
},
|
|
34
|
+
// Glass-only colored glow per semantic color (neutral stays shadowless)
|
|
35
|
+
iconGlassShadows: {
|
|
36
|
+
neutral: "",
|
|
37
|
+
primary: "shadow-lg shadow-blue-500/10",
|
|
38
|
+
secondary: "shadow-lg shadow-gray-500/10",
|
|
39
|
+
success: "shadow-lg shadow-green-500/10",
|
|
40
|
+
warning: "shadow-lg shadow-yellow-500/10",
|
|
41
|
+
danger: "shadow-lg shadow-rose-500/10",
|
|
47
42
|
},
|
|
48
|
-
// Size variants
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
container: "", // Padding moved to content section
|
|
60
|
-
contentPadding: "p-4",
|
|
61
|
-
iconContainer: "size-14",
|
|
62
|
-
label: "text-sm",
|
|
63
|
-
value: "text-2xl",
|
|
64
|
-
subtitle: "text-xs mt-0.5",
|
|
65
|
-
},
|
|
66
|
-
lg: {
|
|
67
|
-
container: "", // Padding moved to content section
|
|
68
|
-
contentPadding: "p-5",
|
|
69
|
-
iconContainer: "size-16",
|
|
70
|
-
label: "text-base",
|
|
71
|
-
value: "text-3xl",
|
|
72
|
-
subtitle: "text-sm mt-1",
|
|
73
|
-
},
|
|
43
|
+
// Size variants — one Record<Size, string> per sub-element
|
|
44
|
+
contentPaddingSizes: { sm: "p-3", md: "p-4", lg: "p-5" },
|
|
45
|
+
iconContainerSizes: { sm: "size-8", md: "size-10", lg: "size-12" },
|
|
46
|
+
// Heights mirror iconContainerSizes — with an icon, the label box spans the
|
|
47
|
+
// chip's height and centers its text against it (mb-3 spacing is dropped;
|
|
48
|
+
// the centered box provides the gap to the value instead)
|
|
49
|
+
labelIconAlignSizes: { sm: "h-8", md: "h-10", lg: "h-10" },
|
|
50
|
+
labelSizes: {
|
|
51
|
+
sm: "text-xs font-medium tracking-tight",
|
|
52
|
+
md: "text-sm font-medium tracking-tight",
|
|
53
|
+
lg: "text-sm font-medium tracking-tight",
|
|
74
54
|
},
|
|
55
|
+
valueSizes: { sm: "text-xl", md: "text-3xl", lg: "text-3xl" },
|
|
56
|
+
subtitleSizes: { sm: "text-xs mt-1", md: "text-xs mt-0.5", lg: "text-sm mt-1" },
|
|
75
57
|
// Common element styles
|
|
76
|
-
labelStyle: "font-semibold text-[var(--color-text-
|
|
77
|
-
valueStyle: "font-
|
|
58
|
+
labelStyle: "font-semibold text-[var(--color-text-secondary)] mb-2",
|
|
59
|
+
valueStyle: "font-semibold text-[var(--color-text-primary)] tracking-tighter",
|
|
78
60
|
subtitleStyle: "text-[var(--color-text-secondary)]/80",
|
|
79
|
-
iconContainerStyle: "rounded-full flex items-center justify-center flex-shrink-0 p-
|
|
61
|
+
iconContainerStyle: "rounded-full flex items-center justify-center flex-shrink-0 p-2.5",
|
|
80
62
|
};
|
|
81
63
|
|
|
82
64
|
export { metricTheme };
|
|
@@ -2,7 +2,7 @@ import React from 'react';
|
|
|
2
2
|
import { SemanticColor } from '../../../utils/colorUtils';
|
|
3
3
|
export type MetricSize = 'sm' | 'md' | 'lg';
|
|
4
4
|
export type MetricColor = SemanticColor;
|
|
5
|
-
export type MetricVariant = 'filled' | 'glass';
|
|
5
|
+
export type MetricVariant = 'filled' | 'ghost' | 'glass';
|
|
6
6
|
export type TrendDirection = 'up' | 'down';
|
|
7
7
|
export interface MetricProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
8
8
|
/**
|
|
@@ -58,16 +58,15 @@ export interface MetricProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
|
58
58
|
export interface MetricTheme {
|
|
59
59
|
baseStyle: string;
|
|
60
60
|
variants: Record<MetricVariant, string>;
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
}>;
|
|
61
|
+
iconContainerVariants: Record<MetricVariant, string>;
|
|
62
|
+
iconColors: Record<MetricColor, string>;
|
|
63
|
+
iconGlassShadows: Record<MetricColor, string>;
|
|
64
|
+
contentPaddingSizes: Record<MetricSize, string>;
|
|
65
|
+
iconContainerSizes: Record<MetricSize, string>;
|
|
66
|
+
labelSizes: Record<MetricSize, string>;
|
|
67
|
+
labelIconAlignSizes: Record<MetricSize, string>;
|
|
68
|
+
valueSizes: Record<MetricSize, string>;
|
|
69
|
+
subtitleSizes: Record<MetricSize, string>;
|
|
71
70
|
labelStyle: string;
|
|
72
71
|
valueStyle: string;
|
|
73
72
|
subtitleStyle: string;
|
|
@@ -76,16 +75,15 @@ export interface MetricTheme {
|
|
|
76
75
|
export interface MetricThemeOverrides {
|
|
77
76
|
baseStyle?: string;
|
|
78
77
|
variants?: Partial<Record<MetricVariant, string>>;
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
}>>>;
|
|
78
|
+
iconContainerVariants?: Partial<Record<MetricVariant, string>>;
|
|
79
|
+
iconColors?: Partial<Record<MetricColor, string>>;
|
|
80
|
+
iconGlassShadows?: Partial<Record<MetricColor, string>>;
|
|
81
|
+
contentPaddingSizes?: Partial<Record<MetricSize, string>>;
|
|
82
|
+
iconContainerSizes?: Partial<Record<MetricSize, string>>;
|
|
83
|
+
labelSizes?: Partial<Record<MetricSize, string>>;
|
|
84
|
+
labelIconAlignSizes?: Partial<Record<MetricSize, string>>;
|
|
85
|
+
valueSizes?: Partial<Record<MetricSize, string>>;
|
|
86
|
+
subtitleSizes?: Partial<Record<MetricSize, string>>;
|
|
89
87
|
labelStyle?: string;
|
|
90
88
|
valueStyle?: string;
|
|
91
89
|
subtitleStyle?: string;
|
|
@@ -38,7 +38,7 @@ const TableContext = createContext({
|
|
|
38
38
|
*/
|
|
39
39
|
function TableComponent(props) {
|
|
40
40
|
var _a, _b;
|
|
41
|
-
const { data, columns, rowKey, variant = "default", padding = "default", theme: themeOverrides, className = "", freezeHeader = false, freezeFirstColumn = false, freezeLastColumn = false, sortable = false, sortConfig = [], onSortChange, filterable = false, filterConfig = [], onFilterChange, filterLogic: controlledFilterLogic, enableBuiltInFilter = false, expandable = false, expandedRowRender, expandedRows = [], onExpandedRowsChange, selectable = false, selectionType = "checkbox", selectedRows = [], onSelectionChange, bulkActions = [], showColumnManager = false, visibleColumns: initialVisibleColumns, onVisibleColumnsChange, onColumnReorder, pagination, children, caption, } = props;
|
|
41
|
+
const { data, columns, rowKey, onRowClick, variant = "default", padding = "default", theme: themeOverrides, className = "", freezeHeader = false, freezeFirstColumn = false, freezeLastColumn = false, sortable = false, sortConfig = [], onSortChange, filterable = false, filterConfig = [], onFilterChange, filterLogic: controlledFilterLogic, enableBuiltInFilter = false, expandable = false, expandedRowRender, expandedRows = [], onExpandedRowsChange, selectable = false, selectionType = "checkbox", selectedRows = [], onSelectionChange, bulkActions = [], showColumnManager = false, visibleColumns: initialVisibleColumns, onVisibleColumnsChange, onColumnReorder, pagination, children, caption, } = props;
|
|
42
42
|
// Column management hook
|
|
43
43
|
const { visibleColumns, columnOrder, visibleColumnsList, handleToggleColumn, handleColumnReorder, handleResetToDefault, } = useTableColumns({
|
|
44
44
|
columns,
|
|
@@ -149,7 +149,7 @@ function TableComponent(props) {
|
|
|
149
149
|
selectedRows,
|
|
150
150
|
onSelectionChange,
|
|
151
151
|
]);
|
|
152
|
-
return (jsx(TableContext.Provider, { value: contextValue, children: jsxs("div", { className: "relative", children: [!isDeclarativeAPI && columns && ((filterable && onFilterChange) || showColumnManager) && (jsxs("div", { className: theme.columnManagerContainer, children: [filterable && onFilterChange && (jsx(TableFilter, { columns: columns, filterConfig: filterConfig, onFilterChange: onFilterChange, filterLogic: filterLogic, onFilterLogicChange: handleFilterLogicChange, data: data })), showColumnManager && (jsx(TableColumnManager, { columns: columns, visibleColumns: visibleColumns, columnOrder: columnOrder, onToggleColumn: handleToggleColumn, onResetToDefault: handleResetToDefault, onColumnReorder: onColumnReorder ? handleColumnReorder : undefined }))] })), !isDeclarativeAPI && selectable && selectedRows.length > 0 && (jsx(TableSelectionHeader, { selectedCount: selectedRows.length, totalCount: paginatedData.length, selectedRows: selectedRows, bulkActions: bulkActions, onClearSelection: handleClearSelection })), jsx("div", { className: "overflow-x-auto", ref: scrollContainerRef, children: jsxs("table", { className: cn(baseClasses, variantClasses, paddingClasses, className), role: "table", "aria-label": isDeclarativeAPI ? "Data table" : `Data table with ${paginatedData.length} rows`, "aria-rowcount": pagination ? pagination.totalItems : data === null || data === void 0 ? void 0 : data.length, "aria-colcount": visibleColumnsList.length, children: [caption && (jsx("caption", { className: "sr-only", children: caption })), isDeclarativeAPI ? (children) : (jsxs(Fragment, { children: [jsx(TableHeader, { columns: visibleColumnsList, sortConfig: sortConfig, onSortChange: onSortChange, filterConfig: filterConfig, onFilterChange: onFilterChange, freezeHeader: freezeHeader, freezeFirstColumn: freezeFirstColumn, freezeLastColumn: freezeLastColumn, expandable: expandable, expandedRowRender: expandedRowRender, selectable: selectable, selectionType: selectionType, selectedRows: selectedRows, onSelectionChange: onSelectionChange, totalRowCount: paginatedData.length, theme: theme, data: paginatedData, rowKey: rowKey }), jsx(TableBody, { data: paginatedData, columns: visibleColumnsList, rowKey: rowKey, expandedRowRender: expandedRowRender, expandedRows: expandedRows, onExpandedRowsChange: onExpandedRowsChange, selectable: selectable, selectionType: selectionType, selectedRows: selectedRows, onSelectionChange: onSelectionChange, freezeFirstColumn: freezeFirstColumn, freezeLastColumn: freezeLastColumn, theme: theme })] }))] }) })] }) }));
|
|
152
|
+
return (jsx(TableContext.Provider, { value: contextValue, children: jsxs("div", { className: "relative", children: [!isDeclarativeAPI && columns && ((filterable && onFilterChange) || showColumnManager) && (jsxs("div", { className: theme.columnManagerContainer, children: [filterable && onFilterChange && (jsx(TableFilter, { columns: columns, filterConfig: filterConfig, onFilterChange: onFilterChange, filterLogic: filterLogic, onFilterLogicChange: handleFilterLogicChange, data: data })), showColumnManager && (jsx(TableColumnManager, { columns: columns, visibleColumns: visibleColumns, columnOrder: columnOrder, onToggleColumn: handleToggleColumn, onResetToDefault: handleResetToDefault, onColumnReorder: onColumnReorder ? handleColumnReorder : undefined }))] })), !isDeclarativeAPI && selectable && selectedRows.length > 0 && (jsx(TableSelectionHeader, { selectedCount: selectedRows.length, totalCount: paginatedData.length, selectedRows: selectedRows, bulkActions: bulkActions, onClearSelection: handleClearSelection })), jsx("div", { className: "overflow-x-auto", ref: scrollContainerRef, children: jsxs("table", { className: cn(baseClasses, variantClasses, paddingClasses, className), role: "table", "aria-label": isDeclarativeAPI ? "Data table" : `Data table with ${paginatedData.length} rows`, "aria-rowcount": pagination ? pagination.totalItems : data === null || data === void 0 ? void 0 : data.length, "aria-colcount": visibleColumnsList.length, children: [caption && (jsx("caption", { className: "sr-only", children: caption })), isDeclarativeAPI ? (children) : (jsxs(Fragment, { children: [jsx(TableHeader, { columns: visibleColumnsList, sortConfig: sortConfig, onSortChange: onSortChange, filterConfig: filterConfig, onFilterChange: onFilterChange, freezeHeader: freezeHeader, freezeFirstColumn: freezeFirstColumn, freezeLastColumn: freezeLastColumn, expandable: expandable, expandedRowRender: expandedRowRender, selectable: selectable, selectionType: selectionType, selectedRows: selectedRows, onSelectionChange: onSelectionChange, totalRowCount: paginatedData.length, theme: theme, data: paginatedData, rowKey: rowKey }), jsx(TableBody, { data: paginatedData, columns: visibleColumnsList, rowKey: rowKey, onRowClick: onRowClick, expandedRowRender: expandedRowRender, expandedRows: expandedRows, onExpandedRowsChange: onExpandedRowsChange, selectable: selectable, selectionType: selectionType, selectedRows: selectedRows, onSelectionChange: onSelectionChange, freezeFirstColumn: freezeFirstColumn, freezeLastColumn: freezeLastColumn, theme: theme })] }))] }) })] }) }));
|
|
153
153
|
}
|
|
154
154
|
TableComponent.displayName = "Table";
|
|
155
155
|
const Table = TableComponent;
|