@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
|
@@ -5,12 +5,14 @@ import { cn } from '../../../utils/cn.js';
|
|
|
5
5
|
import { useTooltipPosition } from '../hooks/useTooltipPosition.js';
|
|
6
6
|
import { useChartAccessibility } from '../hooks/useChartAccessibility.js';
|
|
7
7
|
import { useChartValidation } from '../hooks/useChartValidation.js';
|
|
8
|
+
import { useChartDimensions } from '../hooks/useChartDimensions.js';
|
|
8
9
|
import { ChartErrorBoundary } from '../shared/ChartErrorBoundary/ChartErrorBoundary.js';
|
|
9
10
|
import { XAxis } from '../shared/ChartAxis/XAxis.js';
|
|
10
11
|
import { YAxis } from '../shared/ChartAxis/YAxis.js';
|
|
11
12
|
import { HorizontalGrid } from '../shared/ChartGrid/HorizontalGrid.js';
|
|
12
13
|
import { ChartTooltip } from '../shared/ChartTooltip/ChartTooltip.js';
|
|
13
14
|
import { STACKED_BAR_CHART_DEFAULTS } from './StackedBarChart.types.js';
|
|
15
|
+
import { X_AXIS_MARGIN } from '../types/chart.types.js';
|
|
14
16
|
import { ExclamationTriangleIcon } from '@heroicons/react/20/solid';
|
|
15
17
|
|
|
16
18
|
// Pure helper functions moved to module level to avoid recreation per render
|
|
@@ -45,7 +47,7 @@ stackOffset = STACKED_BAR_CHART_DEFAULTS.stackOffset,
|
|
|
45
47
|
// Animation props
|
|
46
48
|
showAnimation = STACKED_BAR_CHART_DEFAULTS.showAnimation,
|
|
47
49
|
// Base props
|
|
48
|
-
className, title, description, enableKeyboardNavigation = STACKED_BAR_CHART_DEFAULTS.enableKeyboardNavigation, showValidationWarnings = process.env.NODE_ENV === "development", children, ...props }) => {
|
|
50
|
+
className, title, description, enableKeyboardNavigation = STACKED_BAR_CHART_DEFAULTS.enableKeyboardNavigation, showValidationWarnings = process.env.NODE_ENV === "development", width, height, children, ...props }) => {
|
|
49
51
|
var _a;
|
|
50
52
|
// Animation state
|
|
51
53
|
const shouldReduceMotion = useReducedMotion();
|
|
@@ -73,7 +75,19 @@ className, title, description, enableKeyboardNavigation = STACKED_BAR_CHART_DEFA
|
|
|
73
75
|
return (jsx("div", { className: cn("chart-container flex items-center justify-center text-[var(--color-text-muted)]", className), role: "img", "aria-label": "Empty stacked bar chart", ...props, children: jsx("span", { children: "No data available" }) }));
|
|
74
76
|
}
|
|
75
77
|
// Color palette using CSS variables
|
|
76
|
-
const getSeriesFillColor = (index) => {
|
|
78
|
+
const getSeriesFillColor = (index, key) => {
|
|
79
|
+
var _a;
|
|
80
|
+
if (key && config && ((_a = config[key]) === null || _a === void 0 ? void 0 : _a.color)) {
|
|
81
|
+
const customColor = config[key].color;
|
|
82
|
+
if (!customColor.startsWith("var(") &&
|
|
83
|
+
!customColor.startsWith("#") &&
|
|
84
|
+
!customColor.startsWith("rgb") &&
|
|
85
|
+
!customColor.startsWith("hsl") &&
|
|
86
|
+
customColor.includes("-")) {
|
|
87
|
+
return `var(--color-${customColor})`;
|
|
88
|
+
}
|
|
89
|
+
return customColor;
|
|
90
|
+
}
|
|
77
91
|
const colorVars = [
|
|
78
92
|
"var(--color-primary)",
|
|
79
93
|
"var(--color-primary-400)",
|
|
@@ -85,7 +99,9 @@ className, title, description, enableKeyboardNavigation = STACKED_BAR_CHART_DEFA
|
|
|
85
99
|
return colorVars[index % colorVars.length];
|
|
86
100
|
};
|
|
87
101
|
const containerRef = useRef(null);
|
|
88
|
-
|
|
102
|
+
// `measured` gates bar mount so motion captures geometry in the real
|
|
103
|
+
// coordinate space, not the 600×400 fallback (cold-load below-baseline bug).
|
|
104
|
+
const { dimensions, measured } = useChartDimensions(containerRef);
|
|
89
105
|
const [hoveredCategory, setHoveredCategory] = useState(null);
|
|
90
106
|
const isMobile = typeof window !== "undefined" &&
|
|
91
107
|
("ontouchstart" in window || navigator.maxTouchPoints > 0);
|
|
@@ -101,31 +117,11 @@ className, title, description, enableKeyboardNavigation = STACKED_BAR_CHART_DEFA
|
|
|
101
117
|
description,
|
|
102
118
|
enableKeyboardNavigation,
|
|
103
119
|
});
|
|
104
|
-
// Measure container dimensions
|
|
105
|
-
useEffect(() => {
|
|
106
|
-
const updateDimensions = () => {
|
|
107
|
-
if (containerRef.current) {
|
|
108
|
-
const { width, height } = containerRef.current.getBoundingClientRect();
|
|
109
|
-
setDimensions({
|
|
110
|
-
width: width || 600,
|
|
111
|
-
height: height || 400,
|
|
112
|
-
});
|
|
113
|
-
}
|
|
114
|
-
};
|
|
115
|
-
updateDimensions();
|
|
116
|
-
const resizeObserver = new ResizeObserver(updateDimensions);
|
|
117
|
-
if (containerRef.current) {
|
|
118
|
-
resizeObserver.observe(containerRef.current);
|
|
119
|
-
}
|
|
120
|
-
return () => {
|
|
121
|
-
resizeObserver.disconnect();
|
|
122
|
-
};
|
|
123
|
-
}, []);
|
|
124
120
|
// Calculate dimensions
|
|
125
121
|
const margin = useMemo(() => ({
|
|
126
122
|
top: 15,
|
|
127
123
|
right: showYAxis ? 20 : 0,
|
|
128
|
-
bottom: showXAxis ?
|
|
124
|
+
bottom: showXAxis ? X_AXIS_MARGIN : 0,
|
|
129
125
|
left: showYAxis ? 60 : 0,
|
|
130
126
|
}), [showYAxis, showXAxis]);
|
|
131
127
|
const innerWidth = Math.max(0, dimensions.width - margin.left - margin.right);
|
|
@@ -190,7 +186,7 @@ className, title, description, enableKeyboardNavigation = STACKED_BAR_CHART_DEFA
|
|
|
190
186
|
const isFocused = isKeyboardMode && focusedElementIndex === categoryIndex;
|
|
191
187
|
const range = maxValue - minValue;
|
|
192
188
|
return (jsx("g", { children: dataKeys.map((key, keyIndex) => {
|
|
193
|
-
var _a
|
|
189
|
+
var _a;
|
|
194
190
|
const stackData = (_a = getStackedValues[key]) === null || _a === void 0 ? void 0 : _a[categoryIndex];
|
|
195
191
|
if (!stackData)
|
|
196
192
|
return null;
|
|
@@ -218,7 +214,7 @@ className, title, description, enableKeyboardNavigation = STACKED_BAR_CHART_DEFA
|
|
|
218
214
|
const pathD = isTopSegment
|
|
219
215
|
? createRoundedTopBarPath(x, barY, barWidth, barHeight, barRadius)
|
|
220
216
|
: createRectPath(x, barY, barWidth, barHeight);
|
|
221
|
-
const fillColor = (
|
|
217
|
+
const fillColor = getSeriesFillColor(keyIndex, key);
|
|
222
218
|
const delay = categoryIndex * BAR_STAGGER;
|
|
223
219
|
return (jsx(motion.path, { d: pathD, initial: showAnimation && !shouldReduceMotion
|
|
224
220
|
? { scaleY: 0, opacity: 0 }
|
|
@@ -242,7 +238,7 @@ className, title, description, enableKeyboardNavigation = STACKED_BAR_CHART_DEFA
|
|
|
242
238
|
setHoveredCategory(categoryIndex);
|
|
243
239
|
// Create tooltip content with all series
|
|
244
240
|
const series = dataKeys.map((dataKey, idx) => {
|
|
245
|
-
var _a
|
|
241
|
+
var _a;
|
|
246
242
|
const rawValue = item[dataKey];
|
|
247
243
|
const value = typeof rawValue === "number" && isFinite(rawValue)
|
|
248
244
|
? rawValue
|
|
@@ -251,7 +247,7 @@ className, title, description, enableKeyboardNavigation = STACKED_BAR_CHART_DEFA
|
|
|
251
247
|
key: dataKey,
|
|
252
248
|
label: ((_a = config[dataKey]) === null || _a === void 0 ? void 0 : _a.label) || dataKey,
|
|
253
249
|
value,
|
|
254
|
-
color: (
|
|
250
|
+
color: getSeriesFillColor(idx, dataKey),
|
|
255
251
|
};
|
|
256
252
|
});
|
|
257
253
|
// Calculate total
|
|
@@ -282,16 +278,20 @@ className, title, description, enableKeyboardNavigation = STACKED_BAR_CHART_DEFA
|
|
|
282
278
|
} }, key));
|
|
283
279
|
}) }, categoryIndex));
|
|
284
280
|
};
|
|
285
|
-
return (jsx(ChartErrorBoundary, { className: className, showErrorDetails: process.env.NODE_ENV === "development", children: jsxs("div", { ref: containerRef, className: cn("chart-container w-full h-full", className),
|
|
281
|
+
return (jsx(ChartErrorBoundary, { className: className, showErrorDetails: process.env.NODE_ENV === "development", children: jsxs("div", { ref: containerRef, className: cn("chart-container w-full h-full", className), style: {
|
|
282
|
+
width: width !== undefined ? (typeof width === "number" ? `${width}px` : width) : undefined,
|
|
283
|
+
height: height !== undefined ? (typeof height === "number" ? `${height}px` : height) : undefined,
|
|
284
|
+
}, ...chartAccessibilityProps, onMouseEnter: handleMouseInteraction, onMouseMove: handleMouseInteraction, ...props, children: [descriptionProps && jsx("div", { ...descriptionProps }), showValidationWarnings && hasWarnings && (jsxs("div", { className: "absolute top-2 left-2 right-2 z-10 p-2 bg-[var(--color-warning-50)] border border-[var(--color-warning-200)] rounded text-sm text-[var(--color-warning)] shadow-sm", children: [jsx("strong", { children: "Chart Warnings:" }), jsx("ul", { className: "mt-1", children: validation.warnings.map((warning, index) => (jsxs("li", { children: ["\u2022 ", warning.message] }, index))) })] })), jsxs("svg", { width: "100%", height: "100%", viewBox: `0 0 ${dimensions.width} ${dimensions.height}`, children: [jsx(HorizontalGrid, { show: showGrid, x: margin.left, y: margin.top, width: innerWidth, height: innerHeight, lineCount: 5 }), jsx(YAxis, { show: showYAxis, min: minValue, max: maxValue, x: margin.left, y: margin.top, height: innerHeight, showGrid: false, gridWidth: innerWidth, tickFormatter: (value) => {
|
|
286
285
|
if (stackOffset === "expand")
|
|
287
286
|
return `${value}%`;
|
|
288
287
|
if (Math.abs(value) >= 1000)
|
|
289
288
|
return `${(value / 1000).toFixed(0)}k`;
|
|
290
289
|
return value.toString();
|
|
291
|
-
} }), jsx("g", { className: "chart-bars", children:
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
290
|
+
} }), jsx("g", { className: "chart-bars", children: measured &&
|
|
291
|
+
sanitizedData.map((item, index) => {
|
|
292
|
+
const x = margin.left + index * (barWidth + categoryGap);
|
|
293
|
+
return renderStackedBar(item, index, x);
|
|
294
|
+
}) }), jsx(XAxis, { show: showXAxis, data: sanitizedData, x: margin.left, y: margin.top + innerHeight, width: innerWidth, categoryWidth: barWidth, categoryGap: categoryGap })] }), jsx(ChartTooltip, { tooltipRef: tooltipRef, content: tooltipData === null || tooltipData === void 0 ? void 0 : tooltipData.content, active: !!tooltipData, position: tooltipData
|
|
295
295
|
? { x: tooltipData.x, y: tooltipData.y }
|
|
296
296
|
: { x: 0, y: 0 } }), children] }) }));
|
|
297
297
|
};
|
|
@@ -18,7 +18,7 @@ export declare const STACKED_BAR_CHART_DEFAULTS: {
|
|
|
18
18
|
readonly showGrid: true;
|
|
19
19
|
readonly showXAxis: true;
|
|
20
20
|
readonly showYAxis: true;
|
|
21
|
-
readonly dotRadius:
|
|
21
|
+
readonly dotRadius: 3;
|
|
22
22
|
readonly cellRadius: 4;
|
|
23
23
|
readonly radius: 20;
|
|
24
24
|
readonly strokeWidth: 2;
|
|
@@ -26,7 +26,7 @@ export declare const STACKED_BAR_CHART_DEFAULTS: {
|
|
|
26
26
|
readonly curveType: import("..").CurveType;
|
|
27
27
|
readonly fillOpacity: 0.3;
|
|
28
28
|
readonly showStroke: true;
|
|
29
|
-
readonly showDots:
|
|
29
|
+
readonly showDots: false;
|
|
30
30
|
readonly stacked: false;
|
|
31
31
|
readonly variant: import("..").ChartVariant;
|
|
32
32
|
readonly enableKeyboardNavigation: true;
|
|
@@ -4,3 +4,5 @@ export { useTooltipPosition } from './useTooltipPosition';
|
|
|
4
4
|
export { useChartValidation, useChartDataValidation, useChartValidationProduction } from './useChartValidation';
|
|
5
5
|
export { useChartScales } from './useChartScales';
|
|
6
6
|
export type { UseChartScalesOptions, UseChartScalesReturn, ChartScales } from './useChartScales';
|
|
7
|
+
export { useChartDimensions } from './useChartDimensions';
|
|
8
|
+
export type { ChartDimensions, UseChartDimensionsReturn } from './useChartDimensions';
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export interface ChartDimensions {
|
|
2
|
+
width: number;
|
|
3
|
+
height: number;
|
|
4
|
+
}
|
|
5
|
+
export interface UseChartDimensionsReturn {
|
|
6
|
+
/** Current container size. Starts at the fallback, corrected on measurement. */
|
|
7
|
+
dimensions: ChartDimensions;
|
|
8
|
+
/**
|
|
9
|
+
* `true` once the container has been measured with real (>0) width AND height.
|
|
10
|
+
*
|
|
11
|
+
* 🔴 Gate mount-animated SVG geometry (scaleY bars, scale-in dots, clip-sweep
|
|
12
|
+
* reveals) on this flag. Charts seed `dimensions` with a 600×400 fallback and
|
|
13
|
+
* only learn their true size after the ResizeObserver fires. `motion` elements
|
|
14
|
+
* capture their initial geometry and transform-origin at mount, so if they
|
|
15
|
+
* mount in the fallback coordinate space the entrance animation plays from the
|
|
16
|
+
* wrong place (e.g. bars rising from below the x-axis on cold load). Mounting
|
|
17
|
+
* the animated layer only when `measured` guarantees motion captures geometry
|
|
18
|
+
* in the final coordinate space. The measurement runs in a layout effect, so
|
|
19
|
+
* the corrected size lands synchronously before paint — no fallback frame is
|
|
20
|
+
* ever shown.
|
|
21
|
+
*/
|
|
22
|
+
measured: boolean;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Measures a chart's container element and reports a `measured` flag once a real
|
|
26
|
+
* size is known. Replaces the per-chart inline ResizeObserver block so every
|
|
27
|
+
* Cartesian chart shares one correct implementation (see `measured` docs above).
|
|
28
|
+
*/
|
|
29
|
+
export declare function useChartDimensions(containerRef: React.RefObject<HTMLElement | HTMLDivElement | null>, fallback?: ChartDimensions): UseChartDimensionsReturn;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { useState, useEffect, useLayoutEffect } from 'react';
|
|
2
|
+
|
|
3
|
+
// SSR-safe layout effect — charts only render meaningfully on the client, but
|
|
4
|
+
// guarding avoids React's useLayoutEffect-on-server warning.
|
|
5
|
+
const useIsomorphicLayoutEffect = typeof window === "undefined" ? useEffect : useLayoutEffect;
|
|
6
|
+
const FALLBACK = { width: 600, height: 400 };
|
|
7
|
+
/**
|
|
8
|
+
* Measures a chart's container element and reports a `measured` flag once a real
|
|
9
|
+
* size is known. Replaces the per-chart inline ResizeObserver block so every
|
|
10
|
+
* Cartesian chart shares one correct implementation (see `measured` docs above).
|
|
11
|
+
*/
|
|
12
|
+
function useChartDimensions(containerRef, fallback = FALLBACK) {
|
|
13
|
+
const [dimensions, setDimensions] = useState(fallback);
|
|
14
|
+
const [measured, setMeasured] = useState(false);
|
|
15
|
+
useIsomorphicLayoutEffect(() => {
|
|
16
|
+
const updateDimensions = () => {
|
|
17
|
+
if (containerRef.current) {
|
|
18
|
+
const { width, height } = containerRef.current.getBoundingClientRect();
|
|
19
|
+
setDimensions({
|
|
20
|
+
width: width || fallback.width,
|
|
21
|
+
height: height || fallback.height,
|
|
22
|
+
});
|
|
23
|
+
if (width > 0 && height > 0) {
|
|
24
|
+
setMeasured(true);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
updateDimensions();
|
|
29
|
+
const resizeObserver = new ResizeObserver(updateDimensions);
|
|
30
|
+
if (containerRef.current) {
|
|
31
|
+
resizeObserver.observe(containerRef.current);
|
|
32
|
+
}
|
|
33
|
+
return () => {
|
|
34
|
+
resizeObserver.disconnect();
|
|
35
|
+
};
|
|
36
|
+
// fallback is read inside but is a stable default; ref identity is constant.
|
|
37
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
38
|
+
}, [containerRef]);
|
|
39
|
+
return { dimensions, measured };
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export { useChartDimensions };
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Follows the established theming pattern with CSS variables
|
|
5
5
|
*/
|
|
6
6
|
const chartTooltipTheme = {
|
|
7
|
-
baseStyle: "fixed z-
|
|
7
|
+
baseStyle: "fixed z-[99] text-[var(--color-text-primary)] rounded-[var(--tooltip-radius)] px-3 py-2 shadow-real-lg pointer-events-none bg-[var(--color-surface-overlay)]/60 backdrop-blur-lg outline outline-[var(--color-border)]",
|
|
8
8
|
contentStyle: "whitespace-nowrap text-sm",
|
|
9
9
|
multiSeriesContainerStyle: "text-left",
|
|
10
10
|
categoryStyle: "text-xs font-semibold mb-1 text-[var(--color-text-primary)]",
|
|
@@ -37,12 +37,19 @@ export interface ChartThemeOverrides {
|
|
|
37
37
|
colors: string[];
|
|
38
38
|
}>>;
|
|
39
39
|
}
|
|
40
|
+
/**
|
|
41
|
+
* Shared bottom margin (px) reserved for the X-axis across all Cartesian charts
|
|
42
|
+
* (Area/Line/Bar/StackedBar). A single source of truth so their plot baselines
|
|
43
|
+
* always align when placed side by side. Sized to fit one row of axis labels
|
|
44
|
+
* (XAxis tickLength 6 + tickPadding 12 + label height).
|
|
45
|
+
*/
|
|
46
|
+
export declare const X_AXIS_MARGIN = 28;
|
|
40
47
|
export declare const CHART_DEFAULTS: {
|
|
41
48
|
readonly showGrid: true;
|
|
42
49
|
readonly showXAxis: true;
|
|
43
50
|
readonly showYAxis: true;
|
|
44
51
|
readonly barRadius: 32;
|
|
45
|
-
readonly dotRadius:
|
|
52
|
+
readonly dotRadius: 3;
|
|
46
53
|
readonly cellRadius: 4;
|
|
47
54
|
readonly radius: 20;
|
|
48
55
|
readonly strokeWidth: 2;
|
|
@@ -52,7 +59,7 @@ export declare const CHART_DEFAULTS: {
|
|
|
52
59
|
readonly curveType: CurveType;
|
|
53
60
|
readonly fillOpacity: 0.3;
|
|
54
61
|
readonly showStroke: true;
|
|
55
|
-
readonly showDots:
|
|
62
|
+
readonly showDots: false;
|
|
56
63
|
readonly orientation: "vertical" | "horizontal";
|
|
57
64
|
readonly stacked: false;
|
|
58
65
|
readonly variant: ChartVariant;
|
|
@@ -63,6 +70,8 @@ export interface BaseChartProps {
|
|
|
63
70
|
config: ChartConfig;
|
|
64
71
|
className?: string;
|
|
65
72
|
children?: ReactNode;
|
|
73
|
+
width?: string | number;
|
|
74
|
+
height?: string | number;
|
|
66
75
|
title?: string;
|
|
67
76
|
description?: string;
|
|
68
77
|
enableKeyboardNavigation?: boolean;
|
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared bottom margin (px) reserved for the X-axis across all Cartesian charts
|
|
3
|
+
* (Area/Line/Bar/StackedBar). A single source of truth so their plot baselines
|
|
4
|
+
* always align when placed side by side. Sized to fit one row of axis labels
|
|
5
|
+
* (XAxis tickLength 6 + tickPadding 12 + label height).
|
|
6
|
+
*/
|
|
7
|
+
const X_AXIS_MARGIN = 28;
|
|
1
8
|
// Standardized Chart Defaults
|
|
2
9
|
const CHART_DEFAULTS = {
|
|
3
10
|
// Display options
|
|
@@ -6,7 +13,7 @@ const CHART_DEFAULTS = {
|
|
|
6
13
|
showYAxis: true,
|
|
7
14
|
// Visual properties
|
|
8
15
|
barRadius: 32, // For bar corners (rounded top)
|
|
9
|
-
dotRadius:
|
|
16
|
+
dotRadius: 3, // For line/area dot markers
|
|
10
17
|
cellRadius: 4, // For heatmap cells
|
|
11
18
|
radius: 20, // @deprecated Use barRadius, dotRadius, or cellRadius instead
|
|
12
19
|
strokeWidth: 2,
|
|
@@ -17,7 +24,7 @@ const CHART_DEFAULTS = {
|
|
|
17
24
|
curveType: 'monotone',
|
|
18
25
|
fillOpacity: 0.3,
|
|
19
26
|
showStroke: true,
|
|
20
|
-
showDots:
|
|
27
|
+
showDots: false,
|
|
21
28
|
// Bar specific
|
|
22
29
|
orientation: 'vertical',
|
|
23
30
|
// Layout
|
|
@@ -28,4 +35,4 @@ const CHART_DEFAULTS = {
|
|
|
28
35
|
enableKeyboardNavigation: true,
|
|
29
36
|
};
|
|
30
37
|
|
|
31
|
-
export { CHART_DEFAULTS };
|
|
38
|
+
export { CHART_DEFAULTS, X_AXIS_MARGIN };
|
|
@@ -94,7 +94,11 @@ const Avatar = React__default.forwardRef(({ src, name, size = "md", status = "no
|
|
|
94
94
|
const avatarWithTooltip = showTooltip && resolvedName ? (jsx(Tooltip, { content: resolvedName, placement: "top", children: avatarCircle })) : (avatarCircle);
|
|
95
95
|
// If no text section, render just the avatar
|
|
96
96
|
if (!hasTextSection) {
|
|
97
|
-
return (jsx("div", { ref: ref,
|
|
97
|
+
return (jsx("div", { ref: ref,
|
|
98
|
+
// inline-flex so the inline-flex circle is a flex child, not inline-level
|
|
99
|
+
// content — a plain block wrapper leaves a ~5px baseline descender below
|
|
100
|
+
// the circle, inflating the box and misaligning AvatarGroup's overflow chip.
|
|
101
|
+
className: "inline-flex", role: ariaRole === "presentation" ? "presentation" : undefined, "aria-label": ariaRole === "presentation" ? undefined : accessibilityLabel, "data-size": size, "data-status": status, "data-error": imageError ? "true" : "false", ...props, children: avatarWithTooltip }));
|
|
98
102
|
}
|
|
99
103
|
// Render avatar with text section
|
|
100
104
|
return (jsxs("div", { ref: ref, className: cn("inline-flex items-center", avatarTheme.gapSizes[size]), role: ariaRole === "presentation" ? "presentation" : undefined, "aria-label": ariaRole === "presentation" ? undefined : accessibilityLabel, "data-size": size, "data-status": status, "data-error": imageError ? "true" : "false", ...props, children: [avatarWithTooltip, jsxs("div", { className: "min-w-0", children: [resolvedTitle && (jsx("div", { className: cn(avatarTheme.titleStyle, avatarTheme.textSizes[size]), children: resolvedTitle })), subtitle && (jsx("div", { className: cn(avatarTheme.subtitleStyle, avatarTheme.textSizes[size]), children: subtitle }))] })] }));
|
|
@@ -44,11 +44,15 @@ const AvatarGroup = React__default.forwardRef(({ avatars = [], max = 5, size = "
|
|
|
44
44
|
}
|
|
45
45
|
: {};
|
|
46
46
|
return (jsx(MotionDiv, { className: cn(
|
|
47
|
+
// flex (not the default block) so the inline-flex Avatar is a flex
|
|
48
|
+
// child — a block wrapper would leave a baseline descender below it,
|
|
49
|
+
// inflating the row and dropping the self-centered overflow chip.
|
|
50
|
+
"flex",
|
|
47
51
|
// First avatar doesn't need negative margin
|
|
48
52
|
index > 0 ? spacingClass : "z-10"), "data-position": position, "data-index": index, ...motionProps, children: jsx(Avatar, { size: size, ...avatarProps, contextualLabel: contextLabel,
|
|
49
53
|
// Ensure that groupPosition is not passed to avoid conflicts
|
|
50
54
|
groupPosition: undefined }) }, index));
|
|
51
|
-
}), overflowCount > 0 && (jsx("div", { className: cn(
|
|
55
|
+
}), overflowCount > 0 && (jsx("div", { className: cn("flex", spacingClass), "data-overflow-count": overflowCount, children: overflowIndicator ? (overflowIndicator(overflowCount)) : (jsx(Avatar, { size: size, name: `+${overflowCount} more`, fallback: jsxs("span", { children: ["+", overflowCount] }), className: avatarGroupTheme.overflowAvatarStyle, role: "img", "aria-label": `+ ${overflowCount} more users` })) }))] }));
|
|
52
56
|
});
|
|
53
57
|
// Set display name for dev tools and Storybook
|
|
54
58
|
AvatarGroup.displayName = "AvatarGroup";
|
|
@@ -3,7 +3,9 @@
|
|
|
3
3
|
*/
|
|
4
4
|
const avatarGroupTheme = {
|
|
5
5
|
// Base styles for the avatar group
|
|
6
|
-
baseStyle: "flex items-
|
|
6
|
+
baseStyle: "flex items-center",
|
|
7
|
+
// NOTE: items-center only works because Avatar's wrapper no longer leaves a
|
|
8
|
+
// baseline descender below the circle (Avatar.tsx wrapper is inline-flex).
|
|
7
9
|
// Spacing options - separated from hover effects
|
|
8
10
|
spacingStyles: {
|
|
9
11
|
tight: "-ml-5 z-10",
|
|
@@ -11,7 +13,7 @@ const avatarGroupTheme = {
|
|
|
11
13
|
loose: "-ml-2 z-10",
|
|
12
14
|
},
|
|
13
15
|
// Overflow avatar styles
|
|
14
|
-
overflowAvatarStyle: "bg-[var(--color-surface)] text-[var(--color-text-secondary)] font-
|
|
16
|
+
overflowAvatarStyle: "bg-[var(--color-surface)]/60 backdrop-blur-sm text-[var(--color-text-secondary)] font-bold tracking-tight text-[10px] flex items-center justify-center size-6",
|
|
15
17
|
};
|
|
16
18
|
|
|
17
19
|
export { avatarGroupTheme };
|
|
@@ -128,7 +128,7 @@ const Badge = React__default.memo(React__default.forwardRef(({ children, variant
|
|
|
128
128
|
const renderLeftContent = () => {
|
|
129
129
|
var _a, _b, _c;
|
|
130
130
|
if (avatar) {
|
|
131
|
-
return (jsx("span", { className: cn("inline-flex items-center justify-center shrink-0 overflow-hidden [&_div]:!size-full", (_a = theme.avatarSizes) === null || _a === void 0 ? void 0 : _a[size], pill ? "rounded-full -ml-2" : "rounded-full -ml-
|
|
131
|
+
return (jsx("span", { className: cn("inline-flex items-center justify-center shrink-0 overflow-hidden [&_div]:!size-full", (_a = theme.avatarSizes) === null || _a === void 0 ? void 0 : _a[size], pill ? "rounded-full -ml-2" : "rounded-full -ml-0"), children: jsx(Avatar, { src: avatar.src, name: avatar.name, fallback: (_b = avatar.fallback) !== null && _b !== void 0 ? _b : jsx(UserIcon, { className: "size-2.5" }), initialsCount: avatar.initialsCount, size: "xs", className: cn("!size-full border-0", pill ? "rounded-full" : "rounded-md ring-0") }) }));
|
|
132
132
|
}
|
|
133
133
|
if (iconStart) {
|
|
134
134
|
return (jsx("span", { className: cn("inline-flex items-center justify-center flex-shrink-0 -ml-1", (_c = theme.iconSizes) === null || _c === void 0 ? void 0 : _c[size]), "aria-hidden": "true", children: iconStart }));
|
|
@@ -4,13 +4,13 @@
|
|
|
4
4
|
*/
|
|
5
5
|
const badgeTheme = {
|
|
6
6
|
// Base styles applied to all badges
|
|
7
|
-
baseStyle: "inline-flex items-center align-middle select-none whitespace-nowrap transition-all duration-300 h-fit w-fit tracking-tight font-
|
|
7
|
+
baseStyle: "inline-flex items-center align-middle select-none whitespace-nowrap transition-all duration-300 h-fit w-fit tracking-tight font-medium border",
|
|
8
8
|
// Visual style variants (structure only, no colors)
|
|
9
9
|
// All variants get `border` via baseStyle for consistent box sizing
|
|
10
10
|
variants: {
|
|
11
11
|
filled: "border-transparent",
|
|
12
12
|
outline: "bg-transparent",
|
|
13
|
-
soft: "",
|
|
13
|
+
soft: "border-none",
|
|
14
14
|
},
|
|
15
15
|
// Color styles organized PER VARIANT
|
|
16
16
|
// This structure enables reliable dark: variants and className overrides
|
|
@@ -48,24 +48,25 @@ const badgeTheme = {
|
|
|
48
48
|
soft: {
|
|
49
49
|
neutral: "bg-[var(--color-neutral-100)] text-[var(--color-text-primary)] border-[var(--color-text-primary)]/10 " +
|
|
50
50
|
"dark:bg-[var(--color-neutral-900)]",
|
|
51
|
-
primary: "bg-[var(--color-primary-
|
|
52
|
-
"dark:bg-[var(--color-primary-
|
|
53
|
-
secondary: "bg-[var(--color-secondary-
|
|
54
|
-
"dark:bg-[var(--color-secondary-
|
|
55
|
-
success: "bg-[var(--color-success-100)] text-[var(--color-success-
|
|
56
|
-
"dark:bg-[var(--color-success-
|
|
57
|
-
warning: "bg-[var(--color-warning-
|
|
58
|
-
"dark:bg-[var(--color-warning-
|
|
59
|
-
danger: "bg-[var(--color-danger-
|
|
60
|
-
"dark:bg-[var(--color-danger-
|
|
51
|
+
primary: "bg-[var(--color-primary-50)] text-[var(--color-primary-700)] border-[var(--color-primary)]/20 " +
|
|
52
|
+
"dark:bg-[var(--color-primary-400)]/20 dark:text-[var(--color-primary-300)]",
|
|
53
|
+
secondary: "bg-[var(--color-secondary-50)] text-[var(--color-secondary-700)] border-[var(--color-secondary)]/10 " +
|
|
54
|
+
"dark:bg-[var(--color-secondary-400)]/20 dark:text-[var(--color-secondary-400)]",
|
|
55
|
+
success: "bg-[var(--color-success-100)]/70 text-[var(--color-success-700)] border-[var(--color-success)]/20 " +
|
|
56
|
+
"dark:bg-[var(--color-success-400)]/20 dark:text-[var(--color-success-400)]",
|
|
57
|
+
warning: "bg-[var(--color-warning-50)] text-[var(--color-warning-700)] border-[var(--color-warning)]/20 " +
|
|
58
|
+
"dark:bg-[var(--color-warning-400)]/20 dark:text-[var(--color-warning-400)]",
|
|
59
|
+
danger: "bg-[var(--color-danger-50)] text-[var(--color-danger-700)] border-[var(--color-danger)]/20 " +
|
|
60
|
+
"dark:bg-[var(--color-danger-400)]/20 dark:text-[var(--color-danger-400)]",
|
|
61
61
|
},
|
|
62
62
|
},
|
|
63
63
|
// Flat size structure (no nested objects)
|
|
64
64
|
sizes: {
|
|
65
|
-
sm: "text-xs px-1
|
|
66
|
-
md: "text-
|
|
65
|
+
sm: "text-xs px-1 py-0.25 gap-1",
|
|
66
|
+
md: "text-xs px-1.5 py-0.25 gap-1",
|
|
67
67
|
},
|
|
68
|
-
// Additional padding for pill shape
|
|
68
|
+
// Additional padding for pill shape — must clear the rounded-full cap radius
|
|
69
|
+
// (≈ height/2), otherwise content sits inside the curve and hugs the edge.
|
|
69
70
|
pillSizes: {
|
|
70
71
|
sm: "px-2",
|
|
71
72
|
md: "px-2.5",
|
|
@@ -107,7 +107,7 @@ const Button = React__default.forwardRef(({ children, className = "", iconOnly =
|
|
|
107
107
|
return (jsxs(motion.button, { type: "button", ...restProps, ...animationProps, ref: mergedRef, className: cn(buttonTheme.baseStyle, colorClasses, variantClasses, sizeClasses, blockStyle, stateClasses, darkMode && "dark", className), disabled: isDisabled, "data-state": state, "data-color": resolvedColor, "data-variant": resolvedVariant, "data-size": size, "data-icon-only": iconOnly ? "true" : "false", "data-block": block ? "true" : "false", "aria-disabled": isDisabled || undefined, "aria-invalid": isError || undefined, "aria-label": ariaLabel, onClick: handleClick, children: [showReflection &&
|
|
108
108
|
resolvedVariant !== "link" &&
|
|
109
109
|
resolvedVariant !== "ghost" &&
|
|
110
|
-
resolvedVariant !== "outline" && (jsx("div", { className: "absolute top-0.25 right-0.25 left-0.25 h-3 border-t-[0.5px] border-white/
|
|
110
|
+
resolvedVariant !== "outline" && (jsx("div", { className: "absolute top-0.25 right-0.25 left-0.25 h-3 border-t-[0.5px] border-white/50 rounded-t-[calc(var(--button-radius)-1.25px)] blur-[0.25px]" })), isLoading && (jsx("div", { className: "absolute inset-0 flex items-center justify-center", children: jsx(Spinner, { size: "sm", color: color, className: spinnerClassName }) })), jsx("span", { className: cn("inline-flex items-center gap-2 whitespace-nowrap", isLoading && "opacity-0"), children: children }), enableRipple &&
|
|
111
111
|
ripples.map((ripple) => {
|
|
112
112
|
const animation = getRippleAnimation(effect, ripple, rippleScale);
|
|
113
113
|
return (jsx(motion.span, { initial: animation.initial, animate: animation.animate, transition: animation.transition, className: cn("absolute rounded-full size-5 pointer-events-none ", animation.className, rippleClassName ||
|
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
*/
|
|
4
4
|
const buttonTheme = {
|
|
5
5
|
// Base styles for the button element
|
|
6
|
-
baseStyle: "relative inline-flex items-center justify-center gap-2 focus:outline-none rounded-[var(--button-radius)] overflow-hidden cursor-pointer transition-all duration-300 ease-in-out min-w-fit flex-shrink-0 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 cursor-pointer",
|
|
6
|
+
baseStyle: "relative inline-flex items-center justify-center gap-2 focus:outline-none rounded-[var(--button-radius)] overflow-hidden cursor-pointer transition-all duration-300 ease-in-out min-w-fit flex-shrink-0 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 cursor-pointer backdrop-blur-sm",
|
|
7
7
|
// Visual style variants - STRUCTURE only (no colors)
|
|
8
8
|
variantStyles: {
|
|
9
|
-
filled: "border hover:brightness-[0.9] dark:hover:brightness-[1.15]",
|
|
9
|
+
filled: "border border-black/25 hover:brightness-[0.9] dark:hover:brightness-[1.15]",
|
|
10
10
|
outline: "bg-transparent border",
|
|
11
11
|
soft: "border-transparent",
|
|
12
12
|
ghost: "bg-transparent border-transparent",
|
|
@@ -21,7 +21,7 @@ const buttonTheme = {
|
|
|
21
21
|
"dark:bg-[var(--color-neutral-200)] dark:text-[var(--color-neutral-900)] dark:border-[var(--color-neutral-200)]",
|
|
22
22
|
primary: "bg-[var(--color-primary)] text-[var(--color-primary-contrast)] border-[var(--color-primary)] " +
|
|
23
23
|
"focus-visible:outline-[var(--color-primary-600)] " +
|
|
24
|
-
"dark:text-[var(--color-primary-contrast)] dark:bg-[var(--color-primary
|
|
24
|
+
"dark:text-[var(--color-primary-contrast)] dark:bg-[var(--color-primary)] dark:border-[var(--color-primary-600)]",
|
|
25
25
|
secondary: "bg-[var(--color-secondary)] text-[var(--color-secondary-contrast)] border-[var(--color-secondary)] " +
|
|
26
26
|
"focus-visible:outline-[var(--color-secondary-600)] " +
|
|
27
27
|
"dark:text-[var(--color-secondary-contrast)] dark:bg-[var(--color-secondary-600)] dark:border-[var(--color-secondary-600)]",
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Uses design tokens and data-[state=*] selectors
|
|
4
4
|
*/
|
|
5
5
|
const calendarTheme = {
|
|
6
|
-
baseStyle: "select-none w-full
|
|
6
|
+
baseStyle: "select-none w-full",
|
|
7
7
|
headerStyle: "flex items-center justify-between mb-4",
|
|
8
8
|
titleStyle: "text-sm font-semibold text-[var(--color-text-primary)] " + "",
|
|
9
9
|
headerDropdownsStyle: "grid grid-cols-2 items-center gap-2 flex-1 justify-center mx-3",
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { jsx } from 'react/jsx-runtime';
|
|
1
|
+
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
2
2
|
import React__default, { useMemo } from 'react';
|
|
3
3
|
import { cn } from '../../../utils/cn.js';
|
|
4
4
|
import { cardTheme } from './Card.theme.js';
|
|
@@ -8,12 +8,16 @@ import { CardSubtitle } from './CardSubtitle.js';
|
|
|
8
8
|
import { CardBody } from './CardBody.js';
|
|
9
9
|
import { CardFooter } from './CardFooter.js';
|
|
10
10
|
|
|
11
|
-
const CardRoot = React__default.forwardRef(({ children, className, theme: customTheme = {}, darkMode = false, ...props }, ref) => {
|
|
11
|
+
const CardRoot = React__default.forwardRef(({ children, className, theme: customTheme = {}, darkMode = false, title, subtitle, actions, footer, ...props }, ref) => {
|
|
12
12
|
const theme = useMemo(() => ({
|
|
13
13
|
...cardTheme,
|
|
14
14
|
...customTheme,
|
|
15
15
|
}), [customTheme]);
|
|
16
|
-
|
|
16
|
+
const hasHeader = Boolean(title || subtitle || actions);
|
|
17
|
+
// Slot-prop mode: any header/footer slot composes Header/Body/Footer for us.
|
|
18
|
+
// Otherwise children render raw — the compound API path, unchanged.
|
|
19
|
+
const managed = hasHeader || Boolean(footer);
|
|
20
|
+
return (jsx("div", { ref: ref, className: cn(theme.baseStyle, darkMode && "dark", className), ...props, children: managed ? (jsxs(Fragment, { children: [hasHeader && (jsxs(CardHeader, { className: actions ? "flex-row items-start justify-between gap-4" : undefined, children: [(title || subtitle) && (jsxs("div", { className: "flex flex-col", children: [title && jsx(CardTitle, { children: title }), subtitle && jsx(CardSubtitle, { children: subtitle })] })), actions && (jsx("div", { className: "flex items-center gap-2 shrink-0", children: actions }))] })), children != null && jsx(CardBody, { children: children }), footer && jsx(CardFooter, { children: footer })] })) : (children) }));
|
|
17
21
|
});
|
|
18
22
|
CardRoot.displayName = 'Card';
|
|
19
23
|
// Create compound component with proper typing
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
const cardTheme = {
|
|
2
|
-
baseStyle: "rounded-[var(--card-radius)] overflow-hidden bg-
|
|
3
|
-
headerStyle: "flex flex-col p-6",
|
|
2
|
+
baseStyle: "rounded-[var(--card-radius)] overflow-hidden bg-[var(--color-surface)] border-0 border-[var(--color-border)]",
|
|
3
|
+
headerStyle: "flex flex-col p-6 items-start",
|
|
4
4
|
titleStyle: "text-base font-semibold leading-none text-[var(--color-text-primary)]",
|
|
5
|
-
subtitleStyle: "text-sm text-[var(--color-text-
|
|
5
|
+
subtitleStyle: "text-sm text-[var(--color-text-secondary)] mt-2",
|
|
6
6
|
bodyStyle: "p-6 pt-0 first:pt-6",
|
|
7
7
|
footerStyle: "flex items-center p-6 pt-0 first:pt-6",
|
|
8
8
|
};
|
|
@@ -15,11 +15,36 @@ export interface CardThemeOverrides {
|
|
|
15
15
|
bodyStyle?: string;
|
|
16
16
|
footerStyle?: string;
|
|
17
17
|
}
|
|
18
|
-
export interface CardProps extends HTMLAttributes<HTMLDivElement> {
|
|
18
|
+
export interface CardProps extends Omit<HTMLAttributes<HTMLDivElement>, "title"> {
|
|
19
19
|
/**
|
|
20
|
-
* The content to be displayed inside the card
|
|
20
|
+
* The content to be displayed inside the card. In slot-prop mode (any of
|
|
21
|
+
* `title`/`subtitle`/`actions`/`footer` set) children render inside an
|
|
22
|
+
* auto `Card.Body`; otherwise they render raw (compound mode).
|
|
21
23
|
*/
|
|
22
24
|
children?: ReactNode;
|
|
25
|
+
/**
|
|
26
|
+
* Header title (serializable slot-prop). Renders `Card.Header` + `Card.Title`
|
|
27
|
+
* internally. Mirrors `Section`. Omit and use the compound `Card.Header`
|
|
28
|
+
* parts for full control.
|
|
29
|
+
*/
|
|
30
|
+
title?: ReactNode;
|
|
31
|
+
/**
|
|
32
|
+
* Header subtitle (serializable slot-prop). Renders `Card.Subtitle`.
|
|
33
|
+
*/
|
|
34
|
+
subtitle?: ReactNode;
|
|
35
|
+
/**
|
|
36
|
+
* Header-end controls — buttons, links, Segmented, a kebab menu, etc.
|
|
37
|
+
* Right-aligned next to the title. Holds `ReactNode`, so it is NOT part of
|
|
38
|
+
* the generative schema (app-code / hand-authored only), like `Section`'s.
|
|
39
|
+
* For a card whose primary control is a full Tabs bar, compose `Tabs` in the
|
|
40
|
+
* body instead of overloading this slot.
|
|
41
|
+
*/
|
|
42
|
+
actions?: ReactNode;
|
|
43
|
+
/**
|
|
44
|
+
* Footer content (serializable slot-prop). Renders `Card.Footer`. Holds
|
|
45
|
+
* `ReactNode`, so it is excluded from the generative schema like `actions`.
|
|
46
|
+
*/
|
|
47
|
+
footer?: ReactNode;
|
|
23
48
|
/**
|
|
24
49
|
* Custom class name for the card
|
|
25
50
|
*/
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
2
|
import React__default from 'react';
|
|
3
|
-
import {
|
|
3
|
+
import { MenuItem } from '../MenuItem/MenuItem.js';
|
|
4
4
|
import { Kbd } from '../Kbd/Kbd.js';
|
|
5
|
-
import { commandPaletteTheme } from './CommandPalette.theme.js';
|
|
6
5
|
|
|
7
6
|
/**
|
|
8
7
|
* Map string shortcuts to KbdKey types
|
|
@@ -100,7 +99,7 @@ const Shortcut = ({ keys }) => {
|
|
|
100
99
|
* />
|
|
101
100
|
* ```
|
|
102
101
|
*/
|
|
103
|
-
const CommandItem = ({ command, index, isHighlighted, contentStart, contentEnd, className, onSelect, onMouseEnter,
|
|
102
|
+
const CommandItem = ({ command, index, isHighlighted, contentStart, contentEnd, className, onSelect, onMouseEnter, }) => {
|
|
104
103
|
const handleClick = () => {
|
|
105
104
|
if (!command.disabled) {
|
|
106
105
|
onSelect(command);
|
|
@@ -126,7 +125,7 @@ const CommandItem = ({ command, index, isHighlighted, contentStart, contentEnd,
|
|
|
126
125
|
}
|
|
127
126
|
return null;
|
|
128
127
|
};
|
|
129
|
-
return (
|
|
128
|
+
return (jsx(MenuItem, { role: "option", selected: isHighlighted, disabled: command.disabled, startContent: finalContentStart, subtitle: command.subtitle, endContent: renderContentEnd(), onActivate: handleClick, onMouseEnter: handleMouseEnter, "aria-selected": isHighlighted, "data-command-index": index, "data-highlighted": isHighlighted, className: className, children: command.label }));
|
|
130
129
|
};
|
|
131
130
|
|
|
132
131
|
export { CommandItem };
|