@galaxy-io/dls 1.6.0 → 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 -27
- package/dist/inputs/SwitcherInput.js +0 -64
- 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,387 @@
|
|
|
1
|
+
import Text, { TextVariant } from "../text/Text.js";
|
|
2
|
+
import { useControlledState } from "../hooks/useControlledState.js";
|
|
3
|
+
import Icon, { IconVariant } from "../icons/Icon.js";
|
|
4
|
+
import Rotate from "../transform/Rotate.js";
|
|
5
|
+
import Spinner from "../feedback/Spinner.js";
|
|
6
|
+
import CollapseMotion from "../transform/internal/CollapseMotion.js";
|
|
7
|
+
import { TREE_ROW_CSS, TREE_ROW_LABEL_CSS, TREE_ROW_LEVEL_VARIABLE, TREE_ROW_SIZE_TO_CARET_PX_MAP, TREE_ROW_SIZE_TO_CSS_MAP, TREE_ROW_SIZE_TO_ICON_PX_MAP, TREE_ROW_SIZE_TO_SPINNER_SIZE_MAP, TREE_ROW_SIZE_TO_TEXT_SIZE_MAP, TreeRowCaretSlot, TreeRowSize } from "./treeRow.js";
|
|
8
|
+
/* empty css */
|
|
9
|
+
import { styled } from "@linaria/react";
|
|
10
|
+
import { Fragment, forwardRef, useCallback, useEffect, useId, useMemo, useRef, useState } from "react";
|
|
11
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
12
|
+
import { cx } from "@linaria/core";
|
|
13
|
+
import { CaretRightIcon } from "@phosphor-icons/react";
|
|
14
|
+
//#region src/tree/Tree.tsx
|
|
15
|
+
/**
|
|
16
|
+
* Hierarchical rows that expand and collapse: a schema browser, a file or folder list, a
|
|
17
|
+
* pipeline's nested steps. The hierarchy is data (`items`); each row has a turning caret, an
|
|
18
|
+
* optional icon, a one-line label and an optional non-interactive `trailing` mark. Groups open and
|
|
19
|
+
* close with an animated height (reduced motion: instant), one row can be selected, a parent whose children are not loaded yet
|
|
20
|
+
* shows a loading row, and the WAI-ARIA tree keyboard pattern is built in.
|
|
21
|
+
*
|
|
22
|
+
* The accessibility tree is flat: every row is a `role="treeitem"` with `aria-level`,
|
|
23
|
+
* `aria-setsize` and `aria-posinset`, and the animated wrappers between rows are generic `div`s,
|
|
24
|
+
* so the focus ring outlines one row, never a whole subtree. One row is the tab stop (roving
|
|
25
|
+
* `tabIndex`); arrows move focus, and selection does not follow focus.
|
|
26
|
+
*
|
|
27
|
+
* It does not fetch, filter, sort, drag or edit. Lazy children are the app's: it learns about an
|
|
28
|
+
* expansion from `onExpandedIdsChange` and passes the children in. JSON is `JsonViewer`.
|
|
29
|
+
*/
|
|
30
|
+
/** Row rung. Tree rows are dense: 24 and 28px, the same geometry as `JsonViewerSize`. */
|
|
31
|
+
var TreeSize = /* @__PURE__ */ function(TreeSize) {
|
|
32
|
+
/** 24px rows, `body_sm` labels, 12px icons, 10px carets, 14px indent per level. */
|
|
33
|
+
TreeSize["SMALL"] = "SMALL";
|
|
34
|
+
/** 28px rows, `body_md` labels, 14px icons, 12px carets, 16px indent per level. The default. */
|
|
35
|
+
TreeSize["MEDIUM"] = "MEDIUM";
|
|
36
|
+
return TreeSize;
|
|
37
|
+
}({});
|
|
38
|
+
/** Printable keys typed within this window build one type-ahead query (logic, not motion). */
|
|
39
|
+
var TYPEAHEAD_TIMEOUT_MS = 500;
|
|
40
|
+
/** The loading row's text (fixed English, spec Decision 13). */
|
|
41
|
+
var LOADING_LABEL = "Loading";
|
|
42
|
+
/** The tree: a column of rows on its container's surface (no fill, border or padding). */
|
|
43
|
+
var Root = /*#__PURE__*/ styled("div")({
|
|
44
|
+
name: "Root",
|
|
45
|
+
class: "gx-Tree-r1js5qnv",
|
|
46
|
+
propsAsIs: false
|
|
47
|
+
});
|
|
48
|
+
/** Hover and press fills; applied only to rows that are neither selected nor disabled. */
|
|
49
|
+
var ROW_INTERACTIVE_CSS = "gx-Tree-ROW_INTERACTIVE_CSS-r7rdijp";
|
|
50
|
+
/** Selection is `background.selected`: `text.primary` at 12% over the canvas, quiet and neutral. */
|
|
51
|
+
var SELECTED_CSS = "gx-Tree-SELECTED_CSS-s1b0wl0p";
|
|
52
|
+
/** Disabled and loading rows: no pointer affordance. */
|
|
53
|
+
var DISABLED_CSS = "gx-Tree-DISABLED_CSS-d1ir0aar";
|
|
54
|
+
/** The trailing mark, right-aligned by the label's growth. */
|
|
55
|
+
var Trailing = /*#__PURE__*/ styled("span")({
|
|
56
|
+
name: "Trailing",
|
|
57
|
+
class: "gx-Tree-Trailing-t14n6wjb",
|
|
58
|
+
propsAsIs: false
|
|
59
|
+
});
|
|
60
|
+
/** Identity: the Tree rungs are the shared row rungs (`treeRow.ts`, shared with JsonViewer). */
|
|
61
|
+
var TREE_SIZE_TO_ROW_SIZE_MAP = {
|
|
62
|
+
["SMALL"]: TreeRowSize.SMALL,
|
|
63
|
+
["MEDIUM"]: TreeRowSize.MEDIUM
|
|
64
|
+
};
|
|
65
|
+
/** A parent has children, or says it will (lazy). */
|
|
66
|
+
var isParentItem = (item) => item.hasChildren ?? (item.children !== void 0 && item.children.length > 0);
|
|
67
|
+
/** The loading row's key; never an item `id` (a NUL character cannot come from data by accident). */
|
|
68
|
+
var loadingKey = (parentId) => `\u0000loading:${parentId}`;
|
|
69
|
+
/** Depth-first walk of the rows that are showing (descends into expanded parents only). */
|
|
70
|
+
function getVisibleRows(items, expanded) {
|
|
71
|
+
const rows = [];
|
|
72
|
+
const walk = (list, level, parentKey) => {
|
|
73
|
+
for (const item of list) {
|
|
74
|
+
const isParent = isParentItem(item);
|
|
75
|
+
const isExpanded = isParent && expanded.has(item.id);
|
|
76
|
+
rows.push({
|
|
77
|
+
kind: "item",
|
|
78
|
+
key: item.id,
|
|
79
|
+
item,
|
|
80
|
+
level,
|
|
81
|
+
parentKey,
|
|
82
|
+
isParent,
|
|
83
|
+
isExpanded
|
|
84
|
+
});
|
|
85
|
+
if (!isExpanded) continue;
|
|
86
|
+
if (item.children === void 0) rows.push({
|
|
87
|
+
kind: "loading",
|
|
88
|
+
key: loadingKey(item.id),
|
|
89
|
+
level: level + 1,
|
|
90
|
+
parentKey: item.id
|
|
91
|
+
});
|
|
92
|
+
else walk(item.children, level + 1, item.id);
|
|
93
|
+
}
|
|
94
|
+
};
|
|
95
|
+
walk(items, 1, null);
|
|
96
|
+
return rows;
|
|
97
|
+
}
|
|
98
|
+
/** Every item's parent id, for finding the nearest visible ancestor of a hidden row. */
|
|
99
|
+
function getParentMap(items) {
|
|
100
|
+
const parents = /* @__PURE__ */ new Map();
|
|
101
|
+
const walk = (list, parentId) => {
|
|
102
|
+
for (const item of list) {
|
|
103
|
+
parents.set(item.id, parentId);
|
|
104
|
+
if (item.children !== void 0) walk(item.children, item.id);
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
walk(items, null);
|
|
108
|
+
return parents;
|
|
109
|
+
}
|
|
110
|
+
/** A row's depth as the `--gx-tree-level` custom property (0 at the top level). */
|
|
111
|
+
var levelStyle = (level) => ({ [TREE_ROW_LEVEL_VARIABLE]: String(level - 1) });
|
|
112
|
+
/** Turns a tree `id` into a DOM-id-safe suffix. */
|
|
113
|
+
var toDomId = (value) => encodeURIComponent(value).replace(/[%.']/g, "_");
|
|
114
|
+
/** Hierarchical rows with expand / collapse, single selection, lazy children and tree keyboard. */
|
|
115
|
+
var Tree = forwardRef(function Tree(props, ref) {
|
|
116
|
+
const { items, value, defaultValue = null, onChange, expandedIds, defaultExpandedIds = [], onExpandedIdsChange, size = "MEDIUM", ariaLabel, id, className, style, ...rest } = props;
|
|
117
|
+
const baseId = useId();
|
|
118
|
+
const rowSize = TREE_SIZE_TO_ROW_SIZE_MAP[size];
|
|
119
|
+
const textSize = TREE_ROW_SIZE_TO_TEXT_SIZE_MAP[rowSize];
|
|
120
|
+
const iconPx = TREE_ROW_SIZE_TO_ICON_PX_MAP[rowSize];
|
|
121
|
+
const [selectedId, setSelectedId] = useControlledState({
|
|
122
|
+
value,
|
|
123
|
+
defaultValue
|
|
124
|
+
});
|
|
125
|
+
const [expandedList, setExpandedList] = useControlledState({
|
|
126
|
+
value: expandedIds,
|
|
127
|
+
defaultValue: defaultExpandedIds,
|
|
128
|
+
onChange: onExpandedIdsChange
|
|
129
|
+
});
|
|
130
|
+
const expanded = useMemo(() => new Set(expandedList), [expandedList]);
|
|
131
|
+
const visible = useMemo(() => getVisibleRows(items, expanded), [items, expanded]);
|
|
132
|
+
const parents = useMemo(() => getParentMap(items), [items]);
|
|
133
|
+
const visibleIndex = useMemo(() => new Map(visible.map((row, index) => [row.key, index])), [visible]);
|
|
134
|
+
const [focusedKey, setFocusedKey] = useState(null);
|
|
135
|
+
const rowElements = useRef(/* @__PURE__ */ new Map());
|
|
136
|
+
const typeahead = useRef({
|
|
137
|
+
query: "",
|
|
138
|
+
timer: void 0
|
|
139
|
+
});
|
|
140
|
+
useEffect(() => {
|
|
141
|
+
const state = typeahead.current;
|
|
142
|
+
return () => clearTimeout(state.timer);
|
|
143
|
+
}, []);
|
|
144
|
+
/** The roving tab stop: the last focused row, its nearest visible ancestor, else selected / first. */
|
|
145
|
+
const tabStopKey = useMemo(() => {
|
|
146
|
+
const first = visible[0]?.key ?? null;
|
|
147
|
+
if (focusedKey === null) return selectedId !== null && visibleIndex.has(selectedId) ? selectedId : first;
|
|
148
|
+
if (visibleIndex.has(focusedKey)) return focusedKey;
|
|
149
|
+
let ancestor = focusedKey.startsWith("\0") ? focusedKey.slice(9) : parents.get(focusedKey) ?? null;
|
|
150
|
+
while (ancestor !== null) {
|
|
151
|
+
if (visibleIndex.has(ancestor)) return ancestor;
|
|
152
|
+
ancestor = parents.get(ancestor) ?? null;
|
|
153
|
+
}
|
|
154
|
+
return first;
|
|
155
|
+
}, [
|
|
156
|
+
focusedKey,
|
|
157
|
+
selectedId,
|
|
158
|
+
visible,
|
|
159
|
+
visibleIndex,
|
|
160
|
+
parents
|
|
161
|
+
]);
|
|
162
|
+
const focusRow = useCallback((key) => {
|
|
163
|
+
if (key === void 0) return;
|
|
164
|
+
rowElements.current.get(key)?.focus();
|
|
165
|
+
}, []);
|
|
166
|
+
const toggle = useCallback((itemId) => {
|
|
167
|
+
setExpandedList(expanded.has(itemId) ? expandedList.filter((entry) => entry !== itemId) : [...expandedList, itemId]);
|
|
168
|
+
}, [
|
|
169
|
+
expanded,
|
|
170
|
+
expandedList,
|
|
171
|
+
setExpandedList
|
|
172
|
+
]);
|
|
173
|
+
const select = useCallback((item) => {
|
|
174
|
+
if (item.isDisabled || item.id === selectedId) return;
|
|
175
|
+
setSelectedId(item.id);
|
|
176
|
+
onChange?.(item.id);
|
|
177
|
+
}, [
|
|
178
|
+
onChange,
|
|
179
|
+
selectedId,
|
|
180
|
+
setSelectedId
|
|
181
|
+
]);
|
|
182
|
+
/** Moves focus to the next visible item row whose label starts with the typed query. */
|
|
183
|
+
const handleTypeahead = (fromIndex, character) => {
|
|
184
|
+
const state = typeahead.current;
|
|
185
|
+
clearTimeout(state.timer);
|
|
186
|
+
state.query += character.toLowerCase();
|
|
187
|
+
state.timer = setTimeout(() => {
|
|
188
|
+
state.query = "";
|
|
189
|
+
}, TYPEAHEAD_TIMEOUT_MS);
|
|
190
|
+
const isRepeat = [...state.query].every((entry) => entry === state.query[0]);
|
|
191
|
+
const query = isRepeat ? state.query.charAt(0) : state.query;
|
|
192
|
+
const start = isRepeat ? fromIndex + 1 : fromIndex;
|
|
193
|
+
for (let offset = 0; offset < visible.length; offset += 1) {
|
|
194
|
+
const row = visible[(start + offset) % visible.length];
|
|
195
|
+
if (row?.kind === "item" && row.item.label.toLowerCase().startsWith(query)) {
|
|
196
|
+
focusRow(row.key);
|
|
197
|
+
return;
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
};
|
|
201
|
+
const handleKeyDown = (event, row) => {
|
|
202
|
+
if (event.target !== event.currentTarget) return;
|
|
203
|
+
const index = visibleIndex.get(row.key) ?? 0;
|
|
204
|
+
const isItem = row.kind === "item";
|
|
205
|
+
let isHandled = true;
|
|
206
|
+
switch (event.key) {
|
|
207
|
+
case "ArrowDown":
|
|
208
|
+
focusRow(visible[index + 1]?.key);
|
|
209
|
+
break;
|
|
210
|
+
case "ArrowUp":
|
|
211
|
+
focusRow(visible[index - 1]?.key);
|
|
212
|
+
break;
|
|
213
|
+
case "Home":
|
|
214
|
+
focusRow(visible[0]?.key);
|
|
215
|
+
break;
|
|
216
|
+
case "End":
|
|
217
|
+
focusRow(visible[visible.length - 1]?.key);
|
|
218
|
+
break;
|
|
219
|
+
case "ArrowRight":
|
|
220
|
+
if (isItem && row.isParent) if (!row.isExpanded) toggle(row.item.id);
|
|
221
|
+
else {
|
|
222
|
+
const next = visible[index + 1];
|
|
223
|
+
if (next?.parentKey === row.key) focusRow(next.key);
|
|
224
|
+
}
|
|
225
|
+
break;
|
|
226
|
+
case "ArrowLeft":
|
|
227
|
+
if (isItem && row.isExpanded) toggle(row.item.id);
|
|
228
|
+
else if (row.parentKey !== null) focusRow(row.parentKey);
|
|
229
|
+
break;
|
|
230
|
+
case "Enter":
|
|
231
|
+
if (isItem) {
|
|
232
|
+
select(row.item);
|
|
233
|
+
if (row.isParent) toggle(row.item.id);
|
|
234
|
+
}
|
|
235
|
+
break;
|
|
236
|
+
case " ":
|
|
237
|
+
if (isItem) select(row.item);
|
|
238
|
+
break;
|
|
239
|
+
default: if (event.key.length === 1 && !event.ctrlKey && !event.metaKey && !event.altKey) handleTypeahead(index, event.key);
|
|
240
|
+
else isHandled = false;
|
|
241
|
+
}
|
|
242
|
+
if (isHandled) event.preventDefault();
|
|
243
|
+
};
|
|
244
|
+
const rowRefCallbacks = useRef(/* @__PURE__ */ new Map());
|
|
245
|
+
const shouldRestoreFocus = useRef(false);
|
|
246
|
+
const setRowElement = (key) => {
|
|
247
|
+
let callback = rowRefCallbacks.current.get(key);
|
|
248
|
+
if (callback === void 0) {
|
|
249
|
+
callback = (element) => {
|
|
250
|
+
if (element) {
|
|
251
|
+
rowElements.current.set(key, element);
|
|
252
|
+
return;
|
|
253
|
+
}
|
|
254
|
+
const previous = rowElements.current.get(key);
|
|
255
|
+
if (previous !== void 0 && previous === previous.ownerDocument.activeElement) shouldRestoreFocus.current = true;
|
|
256
|
+
rowElements.current.delete(key);
|
|
257
|
+
rowRefCallbacks.current.delete(key);
|
|
258
|
+
};
|
|
259
|
+
rowRefCallbacks.current.set(key, callback);
|
|
260
|
+
}
|
|
261
|
+
return callback;
|
|
262
|
+
};
|
|
263
|
+
useEffect(() => {
|
|
264
|
+
if (!shouldRestoreFocus.current) return;
|
|
265
|
+
shouldRestoreFocus.current = false;
|
|
266
|
+
if (tabStopKey !== null) rowElements.current.get(tabStopKey)?.focus();
|
|
267
|
+
});
|
|
268
|
+
/** The loading row of an expanded parent whose children are not loaded yet. */
|
|
269
|
+
const renderLoadingRow = (parentId, level) => {
|
|
270
|
+
const key = loadingKey(parentId);
|
|
271
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
272
|
+
ref: setRowElement(key),
|
|
273
|
+
role: "treeitem",
|
|
274
|
+
id: `${baseId}-loading-${toDomId(parentId)}`,
|
|
275
|
+
"aria-level": level,
|
|
276
|
+
"aria-setsize": 1,
|
|
277
|
+
"aria-posinset": 1,
|
|
278
|
+
"aria-disabled": "true",
|
|
279
|
+
"aria-busy": "true",
|
|
280
|
+
tabIndex: tabStopKey === key ? 0 : -1,
|
|
281
|
+
className: cx(TREE_ROW_CSS, TREE_ROW_SIZE_TO_CSS_MAP[rowSize], DISABLED_CSS),
|
|
282
|
+
style: levelStyle(level),
|
|
283
|
+
onFocus: () => setFocusedKey(key),
|
|
284
|
+
onKeyDown: (event) => handleKeyDown(event, {
|
|
285
|
+
kind: "loading",
|
|
286
|
+
key,
|
|
287
|
+
level,
|
|
288
|
+
parentKey: parentId
|
|
289
|
+
}),
|
|
290
|
+
children: [/* @__PURE__ */ jsx(TreeRowCaretSlot, { "aria-hidden": true }), /* @__PURE__ */ jsx(Spinner, {
|
|
291
|
+
size: TREE_ROW_SIZE_TO_SPINNER_SIZE_MAP[rowSize],
|
|
292
|
+
label: LOADING_LABEL
|
|
293
|
+
})]
|
|
294
|
+
}, key);
|
|
295
|
+
};
|
|
296
|
+
/** One level of rows, each parent followed by its animated group. */
|
|
297
|
+
const renderItems = (list, level, parentKey) => list.map((item, position) => {
|
|
298
|
+
const isParent = isParentItem(item);
|
|
299
|
+
const isExpanded = isParent && expanded.has(item.id);
|
|
300
|
+
const isSelected = item.id === selectedId;
|
|
301
|
+
const isDisabled = item.isDisabled === true;
|
|
302
|
+
const row = {
|
|
303
|
+
kind: "item",
|
|
304
|
+
key: item.id,
|
|
305
|
+
item,
|
|
306
|
+
level,
|
|
307
|
+
parentKey,
|
|
308
|
+
isParent,
|
|
309
|
+
isExpanded
|
|
310
|
+
};
|
|
311
|
+
const handleClick = () => {
|
|
312
|
+
select(item);
|
|
313
|
+
if (isParent) toggle(item.id);
|
|
314
|
+
};
|
|
315
|
+
const handleCaretClick = (event) => {
|
|
316
|
+
event.stopPropagation();
|
|
317
|
+
rowElements.current.get(item.id)?.focus();
|
|
318
|
+
toggle(item.id);
|
|
319
|
+
};
|
|
320
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsxs("div", {
|
|
321
|
+
ref: setRowElement(item.id),
|
|
322
|
+
role: "treeitem",
|
|
323
|
+
id: `${baseId}-${toDomId(item.id)}`,
|
|
324
|
+
"aria-level": level,
|
|
325
|
+
"aria-setsize": list.length,
|
|
326
|
+
"aria-posinset": position + 1,
|
|
327
|
+
"aria-expanded": isParent ? isExpanded : void 0,
|
|
328
|
+
"aria-selected": isDisabled ? void 0 : isSelected,
|
|
329
|
+
"aria-disabled": isDisabled || void 0,
|
|
330
|
+
tabIndex: tabStopKey === item.id ? 0 : -1,
|
|
331
|
+
className: cx(TREE_ROW_CSS, TREE_ROW_SIZE_TO_CSS_MAP[rowSize], !isSelected && !isDisabled && ROW_INTERACTIVE_CSS, isSelected && SELECTED_CSS, isDisabled && DISABLED_CSS),
|
|
332
|
+
style: levelStyle(level),
|
|
333
|
+
onFocus: () => setFocusedKey(item.id),
|
|
334
|
+
onClick: handleClick,
|
|
335
|
+
onKeyDown: (event) => handleKeyDown(event, row),
|
|
336
|
+
children: [
|
|
337
|
+
/* @__PURE__ */ jsx(TreeRowCaretSlot, {
|
|
338
|
+
"aria-hidden": true,
|
|
339
|
+
onClick: isParent ? handleCaretClick : void 0,
|
|
340
|
+
children: isParent && /* @__PURE__ */ jsx(Rotate, {
|
|
341
|
+
isRotated: isExpanded,
|
|
342
|
+
deg: 90,
|
|
343
|
+
children: /* @__PURE__ */ jsx(Icon, {
|
|
344
|
+
component: CaretRightIcon,
|
|
345
|
+
size: TREE_ROW_SIZE_TO_CARET_PX_MAP[rowSize],
|
|
346
|
+
variant: IconVariant.TERTIARY
|
|
347
|
+
})
|
|
348
|
+
})
|
|
349
|
+
}),
|
|
350
|
+
item.icon && /* @__PURE__ */ jsx(Icon, {
|
|
351
|
+
component: item.icon,
|
|
352
|
+
size: iconPx,
|
|
353
|
+
variant: isDisabled ? IconVariant.DISABLED : IconVariant.SECONDARY
|
|
354
|
+
}),
|
|
355
|
+
/* @__PURE__ */ jsx(Text, {
|
|
356
|
+
as: "span",
|
|
357
|
+
size: textSize,
|
|
358
|
+
variant: isDisabled ? TextVariant.DISABLED : TextVariant.PRIMARY,
|
|
359
|
+
lineClamp: 1,
|
|
360
|
+
shouldTooltipOnOverflow: true,
|
|
361
|
+
className: TREE_ROW_LABEL_CSS,
|
|
362
|
+
children: item.label
|
|
363
|
+
}),
|
|
364
|
+
item.trailing !== void 0 && /* @__PURE__ */ jsx(Trailing, {
|
|
365
|
+
className: "gx-treeRow-TREE_ROW_TRAILING_CSS-tl2nei7",
|
|
366
|
+
children: item.trailing
|
|
367
|
+
})
|
|
368
|
+
]
|
|
369
|
+
}), isParent && /* @__PURE__ */ jsx(CollapseMotion, {
|
|
370
|
+
isOpen: isExpanded,
|
|
371
|
+
children: isExpanded && (item.children === void 0 ? renderLoadingRow(item.id, level + 1) : renderItems(item.children, level + 1, item.id))
|
|
372
|
+
})] }, item.id);
|
|
373
|
+
});
|
|
374
|
+
return /* @__PURE__ */ jsx(Root, {
|
|
375
|
+
...rest,
|
|
376
|
+
ref,
|
|
377
|
+
role: "tree",
|
|
378
|
+
"aria-label": ariaLabel ?? rest["aria-label"],
|
|
379
|
+
id,
|
|
380
|
+
className,
|
|
381
|
+
style,
|
|
382
|
+
children: renderItems(items, 1, null)
|
|
383
|
+
});
|
|
384
|
+
});
|
|
385
|
+
Tree.displayName = "Tree";
|
|
386
|
+
//#endregion
|
|
387
|
+
export { TreeSize, Tree as default };
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { SpinnerSize } from "../feedback/Spinner.js";
|
|
2
|
+
import { TextSize } from "../text/Text.js";
|
|
3
|
+
/** @internal The two dense row rungs; `TreeSize` and `JsonViewerSize` map onto it. */
|
|
4
|
+
export declare enum TreeRowSize {
|
|
5
|
+
/** 24px rows, 8px inline padding, `body_sm`, 12px icon and slot, 10px caret, 14px per level. */
|
|
6
|
+
SMALL = "SMALL",
|
|
7
|
+
/** 28px rows, 8px inline padding, `body_md`, 14px icon and slot, 12px caret, 16px per level. */
|
|
8
|
+
MEDIUM = "MEDIUM"
|
|
9
|
+
}
|
|
10
|
+
/** @internal The custom property carrying a row's depth (0 at the top level); a continuous value. */
|
|
11
|
+
export declare const TREE_ROW_LEVEL_VARIABLE = "--gx-tree-level";
|
|
12
|
+
/**
|
|
13
|
+
* @internal A row: caret slot, icon, label, trailing. Each level indents by the caret slot plus
|
|
14
|
+
* the caret gap.
|
|
15
|
+
*/
|
|
16
|
+
export declare const TREE_ROW_CSS: import("@linaria/core").LinariaClassName;
|
|
17
|
+
/** @internal Height, inline padding and the caret slot width (the rung's icon px) per rung. */
|
|
18
|
+
export declare const TREE_ROW_SIZE_TO_CSS_MAP: Record<TreeRowSize, string>;
|
|
19
|
+
/**
|
|
20
|
+
* @internal The caret's slot, as wide as the rung's icon; leaf rows keep it empty so labels align.
|
|
21
|
+
* The press target stays a 16px square (centered on the slot through `::before`), larger than the
|
|
22
|
+
* glyph.
|
|
23
|
+
*/
|
|
24
|
+
export declare const TreeRowCaretSlot: import("@linaria/react").StyledComponent<import("react").ClassAttributes<HTMLSpanElement> & import("react").HTMLAttributes<HTMLSpanElement> & Record<never, unknown>>;
|
|
25
|
+
/**
|
|
26
|
+
* @internal The label (or key / value text): takes the rest of the row and truncates; its 2px
|
|
27
|
+
* start padding makes the gap before it 4px.
|
|
28
|
+
*/
|
|
29
|
+
export declare const TREE_ROW_LABEL_CSS: import("@linaria/core").LinariaClassName;
|
|
30
|
+
/** @internal A trailing mark after the label: 2px start padding makes the gap before it 4px. */
|
|
31
|
+
export declare const TREE_ROW_TRAILING_CSS: import("@linaria/core").LinariaClassName;
|
|
32
|
+
/** @internal The row's type step. */
|
|
33
|
+
export declare const TREE_ROW_SIZE_TO_TEXT_SIZE_MAP: Record<TreeRowSize, TextSize>;
|
|
34
|
+
/** @internal Row icon px per rung, which is also the caret slot's width. */
|
|
35
|
+
export declare const TREE_ROW_SIZE_TO_ICON_PX_MAP: Record<TreeRowSize, number>;
|
|
36
|
+
/** @internal The caret: 12px, 10px on the 24px rows (the collapsible Widget's caret). */
|
|
37
|
+
export declare const TREE_ROW_SIZE_TO_CARET_PX_MAP: Record<TreeRowSize, number>;
|
|
38
|
+
/** @internal The loading row's spinner. */
|
|
39
|
+
export declare const TREE_ROW_SIZE_TO_SPINNER_SIZE_MAP: Record<TreeRowSize, SpinnerSize>;
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { TextSize } from "../text/Text.js";
|
|
2
|
+
import { SpinnerSize } from "../feedback/Spinner.js";
|
|
3
|
+
/* empty css */
|
|
4
|
+
import { styled } from "@linaria/react";
|
|
5
|
+
//#region src/tree/treeRow.ts
|
|
6
|
+
/**
|
|
7
|
+
* @internal The row geometry `Tree` and `JsonViewer` share, so the two can never drift: row
|
|
8
|
+
* height, inline padding, per-level indent, caret slot and caret gap, caret / icon px and the type
|
|
9
|
+
* step, per rung.
|
|
10
|
+
*
|
|
11
|
+
* A row is `[caret slot] 2px [icon] 4px [label] 4px [trailing]`. The caret slot is as wide as the
|
|
12
|
+
* rung's icon and each level indents by the slot plus the 2px caret gap (14px at `SMALL`, 16px at
|
|
13
|
+
* `MEDIUM`), so a child's caret is centered under its parent's icon. The rest of the row keeps a
|
|
14
|
+
* 4px gap: the label and the trailing mark carry 2px of their own start padding on top of the row's
|
|
15
|
+
* 2px gap.
|
|
16
|
+
*/
|
|
17
|
+
/** @internal The two dense row rungs; `TreeSize` and `JsonViewerSize` map onto it. */
|
|
18
|
+
var TreeRowSize = /* @__PURE__ */ function(TreeRowSize) {
|
|
19
|
+
/** 24px rows, 8px inline padding, `body_sm`, 12px icon and slot, 10px caret, 14px per level. */
|
|
20
|
+
TreeRowSize["SMALL"] = "SMALL";
|
|
21
|
+
/** 28px rows, 8px inline padding, `body_md`, 14px icon and slot, 12px caret, 16px per level. */
|
|
22
|
+
TreeRowSize["MEDIUM"] = "MEDIUM";
|
|
23
|
+
return TreeRowSize;
|
|
24
|
+
}({});
|
|
25
|
+
/** @internal The custom property carrying a row's depth (0 at the top level); a continuous value. */
|
|
26
|
+
var TREE_ROW_LEVEL_VARIABLE = "--gx-tree-level";
|
|
27
|
+
/**
|
|
28
|
+
* @internal A row: caret slot, icon, label, trailing. Each level indents by the caret slot plus
|
|
29
|
+
* the caret gap.
|
|
30
|
+
*/
|
|
31
|
+
var TREE_ROW_CSS = "gx-treeRow-TREE_ROW_CSS-t1nodxwm";
|
|
32
|
+
/** @internal Height, inline padding and the caret slot width (the rung's icon px) per rung. */
|
|
33
|
+
var TREE_ROW_SIZE_TO_CSS_MAP = {
|
|
34
|
+
["SMALL"]: "gx-treeRow-SMALL-sgp5lqg",
|
|
35
|
+
["MEDIUM"]: "gx-treeRow-MEDIUM-mje6tqy"
|
|
36
|
+
};
|
|
37
|
+
/**
|
|
38
|
+
* @internal The caret's slot, as wide as the rung's icon; leaf rows keep it empty so labels align.
|
|
39
|
+
* The press target stays a 16px square (centered on the slot through `::before`), larger than the
|
|
40
|
+
* glyph.
|
|
41
|
+
*/
|
|
42
|
+
var TreeRowCaretSlot = /*#__PURE__*/ styled("span")({
|
|
43
|
+
name: "TreeRowCaretSlot",
|
|
44
|
+
class: "gx-treeRow-TreeRowCaretSlot-t1kak285",
|
|
45
|
+
propsAsIs: false
|
|
46
|
+
});
|
|
47
|
+
/**
|
|
48
|
+
* @internal The label (or key / value text): takes the rest of the row and truncates; its 2px
|
|
49
|
+
* start padding makes the gap before it 4px.
|
|
50
|
+
*/
|
|
51
|
+
var TREE_ROW_LABEL_CSS = "gx-treeRow-TREE_ROW_LABEL_CSS-t1xuussb";
|
|
52
|
+
/** @internal A trailing mark after the label: 2px start padding makes the gap before it 4px. */
|
|
53
|
+
var TREE_ROW_TRAILING_CSS = "gx-treeRow-TREE_ROW_TRAILING_CSS-tl2nei7";
|
|
54
|
+
/** @internal The row's type step. */
|
|
55
|
+
var TREE_ROW_SIZE_TO_TEXT_SIZE_MAP = {
|
|
56
|
+
["SMALL"]: TextSize.BODY_SM,
|
|
57
|
+
["MEDIUM"]: TextSize.BODY_MD
|
|
58
|
+
};
|
|
59
|
+
/** @internal Row icon px per rung, which is also the caret slot's width. */
|
|
60
|
+
var TREE_ROW_SIZE_TO_ICON_PX_MAP = {
|
|
61
|
+
["SMALL"]: 12,
|
|
62
|
+
["MEDIUM"]: 14
|
|
63
|
+
};
|
|
64
|
+
/** @internal The caret: 12px, 10px on the 24px rows (the collapsible Widget's caret). */
|
|
65
|
+
var TREE_ROW_SIZE_TO_CARET_PX_MAP = {
|
|
66
|
+
["SMALL"]: 10,
|
|
67
|
+
["MEDIUM"]: 12
|
|
68
|
+
};
|
|
69
|
+
/** @internal The loading row's spinner. */
|
|
70
|
+
var TREE_ROW_SIZE_TO_SPINNER_SIZE_MAP = {
|
|
71
|
+
["SMALL"]: SpinnerSize.SMALL,
|
|
72
|
+
["MEDIUM"]: SpinnerSize.MEDIUM
|
|
73
|
+
};
|
|
74
|
+
//#endregion
|
|
75
|
+
export { TREE_ROW_CSS, TREE_ROW_LABEL_CSS, TREE_ROW_LEVEL_VARIABLE, TREE_ROW_SIZE_TO_CARET_PX_MAP, TREE_ROW_SIZE_TO_CSS_MAP, TREE_ROW_SIZE_TO_ICON_PX_MAP, TREE_ROW_SIZE_TO_SPINNER_SIZE_MAP, TREE_ROW_SIZE_TO_TEXT_SIZE_MAP, TREE_ROW_TRAILING_CSS, TreeRowCaretSlot, TreeRowSize };
|
package/dist/utils/colors.d.ts
CHANGED
|
@@ -1,40 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Color math for JS logic (charts, canvas, seeded colors, contrast checks). Kept from 1.x
|
|
3
|
+
* `utils/colors.ts`; 2.0 types every returned hex as `Hex` and adds `contrastRatio`, `meetsAA`
|
|
4
|
+
* and `mix`. Styling never uses this module: components read `t.color.*`.
|
|
5
|
+
*/
|
|
6
|
+
import type { Hex } from "../theme/tokens/types.js";
|
|
7
|
+
/** A `#`-prefixed hex color string (`#rrggbb` or `#rgb`). */
|
|
8
|
+
export type { Hex };
|
|
9
|
+
/** An sRGB color with 0–255 channels. */
|
|
1
10
|
export type RGB = {
|
|
2
11
|
r: number;
|
|
3
12
|
g: number;
|
|
4
13
|
b: number;
|
|
5
14
|
};
|
|
15
|
+
/** An sRGB color with 0–255 channels and a 0–1 alpha. */
|
|
6
16
|
export type RGBA = RGB & {
|
|
7
17
|
a: number;
|
|
8
18
|
};
|
|
19
|
+
/** Hue (0–360), saturation (0–1), lightness (0–1). */
|
|
9
20
|
export type HSL = {
|
|
10
21
|
h: number;
|
|
11
22
|
s: number;
|
|
12
23
|
l: number;
|
|
13
24
|
};
|
|
25
|
+
/** Hue (0–360), saturation (0–100), value (0–100), alpha (0–1), as `@uiw/react-color` expects. */
|
|
14
26
|
export type HSVA = {
|
|
15
27
|
h: number;
|
|
16
28
|
s: number;
|
|
17
29
|
v: number;
|
|
18
30
|
a: number;
|
|
19
31
|
};
|
|
32
|
+
/** Parses `#rrggbb` / `#rgb` (with or without `#`) into 0–255 channels. Throws on invalid input. */
|
|
20
33
|
export declare const hexToRgb: (hex: string) => RGB;
|
|
34
|
+
/** `hexToRgb` plus an alpha channel. */
|
|
21
35
|
export declare const hexToRgba: (hex: string, a?: number) => RGBA;
|
|
22
|
-
|
|
23
|
-
export declare const
|
|
24
|
-
|
|
25
|
-
export declare const
|
|
36
|
+
/** Formats 0–255 channels (rounded, clamped) as lowercase `#rrggbb`. */
|
|
37
|
+
export declare const rgbToHex: ({ r, g, b }: RGB) => Hex;
|
|
38
|
+
/** Converts 0–255 channels to HSL (`h` 0–360, `s` and `l` 0–1). */
|
|
39
|
+
export declare const rgbToHsl: (rgb: RGB) => HSL;
|
|
40
|
+
/** Converts HSL to unrounded 0–255 channels. Wraps `h`, clamps `s` and `l` to 0–1. */
|
|
41
|
+
export declare const hslToRgb: (hsl: HSL) => RGB;
|
|
42
|
+
/** Converts HSL to `#rrggbb`. */
|
|
43
|
+
export declare const hslToHex: ({ h, s, l }: HSL) => Hex;
|
|
44
|
+
/** Converts a hex color to HSVA (`s`, `v` 0–100; `a` always 1), as `@uiw/react-color` expects. */
|
|
26
45
|
export declare const hexToHsva: (hex: string) => HSVA;
|
|
27
|
-
|
|
46
|
+
/** Converts HSVA (`s`, `v` 0–100) to `#rrggbb`; alpha is ignored. */
|
|
47
|
+
export declare const hsvaToHex: (hsva: HSVA) => Hex;
|
|
28
48
|
/**
|
|
29
49
|
* Generates a random hex color
|
|
30
50
|
* @returns A random hex color in the format #RRGGBB
|
|
31
51
|
*/
|
|
32
|
-
export declare const generateRandomHexColor: () =>
|
|
52
|
+
export declare const generateRandomHexColor: () => Hex;
|
|
33
53
|
/**
|
|
34
54
|
* Gets an opaque hex color
|
|
35
55
|
* @param hex - The hex color to add opacity to
|
|
36
56
|
* @param opacity - The opacity to add (0-1)
|
|
37
|
-
* @returns
|
|
57
|
+
* @returns An `rgba(r, g, b, opacity)` string (not a hex)
|
|
38
58
|
*/
|
|
39
59
|
export declare const getOpaqueHexColor: (hex: string, opacity?: number) => string;
|
|
40
60
|
/**
|
|
@@ -42,13 +62,13 @@ export declare const getOpaqueHexColor: (hex: string, opacity?: number) => strin
|
|
|
42
62
|
* @param hex - The hex color to darken
|
|
43
63
|
* @param amount - Amount to subtract from each channel (0..255-ish)
|
|
44
64
|
*/
|
|
45
|
-
export declare const getDarkerHexColor: (hex: string, amount?: number) =>
|
|
65
|
+
export declare const getDarkerHexColor: (hex: string, amount?: number) => Hex;
|
|
46
66
|
/**
|
|
47
67
|
* Generates a lighter hex color by adding to each RGB channel (clamped)
|
|
48
68
|
* @param hex - The hex color to lighten
|
|
49
69
|
* @param amount - Amount to add to each channel (0..255-ish)
|
|
50
70
|
*/
|
|
51
|
-
export declare const getLighterHexColor: (hex: string, amount?: number) =>
|
|
71
|
+
export declare const getLighterHexColor: (hex: string, amount?: number) => Hex;
|
|
52
72
|
/**
|
|
53
73
|
* Creates a brighter, more neon/vibrant version of a color.
|
|
54
74
|
* Lightens the color while increasing saturation to create a neon effect.
|
|
@@ -60,7 +80,7 @@ export declare const getLighterHexColor: (hex: string, amount?: number) => strin
|
|
|
60
80
|
* @param saturationTarget - Target saturation (0-1, default 0.75 = 75% saturation for vibrant look)
|
|
61
81
|
* @returns A brighter, more saturated hex color
|
|
62
82
|
*/
|
|
63
|
-
export declare const getBrighterPronouncedHexColor: (hex: string, lightnessTarget?: number, saturationTarget?: number) =>
|
|
83
|
+
export declare const getBrighterPronouncedHexColor: (hex: string, lightnessTarget?: number, saturationTarget?: number) => Hex;
|
|
64
84
|
/**
|
|
65
85
|
* Creates a darker but more pronounced/vibrant version of a color.
|
|
66
86
|
* Darkens the color while increasing saturation to maintain vibrancy.
|
|
@@ -72,13 +92,26 @@ export declare const getBrighterPronouncedHexColor: (hex: string, lightnessTarge
|
|
|
72
92
|
* @param saturationTarget - Target saturation (0-1, default 0.35 = 35% saturation for pronounced dark colors)
|
|
73
93
|
* @returns A darker, more saturated hex color
|
|
74
94
|
*/
|
|
75
|
-
export declare const getDarkerPronouncedHexColor: (hex: string, lightnessTarget?: number, saturationTarget?: number) =>
|
|
95
|
+
export declare const getDarkerPronouncedHexColor: (hex: string, lightnessTarget?: number, saturationTarget?: number) => Hex;
|
|
76
96
|
/**
|
|
77
97
|
* Random pastel color (soft, light, UI-friendly)
|
|
78
98
|
*/
|
|
79
|
-
export declare const generateRandomPastelHexColor: () =>
|
|
99
|
+
export declare const generateRandomPastelHexColor: () => Hex;
|
|
80
100
|
/**
|
|
81
101
|
* Random vibrant color (saturated, bold, UI-friendly)
|
|
82
102
|
* Generates colors similar to: #5D9CEC, #4FC1E9, #48CFAD, #A0D468, #FFCE54, #FC6E51, #ED5565, #AC92EC, #EC87C0
|
|
83
103
|
*/
|
|
84
|
-
export declare const generateRandomVibrantHexColor: () =>
|
|
104
|
+
export declare const generateRandomVibrantHexColor: () => Hex;
|
|
105
|
+
/** WCAG 2.x contrast ratio between two hex colors, from 1 (same) to 21 (black on white). Order-independent. */
|
|
106
|
+
export declare const contrastRatio: (a: Hex, b: Hex) => number;
|
|
107
|
+
/**
|
|
108
|
+
* Whether `fg` on `bg` meets WCAG AA: ≥ 4.5:1, or ≥ 3:1 when `isLargeText`.
|
|
109
|
+
* @param isLargeText - Text is ≥ 18pt, or ≥ 14pt bold. @default false
|
|
110
|
+
*/
|
|
111
|
+
export declare const meetsAA: (fg: Hex, bg: Hex, isLargeText?: boolean) => boolean;
|
|
112
|
+
/**
|
|
113
|
+
* Per-channel sRGB interpolation `a·(1−t) + b·t`, rounded: `t = 0` is `a`, `t = 1` is `b`.
|
|
114
|
+
* The formula the token `subtle`/`strong` steps are derived with (Tokens Q3).
|
|
115
|
+
* @param t - Weight of `b`, clamped to 0–1.
|
|
116
|
+
*/
|
|
117
|
+
export declare const mix: (a: Hex, b: Hex, t: number) => Hex;
|