@galaxy-io/dls 1.6.1 → 2.0.0
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/README.md +47 -50
- package/biome/index.json +74 -0
- package/biome/plugins/no-hex-literal.grit +20 -0
- package/biome/plugins/no-inline-style.grit +13 -0
- package/biome/plugins/no-margin.grit +9 -0
- package/biome/plugins/warn/no-hex-literal.grit +23 -0
- package/biome/plugins/warn/no-inline-style.grit +13 -0
- package/biome/plugins/warn/no-margin.grit +9 -0
- package/dist/a11y/FocusScope.d.ts +44 -0
- package/dist/a11y/FocusScope.js +229 -0
- package/dist/a11y/VisuallyHidden.d.ts +21 -0
- package/dist/a11y/VisuallyHidden.js +30 -0
- package/dist/avatar/Avatar.d.ts +56 -14
- package/dist/avatar/Avatar.js +250 -96
- package/dist/avatar/AvatarGroup.d.ts +43 -0
- package/dist/avatar/AvatarGroup.js +153 -0
- package/dist/backgrounds/GridBackground.d.ts +48 -0
- package/dist/backgrounds/GridBackground.js +146 -0
- package/dist/beacons/Beacon.d.ts +86 -22
- package/dist/beacons/Beacon.js +170 -47
- package/dist/brand/GalaxyFilamentWordmark.d.ts +30 -0
- package/dist/brand/GalaxyFilamentWordmark.js +39 -0
- package/dist/brand/GalaxyLogomark.d.ts +26 -0
- package/dist/brand/GalaxyLogomark.js +41 -0
- package/dist/brand/GalaxyLogomarkAnimation.d.ts +36 -0
- package/dist/brand/GalaxyLogomarkAnimation.js +107 -0
- package/dist/brand/GalaxyWordmark.d.ts +30 -0
- package/dist/brand/GalaxyWordmark.js +63 -0
- package/dist/brand/assets/galaxy-logomark-animation.js +136678 -0
- package/dist/brand/brandMark.d.ts +26 -0
- package/dist/brand/brandMark.js +35 -0
- package/dist/buttons/Button.d.ts +148 -59
- package/dist/buttons/Button.js +437 -227
- package/dist/buttons/ButtonGroup.d.ts +38 -0
- package/dist/buttons/ButtonGroup.js +68 -0
- package/dist/buttons/CopyButton.d.ts +77 -0
- package/dist/buttons/CopyButton.js +65 -0
- package/dist/charts/AreaChart.d.ts +49 -0
- package/dist/charts/AreaChart.js +31 -0
- package/dist/charts/BarChart.d.ts +54 -67
- package/dist/charts/BarChart.js +136 -116
- package/dist/charts/ChartAxis.d.ts +35 -40
- package/dist/charts/ChartAxis.js +114 -90
- package/dist/charts/ChartCategoryTargets.d.ts +12 -26
- package/dist/charts/ChartCategoryTargets.js +32 -20
- package/dist/charts/ChartFrame.d.ts +69 -116
- package/dist/charts/ChartFrame.js +253 -119
- package/dist/charts/ChartGroupProvider.d.ts +30 -41
- package/dist/charts/ChartGroupProvider.js +20 -7
- package/dist/charts/ChartLegend.d.ts +27 -48
- package/dist/charts/ChartLegend.js +206 -125
- package/dist/charts/ChartMarkTargets.d.ts +12 -28
- package/dist/charts/ChartMarkTargets.js +33 -20
- package/dist/charts/ChartPrimitives.d.ts +50 -305
- package/dist/charts/ChartPrimitives.js +65 -413
- package/dist/charts/ChartTooltip.d.ts +20 -26
- package/dist/charts/ChartTooltip.js +77 -40
- package/dist/charts/Heatmap.d.ts +35 -0
- package/dist/charts/Heatmap.js +295 -0
- package/dist/charts/LineChart.d.ts +54 -47
- package/dist/charts/LineChart.js +159 -117
- package/dist/charts/PieChart.d.ts +32 -53
- package/dist/charts/PieChart.js +149 -135
- package/dist/charts/Sparkline.d.ts +107 -0
- package/dist/charts/Sparkline.js +244 -0
- package/dist/charts/StatChart.d.ts +37 -13
- package/dist/charts/StatChart.js +82 -35
- package/dist/charts/barChartGeometry.d.ts +138 -86
- package/dist/charts/barChartGeometry.js +122 -101
- package/dist/charts/barChartLegend.d.ts +14 -18
- package/dist/charts/barChartLegend.js +18 -13
- package/dist/charts/chartFormat.d.ts +12 -18
- package/dist/charts/chartFormat.js +20 -52
- package/dist/charts/chartPalette.d.ts +33 -0
- package/dist/charts/chartPalette.js +68 -0
- package/dist/charts/chartScales.d.ts +41 -108
- package/dist/charts/chartScales.js +62 -128
- package/dist/charts/constants.d.ts +96 -256
- package/dist/charts/constants.js +105 -275
- package/dist/charts/heatmapGeometry.d.ts +95 -0
- package/dist/charts/heatmapGeometry.js +155 -0
- package/dist/charts/lineChartGeometry.d.ts +108 -58
- package/dist/charts/lineChartGeometry.js +120 -78
- package/dist/charts/pieChartGeometry.d.ts +66 -40
- package/dist/charts/pieChartGeometry.js +68 -38
- package/dist/charts/types.d.ts +197 -466
- package/dist/charts/types.js +55 -144
- package/dist/charts/useCartesianChartLayout.d.ts +28 -59
- package/dist/charts/useCartesianChartLayout.js +47 -32
- package/dist/charts/useChartDimensions.d.ts +19 -40
- package/dist/charts/useChartDimensions.js +40 -56
- package/dist/charts/useChartFormatters.d.ts +6 -15
- package/dist/charts/useChartFormatters.js +4 -9
- package/dist/charts/useChartInteraction.d.ts +47 -116
- package/dist/charts/useChartInteraction.js +95 -71
- package/dist/charts/useChartTooltipPosition.d.ts +29 -39
- package/dist/charts/useChartTooltipPosition.js +14 -5
- package/dist/charts/useSeriesColorResolver.d.ts +11 -33
- package/dist/charts/useSeriesColorResolver.js +19 -12
- package/dist/chips/Chip.d.ts +155 -44
- package/dist/chips/Chip.js +329 -155
- package/dist/chips/ChipGroup.d.ts +53 -0
- package/dist/chips/ChipGroup.js +98 -0
- package/dist/drawer/Drawer.d.ts +81 -17
- package/dist/drawer/Drawer.js +370 -65
- package/dist/dropdown/Dropdown.d.ts +80 -63
- package/dist/dropdown/Dropdown.js +127 -129
- package/dist/editor/CodeEditor.d.ts +119 -40
- package/dist/editor/CodeEditor.js +490 -400
- package/dist/editor/CodeEditorReactWidget.d.ts +20 -17
- package/dist/editor/CodeEditorReactWidget.js +28 -21
- package/dist/feedback/Alert.d.ts +49 -0
- package/dist/feedback/Alert.js +172 -0
- package/dist/feedback/EmptyState.d.ts +39 -0
- package/dist/feedback/EmptyState.js +109 -0
- package/dist/feedback/ProgressBar.d.ts +125 -0
- package/dist/feedback/ProgressBar.js +183 -0
- package/dist/feedback/ProgressCircle.d.ts +99 -0
- package/dist/feedback/ProgressCircle.js +187 -0
- package/dist/feedback/Skeleton.d.ts +69 -0
- package/dist/feedback/Skeleton.js +130 -0
- package/dist/feedback/Spinner.d.ts +63 -0
- package/dist/feedback/Spinner.js +141 -0
- package/dist/fonts.css +70 -0
- package/dist/hooks/internal/useIsClient.d.ts +2 -0
- package/dist/hooks/internal/useIsClient.js +14 -0
- package/dist/hooks/useClipboard.d.ts +19 -0
- package/dist/hooks/useClipboard.js +45 -0
- package/dist/hooks/useControlledOpenState.d.ts +21 -0
- package/dist/hooks/useControlledOpenState.js +19 -0
- package/dist/hooks/useControlledState.d.ts +19 -0
- package/dist/hooks/useControlledState.js +22 -0
- package/dist/hooks/useDebouncedValue.d.ts +14 -0
- package/dist/hooks/useDebouncedValue.js +33 -0
- package/dist/hooks/useDisclosure.d.ts +26 -0
- package/dist/hooks/useDisclosure.js +36 -0
- package/dist/hooks/useDismiss.d.ts +23 -27
- package/dist/hooks/useDismiss.js +39 -27
- package/dist/hooks/useElementClientSize.d.ts +10 -10
- package/dist/hooks/useElementClientSize.js +8 -11
- package/dist/hooks/useElementWidth.d.ts +6 -13
- package/dist/hooks/useElementWidth.js +6 -14
- package/dist/hooks/useField.d.ts +47 -0
- package/dist/hooks/useField.js +40 -0
- package/dist/hooks/useHotkey.d.ts +77 -0
- package/dist/hooks/useHotkey.js +246 -0
- package/dist/hooks/useIsMac.d.ts +12 -0
- package/dist/hooks/useIsMac.js +27 -0
- package/dist/hooks/useIsomorphicLayoutEffect.d.ts +17 -0
- package/dist/hooks/useIsomorphicLayoutEffect.js +20 -0
- package/dist/hooks/useLocalStorage.d.ts +28 -0
- package/dist/hooks/useLocalStorage.js +145 -0
- package/dist/hooks/useMediaQuery.d.ts +11 -0
- package/dist/hooks/useMediaQuery.js +23 -0
- package/dist/hooks/usePrefersReducedMotion.d.ts +12 -0
- package/dist/hooks/usePrefersReducedMotion.js +25 -0
- package/dist/hooks/useResize.d.ts +42 -62
- package/dist/hooks/useResize.js +43 -31
- package/dist/icons/Icon.d.ts +64 -37
- package/dist/icons/Icon.js +96 -37
- package/dist/icons/internal/IconSlot.d.ts +10 -0
- package/dist/icons/internal/IconSlot.js +32 -0
- package/dist/inputs/CheckboxGroup.d.ts +115 -0
- package/dist/inputs/CheckboxGroup.js +183 -0
- package/dist/inputs/CheckboxInput.d.ts +98 -28
- package/dist/inputs/CheckboxInput.js +218 -88
- package/dist/inputs/ColorInput.d.ts +115 -29
- package/dist/inputs/ColorInput.js +748 -326
- package/dist/inputs/CopyInput.d.ts +49 -20
- package/dist/inputs/CopyInput.js +57 -49
- package/dist/inputs/CronInput.d.ts +94 -0
- package/dist/inputs/CronInput.js +618 -0
- package/dist/inputs/DateInput.d.ts +175 -28
- package/dist/inputs/DateInput.js +1109 -451
- package/dist/inputs/DurationInput.d.ts +101 -0
- package/dist/inputs/DurationInput.js +441 -0
- package/dist/inputs/Field.d.ts +75 -0
- package/dist/inputs/Field.js +247 -0
- package/dist/inputs/Fieldset.d.ts +53 -0
- package/dist/inputs/Fieldset.js +149 -0
- package/dist/inputs/FileInput.d.ts +110 -0
- package/dist/inputs/FileInput.js +476 -0
- package/dist/inputs/Input.d.ts +148 -187
- package/dist/inputs/Input.js +339 -259
- package/dist/inputs/KeyValueInput.d.ts +120 -0
- package/dist/inputs/KeyValueInput.js +383 -0
- package/dist/inputs/MultiSelectInput.d.ts +165 -54
- package/dist/inputs/MultiSelectInput.js +175 -559
- package/dist/inputs/NumberInput.d.ts +65 -9
- package/dist/inputs/NumberInput.js +197 -40
- package/dist/inputs/PasswordInput.d.ts +17 -12
- package/dist/inputs/PasswordInput.js +33 -33
- package/dist/inputs/PinInput.d.ts +117 -0
- package/dist/inputs/PinInput.js +364 -0
- package/dist/inputs/RadioGroup.d.ts +115 -0
- package/dist/inputs/RadioGroup.js +179 -0
- package/dist/inputs/RadioInput.d.ts +87 -24
- package/dist/inputs/RadioInput.js +182 -95
- package/dist/inputs/SearchInput.d.ts +66 -0
- package/dist/inputs/SearchInput.js +156 -0
- package/dist/inputs/SelectInput.d.ts +195 -55
- package/dist/inputs/SelectInput.js +1308 -446
- package/dist/inputs/SliderInput.d.ts +150 -30
- package/dist/inputs/SliderInput.js +441 -186
- package/dist/inputs/SwitchInput.d.ts +109 -0
- package/dist/inputs/SwitchInput.js +248 -0
- package/dist/inputs/TagInput.d.ts +117 -0
- package/dist/inputs/TagInput.js +408 -0
- package/dist/inputs/TextAreaInput.d.ts +146 -44
- package/dist/inputs/TextAreaInput.js +292 -198
- package/dist/inputs/TextInput.d.ts +4 -13
- package/dist/inputs/TextInput.js +13 -48
- package/dist/inputs/ToggleInput.d.ts +120 -22
- package/dist/inputs/ToggleInput.js +262 -116
- package/dist/inputs/internal/bareField.d.ts +18 -0
- package/dist/inputs/internal/bareField.js +38 -0
- package/dist/inputs/internal/devWarn.d.ts +7 -0
- package/dist/inputs/internal/devWarn.js +30 -0
- package/dist/inputs/internal/fieldFrame.d.ts +34 -0
- package/dist/inputs/internal/fieldFrame.js +64 -0
- package/dist/inputs/internal/fieldWiring.d.ts +50 -0
- package/dist/inputs/internal/fieldWiring.js +38 -0
- package/dist/inputs/internal/innerButton.d.ts +2 -0
- package/dist/inputs/internal/innerButton.js +24 -0
- package/dist/inputs/internal/ownField.d.ts +45 -0
- package/dist/inputs/internal/ownField.js +58 -0
- package/dist/inputs/internal/predicates.d.ts +9 -0
- package/dist/inputs/internal/predicates.js +11 -0
- package/dist/inputs/internal/useComboboxPopover.d.ts +46 -0
- package/dist/inputs/internal/useComboboxPopover.js +92 -0
- package/dist/json/JsonViewer.d.ts +62 -0
- package/dist/json/JsonViewer.js +483 -0
- package/dist/layout/Box.d.ts +87 -0
- package/dist/layout/Box.js +109 -0
- package/dist/layout/Divider.d.ts +25 -0
- package/dist/layout/Divider.js +70 -0
- package/dist/layout/Flex.d.ts +139 -0
- package/dist/layout/Flex.js +165 -0
- package/dist/layout/FlexItem.d.ts +72 -0
- package/dist/layout/FlexItem.js +84 -0
- package/dist/layout/Grid.d.ts +140 -0
- package/dist/layout/Grid.js +178 -0
- package/dist/layout/Portal.d.ts +29 -0
- package/dist/layout/Portal.js +27 -0
- package/dist/layout/ResizablePanels.d.ts +88 -0
- package/dist/layout/ResizablePanels.js +198 -0
- package/dist/layout/ResizeHandle.d.ts +48 -0
- package/dist/layout/ResizeHandle.js +143 -0
- package/dist/layout/ScrollArea.d.ts +30 -0
- package/dist/layout/ScrollArea.js +138 -0
- package/dist/links/Link.d.ts +101 -1
- package/dist/links/Link.js +166 -4
- package/dist/lists/BulletedList.d.ts +25 -7
- package/dist/lists/BulletedList.js +72 -27
- package/dist/lists/DescriptionList.d.ts +91 -0
- package/dist/lists/DescriptionList.js +147 -0
- package/dist/menu/ContextMenu.d.ts +64 -0
- package/dist/menu/ContextMenu.js +34 -0
- package/dist/menu/Menu.d.ts +280 -0
- package/dist/menu/Menu.js +1003 -0
- package/dist/modal/ConfirmDialog.d.ts +55 -0
- package/dist/modal/ConfirmDialog.js +151 -0
- package/dist/modal/Modal.d.ts +64 -14
- package/dist/modal/Modal.js +189 -48
- package/dist/navigation/Breadcrumbs.d.ts +65 -0
- package/dist/navigation/Breadcrumbs.js +243 -0
- package/dist/navigation/CommandPalette.d.ts +83 -0
- package/dist/navigation/CommandPalette.js +509 -0
- package/dist/navigation/Pagination.d.ts +87 -0
- package/dist/navigation/Pagination.js +300 -0
- package/dist/navigation/SidebarNav.d.ts +107 -0
- package/dist/navigation/SidebarNav.js +341 -0
- package/dist/navigation/Stepper.d.ts +52 -0
- package/dist/navigation/Stepper.js +207 -0
- package/dist/navigation/Tabs.d.ts +113 -0
- package/dist/navigation/Tabs.js +543 -0
- package/dist/navigation/Topbar.d.ts +20 -0
- package/dist/navigation/Topbar.js +62 -0
- package/dist/overlay/OverlayProvider.d.ts +28 -32
- package/dist/overlay/OverlayProvider.js +42 -93
- package/dist/overlay/useOverlay.d.ts +88 -12
- package/dist/overlay/useOverlay.js +220 -43
- package/dist/overlays/Popover.d.ts +114 -0
- package/dist/overlays/Popover.js +389 -0
- package/dist/shapes/Circle.d.ts +84 -8
- package/dist/shapes/Circle.js +122 -20
- package/dist/shapes/Square.d.ts +84 -8
- package/dist/shapes/Square.js +123 -20
- package/dist/styles/mixins.d.ts +35 -0
- package/dist/styles/mixins.js +60 -0
- package/dist/styles.css +1 -202
- package/dist/table/InfiniteSpreadsheet.d.ts +140 -10
- package/dist/table/InfiniteSpreadsheet.js +762 -225
- package/dist/table/InfiniteTable.d.ts +116 -14
- package/dist/table/InfiniteTable.js +287 -429
- package/dist/table/SpreadsheetCellEditor.d.ts +54 -6
- package/dist/table/SpreadsheetCellEditor.js +163 -84
- package/dist/table/TableCore.d.ts +252 -0
- package/dist/table/TableCore.js +1077 -0
- package/dist/table/VirtualizedInfiniteTable.d.ts +104 -14
- package/dist/table/VirtualizedInfiniteTable.js +280 -219
- package/dist/table/types.d.ts +66 -244
- package/dist/table/types.js +0 -51
- package/dist/table/useInfiniteScrollSentinel.d.ts +25 -21
- package/dist/table/useInfiniteScrollSentinel.js +38 -30
- package/dist/table/useSpreadsheetCellNavigation.d.ts +44 -0
- package/dist/table/useSpreadsheetCellNavigation.js +141 -0
- package/dist/table/useTableColumnLayout.d.ts +90 -25
- package/dist/table/useTableColumnLayout.js +255 -50
- package/dist/table/useTableKeyboardNavigation.d.ts +32 -21
- package/dist/table/useTableKeyboardNavigation.js +95 -71
- package/dist/table/useTableRowSelection.d.ts +24 -25
- package/dist/table/useTableRowSelection.js +57 -84
- package/dist/table/useTableVirtualizer.d.ts +20 -0
- package/dist/table/useTableVirtualizer.js +48 -0
- package/dist/text/Bold.d.ts +5 -6
- package/dist/text/Bold.js +16 -15
- package/dist/text/Code.d.ts +5 -6
- package/dist/text/Code.js +16 -25
- package/dist/text/CodeBlock.d.ts +77 -0
- package/dist/text/CodeBlock.js +373 -0
- package/dist/text/EditableText.d.ts +55 -15
- package/dist/text/EditableText.js +153 -135
- package/dist/text/Ellipsis.d.ts +34 -8
- package/dist/text/Ellipsis.js +55 -23
- package/dist/text/Kbd.d.ts +72 -0
- package/dist/text/Kbd.js +284 -0
- package/dist/text/MarkdownText.d.ts +27 -10
- package/dist/text/MarkdownText.js +317 -300
- package/dist/text/RequiredMarker.d.ts +17 -5
- package/dist/text/RequiredMarker.js +34 -36
- package/dist/text/Selectable.d.ts +5 -6
- package/dist/text/Selectable.js +16 -13
- package/dist/text/Span.d.ts +82 -0
- package/dist/text/Span.js +115 -0
- package/dist/text/Text.d.ts +128 -41
- package/dist/text/Text.js +209 -76
- package/dist/theme/GalaxyProvider.d.ts +75 -0
- package/dist/theme/GalaxyProvider.js +223 -0
- package/dist/theme/ThemeSwitcher.d.ts +52 -0
- package/dist/theme/ThemeSwitcher.js +94 -0
- package/dist/theme/enums.d.ts +118 -0
- package/dist/theme/enums.js +144 -0
- package/dist/theme/tokens/dark.d.ts +2 -0
- package/dist/theme/tokens/dark.js +275 -0
- package/dist/theme/tokens/generate.d.ts +15 -0
- package/dist/theme/tokens/generate.js +47 -0
- package/dist/theme/tokens/light.d.ts +2 -0
- package/dist/theme/tokens/light.js +274 -0
- package/dist/theme/tokens/palette.d.ts +14 -0
- package/dist/theme/tokens/palette.js +153 -0
- package/dist/theme/tokens/scales.d.ts +26 -0
- package/dist/theme/tokens/scales.js +154 -0
- package/dist/theme/tokens/t.d.ts +3 -0
- package/dist/theme/tokens/t.js +25 -0
- package/dist/theme/tokens/types.d.ts +189 -0
- package/dist/theme/tokens/types.js +0 -0
- package/dist/theme/useGalaxyTheme.d.ts +46 -0
- package/dist/theme/useGalaxyTheme.js +36 -0
- package/dist/theme/useInverseScope.d.ts +18 -0
- package/dist/theme/useInverseScope.js +33 -0
- package/dist/three/GalaxyLogomark3D.d.ts +46 -0
- package/dist/three/GalaxyLogomark3D.js +134 -0
- package/dist/three/assets/galaxy-logomark.js +4 -0
- package/dist/three/galaxyLogomark3DScene.d.ts +27 -0
- package/dist/three/galaxyLogomark3DScene.js +165 -0
- package/dist/timeline/Timeline.d.ts +99 -0
- package/dist/timeline/Timeline.js +269 -0
- package/dist/toast/Toast.d.ts +43 -19
- package/dist/toast/Toast.js +130 -89
- package/dist/toast/ToastProvider.d.ts +23 -23
- package/dist/toast/ToastProvider.js +298 -101
- package/dist/toast/ToastViewport.d.ts +12 -0
- package/dist/toast/ToastViewport.js +210 -0
- package/dist/toast/useToast.d.ts +139 -5
- package/dist/toast/useToast.js +15 -13
- package/dist/tokens.css +654 -0
- package/dist/tooltip/Tooltip.d.ts +64 -44
- package/dist/tooltip/Tooltip.js +280 -73
- package/dist/tooltip/internal/LazyTooltip.d.ts +7 -0
- package/dist/tooltip/internal/LazyTooltip.js +53 -0
- package/dist/transform/Fade.d.ts +33 -11
- package/dist/transform/Fade.js +71 -19
- package/dist/transform/Flasher.d.ts +25 -0
- package/dist/transform/Flasher.js +39 -0
- package/dist/transform/Rotate.d.ts +24 -12
- package/dist/transform/Rotate.js +36 -22
- package/dist/transform/ScaleFade.d.ts +36 -11
- package/dist/transform/ScaleFade.js +86 -28
- package/dist/transform/internal/CollapseMotion.d.ts +10 -0
- package/dist/transform/internal/CollapseMotion.js +65 -0
- package/dist/tree/Tree.d.ts +85 -0
- package/dist/tree/Tree.js +387 -0
- package/dist/tree/treeRow.d.ts +39 -0
- package/dist/tree/treeRow.js +75 -0
- package/dist/utils/colors.d.ts +46 -13
- package/dist/utils/colors.js +92 -34
- package/dist/utils/css.d.ts +23 -0
- package/dist/utils/css.js +30 -0
- package/dist/utils/format.d.ts +58 -0
- package/dist/utils/format.js +220 -0
- package/dist/vite/index.d.ts +16 -0
- package/dist/vite/index.js +52 -0
- package/dist/widget/Widget.d.ts +164 -48
- package/dist/widget/Widget.js +335 -96
- package/dist/widget/WidgetGroup.d.ts +36 -0
- package/dist/widget/WidgetGroup.js +103 -0
- package/package.json +851 -157
- package/dist/accordion/Accordion.d.ts +0 -54
- package/dist/accordion/Accordion.js +0 -183
- package/dist/assets/components/GalaxyFilamentWordmarkDark.d.ts +0 -3
- package/dist/assets/components/GalaxyFilamentWordmarkDark.js +0 -14
- package/dist/assets/components/GalaxyFilamentWordmarkLight.d.ts +0 -3
- package/dist/assets/components/GalaxyFilamentWordmarkLight.js +0 -14
- package/dist/assets/components/GalaxyLogomarkDark.d.ts +0 -3
- package/dist/assets/components/GalaxyLogomarkDark.js +0 -11
- package/dist/assets/components/GalaxyLogomarkLight.d.ts +0 -3
- package/dist/assets/components/GalaxyLogomarkLight.js +0 -17
- package/dist/assets/components/GalaxyWordmarkDark.d.ts +0 -3
- package/dist/assets/components/GalaxyWordmarkDark.js +0 -15
- package/dist/assets/components/GalaxyWordmarkLight.d.ts +0 -3
- package/dist/assets/components/GalaxyWordmarkLight.js +0 -28
- package/dist/assets/models/galaxy-animation.js +0 -136666
- package/dist/assets/models/galaxy-logomark.js +0 -4
- package/dist/avatar/AvatarShimmer.d.ts +0 -30
- package/dist/avatar/AvatarShimmer.js +0 -22
- package/dist/backgrounds/CellGridBackground.d.ts +0 -24
- package/dist/backgrounds/CellGridBackground.js +0 -44
- package/dist/backgrounds/CrossGridBackground.d.ts +0 -26
- package/dist/backgrounds/CrossGridBackground.js +0 -49
- package/dist/backgrounds/DotGridBackground.d.ts +0 -24
- package/dist/backgrounds/DotGridBackground.js +0 -47
- package/dist/badge/Badge.d.ts +0 -42
- package/dist/badge/Badge.js +0 -99
- package/dist/charts/ChartEmptyState.d.ts +0 -17
- package/dist/charts/ChartEmptyState.js +0 -29
- package/dist/charts/ProgressBar.d.ts +0 -29
- package/dist/charts/ProgressBar.js +0 -65
- package/dist/charts/chartTheme.d.ts +0 -18
- package/dist/charts/chartTheme.js +0 -26
- package/dist/containers/FlexItem.d.ts +0 -50
- package/dist/containers/FlexItem.js +0 -91
- package/dist/containers/FlexWrapper.d.ts +0 -96
- package/dist/containers/FlexWrapper.js +0 -143
- package/dist/containers/GridWrapper.d.ts +0 -79
- package/dist/containers/GridWrapper.js +0 -125
- package/dist/containers/Spacing.d.ts +0 -23
- package/dist/containers/Spacing.js +0 -59
- package/dist/containers/Wrapper.d.ts +0 -26
- package/dist/containers/Wrapper.js +0 -54
- package/dist/dividers/HorizontalDivider.d.ts +0 -7
- package/dist/dividers/HorizontalDivider.js +0 -39
- package/dist/dividers/VerticalDivider.d.ts +0 -6
- package/dist/dividers/VerticalDivider.js +0 -21
- package/dist/icons/GalaxyFilamentWordmark.d.ts +0 -11
- package/dist/icons/GalaxyFilamentWordmark.js +0 -25
- package/dist/icons/GalaxyLogomark.d.ts +0 -13
- package/dist/icons/GalaxyLogomark.js +0 -27
- package/dist/icons/GalaxyLogomark3D.d.ts +0 -56
- package/dist/icons/GalaxyLogomark3D.js +0 -319
- package/dist/icons/GalaxyLogomarkAnimation.d.ts +0 -18
- package/dist/icons/GalaxyLogomarkAnimation.js +0 -48
- package/dist/icons/GalaxyWordmark.d.ts +0 -11
- package/dist/icons/GalaxyWordmark.js +0 -25
- package/dist/inputs/MultiTextInput.d.ts +0 -32
- package/dist/inputs/MultiTextInput.js +0 -180
- package/dist/inputs/SwitcherInput.d.ts +0 -30
- package/dist/inputs/SwitcherInput.js +0 -81
- package/dist/inputs/hooks.d.ts +0 -10
- package/dist/inputs/hooks.js +0 -22
- package/dist/overlay/constants.d.ts +0 -28
- package/dist/overlay/constants.js +0 -37
- package/dist/resizable/HorizontalResizeHandle.d.ts +0 -17
- package/dist/resizable/HorizontalResizeHandle.js +0 -38
- package/dist/resizable/VerticalResizeHandle.d.ts +0 -18
- package/dist/resizable/VerticalResizeHandle.js +0 -39
- package/dist/table/SpreadsheetCell.d.ts +0 -21
- package/dist/table/SpreadsheetCell.js +0 -71
- package/dist/table/SpreadsheetHeaderCell.d.ts +0 -23
- package/dist/table/SpreadsheetHeaderCell.js +0 -91
- package/dist/table/SpreadsheetMenuItem.d.ts +0 -14
- package/dist/table/SpreadsheetMenuItem.js +0 -33
- package/dist/table/SpreadsheetPrimitives.d.ts +0 -172
- package/dist/table/SpreadsheetPrimitives.js +0 -105
- package/dist/table/SpreadsheetRow.d.ts +0 -33
- package/dist/table/SpreadsheetRow.js +0 -73
- package/dist/table/SpreadsheetRowActionCell.d.ts +0 -14
- package/dist/table/SpreadsheetRowActionCell.js +0 -51
- package/dist/table/TableExpandCell.d.ts +0 -11
- package/dist/table/TableExpandCell.js +0 -24
- package/dist/table/TableExpandedRow.d.ts +0 -16
- package/dist/table/TableExpandedRow.js +0 -77
- package/dist/table/TableHeaderCellContent.d.ts +0 -30
- package/dist/table/TableHeaderCellContent.js +0 -48
- package/dist/table/TablePrimitives.d.ts +0 -313
- package/dist/table/TablePrimitives.js +0 -302
- package/dist/table/TableSelectCell.d.ts +0 -18
- package/dist/table/TableSelectCell.js +0 -27
- package/dist/table/TableStatusRow.d.ts +0 -18
- package/dist/table/TableStatusRow.js +0 -50
- package/dist/table/useSpreadsheetEditing.d.ts +0 -13
- package/dist/table/useSpreadsheetEditing.js +0 -41
- package/dist/table/useTableColumnResize.d.ts +0 -38
- package/dist/table/useTableColumnResize.js +0 -155
- package/dist/table/useTableRowExpansion.d.ts +0 -24
- package/dist/table/useTableRowExpansion.js +0 -62
- package/dist/table/utils.d.ts +0 -50
- package/dist/table/utils.js +0 -78
- package/dist/text/HotKeys.d.ts +0 -30
- package/dist/text/HotKeys.js +0 -74
- package/dist/text/Paragraph.d.ts +0 -33
- package/dist/text/Paragraph.js +0 -83
- package/dist/text/TextShimmer.d.ts +0 -14
- package/dist/text/TextShimmer.js +0 -34
- package/dist/theme/GalaxyTheme.d.ts +0 -67
- package/dist/theme/GalaxyTheme.js +0 -119
- package/dist/theme/constants.d.ts +0 -8
- package/dist/theme/constants.js +0 -38
- package/dist/theme/index.d.ts +0 -6
- package/dist/theme/index.js +0 -7
- package/dist/theme/types.d.ts +0 -195
- package/dist/theme/types.js +0 -10
- package/dist/theme/typography.d.ts +0 -2
- package/dist/theme/typography.js +0 -73
- package/dist/theme/variants/dark.d.ts +0 -2
- package/dist/theme/variants/dark.js +0 -125
- package/dist/theme/variants/light.d.ts +0 -2
- package/dist/theme/variants/light.js +0 -125
- package/dist/toast/ToastContainer.d.ts +0 -10
- package/dist/toast/ToastContainer.js +0 -31
- package/dist/toast/ToastWrapper.d.ts +0 -6
- package/dist/toast/ToastWrapper.js +0 -27
- package/dist/transform/Flash.d.ts +0 -7
- package/dist/transform/Flash.js +0 -18
- package/dist/transform/Spin.d.ts +0 -14
- package/dist/transform/Spin.js +0 -25
- package/dist/utils/linaria.d.ts +0 -1
- package/dist/utils/linaria.js +0 -8
|
@@ -0,0 +1,341 @@
|
|
|
1
|
+
import VisuallyHidden from "../a11y/VisuallyHidden.js";
|
|
2
|
+
import { Placement } from "../theme/enums.js";
|
|
3
|
+
import Text, { TextSize, TextTransform, TextVariant, TextWeight } from "../text/Text.js";
|
|
4
|
+
import { useControlledOpenState } from "../hooks/useControlledOpenState.js";
|
|
5
|
+
import Tooltip from "../tooltip/Tooltip.js";
|
|
6
|
+
import Divider from "../layout/Divider.js";
|
|
7
|
+
import ScrollArea from "../layout/ScrollArea.js";
|
|
8
|
+
import Icon, { IconVariant } from "../icons/Icon.js";
|
|
9
|
+
import Rotate from "../transform/Rotate.js";
|
|
10
|
+
import Chip, { ChipSize } from "../chips/Chip.js";
|
|
11
|
+
import CollapseMotion from "../transform/internal/CollapseMotion.js";
|
|
12
|
+
/* empty css */
|
|
13
|
+
import { styled } from "@linaria/react";
|
|
14
|
+
import { createContext, forwardRef, useContext, useId, useMemo } from "react";
|
|
15
|
+
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
16
|
+
import { cx } from "@linaria/core";
|
|
17
|
+
import { ArrowUpRightIcon, CaretRightIcon } from "@phosphor-icons/react";
|
|
18
|
+
//#region src/navigation/SidebarNav.tsx
|
|
19
|
+
/**
|
|
20
|
+
* The app's primary navigation column: a `<nav>` of `NavItem` destinations, optionally sorted into
|
|
21
|
+
* labelled `NavGroup` sections that can fold, with a `header` row above (brand mark, workspace
|
|
22
|
+
* switcher) and a `footer` pinned below (account, settings, the collapse toggle). Each `NavItem`
|
|
23
|
+
* is a link (`href`, rendered through a router `as`) or a button, with an icon, a label, an
|
|
24
|
+
* optional count `Chip` and an active state for the current page. `isCollapsed` turns the column
|
|
25
|
+
* into an icon rail whose labels move into tooltips.
|
|
26
|
+
*
|
|
27
|
+
* SidebarNav fills the box its parent gives it (the app's frame sizes, resizes and collapses that box)
|
|
28
|
+
* and never routes: the app passes `href` and derives `isActive` from the current route. Sibling
|
|
29
|
+
* views inside a page are `Tabs`; a hierarchy of records is a `Tree`.
|
|
30
|
+
*
|
|
31
|
+
* SSR: nothing touches `window` or `document` at module scope; ids come from `useId`.
|
|
32
|
+
*/
|
|
33
|
+
var SidebarNavContext = createContext({
|
|
34
|
+
isCollapsed: false,
|
|
35
|
+
isInList: false
|
|
36
|
+
});
|
|
37
|
+
/** The default landmark name. */
|
|
38
|
+
var DEFAULT_ARIA_LABEL = "Main";
|
|
39
|
+
/** Item icon size: the `MEDIUM` rung's icon, one step below III-A.4 (Mitch, 2026-10-04). */
|
|
40
|
+
var ITEM_ICON_PX = 14;
|
|
41
|
+
/** The external-link arrow. */
|
|
42
|
+
var SMALL_ICON_PX = 12;
|
|
43
|
+
/** The section caret: 10px on the 24px group heading (the collapsible Widget's caret, small rung). */
|
|
44
|
+
var CARET_PX = 10;
|
|
45
|
+
var Root = /*#__PURE__*/ styled("nav")({
|
|
46
|
+
name: "Root",
|
|
47
|
+
class: "gx-SidebarNav-r1igp7em",
|
|
48
|
+
propsAsIs: false
|
|
49
|
+
});
|
|
50
|
+
/** The 48px top row: the Topbar height, so the two bottom hairlines meet in an app frame. */
|
|
51
|
+
var Header = /*#__PURE__*/ styled("div")({
|
|
52
|
+
name: "Header",
|
|
53
|
+
class: "gx-SidebarNav-Header-h7sesvp",
|
|
54
|
+
propsAsIs: false
|
|
55
|
+
});
|
|
56
|
+
var List = /*#__PURE__*/ styled("ul")({
|
|
57
|
+
name: "List",
|
|
58
|
+
class: "gx-SidebarNav-List-lxg8t2f",
|
|
59
|
+
propsAsIs: false
|
|
60
|
+
});
|
|
61
|
+
var Footer = /*#__PURE__*/ styled("div")({
|
|
62
|
+
name: "Footer",
|
|
63
|
+
class: "gx-SidebarNav-Footer-f1bmww1o",
|
|
64
|
+
propsAsIs: false
|
|
65
|
+
});
|
|
66
|
+
/** A list item holding one `NavItem`. */
|
|
67
|
+
var ItemLi = /*#__PURE__*/ styled("li")({
|
|
68
|
+
name: "ItemLi",
|
|
69
|
+
class: "gx-SidebarNav-ItemLi-iwiy54t",
|
|
70
|
+
propsAsIs: false
|
|
71
|
+
});
|
|
72
|
+
/** The shared item box: a link or a button on the `MEDIUM` rung (a plain string, like the mixins). */
|
|
73
|
+
var ItemLink = /*#__PURE__*/ styled("a")({
|
|
74
|
+
name: "ItemLink",
|
|
75
|
+
class: "gx-SidebarNav-ItemLink-i1otz5la",
|
|
76
|
+
propsAsIs: false
|
|
77
|
+
});
|
|
78
|
+
var ItemButton = /*#__PURE__*/ styled("button")({
|
|
79
|
+
name: "ItemButton",
|
|
80
|
+
class: "gx-SidebarNav-ItemButton-ijewkq1",
|
|
81
|
+
propsAsIs: false
|
|
82
|
+
});
|
|
83
|
+
var LetterBox = /*#__PURE__*/ styled("span")({
|
|
84
|
+
name: "LetterBox",
|
|
85
|
+
class: "gx-SidebarNav-LetterBox-l12h7i8o",
|
|
86
|
+
propsAsIs: false
|
|
87
|
+
});
|
|
88
|
+
var Trailing = /*#__PURE__*/ styled("span")({
|
|
89
|
+
name: "Trailing",
|
|
90
|
+
class: "gx-SidebarNav-Trailing-t156g88p",
|
|
91
|
+
propsAsIs: false
|
|
92
|
+
});
|
|
93
|
+
/** A section: its heading (or the rail divider) and its own list. */
|
|
94
|
+
var GroupRoot = /*#__PURE__*/ styled("li")({
|
|
95
|
+
name: "GroupRoot",
|
|
96
|
+
class: "gx-SidebarNav-GroupRoot-g1ka7is",
|
|
97
|
+
propsAsIs: false
|
|
98
|
+
});
|
|
99
|
+
var GroupList = /*#__PURE__*/ styled("ul")({
|
|
100
|
+
name: "GroupList",
|
|
101
|
+
class: "gx-SidebarNav-GroupList-gls5awu",
|
|
102
|
+
propsAsIs: false
|
|
103
|
+
});
|
|
104
|
+
var GroupLabel = /*#__PURE__*/ styled("div")({
|
|
105
|
+
name: "GroupLabel",
|
|
106
|
+
class: "gx-SidebarNav-GroupLabel-g4ix9y9",
|
|
107
|
+
propsAsIs: false
|
|
108
|
+
});
|
|
109
|
+
var GroupToggle = /*#__PURE__*/ styled("button")({
|
|
110
|
+
name: "GroupToggle",
|
|
111
|
+
class: "gx-SidebarNav-GroupToggle-gqfe40h",
|
|
112
|
+
propsAsIs: false
|
|
113
|
+
});
|
|
114
|
+
/** The rail's stand-in for a section heading; the first section has none. */
|
|
115
|
+
var GroupDivider = /*#__PURE__*/ styled("div")({
|
|
116
|
+
name: "GroupDivider",
|
|
117
|
+
class: "gx-SidebarNav-GroupDivider-g9ff0oz",
|
|
118
|
+
propsAsIs: false
|
|
119
|
+
});
|
|
120
|
+
/** Rail mode: the header content and the footer content center in the 48px column. */
|
|
121
|
+
var ROOT_COLLAPSED_CSS = "gx-SidebarNav-ROOT_COLLAPSED_CSS-r6f6h0i";
|
|
122
|
+
/** The scrolling list takes the height between header and footer. */
|
|
123
|
+
var LIST_SCROLL_CSS = "gx-SidebarNav-LIST_SCROLL_CSS-lyqt4ix";
|
|
124
|
+
var ITEM_LI_COLLAPSED_CSS = "gx-SidebarNav-ITEM_LI_COLLAPSED_CSS-iieaizt";
|
|
125
|
+
/** Hover and press on an enabled item that is not the current page. */
|
|
126
|
+
var ITEM_INTERACTIVE_CSS = "gx-SidebarNav-ITEM_INTERACTIVE_CSS-io6ca5i";
|
|
127
|
+
/** The current page: the selection fill (`background.selected`) and primary text (hover keeps it). */
|
|
128
|
+
var ITEM_ACTIVE_CSS = "gx-SidebarNav-ITEM_ACTIVE_CSS-iuopbgu";
|
|
129
|
+
var ITEM_DISABLED_CSS = "gx-SidebarNav-ITEM_DISABLED_CSS-i6m4lrh";
|
|
130
|
+
/** Rail mode: a 32px square (the 8px list padding makes the rail 48px). */
|
|
131
|
+
var ITEM_COLLAPSED_CSS = "gx-SidebarNav-ITEM_COLLAPSED_CSS-i1qgyulv";
|
|
132
|
+
var LABEL_CSS = "gx-SidebarNav-LABEL_CSS-l189383r";
|
|
133
|
+
var VISUALLY_HIDDEN_CSS = "gx-SidebarNav-VISUALLY_HIDDEN_CSS-v1ietnnw";
|
|
134
|
+
/** The primary navigation column: header, scrolling list of items and sections, footer. */
|
|
135
|
+
var SidebarNav = forwardRef(function SidebarNav({ children, header, footer, isCollapsed = false, ariaLabel, id, className, style, ...rest }, ref) {
|
|
136
|
+
const name = ariaLabel || rest["aria-label"] || (rest["aria-labelledby"] ? void 0 : DEFAULT_ARIA_LABEL);
|
|
137
|
+
const listContext = useMemo(() => ({
|
|
138
|
+
isCollapsed,
|
|
139
|
+
isInList: true
|
|
140
|
+
}), [isCollapsed]);
|
|
141
|
+
const footerContext = useMemo(() => ({
|
|
142
|
+
isCollapsed,
|
|
143
|
+
isInList: false
|
|
144
|
+
}), [isCollapsed]);
|
|
145
|
+
return /* @__PURE__ */ jsxs(Root, {
|
|
146
|
+
...rest,
|
|
147
|
+
ref,
|
|
148
|
+
id,
|
|
149
|
+
"aria-label": name,
|
|
150
|
+
className: cx(isCollapsed && ROOT_COLLAPSED_CSS, className),
|
|
151
|
+
style,
|
|
152
|
+
children: [
|
|
153
|
+
header !== void 0 && header !== null && header !== false && /* @__PURE__ */ jsx(Header, { children: header }),
|
|
154
|
+
/* @__PURE__ */ jsx(ScrollArea, {
|
|
155
|
+
className: LIST_SCROLL_CSS,
|
|
156
|
+
children: /* @__PURE__ */ jsx(SidebarNavContext.Provider, {
|
|
157
|
+
value: listContext,
|
|
158
|
+
children: /* @__PURE__ */ jsx(List, {
|
|
159
|
+
role: "list",
|
|
160
|
+
children
|
|
161
|
+
})
|
|
162
|
+
})
|
|
163
|
+
}),
|
|
164
|
+
footer !== void 0 && footer !== null && footer !== false && /* @__PURE__ */ jsx(SidebarNavContext.Provider, {
|
|
165
|
+
value: footerContext,
|
|
166
|
+
children: /* @__PURE__ */ jsx(Footer, { children: footer })
|
|
167
|
+
})
|
|
168
|
+
]
|
|
169
|
+
});
|
|
170
|
+
});
|
|
171
|
+
SidebarNav.displayName = "SidebarNav";
|
|
172
|
+
/** One destination: a link (`href`) or a button, with an icon, a label, a count and an active state. */
|
|
173
|
+
var NavItem = forwardRef(function NavItem({ label, icon, href, as, isExternal = false, onClick, isActive = false, isDisabled = false, count, trailing, tooltip, id, className, style, ...rest }, ref) {
|
|
174
|
+
const { isCollapsed, isInList } = useContext(SidebarNavContext);
|
|
175
|
+
const isLink = href !== void 0;
|
|
176
|
+
const hasCount = count !== void 0 && count > 0;
|
|
177
|
+
const hasTooltip = tooltip !== void 0 && tooltip !== null && tooltip !== "";
|
|
178
|
+
const defaultBody = isCollapsed && !hasTooltip ? `${label}${hasCount ? ` · ${Math.floor(count)}` : ""}` : "";
|
|
179
|
+
const isDefaultBody = defaultBody !== "";
|
|
180
|
+
const tooltipBody = hasTooltip ? tooltip : defaultBody;
|
|
181
|
+
const handleClick = (event) => {
|
|
182
|
+
if (isDisabled) {
|
|
183
|
+
event.preventDefault();
|
|
184
|
+
return;
|
|
185
|
+
}
|
|
186
|
+
onClick?.(event);
|
|
187
|
+
};
|
|
188
|
+
const computedAria = {};
|
|
189
|
+
if (isActive) computedAria["aria-current"] = "page";
|
|
190
|
+
if (isDisabled) computedAria["aria-disabled"] = true;
|
|
191
|
+
const controlled = {
|
|
192
|
+
id,
|
|
193
|
+
onClick: handleClick,
|
|
194
|
+
style,
|
|
195
|
+
className: cx(!isActive && !isDisabled && ITEM_INTERACTIVE_CSS, isActive && ITEM_ACTIVE_CSS, isDisabled && ITEM_DISABLED_CSS, isCollapsed && ITEM_COLLAPSED_CSS, className)
|
|
196
|
+
};
|
|
197
|
+
if (isLink) if (isDisabled) {
|
|
198
|
+
controlled.role = "link";
|
|
199
|
+
controlled.tabIndex = 0;
|
|
200
|
+
} else {
|
|
201
|
+
if (as !== void 0) controlled.as = as;
|
|
202
|
+
controlled.href = href;
|
|
203
|
+
if (isExternal) {
|
|
204
|
+
controlled.target = "_blank";
|
|
205
|
+
controlled.rel = "noopener noreferrer";
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
else controlled.type = "button";
|
|
209
|
+
const content = /* @__PURE__ */ jsxs(Fragment$1, { children: [
|
|
210
|
+
icon !== void 0 ? /* @__PURE__ */ jsx(Icon, {
|
|
211
|
+
component: icon,
|
|
212
|
+
size: ITEM_ICON_PX,
|
|
213
|
+
variant: isActive && !isDisabled ? IconVariant.PRIMARY : IconVariant.INHERIT
|
|
214
|
+
}) : isCollapsed && /* @__PURE__ */ jsx(LetterBox, {
|
|
215
|
+
"aria-hidden": true,
|
|
216
|
+
children: /* @__PURE__ */ jsx(Text, {
|
|
217
|
+
as: "span",
|
|
218
|
+
size: TextSize.CAPTION,
|
|
219
|
+
weight: TextWeight.MEDIUM,
|
|
220
|
+
variant: TextVariant.INHERIT,
|
|
221
|
+
children: label.charAt(0)
|
|
222
|
+
})
|
|
223
|
+
}),
|
|
224
|
+
/* @__PURE__ */ jsx(Text, {
|
|
225
|
+
as: "span",
|
|
226
|
+
size: TextSize.BODY_MD,
|
|
227
|
+
weight: isActive ? TextWeight.MEDIUM : TextWeight.REGULAR,
|
|
228
|
+
variant: TextVariant.INHERIT,
|
|
229
|
+
lineClamp: 1,
|
|
230
|
+
shouldTooltipOnOverflow: !hasTooltip && !isCollapsed,
|
|
231
|
+
className: cx(LABEL_CSS, isCollapsed && VISUALLY_HIDDEN_CSS),
|
|
232
|
+
children: label
|
|
233
|
+
}),
|
|
234
|
+
hasCount && (isCollapsed ? /* @__PURE__ */ jsx(VisuallyHidden, { children: /* @__PURE__ */ jsx(Chip, {
|
|
235
|
+
count,
|
|
236
|
+
size: ChipSize.SMALL
|
|
237
|
+
}) }) : /* @__PURE__ */ jsx(Chip, {
|
|
238
|
+
count,
|
|
239
|
+
size: ChipSize.SMALL
|
|
240
|
+
})),
|
|
241
|
+
!isCollapsed && trailing !== void 0 && trailing !== null && /* @__PURE__ */ jsx(Trailing, { children: trailing }),
|
|
242
|
+
isLink && isExternal && !isCollapsed && /* @__PURE__ */ jsx(Icon, {
|
|
243
|
+
component: ArrowUpRightIcon,
|
|
244
|
+
size: SMALL_ICON_PX,
|
|
245
|
+
variant: IconVariant.TERTIARY
|
|
246
|
+
}),
|
|
247
|
+
isLink && isExternal && /* @__PURE__ */ jsx(VisuallyHidden, { children: " (opens in a new tab)" })
|
|
248
|
+
] });
|
|
249
|
+
const control = isLink ? /* @__PURE__ */ jsx(ItemLink, {
|
|
250
|
+
...computedAria,
|
|
251
|
+
...rest,
|
|
252
|
+
...controlled,
|
|
253
|
+
ref,
|
|
254
|
+
children: content
|
|
255
|
+
}) : /* @__PURE__ */ jsx(ItemButton, {
|
|
256
|
+
...computedAria,
|
|
257
|
+
...rest,
|
|
258
|
+
...controlled,
|
|
259
|
+
ref,
|
|
260
|
+
children: content
|
|
261
|
+
});
|
|
262
|
+
const item = /* @__PURE__ */ jsx(Tooltip, {
|
|
263
|
+
body: tooltipBody,
|
|
264
|
+
placement: Placement.RIGHT,
|
|
265
|
+
isDisabled: tooltipBody === "",
|
|
266
|
+
...isDefaultBody ? { "aria-hidden": true } : {},
|
|
267
|
+
children: control
|
|
268
|
+
});
|
|
269
|
+
if (!isInList) return item;
|
|
270
|
+
return /* @__PURE__ */ jsx(ItemLi, {
|
|
271
|
+
className: cx(isCollapsed && ITEM_LI_COLLAPSED_CSS),
|
|
272
|
+
children: item
|
|
273
|
+
});
|
|
274
|
+
});
|
|
275
|
+
NavItem.displayName = "NavItem";
|
|
276
|
+
/** A labelled section of items; with `isCollapsible` its heading folds it. */
|
|
277
|
+
var NavGroup = forwardRef(function NavGroup({ label, children, isCollapsible = false, isOpen: isOpenProp, defaultIsOpen = false, onOpenChange, id, className, style, ...rest }, ref) {
|
|
278
|
+
const { isCollapsed } = useContext(SidebarNavContext);
|
|
279
|
+
const baseId = useId();
|
|
280
|
+
const labelId = `${baseId}-label`;
|
|
281
|
+
const listId = `${baseId}-list`;
|
|
282
|
+
const { isOpen: openState, setOpen } = useControlledOpenState({
|
|
283
|
+
isOpen: isOpenProp,
|
|
284
|
+
defaultIsOpen,
|
|
285
|
+
onOpenChange
|
|
286
|
+
});
|
|
287
|
+
const isOpen = isCollapsed || !isCollapsible || openState;
|
|
288
|
+
const listContext = useMemo(() => ({
|
|
289
|
+
isCollapsed,
|
|
290
|
+
isInList: true
|
|
291
|
+
}), [isCollapsed]);
|
|
292
|
+
const labelText = /* @__PURE__ */ jsx(Text, {
|
|
293
|
+
as: "span",
|
|
294
|
+
id: labelId,
|
|
295
|
+
size: TextSize.CAPTION,
|
|
296
|
+
weight: TextWeight.MEDIUM,
|
|
297
|
+
variant: TextVariant.TERTIARY,
|
|
298
|
+
transform: TextTransform.UPPERCASE,
|
|
299
|
+
lineClamp: 1,
|
|
300
|
+
className: cx(isCollapsed && VISUALLY_HIDDEN_CSS),
|
|
301
|
+
children: label
|
|
302
|
+
});
|
|
303
|
+
const heading = isCollapsed ? /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(GroupDivider, { children: /* @__PURE__ */ jsx(Divider, {}) }), labelText] }) : isCollapsible ? /* @__PURE__ */ jsxs(GroupToggle, {
|
|
304
|
+
type: "button",
|
|
305
|
+
"aria-expanded": isOpen,
|
|
306
|
+
"aria-controls": isOpen ? listId : void 0,
|
|
307
|
+
onClick: () => setOpen(!openState),
|
|
308
|
+
children: [labelText, /* @__PURE__ */ jsx(Rotate, {
|
|
309
|
+
isRotated: isOpen,
|
|
310
|
+
deg: 90,
|
|
311
|
+
children: /* @__PURE__ */ jsx(Icon, {
|
|
312
|
+
component: CaretRightIcon,
|
|
313
|
+
size: CARET_PX,
|
|
314
|
+
variant: IconVariant.TERTIARY
|
|
315
|
+
})
|
|
316
|
+
})]
|
|
317
|
+
}) : /* @__PURE__ */ jsx(GroupLabel, { children: labelText });
|
|
318
|
+
const list = /* @__PURE__ */ jsx(SidebarNavContext.Provider, {
|
|
319
|
+
value: listContext,
|
|
320
|
+
children: /* @__PURE__ */ jsx(GroupList, {
|
|
321
|
+
role: "list",
|
|
322
|
+
id: listId,
|
|
323
|
+
"aria-labelledby": labelId,
|
|
324
|
+
children
|
|
325
|
+
})
|
|
326
|
+
});
|
|
327
|
+
return /* @__PURE__ */ jsxs(GroupRoot, {
|
|
328
|
+
...rest,
|
|
329
|
+
ref,
|
|
330
|
+
id,
|
|
331
|
+
className,
|
|
332
|
+
style,
|
|
333
|
+
children: [heading, isCollapsible ? /* @__PURE__ */ jsx(CollapseMotion, {
|
|
334
|
+
isOpen,
|
|
335
|
+
children: list
|
|
336
|
+
}) : list]
|
|
337
|
+
});
|
|
338
|
+
});
|
|
339
|
+
NavGroup.displayName = "NavGroup";
|
|
340
|
+
//#endregion
|
|
341
|
+
export { NavGroup, NavItem, SidebarNav as default };
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { type AriaAttributes, type CSSProperties } from "react";
|
|
2
|
+
import { Orientation } from "../theme/enums.js";
|
|
3
|
+
/** Canonical rungs, subset: the step row height. */
|
|
4
|
+
export declare enum StepperSize {
|
|
5
|
+
/** 24px step rows, 16px markers, body_sm labels. */
|
|
6
|
+
SMALL = "SMALL",
|
|
7
|
+
/** 32px step rows, 20px markers, body_md labels. The default. */
|
|
8
|
+
MEDIUM = "MEDIUM"
|
|
9
|
+
}
|
|
10
|
+
/** One step of a Stepper. */
|
|
11
|
+
export interface StepperStep {
|
|
12
|
+
/** Step name, one short line ("Source", "Schema", "Schedule"). */
|
|
13
|
+
label: string;
|
|
14
|
+
/** Second line under the label: a summary of a done step or a hint for an upcoming one. */
|
|
15
|
+
description?: string;
|
|
16
|
+
/** The step failed (validation, a connection test). Shows the error marker whatever its position. */
|
|
17
|
+
isError?: boolean;
|
|
18
|
+
}
|
|
19
|
+
export interface StepperProps extends AriaAttributes {
|
|
20
|
+
/** The steps, in order. Two to seven is the useful range. */
|
|
21
|
+
steps: StepperStep[];
|
|
22
|
+
/** Zero-based index of the current step. Steps before it are done; `steps.length` marks every step done. */
|
|
23
|
+
value: number;
|
|
24
|
+
/** When set, done steps become buttons, and pressing one calls this with its index (to go back). Current and upcoming steps are never pressable. */
|
|
25
|
+
onChange?: (value: number) => void;
|
|
26
|
+
/**
|
|
27
|
+
* `HORIZONTAL`: one row, connectors stretch between steps. `VERTICAL`: one column, connectors run down between markers, descriptions sit under labels.
|
|
28
|
+
* @default Orientation.HORIZONTAL
|
|
29
|
+
*/
|
|
30
|
+
orientation?: Orientation;
|
|
31
|
+
/**
|
|
32
|
+
* `SMALL` for dense surfaces (a modal header, a side panel); `MEDIUM` for a page.
|
|
33
|
+
* @default StepperSize.MEDIUM
|
|
34
|
+
*/
|
|
35
|
+
size?: StepperSize;
|
|
36
|
+
/**
|
|
37
|
+
* Accessible name of the step list. An explicit `aria-label` or `aria-labelledby` wins over it.
|
|
38
|
+
* @default "Progress"
|
|
39
|
+
*/
|
|
40
|
+
ariaLabel?: string;
|
|
41
|
+
/** DOM id on the root `<ol>`. */
|
|
42
|
+
id?: string;
|
|
43
|
+
/** Any `data-*` attribute, forwarded to the root `<ol>`. */
|
|
44
|
+
[dataAttribute: `data-${string}`]: string | number | boolean | undefined;
|
|
45
|
+
/** Extra class on the root `<ol>`. */
|
|
46
|
+
className?: string;
|
|
47
|
+
/** Inline style on the root `<ol>`; only for setting CSS custom properties. */
|
|
48
|
+
style?: CSSProperties;
|
|
49
|
+
}
|
|
50
|
+
/** An ordered list of steps with done / current / upcoming / error markers. */
|
|
51
|
+
declare const Stepper: import("react").ForwardRefExoticComponent<StepperProps & import("react").RefAttributes<HTMLOListElement>>;
|
|
52
|
+
export default Stepper;
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
import VisuallyHidden from "../a11y/VisuallyHidden.js";
|
|
2
|
+
import { Orientation } from "../theme/enums.js";
|
|
3
|
+
import Text, { TextSize, TextVariant, TextWeight } from "../text/Text.js";
|
|
4
|
+
import Icon, { IconVariant } from "../icons/Icon.js";
|
|
5
|
+
/* empty css */
|
|
6
|
+
import { styled } from "@linaria/react";
|
|
7
|
+
import { forwardRef, useId } from "react";
|
|
8
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
9
|
+
import { cx } from "@linaria/core";
|
|
10
|
+
import { match } from "ts-pattern";
|
|
11
|
+
import { CheckIcon, ExclamationMarkIcon } from "@phosphor-icons/react";
|
|
12
|
+
//#region src/navigation/Stepper.tsx
|
|
13
|
+
/**
|
|
14
|
+
* Progress through a known, ordered sequence of steps: a setup wizard, a connector onboarding, a
|
|
15
|
+
* multi-page form. Each step is a numbered marker with a label (and an optional description),
|
|
16
|
+
* joined by hairline connectors, in one of four states derived from `value` and the step's
|
|
17
|
+
* `isError`: done (before `value`, a check), current (a `solid.primary` marker), upcoming (a hairline
|
|
18
|
+
* marker) and error (an error marker, whatever its position).
|
|
19
|
+
*
|
|
20
|
+
* The app owns the wizard: Stepper never advances itself. With `onChange`, done steps become
|
|
21
|
+
* buttons that go back. Not `Tabs` (free movement between peer views), not `Breadcrumbs`, not a
|
|
22
|
+
* `ProgressBar`.
|
|
23
|
+
*/
|
|
24
|
+
/** Canonical rungs, subset: the step row height. */
|
|
25
|
+
var StepperSize = /* @__PURE__ */ function(StepperSize) {
|
|
26
|
+
/** 24px step rows, 16px markers, body_sm labels. */
|
|
27
|
+
StepperSize["SMALL"] = "SMALL";
|
|
28
|
+
/** 32px step rows, 20px markers, body_md labels. The default. */
|
|
29
|
+
StepperSize["MEDIUM"] = "MEDIUM";
|
|
30
|
+
return StepperSize;
|
|
31
|
+
}({});
|
|
32
|
+
var Root = /*#__PURE__*/ styled("ol")({
|
|
33
|
+
name: "Root",
|
|
34
|
+
class: "gx-Stepper-r12f0za8",
|
|
35
|
+
propsAsIs: false
|
|
36
|
+
});
|
|
37
|
+
var Item = /*#__PURE__*/ styled("li")({
|
|
38
|
+
name: "Item",
|
|
39
|
+
class: "gx-Stepper-Item-i19a96w9",
|
|
40
|
+
propsAsIs: false
|
|
41
|
+
});
|
|
42
|
+
var StepBody = /*#__PURE__*/ styled("div")({
|
|
43
|
+
name: "StepBody",
|
|
44
|
+
class: "gx-Stepper-StepBody-s1ykcpbe",
|
|
45
|
+
propsAsIs: false
|
|
46
|
+
});
|
|
47
|
+
var Marker = /*#__PURE__*/ styled("span")({
|
|
48
|
+
name: "Marker",
|
|
49
|
+
class: "gx-Stepper-Marker-m1o1000g",
|
|
50
|
+
propsAsIs: false
|
|
51
|
+
});
|
|
52
|
+
/** The label's first line sits on the marker's center line on whole pixels. */
|
|
53
|
+
var Labels = /*#__PURE__*/ styled("span")({
|
|
54
|
+
name: "Labels",
|
|
55
|
+
class: "gx-Stepper-Labels-l1mc7icv",
|
|
56
|
+
propsAsIs: false
|
|
57
|
+
});
|
|
58
|
+
/** A hairline drawn as a box, not a border on the step. */
|
|
59
|
+
var Connector = /*#__PURE__*/ styled("span")({
|
|
60
|
+
name: "Connector",
|
|
61
|
+
class: "gx-Stepper-Connector-c1dui4jh",
|
|
62
|
+
propsAsIs: false
|
|
63
|
+
});
|
|
64
|
+
/** Horizontally, the root gap spaces each connector from the next marker as the item gap does from its own body. */
|
|
65
|
+
var STEPPER_ORIENTATION_TO_CSS_MAP = {
|
|
66
|
+
[Orientation.HORIZONTAL]: "gx-Stepper-Orientation_HORIZONTAL-o16d5g79",
|
|
67
|
+
[Orientation.VERTICAL]: "gx-Stepper-Orientation_VERTICAL-o1049ro5"
|
|
68
|
+
};
|
|
69
|
+
/** Horizontal items share the row (the last hugs its label); vertical items stack 12px apart. */
|
|
70
|
+
var STEPPER_ORIENTATION_TO_ITEM_CSS_MAP = {
|
|
71
|
+
[Orientation.HORIZONTAL]: "gx-Stepper-Orientation_HORIZONTAL-oql4yxv",
|
|
72
|
+
[Orientation.VERTICAL]: "gx-Stepper-Orientation_VERTICAL-o1w24kam"
|
|
73
|
+
};
|
|
74
|
+
/** On the markers' center line horizontally; from this marker to the next one vertically. */
|
|
75
|
+
var STEPPER_ORIENTATION_TO_CONNECTOR_CSS_MAP = {
|
|
76
|
+
[Orientation.HORIZONTAL]: "gx-Stepper-Orientation_HORIZONTAL-o18ilulu",
|
|
77
|
+
[Orientation.VERTICAL]: "gx-Stepper-Orientation_VERTICAL-o10rn855"
|
|
78
|
+
};
|
|
79
|
+
/** Marker box, the body gap and the label inset per size. */
|
|
80
|
+
var STEPPER_SIZE_TO_CSS_MAP = {
|
|
81
|
+
["SMALL"]: "gx-Stepper-SMALL-s1yz4n12",
|
|
82
|
+
["MEDIUM"]: "gx-Stepper-MEDIUM-m183g7q0"
|
|
83
|
+
};
|
|
84
|
+
/** Composed after the static rules, so the reset does not undo the layout. */
|
|
85
|
+
var PRESSABLE_CSS = "gx-Stepper-PRESSABLE_CSS-p1efnnpp";
|
|
86
|
+
var STEP_STATE_TO_MARKER_CSS_MAP = {
|
|
87
|
+
["DONE"]: "gx-Stepper-DONE-d1qppj3j",
|
|
88
|
+
["CURRENT"]: "gx-Stepper-CURRENT-c1tzddsu",
|
|
89
|
+
["UPCOMING"]: "gx-Stepper-UPCOMING-u161l825",
|
|
90
|
+
["ERROR"]: "gx-Stepper-ERROR-e12l09wj"
|
|
91
|
+
};
|
|
92
|
+
var STEPPER_SIZE_TO_TEXT_SIZE_MAP = {
|
|
93
|
+
["SMALL"]: TextSize.BODY_SM,
|
|
94
|
+
["MEDIUM"]: TextSize.BODY_MD
|
|
95
|
+
};
|
|
96
|
+
var STEPPER_SIZE_TO_DESCRIPTION_SIZE_MAP = {
|
|
97
|
+
["SMALL"]: TextSize.CAPTION,
|
|
98
|
+
["MEDIUM"]: TextSize.BODY_SM
|
|
99
|
+
};
|
|
100
|
+
var STEPPER_SIZE_TO_ICON_PX_MAP = {
|
|
101
|
+
["SMALL"]: 10,
|
|
102
|
+
["MEDIUM"]: 12
|
|
103
|
+
};
|
|
104
|
+
var STEP_STATE_TO_LABEL_VARIANT_MAP = {
|
|
105
|
+
["DONE"]: TextVariant.SECONDARY,
|
|
106
|
+
["CURRENT"]: TextVariant.PRIMARY,
|
|
107
|
+
["UPCOMING"]: TextVariant.TERTIARY
|
|
108
|
+
};
|
|
109
|
+
/** The state in words, so it is not conveyed by color or glyph alone (WCAG 1.4.1). */
|
|
110
|
+
var STEP_STATE_TO_A11Y_TEXT_MAP = {
|
|
111
|
+
["DONE"]: "Completed",
|
|
112
|
+
["CURRENT"]: "Current step",
|
|
113
|
+
["UPCOMING"]: "Not started",
|
|
114
|
+
["ERROR"]: "Error"
|
|
115
|
+
};
|
|
116
|
+
/** Done, current or upcoming, from the step's index and the clamped `value`. */
|
|
117
|
+
function positionOf(index, value) {
|
|
118
|
+
if (index < value) return "DONE";
|
|
119
|
+
if (index === value) return "CURRENT";
|
|
120
|
+
return "UPCOMING";
|
|
121
|
+
}
|
|
122
|
+
/** The marker's content: a check, an exclamation mark, or the step number. */
|
|
123
|
+
function markerContent(state, index, size) {
|
|
124
|
+
return match(state).with("DONE", () => /* @__PURE__ */ jsx(Icon, {
|
|
125
|
+
component: CheckIcon,
|
|
126
|
+
size: STEPPER_SIZE_TO_ICON_PX_MAP[size],
|
|
127
|
+
variant: IconVariant.PRIMARY
|
|
128
|
+
})).with("ERROR", () => /* @__PURE__ */ jsx(Icon, {
|
|
129
|
+
component: ExclamationMarkIcon,
|
|
130
|
+
size: STEPPER_SIZE_TO_ICON_PX_MAP[size],
|
|
131
|
+
variant: IconVariant.ERROR
|
|
132
|
+
})).with("CURRENT", "UPCOMING", () => /* @__PURE__ */ jsx(Text, {
|
|
133
|
+
as: "span",
|
|
134
|
+
size: TextSize.CAPTION,
|
|
135
|
+
weight: TextWeight.MEDIUM,
|
|
136
|
+
variant: TextVariant.INHERIT,
|
|
137
|
+
isTabular: true,
|
|
138
|
+
children: index + 1
|
|
139
|
+
})).exhaustive();
|
|
140
|
+
}
|
|
141
|
+
/** An ordered list of steps with done / current / upcoming / error markers. */
|
|
142
|
+
var Stepper = forwardRef(function Stepper({ steps, value, onChange, orientation = Orientation.HORIZONTAL, size = "MEDIUM", ariaLabel = "Progress", className, ...rest }, ref) {
|
|
143
|
+
const current = Math.min(steps.length, Math.max(0, Number.isNaN(value) ? 0 : Math.floor(value)));
|
|
144
|
+
const hasExplicitName = rest["aria-label"] !== void 0 || rest["aria-labelledby"] !== void 0;
|
|
145
|
+
const baseId = useId();
|
|
146
|
+
return /* @__PURE__ */ jsx(Root, {
|
|
147
|
+
...rest,
|
|
148
|
+
ref,
|
|
149
|
+
"aria-label": hasExplicitName ? rest["aria-label"] : ariaLabel,
|
|
150
|
+
className: cx(STEPPER_ORIENTATION_TO_CSS_MAP[orientation], STEPPER_SIZE_TO_CSS_MAP[size], className),
|
|
151
|
+
children: steps.map((step, index) => {
|
|
152
|
+
const position = positionOf(index, current);
|
|
153
|
+
const state = step.isError === true ? "ERROR" : position;
|
|
154
|
+
const isPressable = onChange !== void 0 && position === "DONE";
|
|
155
|
+
const labelId = `${baseId}-${String(index)}-label`;
|
|
156
|
+
const stateId = `${baseId}-${String(index)}-state`;
|
|
157
|
+
const descriptionId = `${baseId}-${String(index)}-description`;
|
|
158
|
+
const hasDescription = step.description !== void 0 && step.description !== "";
|
|
159
|
+
return /* @__PURE__ */ jsxs(Item, {
|
|
160
|
+
"aria-current": position === "CURRENT" ? "step" : void 0,
|
|
161
|
+
className: STEPPER_ORIENTATION_TO_ITEM_CSS_MAP[orientation],
|
|
162
|
+
children: [/* @__PURE__ */ jsxs(StepBody, {
|
|
163
|
+
as: isPressable ? "button" : "div",
|
|
164
|
+
...isPressable ? {
|
|
165
|
+
type: "button",
|
|
166
|
+
onClick: () => onChange(index),
|
|
167
|
+
"aria-labelledby": `${labelId} ${stateId}`,
|
|
168
|
+
...hasDescription ? { "aria-describedby": descriptionId } : {}
|
|
169
|
+
} : {},
|
|
170
|
+
className: cx(isPressable && PRESSABLE_CSS),
|
|
171
|
+
children: [/* @__PURE__ */ jsx(Marker, {
|
|
172
|
+
className: STEP_STATE_TO_MARKER_CSS_MAP[state],
|
|
173
|
+
"aria-hidden": true,
|
|
174
|
+
children: markerContent(state, index, size)
|
|
175
|
+
}), /* @__PURE__ */ jsxs(Labels, { children: [
|
|
176
|
+
/* @__PURE__ */ jsx(Text, {
|
|
177
|
+
as: "span",
|
|
178
|
+
id: labelId,
|
|
179
|
+
size: STEPPER_SIZE_TO_TEXT_SIZE_MAP[size],
|
|
180
|
+
weight: position === "CURRENT" ? TextWeight.MEDIUM : TextWeight.REGULAR,
|
|
181
|
+
variant: isPressable ? TextVariant.INHERIT : STEP_STATE_TO_LABEL_VARIANT_MAP[position],
|
|
182
|
+
lineClamp: 1,
|
|
183
|
+
children: step.label
|
|
184
|
+
}),
|
|
185
|
+
hasDescription && /* @__PURE__ */ jsx(Text, {
|
|
186
|
+
as: "span",
|
|
187
|
+
id: descriptionId,
|
|
188
|
+
size: STEPPER_SIZE_TO_DESCRIPTION_SIZE_MAP[size],
|
|
189
|
+
variant: TextVariant.TERTIARY,
|
|
190
|
+
children: step.description
|
|
191
|
+
}),
|
|
192
|
+
/* @__PURE__ */ jsx(VisuallyHidden, {
|
|
193
|
+
id: stateId,
|
|
194
|
+
children: STEP_STATE_TO_A11Y_TEXT_MAP[state]
|
|
195
|
+
})
|
|
196
|
+
] })]
|
|
197
|
+
}), index < steps.length - 1 && /* @__PURE__ */ jsx(Connector, {
|
|
198
|
+
"aria-hidden": true,
|
|
199
|
+
className: STEPPER_ORIENTATION_TO_CONNECTOR_CSS_MAP[orientation]
|
|
200
|
+
})]
|
|
201
|
+
}, `step-${String(index)}`);
|
|
202
|
+
})
|
|
203
|
+
});
|
|
204
|
+
});
|
|
205
|
+
Stepper.displayName = "Stepper";
|
|
206
|
+
//#endregion
|
|
207
|
+
export { StepperSize, Stepper as default };
|