@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,183 @@
|
|
|
1
|
+
import Text, { TextSize, TextVariant } from "../text/Text.js";
|
|
2
|
+
import { formatPercent } from "../utils/format.js";
|
|
3
|
+
/* empty css */
|
|
4
|
+
import { styled } from "@linaria/react";
|
|
5
|
+
import { forwardRef, useId } from "react";
|
|
6
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
7
|
+
import { cx } from "@linaria/core";
|
|
8
|
+
//#region src/feedback/ProgressBar.tsx
|
|
9
|
+
/**
|
|
10
|
+
* The horizontal progress bar: a thin track that fills from the start edge to show how much of a
|
|
11
|
+
* measured task is done (a sync, an upload, an onboarding checklist, a quota). An optional visible
|
|
12
|
+
* `label` sits above the bar and `shouldShowValue` puts the formatted percentage at the end of that
|
|
13
|
+
* line. `isIndeterminate` sweeps a segment along the track while the total is not known yet.
|
|
14
|
+
*
|
|
15
|
+
* The bar sibling of `ProgressCircle`, with the same props (`value`, `label` / `ariaLabel`, `size`,
|
|
16
|
+
* `variant` / `color`, `shouldShowValue`), defaults and ARIA: a `role="progressbar"`, not a live
|
|
17
|
+
* region. Only the bar has `isIndeterminate` (a ring with no known value is `Spinner`). The value
|
|
18
|
+
* is one unitless custom property (`--gx-progress-bar-value`) read as the fill's `scaleX`.
|
|
19
|
+
*
|
|
20
|
+
* Replaces 1.x `charts/ProgressBar` (`percentage` → `value`, `height` → `size`; `noSliverOnZero`
|
|
21
|
+
* and `noAnimation` are gone; a name is now required).
|
|
22
|
+
*/
|
|
23
|
+
/** Canonical rungs; the member names the rung of the text the bar sits with. */
|
|
24
|
+
var ProgressBarSize = /* @__PURE__ */ function(ProgressBarSize) {
|
|
25
|
+
/** 2px track, caption label. */
|
|
26
|
+
ProgressBarSize["X_SMALL"] = "X_SMALL";
|
|
27
|
+
/** 4px track, body_sm label. */
|
|
28
|
+
ProgressBarSize["SMALL"] = "SMALL";
|
|
29
|
+
/** 4px track, body_md label. The default (1.x `height` 4). */
|
|
30
|
+
ProgressBarSize["MEDIUM"] = "MEDIUM";
|
|
31
|
+
/** 6px track, body_lg label. */
|
|
32
|
+
ProgressBarSize["LARGE"] = "LARGE";
|
|
33
|
+
/** 8px track, body_lg label. */
|
|
34
|
+
ProgressBarSize["X_LARGE"] = "X_LARGE";
|
|
35
|
+
return ProgressBarSize;
|
|
36
|
+
}({});
|
|
37
|
+
/** Fill color (Constitution V-A color set, subset; the same members as `ProgressCircleVariant`). */
|
|
38
|
+
var ProgressBarVariant = /* @__PURE__ */ function(ProgressBarVariant) {
|
|
39
|
+
/** `text.primary`. The default. */
|
|
40
|
+
ProgressBarVariant["PRIMARY"] = "PRIMARY";
|
|
41
|
+
/** `text.secondary`. */
|
|
42
|
+
ProgressBarVariant["SECONDARY"] = "SECONDARY";
|
|
43
|
+
/** `text.tertiary`. */
|
|
44
|
+
ProgressBarVariant["TERTIARY"] = "TERTIARY";
|
|
45
|
+
/** `text.success`: healthy, on track, complete. */
|
|
46
|
+
ProgressBarVariant["SUCCESS"] = "SUCCESS";
|
|
47
|
+
/** `text.warning`: at risk, nearing a limit. */
|
|
48
|
+
ProgressBarVariant["WARNING"] = "WARNING";
|
|
49
|
+
/** `text.error`: failing, over a limit. */
|
|
50
|
+
ProgressBarVariant["ERROR"] = "ERROR";
|
|
51
|
+
return ProgressBarVariant;
|
|
52
|
+
}({});
|
|
53
|
+
/** A block that spans its parent: the label line over the track. */
|
|
54
|
+
var Root = /*#__PURE__*/ styled("div")({
|
|
55
|
+
name: "Root",
|
|
56
|
+
class: "gx-ProgressBar-r12nr8gl",
|
|
57
|
+
propsAsIs: false
|
|
58
|
+
});
|
|
59
|
+
/** The label at the start, the value at the end of the same line. */
|
|
60
|
+
var Header = /*#__PURE__*/ styled("div")({
|
|
61
|
+
name: "Header",
|
|
62
|
+
class: "gx-ProgressBar-Header-hesav0t",
|
|
63
|
+
propsAsIs: false
|
|
64
|
+
});
|
|
65
|
+
/**
|
|
66
|
+
* The 1.x track, from tokens; it clips the fill's corners. The hairline is drawn by a layer under
|
|
67
|
+
* the fill instead of the track's own border: browsers round a 0.5px border up to one device pixel,
|
|
68
|
+
* which on a 1x screen would leave no room for the fill inside a 2px track.
|
|
69
|
+
*/
|
|
70
|
+
var Track = /*#__PURE__*/ styled("div")({
|
|
71
|
+
name: "Track",
|
|
72
|
+
class: "gx-ProgressBar-Track-t1cxqn1j",
|
|
73
|
+
propsAsIs: false
|
|
74
|
+
});
|
|
75
|
+
/** A full-width block scaled to the value: paint-only motion, eased at `duration.base`. */
|
|
76
|
+
var Fill = /*#__PURE__*/ styled("div")({
|
|
77
|
+
name: "Fill",
|
|
78
|
+
class: "gx-ProgressBar-Fill-f1xq51tl",
|
|
79
|
+
propsAsIs: false
|
|
80
|
+
});
|
|
81
|
+
/**
|
|
82
|
+
* A third-width segment that sweeps the track every `duration.base × 10` (1.5s). At rest (reduced
|
|
83
|
+
* motion) it sits in the middle third, which cannot be read as "a third done". The keyframes are
|
|
84
|
+
* global, so the name is `gx-` prefixed.
|
|
85
|
+
*/
|
|
86
|
+
var INDETERMINATE_CSS = "gx-ProgressBar-INDETERMINATE_CSS-ifwzsb";
|
|
87
|
+
/** Puts the value in the second column, so it sits at the end of the line with or without a label. */
|
|
88
|
+
var VALUE_CSS = "gx-ProgressBar-VALUE_CSS-v1tz8l3d";
|
|
89
|
+
/** Sets `color` on the root; the fill reads `currentColor`. The label and value stay secondary. */
|
|
90
|
+
var PROGRESS_BAR_VARIANT_TO_CSS_MAP = {
|
|
91
|
+
["PRIMARY"]: "gx-ProgressBar-PRIMARY-p1mmftma",
|
|
92
|
+
["SECONDARY"]: "gx-ProgressBar-SECONDARY-szuthhn",
|
|
93
|
+
["TERTIARY"]: "gx-ProgressBar-TERTIARY-t8vjpd0",
|
|
94
|
+
["SUCCESS"]: "gx-ProgressBar-SUCCESS-sgk7jdy",
|
|
95
|
+
["WARNING"]: "gx-ProgressBar-WARNING-w1w2olvo",
|
|
96
|
+
["ERROR"]: "gx-ProgressBar-ERROR-e1qre8wf"
|
|
97
|
+
};
|
|
98
|
+
/** Categorical `color`: `text.<family>` on the root, the way a status variant renders. */
|
|
99
|
+
var PROGRESS_BAR_COLOR_TO_CSS_MAP = {
|
|
100
|
+
red: "gx-ProgressBar-red-reiy0oi",
|
|
101
|
+
orange: "gx-ProgressBar-orange-o1epzlep",
|
|
102
|
+
amber: "gx-ProgressBar-amber-aasg8k0",
|
|
103
|
+
yellow: "gx-ProgressBar-yellow-y1kkinrj",
|
|
104
|
+
lime: "gx-ProgressBar-lime-lcvje08",
|
|
105
|
+
green: "gx-ProgressBar-green-gb5j54q",
|
|
106
|
+
emerald: "gx-ProgressBar-emerald-elbvi15",
|
|
107
|
+
teal: "gx-ProgressBar-teal-twaqggx",
|
|
108
|
+
cyan: "gx-ProgressBar-cyan-c6fb74o",
|
|
109
|
+
sky: "gx-ProgressBar-sky-s13m8tjk",
|
|
110
|
+
blue: "gx-ProgressBar-blue-b195062s",
|
|
111
|
+
indigo: "gx-ProgressBar-indigo-i1tjg1hb",
|
|
112
|
+
violet: "gx-ProgressBar-violet-v1hc7niq",
|
|
113
|
+
purple: "gx-ProgressBar-purple-p31v6jj",
|
|
114
|
+
fuchsia: "gx-ProgressBar-fuchsia-f1idth2y",
|
|
115
|
+
pink: "gx-ProgressBar-pink-psz64tr",
|
|
116
|
+
rose: "gx-ProgressBar-rose-r121jrhu"
|
|
117
|
+
};
|
|
118
|
+
/** Track thickness and the gap between the label line and the track. */
|
|
119
|
+
var PROGRESS_BAR_SIZE_TO_CSS_MAP = {
|
|
120
|
+
["X_SMALL"]: "gx-ProgressBar-X_SMALL-xoqk5ch",
|
|
121
|
+
["SMALL"]: "gx-ProgressBar-SMALL-s1luqk3n",
|
|
122
|
+
["MEDIUM"]: "gx-ProgressBar-MEDIUM-m1hbdj3k",
|
|
123
|
+
["LARGE"]: "gx-ProgressBar-LARGE-l17skgql",
|
|
124
|
+
["X_LARGE"]: "gx-ProgressBar-X_LARGE-x1i0eise"
|
|
125
|
+
};
|
|
126
|
+
/** The label and value are the rung's text step (the ProgressCircle table). */
|
|
127
|
+
var PROGRESS_BAR_SIZE_TO_TEXT_SIZE_MAP = {
|
|
128
|
+
["X_SMALL"]: TextSize.CAPTION,
|
|
129
|
+
["SMALL"]: TextSize.BODY_SM,
|
|
130
|
+
["MEDIUM"]: TextSize.BODY_MD,
|
|
131
|
+
["LARGE"]: TextSize.BODY_LG,
|
|
132
|
+
["X_LARGE"]: TextSize.BODY_LG
|
|
133
|
+
};
|
|
134
|
+
/** 0–100; `NaN` → 0. */
|
|
135
|
+
function clampPercent(value) {
|
|
136
|
+
if (Number.isNaN(value)) return 0;
|
|
137
|
+
return Math.min(100, Math.max(0, value));
|
|
138
|
+
}
|
|
139
|
+
/** A horizontal progress bar with an optional label line. */
|
|
140
|
+
var ProgressBar = forwardRef(function ProgressBar({ value, isIndeterminate = false, shouldShowValue = false, variant = "PRIMARY", color, size = "MEDIUM", label, ariaLabel, className, style, ...rest }, ref) {
|
|
141
|
+
const labelId = useId();
|
|
142
|
+
const clamped = isIndeterminate || value === void 0 ? 0 : clampPercent(value);
|
|
143
|
+
const hasLabel = Boolean(label);
|
|
144
|
+
const isValueShown = shouldShowValue && !isIndeterminate;
|
|
145
|
+
const textSize = PROGRESS_BAR_SIZE_TO_TEXT_SIZE_MAP[size];
|
|
146
|
+
const percentText = formatPercent(clamped / 100);
|
|
147
|
+
const variables = { "--gx-progress-bar-value": String(clamped) };
|
|
148
|
+
return /* @__PURE__ */ jsxs(Root, {
|
|
149
|
+
...rest,
|
|
150
|
+
ref,
|
|
151
|
+
role: "progressbar",
|
|
152
|
+
"aria-valuemin": 0,
|
|
153
|
+
"aria-valuemax": 100,
|
|
154
|
+
"aria-valuenow": isIndeterminate ? void 0 : Math.round(clamped),
|
|
155
|
+
"aria-valuetext": isIndeterminate ? void 0 : rest["aria-valuetext"] ?? percentText,
|
|
156
|
+
"aria-label": hasLabel ? rest["aria-label"] : ariaLabel ?? rest["aria-label"],
|
|
157
|
+
"aria-labelledby": hasLabel ? labelId : rest["aria-labelledby"],
|
|
158
|
+
className: cx(color !== void 0 ? PROGRESS_BAR_COLOR_TO_CSS_MAP[color] : PROGRESS_BAR_VARIANT_TO_CSS_MAP[variant], PROGRESS_BAR_SIZE_TO_CSS_MAP[size], className),
|
|
159
|
+
style: {
|
|
160
|
+
...variables,
|
|
161
|
+
...style
|
|
162
|
+
},
|
|
163
|
+
children: [(hasLabel || isValueShown) && /* @__PURE__ */ jsxs(Header, { children: [hasLabel && /* @__PURE__ */ jsx(Text, {
|
|
164
|
+
as: "span",
|
|
165
|
+
id: labelId,
|
|
166
|
+
size: textSize,
|
|
167
|
+
variant: TextVariant.SECONDARY,
|
|
168
|
+
lineClamp: 1,
|
|
169
|
+
children: label
|
|
170
|
+
}), isValueShown && /* @__PURE__ */ jsx(Text, {
|
|
171
|
+
as: "span",
|
|
172
|
+
size: textSize,
|
|
173
|
+
variant: TextVariant.SECONDARY,
|
|
174
|
+
isTabular: true,
|
|
175
|
+
"aria-hidden": true,
|
|
176
|
+
className: VALUE_CSS,
|
|
177
|
+
children: percentText
|
|
178
|
+
})] }), /* @__PURE__ */ jsx(Track, { children: /* @__PURE__ */ jsx(Fill, { className: cx(isIndeterminate && INDETERMINATE_CSS) }) })]
|
|
179
|
+
});
|
|
180
|
+
});
|
|
181
|
+
ProgressBar.displayName = "ProgressBar";
|
|
182
|
+
//#endregion
|
|
183
|
+
export { ProgressBarSize, ProgressBarVariant, ProgressBar as default };
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { type AriaAttributes, type CSSProperties } from "react";
|
|
2
|
+
import type { PaletteColor } from "../theme/tokens/types.js";
|
|
3
|
+
/** Canonical rungs; the member names the control rung the ring sits in. */
|
|
4
|
+
export declare enum ProgressCircleSize {
|
|
5
|
+
/** 20px rung: 12px ring, caption label. */
|
|
6
|
+
X_SMALL = "X_SMALL",
|
|
7
|
+
/** 24px rung: 12px ring, body_sm label. */
|
|
8
|
+
SMALL = "SMALL",
|
|
9
|
+
/** 32px rung: 14px ring, body_md label. The default. */
|
|
10
|
+
MEDIUM = "MEDIUM",
|
|
11
|
+
/** 36px rung: 14px ring, body_lg label. */
|
|
12
|
+
LARGE = "LARGE",
|
|
13
|
+
/** 40px rung: 16px ring, body_lg label. */
|
|
14
|
+
X_LARGE = "X_LARGE"
|
|
15
|
+
}
|
|
16
|
+
/** Arc color (Constitution V-A color set, subset; the same members as `ProgressBarVariant`). */
|
|
17
|
+
export declare enum ProgressCircleVariant {
|
|
18
|
+
/** `text.primary`. The default. */
|
|
19
|
+
PRIMARY = "PRIMARY",
|
|
20
|
+
/** `text.secondary`. */
|
|
21
|
+
SECONDARY = "SECONDARY",
|
|
22
|
+
/** `text.tertiary`. */
|
|
23
|
+
TERTIARY = "TERTIARY",
|
|
24
|
+
/** `text.success`: healthy, on track, complete. */
|
|
25
|
+
SUCCESS = "SUCCESS",
|
|
26
|
+
/** `text.warning`: at risk, nearing a limit. */
|
|
27
|
+
WARNING = "WARNING",
|
|
28
|
+
/** `text.error`: failing, over a limit. */
|
|
29
|
+
ERROR = "ERROR"
|
|
30
|
+
}
|
|
31
|
+
/** The value, the size and the shown value (everything except the color pair, the name pair and the passthrough). */
|
|
32
|
+
interface ProgressCircleBaseProps extends AriaAttributes {
|
|
33
|
+
/** Progress from 0 to 100. Clamped to that range; `NaN` counts as 0. */
|
|
34
|
+
value: number;
|
|
35
|
+
/**
|
|
36
|
+
* The control rung the ring sits in: the ring is that rung's icon size (12 / 12 / 14 / 14 / 16px, the same footprint as `Spinner`), and `label` and the value take its type step (`caption` / `body_sm` / `body_md` / `body_lg` / `body_lg`).
|
|
37
|
+
* @default ProgressCircleSize.MEDIUM
|
|
38
|
+
*/
|
|
39
|
+
size?: ProgressCircleSize;
|
|
40
|
+
/**
|
|
41
|
+
* Shows the formatted percentage ("40%") after the ring and the label.
|
|
42
|
+
* @default false
|
|
43
|
+
*/
|
|
44
|
+
shouldShowValue?: boolean;
|
|
45
|
+
}
|
|
46
|
+
/** A ring colored by meaning (`variant`), or the default `PRIMARY`. */
|
|
47
|
+
interface ProgressCircleVariantProps {
|
|
48
|
+
/**
|
|
49
|
+
* Color of the arc: a neutral step, or a status when the progress means something (healthy, at risk, failing). Not with `color`.
|
|
50
|
+
* @default ProgressCircleVariant.PRIMARY
|
|
51
|
+
*/
|
|
52
|
+
variant?: ProgressCircleVariant;
|
|
53
|
+
/** Categorical palette family. Not with `variant`. */
|
|
54
|
+
color?: undefined;
|
|
55
|
+
}
|
|
56
|
+
/** A ring colored by category (`color`). */
|
|
57
|
+
interface ProgressCircleColorProps {
|
|
58
|
+
/**
|
|
59
|
+
* Color of the arc: a neutral step, or a status when the progress means something (healthy, at risk, failing). Not with `color`.
|
|
60
|
+
* @default ProgressCircleVariant.PRIMARY
|
|
61
|
+
*/
|
|
62
|
+
variant?: undefined;
|
|
63
|
+
/**
|
|
64
|
+
* Categorical palette family (`"blue"`, `"violet"`, …): the arc takes `text.<family>`, the way a
|
|
65
|
+
* status variant renders. For a category's color (a source type, a team); meanings take
|
|
66
|
+
* `variant`. Not with `variant`.
|
|
67
|
+
*/
|
|
68
|
+
color: PaletteColor;
|
|
69
|
+
}
|
|
70
|
+
/** The passthrough, kept last so `className` and `style` close the props table. */
|
|
71
|
+
interface ProgressCirclePassthroughProps {
|
|
72
|
+
/** DOM id on the root `<span>`. */
|
|
73
|
+
id?: string;
|
|
74
|
+
/** Any `data-*` attribute, forwarded to the root `<span>`. */
|
|
75
|
+
[dataAttribute: `data-${string}`]: string | number | boolean | undefined;
|
|
76
|
+
/** Extra class on the root `<span>`. */
|
|
77
|
+
className?: string;
|
|
78
|
+
/** Inline style on the root `<span>`; only for setting CSS custom properties. Merged after `--gx-progress-circle-value`. */
|
|
79
|
+
style?: CSSProperties;
|
|
80
|
+
}
|
|
81
|
+
/** A visible label, which is also the accessible name. */
|
|
82
|
+
interface ProgressCircleLabelledProps {
|
|
83
|
+
/** Visible text after the ring ("Uploading"). It is also the progress bar's accessible name. */
|
|
84
|
+
label: string;
|
|
85
|
+
/** Accessible name when there is no visible `label` ("Upload progress"). The type requires `label` or `ariaLabel`. */
|
|
86
|
+
ariaLabel?: string;
|
|
87
|
+
}
|
|
88
|
+
/** No visible label: the accessible name is required. */
|
|
89
|
+
interface ProgressCircleUnlabelledProps {
|
|
90
|
+
/** Visible text after the ring ("Uploading"). It is also the progress bar's accessible name. */
|
|
91
|
+
label?: undefined;
|
|
92
|
+
/** Accessible name when there is no visible `label` ("Upload progress"). The type requires `label` or `ariaLabel`. */
|
|
93
|
+
ariaLabel: string;
|
|
94
|
+
}
|
|
95
|
+
/** ProgressCircle props. `label` or `ariaLabel` is required; `variant` and `color` are exclusive. */
|
|
96
|
+
export type ProgressCircleProps = ProgressCircleBaseProps & (ProgressCircleVariantProps | ProgressCircleColorProps) & (ProgressCircleLabelledProps | ProgressCircleUnlabelledProps) & ProgressCirclePassthroughProps;
|
|
97
|
+
/** A determinate progress ring with an optional label and value after it. */
|
|
98
|
+
declare const ProgressCircle: import("react").ForwardRefExoticComponent<ProgressCircleProps & import("react").RefAttributes<HTMLSpanElement>>;
|
|
99
|
+
export default ProgressCircle;
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
import Text, { TextSize, TextVariant } from "../text/Text.js";
|
|
2
|
+
import { formatPercent } from "../utils/format.js";
|
|
3
|
+
/* empty css */
|
|
4
|
+
import { styled } from "@linaria/react";
|
|
5
|
+
import { forwardRef, useId } from "react";
|
|
6
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
7
|
+
import { cx } from "@linaria/core";
|
|
8
|
+
//#region src/feedback/ProgressCircle.tsx
|
|
9
|
+
/**
|
|
10
|
+
* The determinate progress ring: an arc that fills clockwise from 12 o'clock to show how much of
|
|
11
|
+
* a measured task is done (an upload, an import, a quota). The ring is the rung's icon size, the
|
|
12
|
+
* same footprint as `Spinner`, so a host swaps Spinner (unknown progress) for ProgressCircle
|
|
13
|
+
* (known progress) without moving anything. Optionally a visible `label` after it, and
|
|
14
|
+
* `shouldShowValue` for the formatted percentage after that.
|
|
15
|
+
*
|
|
16
|
+
* The ring sibling of `ProgressBar`, with the same props (`value`, `label` / `ariaLabel`, `size`,
|
|
17
|
+
* `variant` / `color`, `shouldShowValue`), defaults and ARIA: a `role="progressbar"`, not a live
|
|
18
|
+
* region. The value is one unitless custom property
|
|
19
|
+
* (`--gx-progress-circle-value`) read as the arc's dash length: the circles use
|
|
20
|
+
* `pathLength={100}`, so the dash length is the percentage. Not indeterminate (`Spinner`), not
|
|
21
|
+
* the bar (`ProgressBar`), not a gauge (a chart).
|
|
22
|
+
*/
|
|
23
|
+
/** Canonical rungs; the member names the control rung the ring sits in. */
|
|
24
|
+
var ProgressCircleSize = /* @__PURE__ */ function(ProgressCircleSize) {
|
|
25
|
+
/** 20px rung: 12px ring, caption label. */
|
|
26
|
+
ProgressCircleSize["X_SMALL"] = "X_SMALL";
|
|
27
|
+
/** 24px rung: 12px ring, body_sm label. */
|
|
28
|
+
ProgressCircleSize["SMALL"] = "SMALL";
|
|
29
|
+
/** 32px rung: 14px ring, body_md label. The default. */
|
|
30
|
+
ProgressCircleSize["MEDIUM"] = "MEDIUM";
|
|
31
|
+
/** 36px rung: 14px ring, body_lg label. */
|
|
32
|
+
ProgressCircleSize["LARGE"] = "LARGE";
|
|
33
|
+
/** 40px rung: 16px ring, body_lg label. */
|
|
34
|
+
ProgressCircleSize["X_LARGE"] = "X_LARGE";
|
|
35
|
+
return ProgressCircleSize;
|
|
36
|
+
}({});
|
|
37
|
+
/** Arc color (Constitution V-A color set, subset; the same members as `ProgressBarVariant`). */
|
|
38
|
+
var ProgressCircleVariant = /* @__PURE__ */ function(ProgressCircleVariant) {
|
|
39
|
+
/** `text.primary`. The default. */
|
|
40
|
+
ProgressCircleVariant["PRIMARY"] = "PRIMARY";
|
|
41
|
+
/** `text.secondary`. */
|
|
42
|
+
ProgressCircleVariant["SECONDARY"] = "SECONDARY";
|
|
43
|
+
/** `text.tertiary`. */
|
|
44
|
+
ProgressCircleVariant["TERTIARY"] = "TERTIARY";
|
|
45
|
+
/** `text.success`: healthy, on track, complete. */
|
|
46
|
+
ProgressCircleVariant["SUCCESS"] = "SUCCESS";
|
|
47
|
+
/** `text.warning`: at risk, nearing a limit. */
|
|
48
|
+
ProgressCircleVariant["WARNING"] = "WARNING";
|
|
49
|
+
/** `text.error`: failing, over a limit. */
|
|
50
|
+
ProgressCircleVariant["ERROR"] = "ERROR";
|
|
51
|
+
return ProgressCircleVariant;
|
|
52
|
+
}({});
|
|
53
|
+
/** Phrasing content only (`span`, `svg`), so a ProgressCircle is valid inside a `<button>`. */
|
|
54
|
+
var Root = /*#__PURE__*/ styled("span")({
|
|
55
|
+
name: "Root",
|
|
56
|
+
class: "gx-ProgressCircle-r15f649n",
|
|
57
|
+
propsAsIs: false
|
|
58
|
+
});
|
|
59
|
+
/** Rotated so the arc starts at 12 o'clock and runs clockwise. */
|
|
60
|
+
var Ring = /*#__PURE__*/ styled("svg")({
|
|
61
|
+
name: "Ring",
|
|
62
|
+
class: "gx-ProgressCircle-Ring-ro2p09q",
|
|
63
|
+
propsAsIs: false
|
|
64
|
+
});
|
|
65
|
+
var Track = /*#__PURE__*/ styled("circle")({
|
|
66
|
+
name: "Track",
|
|
67
|
+
class: "gx-ProgressCircle-Track-t1b25kg7",
|
|
68
|
+
propsAsIs: true
|
|
69
|
+
});
|
|
70
|
+
/** Butt caps keep 0 empty and 100 a closed ring. */
|
|
71
|
+
var Arc = /*#__PURE__*/ styled("circle")({
|
|
72
|
+
name: "Arc",
|
|
73
|
+
class: "gx-ProgressCircle-Arc-a15y101x",
|
|
74
|
+
propsAsIs: true
|
|
75
|
+
});
|
|
76
|
+
/** Sets `color` on the root; the arc reads `currentColor`. The label and value stay secondary. */
|
|
77
|
+
var PROGRESS_CIRCLE_VARIANT_TO_CSS_MAP = {
|
|
78
|
+
["PRIMARY"]: "gx-ProgressCircle-PRIMARY-p1wen69c",
|
|
79
|
+
["SECONDARY"]: "gx-ProgressCircle-SECONDARY-spm8o6t",
|
|
80
|
+
["TERTIARY"]: "gx-ProgressCircle-TERTIARY-t16byt1k",
|
|
81
|
+
["SUCCESS"]: "gx-ProgressCircle-SUCCESS-s1ev72rx",
|
|
82
|
+
["WARNING"]: "gx-ProgressCircle-WARNING-w1ii09vl",
|
|
83
|
+
["ERROR"]: "gx-ProgressCircle-ERROR-e149xl4a"
|
|
84
|
+
};
|
|
85
|
+
/** Categorical `color`: `text.<family>` on the root, the way a status variant renders. */
|
|
86
|
+
var PROGRESS_CIRCLE_COLOR_TO_CSS_MAP = {
|
|
87
|
+
red: "gx-ProgressCircle-red-r5wr4fy",
|
|
88
|
+
orange: "gx-ProgressCircle-orange-o3cpdk8",
|
|
89
|
+
amber: "gx-ProgressCircle-amber-a3bcytf",
|
|
90
|
+
yellow: "gx-ProgressCircle-yellow-y1b1indu",
|
|
91
|
+
lime: "gx-ProgressCircle-lime-ls32e8h",
|
|
92
|
+
green: "gx-ProgressCircle-green-g1z891t",
|
|
93
|
+
emerald: "gx-ProgressCircle-emerald-e169l71b",
|
|
94
|
+
teal: "gx-ProgressCircle-teal-t7wy6jh",
|
|
95
|
+
cyan: "gx-ProgressCircle-cyan-cid9v1r",
|
|
96
|
+
sky: "gx-ProgressCircle-sky-sphjv2k",
|
|
97
|
+
blue: "gx-ProgressCircle-blue-b14y8mwv",
|
|
98
|
+
indigo: "gx-ProgressCircle-indigo-i1gpmklw",
|
|
99
|
+
violet: "gx-ProgressCircle-violet-v15o8mw",
|
|
100
|
+
purple: "gx-ProgressCircle-purple-p865hhm",
|
|
101
|
+
fuchsia: "gx-ProgressCircle-fuchsia-f1lkh9dd",
|
|
102
|
+
pink: "gx-ProgressCircle-pink-p4a8qsx",
|
|
103
|
+
rose: "gx-ProgressCircle-rose-rzljd4b"
|
|
104
|
+
};
|
|
105
|
+
/** Ring box, root height (the rung's text line height) and gap: the Spinner table. */
|
|
106
|
+
var PROGRESS_CIRCLE_SIZE_TO_CSS_MAP = {
|
|
107
|
+
["X_SMALL"]: "gx-ProgressCircle-X_SMALL-xoz9zwb",
|
|
108
|
+
["SMALL"]: "gx-ProgressCircle-SMALL-si0gudm",
|
|
109
|
+
["MEDIUM"]: "gx-ProgressCircle-MEDIUM-m1tg3t7s",
|
|
110
|
+
["LARGE"]: "gx-ProgressCircle-LARGE-l1tizbqg",
|
|
111
|
+
["X_LARGE"]: "gx-ProgressCircle-X_LARGE-xuuqsnf"
|
|
112
|
+
};
|
|
113
|
+
/** The label and value are the rung's text step (the ProgressBar table). */
|
|
114
|
+
var PROGRESS_CIRCLE_SIZE_TO_TEXT_SIZE_MAP = {
|
|
115
|
+
["X_SMALL"]: TextSize.CAPTION,
|
|
116
|
+
["SMALL"]: TextSize.BODY_SM,
|
|
117
|
+
["MEDIUM"]: TextSize.BODY_MD,
|
|
118
|
+
["LARGE"]: TextSize.BODY_LG,
|
|
119
|
+
["X_LARGE"]: TextSize.BODY_LG
|
|
120
|
+
};
|
|
121
|
+
/** 0–100; `NaN` → 0. */
|
|
122
|
+
function clampPercent(value) {
|
|
123
|
+
if (Number.isNaN(value)) return 0;
|
|
124
|
+
return Math.min(100, Math.max(0, value));
|
|
125
|
+
}
|
|
126
|
+
/** A determinate progress ring with an optional label and value after it. */
|
|
127
|
+
var ProgressCircle = forwardRef(function ProgressCircle({ value, shouldShowValue = false, variant = "PRIMARY", color, size = "MEDIUM", label, ariaLabel, className, style, ...rest }, ref) {
|
|
128
|
+
const labelId = useId();
|
|
129
|
+
const clamped = clampPercent(value);
|
|
130
|
+
const hasLabel = Boolean(label);
|
|
131
|
+
const textSize = PROGRESS_CIRCLE_SIZE_TO_TEXT_SIZE_MAP[size];
|
|
132
|
+
const percentText = formatPercent(clamped / 100);
|
|
133
|
+
const variables = { "--gx-progress-circle-value": String(clamped) };
|
|
134
|
+
return /* @__PURE__ */ jsxs(Root, {
|
|
135
|
+
...rest,
|
|
136
|
+
ref,
|
|
137
|
+
role: "progressbar",
|
|
138
|
+
"aria-valuemin": 0,
|
|
139
|
+
"aria-valuemax": 100,
|
|
140
|
+
"aria-valuenow": Math.round(clamped),
|
|
141
|
+
"aria-valuetext": rest["aria-valuetext"] ?? percentText,
|
|
142
|
+
"aria-label": hasLabel ? rest["aria-label"] : ariaLabel ?? rest["aria-label"],
|
|
143
|
+
"aria-labelledby": hasLabel ? labelId : rest["aria-labelledby"],
|
|
144
|
+
className: cx(color !== void 0 ? PROGRESS_CIRCLE_COLOR_TO_CSS_MAP[color] : PROGRESS_CIRCLE_VARIANT_TO_CSS_MAP[variant], PROGRESS_CIRCLE_SIZE_TO_CSS_MAP[size], className),
|
|
145
|
+
style: {
|
|
146
|
+
...variables,
|
|
147
|
+
...style
|
|
148
|
+
},
|
|
149
|
+
children: [
|
|
150
|
+
/* @__PURE__ */ jsxs(Ring, {
|
|
151
|
+
viewBox: "0 0 16 16",
|
|
152
|
+
"aria-hidden": true,
|
|
153
|
+
focusable: "false",
|
|
154
|
+
children: [/* @__PURE__ */ jsx(Track, {
|
|
155
|
+
cx: 8,
|
|
156
|
+
cy: 8,
|
|
157
|
+
r: 7,
|
|
158
|
+
pathLength: 100
|
|
159
|
+
}), /* @__PURE__ */ jsx(Arc, {
|
|
160
|
+
cx: 8,
|
|
161
|
+
cy: 8,
|
|
162
|
+
r: 7,
|
|
163
|
+
pathLength: 100
|
|
164
|
+
})]
|
|
165
|
+
}),
|
|
166
|
+
hasLabel && /* @__PURE__ */ jsx(Text, {
|
|
167
|
+
as: "span",
|
|
168
|
+
id: labelId,
|
|
169
|
+
size: textSize,
|
|
170
|
+
variant: TextVariant.SECONDARY,
|
|
171
|
+
isTabular: true,
|
|
172
|
+
children: label
|
|
173
|
+
}),
|
|
174
|
+
shouldShowValue && /* @__PURE__ */ jsx(Text, {
|
|
175
|
+
as: "span",
|
|
176
|
+
size: textSize,
|
|
177
|
+
variant: TextVariant.SECONDARY,
|
|
178
|
+
isTabular: true,
|
|
179
|
+
"aria-hidden": true,
|
|
180
|
+
children: percentText
|
|
181
|
+
})
|
|
182
|
+
]
|
|
183
|
+
});
|
|
184
|
+
});
|
|
185
|
+
ProgressCircle.displayName = "ProgressCircle";
|
|
186
|
+
//#endregion
|
|
187
|
+
export { ProgressCircleSize, ProgressCircleVariant, ProgressCircle as default };
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { type AriaAttributes, type CSSProperties, type ReactNode } from "react";
|
|
2
|
+
/** Canonical rungs; the member names the control rung the placeholder stands in for. */
|
|
3
|
+
export declare enum SkeletonSize {
|
|
4
|
+
/** 20px rung: `TEXT` 12px line (`caption`), `CIRCLE` 20px, `RECT` 20px. */
|
|
5
|
+
X_SMALL = "X_SMALL",
|
|
6
|
+
/** 24px rung: `TEXT` 16px line (`body_sm`), `CIRCLE` 24px, `RECT` 24px. */
|
|
7
|
+
SMALL = "SMALL",
|
|
8
|
+
/** 32px rung: `TEXT` 16px line (`body_md`), `CIRCLE` 32px, `RECT` 32px. The default. */
|
|
9
|
+
MEDIUM = "MEDIUM",
|
|
10
|
+
/** 36px rung: `TEXT` 20px line (`body_lg`), `CIRCLE` 36px, `RECT` 36px. */
|
|
11
|
+
LARGE = "LARGE",
|
|
12
|
+
/** 40px rung: `TEXT` 20px line (`body_lg`), `CIRCLE` 40px, `RECT` 40px. */
|
|
13
|
+
X_LARGE = "X_LARGE"
|
|
14
|
+
}
|
|
15
|
+
/** Shape of the placeholder (Constitution V-A local mode set: TEXT / CIRCLE / RECT). */
|
|
16
|
+
export declare enum SkeletonVariant {
|
|
17
|
+
/** One or more text lines. The default. */
|
|
18
|
+
TEXT = "TEXT",
|
|
19
|
+
/** A circle: an avatar, a round icon. */
|
|
20
|
+
CIRCLE = "CIRCLE",
|
|
21
|
+
/** A rectangle: a control, an image, a block. */
|
|
22
|
+
RECT = "RECT"
|
|
23
|
+
}
|
|
24
|
+
export interface SkeletonProps extends AriaAttributes {
|
|
25
|
+
/**
|
|
26
|
+
* Shape of the placeholder: text lines, a circle, or a rectangle. In wrapper mode it sets only
|
|
27
|
+
* the corner radius.
|
|
28
|
+
* @default SkeletonVariant.TEXT
|
|
29
|
+
*/
|
|
30
|
+
variant?: SkeletonVariant;
|
|
31
|
+
/**
|
|
32
|
+
* The control rung the placeholder stands in for. `TEXT`: the rung's text line height.
|
|
33
|
+
* `CIRCLE`: diameter = rung height. `RECT`: minimum height = rung height. Ignored in wrapper
|
|
34
|
+
* mode.
|
|
35
|
+
* @default SkeletonSize.MEDIUM
|
|
36
|
+
*/
|
|
37
|
+
size?: SkeletonSize;
|
|
38
|
+
/**
|
|
39
|
+
* `TEXT` only: number of lines; with more than one, the last line is 80% wide. Floored; values
|
|
40
|
+
* below 1 render 1. Ignored in wrapper mode.
|
|
41
|
+
* @default 1
|
|
42
|
+
*/
|
|
43
|
+
lines?: number;
|
|
44
|
+
/**
|
|
45
|
+
* Wrapper mode only: while `true`, `children` are hidden and the placeholder takes their exact
|
|
46
|
+
* box; while `false`, `children` render as-is. A standalone Skeleton always renders.
|
|
47
|
+
* @default false
|
|
48
|
+
*/
|
|
49
|
+
isLoading?: boolean;
|
|
50
|
+
/** The content to stand in for. Passing it switches on wrapper mode. */
|
|
51
|
+
children?: ReactNode;
|
|
52
|
+
/**
|
|
53
|
+
* Wrapper mode: stretch to the parent's width instead of hugging `children` (for content that
|
|
54
|
+
* fills its width). A standalone `TEXT` or `RECT` always fills its parent.
|
|
55
|
+
* @default false
|
|
56
|
+
*/
|
|
57
|
+
fillWidth?: boolean;
|
|
58
|
+
/** DOM id on the root `<span>` while the placeholder renders. */
|
|
59
|
+
id?: string;
|
|
60
|
+
/** Any `data-*` attribute, forwarded to the root `<span>` while the placeholder renders. */
|
|
61
|
+
[dataAttribute: `data-${string}`]: string | number | boolean | undefined;
|
|
62
|
+
/** Extra class on the root `<span>` while the placeholder renders. */
|
|
63
|
+
className?: string;
|
|
64
|
+
/** Inline style on the root `<span>`; only for setting CSS custom properties. */
|
|
65
|
+
style?: CSSProperties;
|
|
66
|
+
}
|
|
67
|
+
/** A pulsing placeholder in the shape of text lines, a circle or a rectangle, or of `children`. */
|
|
68
|
+
declare const Skeleton: import("react").ForwardRefExoticComponent<SkeletonProps & import("react").RefAttributes<HTMLSpanElement>>;
|
|
69
|
+
export default Skeleton;
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
/* empty css */
|
|
2
|
+
import { styled } from "@linaria/react";
|
|
3
|
+
import { forwardRef } from "react";
|
|
4
|
+
import { Fragment as Fragment$1, jsx } from "react/jsx-runtime";
|
|
5
|
+
import { cx } from "@linaria/core";
|
|
6
|
+
//#region src/feedback/Skeleton.tsx
|
|
7
|
+
/**
|
|
8
|
+
* The loading placeholder: a quiet pulsing fill that holds the shape of content that has not
|
|
9
|
+
* arrived yet, so the layout does not jump when it does. Replaces 1.x `TextShimmer` and
|
|
10
|
+
* `AvatarShimmer`.
|
|
11
|
+
*
|
|
12
|
+
* Two modes, switched by the presence of `children`:
|
|
13
|
+
* - **Standalone** (`<Skeleton variant={…} size={…} />`) draws a shape sized from the control
|
|
14
|
+
* rungs: text lines (`TEXT`, the rung's line height), a circle (`CIRCLE`, the rung height), or
|
|
15
|
+
* a rectangle (`RECT`, at least the rung height, filling a parent with a definite height).
|
|
16
|
+
* `TEXT` and `RECT` fill their parent's width; size them with the parent.
|
|
17
|
+
* - **Wrapper** (`<Skeleton isLoading>{content}</Skeleton>`) hides the content while `isLoading`
|
|
18
|
+
* and paints the placeholder over exactly the content's box. When loading ends it returns
|
|
19
|
+
* `children` unwrapped.
|
|
20
|
+
*
|
|
21
|
+
* Always `aria-hidden`: the loading region sets `aria-busy="true"` on itself and, if the wait
|
|
22
|
+
* should be announced, holds one `Spinner`. Not an unmeasured "working" indicator (`Spinner`) and
|
|
23
|
+
* not progress (`ProgressBar`, `ProgressCircle`).
|
|
24
|
+
*/
|
|
25
|
+
/** Canonical rungs; the member names the control rung the placeholder stands in for. */
|
|
26
|
+
var SkeletonSize = /* @__PURE__ */ function(SkeletonSize) {
|
|
27
|
+
/** 20px rung: `TEXT` 12px line (`caption`), `CIRCLE` 20px, `RECT` 20px. */
|
|
28
|
+
SkeletonSize["X_SMALL"] = "X_SMALL";
|
|
29
|
+
/** 24px rung: `TEXT` 16px line (`body_sm`), `CIRCLE` 24px, `RECT` 24px. */
|
|
30
|
+
SkeletonSize["SMALL"] = "SMALL";
|
|
31
|
+
/** 32px rung: `TEXT` 16px line (`body_md`), `CIRCLE` 32px, `RECT` 32px. The default. */
|
|
32
|
+
SkeletonSize["MEDIUM"] = "MEDIUM";
|
|
33
|
+
/** 36px rung: `TEXT` 20px line (`body_lg`), `CIRCLE` 36px, `RECT` 36px. */
|
|
34
|
+
SkeletonSize["LARGE"] = "LARGE";
|
|
35
|
+
/** 40px rung: `TEXT` 20px line (`body_lg`), `CIRCLE` 40px, `RECT` 40px. */
|
|
36
|
+
SkeletonSize["X_LARGE"] = "X_LARGE";
|
|
37
|
+
return SkeletonSize;
|
|
38
|
+
}({});
|
|
39
|
+
/** Shape of the placeholder (Constitution V-A local mode set: TEXT / CIRCLE / RECT). */
|
|
40
|
+
var SkeletonVariant = /* @__PURE__ */ function(SkeletonVariant) {
|
|
41
|
+
/** One or more text lines. The default. */
|
|
42
|
+
SkeletonVariant["TEXT"] = "TEXT";
|
|
43
|
+
/** A circle: an avatar, a round icon. */
|
|
44
|
+
SkeletonVariant["CIRCLE"] = "CIRCLE";
|
|
45
|
+
/** A rectangle: a control, an image, a block. */
|
|
46
|
+
SkeletonVariant["RECT"] = "RECT";
|
|
47
|
+
return SkeletonVariant;
|
|
48
|
+
}({});
|
|
49
|
+
/** All `span`s (phrasing content), so a Skeleton is valid inside a `<button>`. */
|
|
50
|
+
var Root = /*#__PURE__*/ styled("span")({
|
|
51
|
+
name: "Root",
|
|
52
|
+
class: "gx-Skeleton-r1mbj6xy",
|
|
53
|
+
propsAsIs: false
|
|
54
|
+
});
|
|
55
|
+
/** One text line: the line height minus 4px, so it sits 2px inside its line box. */
|
|
56
|
+
var Bar = /*#__PURE__*/ styled("span")({
|
|
57
|
+
name: "Bar",
|
|
58
|
+
class: "gx-Skeleton-Bar-b16jbogi",
|
|
59
|
+
propsAsIs: false
|
|
60
|
+
});
|
|
61
|
+
/**
|
|
62
|
+
* Wrapper mode's content holder: lays out as if absent (`display: contents`), keeps its box, is
|
|
63
|
+
* not painted, and leaves the tab order and the accessibility tree (`visibility: hidden`).
|
|
64
|
+
*/
|
|
65
|
+
var Content = /*#__PURE__*/ styled("span")({
|
|
66
|
+
name: "Content",
|
|
67
|
+
class: "gx-Skeleton-Content-cya5pft",
|
|
68
|
+
propsAsIs: false
|
|
69
|
+
});
|
|
70
|
+
/**
|
|
71
|
+
* The 1.x opacity pulse (0.75 → 0.25 → 0.75), 2.4s. The keyframes are global, so the name is
|
|
72
|
+
* `gx-` prefixed. `REDUCED_MOTION` stops it at `opacity: 0.75`.
|
|
73
|
+
*/
|
|
74
|
+
var PULSE_CSS = "gx-Skeleton-PULSE_CSS-p1rhnmpm";
|
|
75
|
+
/** Sets the rung's text line height and control height as custom properties on the root. */
|
|
76
|
+
var SKELETON_SIZE_TO_CSS_MAP = {
|
|
77
|
+
["X_SMALL"]: "gx-Skeleton-X_SMALL-x1skcjsy",
|
|
78
|
+
["SMALL"]: "gx-Skeleton-SMALL-s44fhjo",
|
|
79
|
+
["MEDIUM"]: "gx-Skeleton-MEDIUM-m575bv0",
|
|
80
|
+
["LARGE"]: "gx-Skeleton-LARGE-lrnwudx",
|
|
81
|
+
["X_LARGE"]: "gx-Skeleton-X_LARGE-x1ocp1hc"
|
|
82
|
+
};
|
|
83
|
+
/** Standalone shapes. `TEXT` is a column of `Bar`s exactly `lines × line height` tall. */
|
|
84
|
+
var SKELETON_VARIANT_TO_CSS_MAP = {
|
|
85
|
+
["TEXT"]: "gx-Skeleton-TEXT-t1l8sj4g",
|
|
86
|
+
["CIRCLE"]: "gx-Skeleton-CIRCLE-c152d2f9",
|
|
87
|
+
["RECT"]: "gx-Skeleton-RECT-r1eoumjp"
|
|
88
|
+
};
|
|
89
|
+
/** Wrapper mode's corner radius by variant: text inline, circle round, rectangle a control. */
|
|
90
|
+
var SKELETON_VARIANT_TO_RADIUS_CSS_MAP = {
|
|
91
|
+
["TEXT"]: "gx-Skeleton-TEXT-tz7uzak",
|
|
92
|
+
["CIRCLE"]: "gx-Skeleton-CIRCLE-c4pgw74",
|
|
93
|
+
["RECT"]: "gx-Skeleton-RECT-r14qcxh7"
|
|
94
|
+
};
|
|
95
|
+
/** Wrapper mode while loading: hugs the content's box, filled. */
|
|
96
|
+
var WRAPPER_CSS = "gx-Skeleton-WRAPPER_CSS-w1rlj9la";
|
|
97
|
+
/** Wrapper mode `fillWidth`: stretch to the parent's width. */
|
|
98
|
+
var FILL_WIDTH_CSS = "gx-Skeleton-FILL_WIDTH_CSS-fkhva6f";
|
|
99
|
+
/** One stable key per line: `lines` floored, at least 1 (a non-finite value renders 1). */
|
|
100
|
+
function toLineKeys(lines) {
|
|
101
|
+
const count = Number.isFinite(lines) ? Math.max(1, Math.floor(lines)) : 1;
|
|
102
|
+
return Array.from({ length: count }, (_, index) => `line-${index + 1}`);
|
|
103
|
+
}
|
|
104
|
+
/** A pulsing placeholder in the shape of text lines, a circle or a rectangle, or of `children`. */
|
|
105
|
+
var Skeleton = forwardRef(function Skeleton({ variant = "TEXT", size = "MEDIUM", lines = 1, isLoading = false, children, fillWidth = false, id, className, style, ...rest }, ref) {
|
|
106
|
+
if (children !== void 0) {
|
|
107
|
+
if (!isLoading) return /* @__PURE__ */ jsx(Fragment$1, { children });
|
|
108
|
+
return /* @__PURE__ */ jsx(Root, {
|
|
109
|
+
...rest,
|
|
110
|
+
"aria-hidden": "true",
|
|
111
|
+
ref,
|
|
112
|
+
id,
|
|
113
|
+
className: cx(PULSE_CSS, WRAPPER_CSS, SKELETON_VARIANT_TO_RADIUS_CSS_MAP[variant], fillWidth && FILL_WIDTH_CSS, className),
|
|
114
|
+
style,
|
|
115
|
+
children: /* @__PURE__ */ jsx(Content, { children })
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
return /* @__PURE__ */ jsx(Root, {
|
|
119
|
+
...rest,
|
|
120
|
+
"aria-hidden": "true",
|
|
121
|
+
ref,
|
|
122
|
+
id,
|
|
123
|
+
className: cx(PULSE_CSS, SKELETON_SIZE_TO_CSS_MAP[size], SKELETON_VARIANT_TO_CSS_MAP[variant], className),
|
|
124
|
+
style,
|
|
125
|
+
children: variant === "TEXT" ? toLineKeys(lines).map((lineKey) => /* @__PURE__ */ jsx(Bar, {}, lineKey)) : null
|
|
126
|
+
});
|
|
127
|
+
});
|
|
128
|
+
Skeleton.displayName = "Skeleton";
|
|
129
|
+
//#endregion
|
|
130
|
+
export { SkeletonSize, SkeletonVariant, Skeleton as default };
|