@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
package/dist/buttons/Button.js
CHANGED
|
@@ -1,274 +1,484 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
import Rotate from "../transform/Rotate.js";
|
|
1
|
+
import VisuallyHidden from "../a11y/VisuallyHidden.js";
|
|
2
|
+
import { Placement } from "../theme/enums.js";
|
|
4
3
|
import Text, { TextSize, TextVariant, TextWeight } from "../text/Text.js";
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import
|
|
4
|
+
import { useIsMac } from "../hooks/useIsMac.js";
|
|
5
|
+
import Kbd, { KbdSize, KbdVariant } from "../text/Kbd.js";
|
|
6
|
+
import Tooltip from "../tooltip/Tooltip.js";
|
|
7
|
+
import Dropdown from "../dropdown/Dropdown.js";
|
|
8
|
+
import { parseHotkey, useHotkey } from "../hooks/useHotkey.js";
|
|
9
|
+
import Icon, { IconVariant } from "../icons/Icon.js";
|
|
10
|
+
import IconSlot from "../icons/internal/IconSlot.js";
|
|
11
|
+
import Rotate from "../transform/Rotate.js";
|
|
8
12
|
/* empty css */
|
|
9
13
|
import { styled } from "@linaria/react";
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import { CaretDownIcon } from "@phosphor-icons/react";
|
|
14
|
+
import { forwardRef, useCallback, useRef, useState } from "react";
|
|
15
|
+
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
16
|
+
import { cx } from "@linaria/core";
|
|
17
|
+
import { ArrowUpRightIcon, CaretDownIcon, CircleNotchIcon } from "@phosphor-icons/react";
|
|
14
18
|
//#region src/buttons/Button.tsx
|
|
15
|
-
/**
|
|
19
|
+
/**
|
|
20
|
+
* The standard action control. It shows a label, an icon, or both, and does one thing when
|
|
21
|
+
* pressed: runs `onClick`, submits or resets a form (`type`), or navigates (`href`, which renders
|
|
22
|
+
* an `<a>` with button styling). Five modes (`ButtonVariant`): one monochrome-solid `PRIMARY` per
|
|
23
|
+
* view, a bordered `SECONDARY`, a transparent `TERTIARY`, a muted filled `BASE` and a destructive
|
|
24
|
+
* `ERROR`; five size
|
|
25
|
+
* rungs (`ButtonSize`).
|
|
26
|
+
*
|
|
27
|
+
* Color is CSS: the variant map sets `color` and the fill on the root, and the label (`Text`),
|
|
28
|
+
* icon (`Icon`), spinner and caps all inherit it, so a theme switch needs no re-render.
|
|
29
|
+
*
|
|
30
|
+
* Blocked states (`isDisabled`, `isLoading`) use `aria-disabled` whenever focus matters (loading,
|
|
31
|
+
* or a tooltip that explains why) and native `disabled` otherwise; a blocked link drops its
|
|
32
|
+
* `href`. While blocked, Button's own click handler prevents the default action and never calls
|
|
33
|
+
* `onClick`.
|
|
34
|
+
*
|
|
35
|
+
* Every prop Button does not consume (`aria-*`, `data-*`, and any handler a wrapping `Tooltip`
|
|
36
|
+
* injects with `cloneElement`) is spread onto the root, so Button is a valid trigger.
|
|
37
|
+
*
|
|
38
|
+
* With `dropdown` it becomes a split button: the main segment, a hairline seam and a caret segment
|
|
39
|
+
* that opens a `Dropdown` of the main action's secondary options, in a `role="group"` named after
|
|
40
|
+
* the button. Not a joined group of peers (`ButtonGroup`), a copy control (`CopyButton`), an on/off
|
|
41
|
+
* control (`SwitchInput`) or an inline text link (`Link`).
|
|
42
|
+
*/
|
|
43
|
+
/** Mode (Constitution V-A local mode set, declared in `scripts/lint-dls.ts` `MODE_SETS`). */
|
|
16
44
|
var ButtonVariant = /* @__PURE__ */ function(ButtonVariant) {
|
|
45
|
+
/** Monochrome solid (`solid.primary`): the one main action in a view. The default. */
|
|
17
46
|
ButtonVariant["PRIMARY"] = "PRIMARY";
|
|
18
|
-
|
|
47
|
+
/** Panel fill with a hairline border. */
|
|
19
48
|
ButtonVariant["SECONDARY"] = "SECONDARY";
|
|
49
|
+
/** Transparent until hovered. */
|
|
20
50
|
ButtonVariant["TERTIARY"] = "TERTIARY";
|
|
21
|
-
|
|
51
|
+
/**
|
|
52
|
+
* Muted fill (`solid.neutral`: `background.secondary` with a `text.primary` label), no border: a
|
|
53
|
+
* quiet filled action. Hover and press are clearly visible steps in both themes.
|
|
54
|
+
*/
|
|
55
|
+
ButtonVariant["BASE"] = "BASE";
|
|
56
|
+
/** Error solid (`solid.error`): destructive actions only. */
|
|
22
57
|
ButtonVariant["ERROR"] = "ERROR";
|
|
23
58
|
return ButtonVariant;
|
|
24
59
|
}({});
|
|
25
|
-
/**
|
|
60
|
+
/** Canonical rungs; Button supports all five. */
|
|
26
61
|
var ButtonSize = /* @__PURE__ */ function(ButtonSize) {
|
|
62
|
+
/** 20px tall, `caption` label, 13px icon, 10px caret. */
|
|
63
|
+
ButtonSize["X_SMALL"] = "X_SMALL";
|
|
64
|
+
/** 24px tall, `body_sm` label, 13px icon, 10px caret. */
|
|
27
65
|
ButtonSize["SMALL"] = "SMALL";
|
|
66
|
+
/** 32px tall, `body_md` label, 15px icon, 12px caret. The default (1.x `MEDIUM` was 28px). */
|
|
28
67
|
ButtonSize["MEDIUM"] = "MEDIUM";
|
|
68
|
+
/** 36px tall, `body_lg` label, 15px icon, 12px caret. */
|
|
29
69
|
ButtonSize["LARGE"] = "LARGE";
|
|
70
|
+
/** 40px tall, `body_lg` label, 17px icon, 12px caret. */
|
|
71
|
+
ButtonSize["X_LARGE"] = "X_LARGE";
|
|
30
72
|
return ButtonSize;
|
|
31
73
|
}({});
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
var
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
var
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
var
|
|
49
|
-
|
|
74
|
+
/**
|
|
75
|
+
* Static rules. `border: 0.5px solid transparent` gives every variant the same box; the variant
|
|
76
|
+
* map colors it. `INTERACTIVE_RESET` comes first so the rules after it win.
|
|
77
|
+
*/
|
|
78
|
+
var Root = /*#__PURE__*/ styled("button")({
|
|
79
|
+
name: "Root",
|
|
80
|
+
class: "gx-Button-r99zquh",
|
|
81
|
+
propsAsIs: false
|
|
82
|
+
});
|
|
83
|
+
/** A `leading` / `trailing` slot: never squeezed, so only the label shrinks. */
|
|
84
|
+
var Slot = /*#__PURE__*/ styled("span")({
|
|
85
|
+
name: "Slot",
|
|
86
|
+
class: "gx-Button-Slot-s9yox33",
|
|
87
|
+
propsAsIs: false
|
|
88
|
+
});
|
|
89
|
+
/** The centered spinner over content that stays laid out (loading without an icon). */
|
|
90
|
+
var LoadingOverlay = /*#__PURE__*/ styled("span")({
|
|
91
|
+
name: "LoadingOverlay",
|
|
92
|
+
class: "gx-Button-LoadingOverlay-l1bhvbb9",
|
|
93
|
+
propsAsIs: false
|
|
94
|
+
});
|
|
95
|
+
/**
|
|
96
|
+
* Rest, hover and press per mode. Hover and `:active` skip a blocked button (`:disabled`, or the
|
|
97
|
+
* `aria-disabled` state attribute), so it never reacts.
|
|
98
|
+
*/
|
|
99
|
+
var BUTTON_VARIANT_TO_CSS_MAP = {
|
|
100
|
+
["PRIMARY"]: "gx-Button-PRIMARY-p2x7iw5",
|
|
101
|
+
["SECONDARY"]: "gx-Button-SECONDARY-sukb6jc",
|
|
102
|
+
["TERTIARY"]: "gx-Button-TERTIARY-txznik7",
|
|
103
|
+
["BASE"]: "gx-Button-BASE-b148mgtl",
|
|
104
|
+
["ERROR"]: "gx-Button-ERROR-e1pxicn8"
|
|
50
105
|
};
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
106
|
+
/**
|
|
107
|
+
* `isActive`: the variant's `:active` row applied persistently, hover included, so a pressed
|
|
108
|
+
* toggle keeps its look under the pointer. Declared after the variant map so it wins.
|
|
109
|
+
*/
|
|
110
|
+
var BUTTON_VARIANT_TO_PRESSED_CSS_MAP = {
|
|
111
|
+
["PRIMARY"]: "gx-Button-PRIMARY-p1avpq52",
|
|
112
|
+
["SECONDARY"]: "gx-Button-SECONDARY-s69rtgb",
|
|
113
|
+
["TERTIARY"]: "gx-Button-TERTIARY-t1aod6bi",
|
|
114
|
+
["BASE"]: "gx-Button-BASE-bz9snbo",
|
|
115
|
+
["ERROR"]: "gx-Button-ERROR-e1y0pij6"
|
|
55
116
|
};
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
117
|
+
/**
|
|
118
|
+
* `isDisabled` only (loading keeps the variant colors so the spinner reads on its fill). Built
|
|
119
|
+
* from tokens, without opacity. Declared after the pressed map so it wins.
|
|
120
|
+
*/
|
|
121
|
+
var BUTTON_VARIANT_TO_DISABLED_CSS_MAP = {
|
|
122
|
+
["PRIMARY"]: "gx-Button-PRIMARY-p1xlodf7",
|
|
123
|
+
["SECONDARY"]: "gx-Button-SECONDARY-s1j0poue",
|
|
124
|
+
["TERTIARY"]: "gx-Button-TERTIARY-t11mr8g3",
|
|
125
|
+
["BASE"]: "gx-Button-BASE-b1wt7zpi",
|
|
126
|
+
["ERROR"]: "gx-Button-ERROR-e1wg9kb3"
|
|
59
127
|
};
|
|
60
|
-
|
|
61
|
-
|
|
128
|
+
/**
|
|
129
|
+
* Height, horizontal padding and gap per rung (Constitution III-A.4). Paddings off the space
|
|
130
|
+
* scale (6, 14) are sums of it.
|
|
131
|
+
*/
|
|
132
|
+
var BUTTON_SIZE_TO_CSS_MAP = {
|
|
133
|
+
["X_SMALL"]: "gx-Button-X_SMALL-x1hdfipe",
|
|
134
|
+
["SMALL"]: "gx-Button-SMALL-sgdnn4t",
|
|
135
|
+
["MEDIUM"]: "gx-Button-MEDIUM-m1osbvu7",
|
|
136
|
+
["LARGE"]: "gx-Button-LARGE-l14pe53f",
|
|
137
|
+
["X_LARGE"]: "gx-Button-X_LARGE-xwa5dwk"
|
|
62
138
|
};
|
|
63
|
-
|
|
64
|
-
|
|
139
|
+
/** Icon-only (an `icon`, no `label` / `leading` / `trailing`): square. Declared after the size map. */
|
|
140
|
+
var BUTTON_SIZE_TO_ICON_ONLY_CSS_MAP = {
|
|
141
|
+
["X_SMALL"]: "gx-Button-X_SMALL-x1ktetty",
|
|
142
|
+
["SMALL"]: "gx-Button-SMALL-s1gf76u1",
|
|
143
|
+
["MEDIUM"]: "gx-Button-MEDIUM-m2j3r8h",
|
|
144
|
+
["LARGE"]: "gx-Button-LARGE-l1jxdh2j",
|
|
145
|
+
["X_LARGE"]: "gx-Button-X_LARGE-xit20hd"
|
|
65
146
|
};
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
}));
|
|
89
|
-
var _exp15 = () => ({ $isEllipsis }) => $isEllipsis ? "1" : "0 1 auto";
|
|
90
|
-
var _exp16 = () => ({ $isEllipsis }) => $isEllipsis ? "0" : "auto";
|
|
91
|
-
var LabelWrapper = /*#__PURE__*/ styled("span")({
|
|
92
|
-
name: "LabelWrapper",
|
|
93
|
-
class: "l9yox33",
|
|
94
|
-
propsAsIs: false,
|
|
95
|
-
vars: {
|
|
96
|
-
"l9yox33-0": [_exp15()],
|
|
97
|
-
"l9yox33-1": [_exp16()]
|
|
98
|
-
}
|
|
147
|
+
/** Pill radius; with the icon-only square, a circle. */
|
|
148
|
+
var ROUND_CSS = "gx-Button-ROUND_CSS-r7sqfen";
|
|
149
|
+
/** Declared after the icon-only map, so `fillWidth` wins over the square width. */
|
|
150
|
+
var FILL_WIDTH_CSS = "gx-Button-FILL_WIDTH_CSS-f1wn5mw2";
|
|
151
|
+
var LOADING_CSS = "gx-Button-LOADING_CSS-l1a8ibhg";
|
|
152
|
+
/**
|
|
153
|
+
* Loading without an icon: every child but the overlay stays laid out at `opacity: 0` (not
|
|
154
|
+
* `visibility: hidden`, so the label stays in the accessible name) and the width is unchanged.
|
|
155
|
+
*/
|
|
156
|
+
var LOADING_OVERLAY_CSS = "gx-Button-LOADING_OVERLAY_CSS-lsoh4y6";
|
|
157
|
+
/** The caps never shrink; only the label does. */
|
|
158
|
+
var NO_SHRINK_CSS = "gx-Button-NO_SHRINK_CSS-nfko2kv";
|
|
159
|
+
/** The split caret's accessible name (1.x `dropdownAriaLabel` default). */
|
|
160
|
+
var SPLIT_CARET_LABEL = "More actions";
|
|
161
|
+
/**
|
|
162
|
+
* The split button's group: the box the parent lays out (it takes `className` / `style`). Carries
|
|
163
|
+
* the spec's `SPLIT_ROOT_CSS` rules as a styled root (a raw `<span>` is lint-forbidden).
|
|
164
|
+
*/
|
|
165
|
+
var SplitRoot = /*#__PURE__*/ styled("span")({
|
|
166
|
+
name: "SplitRoot",
|
|
167
|
+
class: "gx-Button-SplitRoot-s36h2nj",
|
|
168
|
+
propsAsIs: false
|
|
99
169
|
});
|
|
100
|
-
|
|
101
|
-
var
|
|
102
|
-
name: "
|
|
103
|
-
class: "
|
|
104
|
-
propsAsIs: false
|
|
105
|
-
vars: { "s1bhvbb9-0": [_exp17()] }
|
|
170
|
+
/** The hairline between the two segments; its color comes from the variant. */
|
|
171
|
+
var Seam = /*#__PURE__*/ styled("span")({
|
|
172
|
+
name: "Seam",
|
|
173
|
+
class: "gx-Button-Seam-s1c8daz3",
|
|
174
|
+
propsAsIs: false
|
|
106
175
|
});
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
176
|
+
/** `fillWidth` on a split: the group stretches; only the main segment grows. */
|
|
177
|
+
var SPLIT_FILL_WIDTH_CSS = "gx-Button-SPLIT_FILL_WIDTH_CSS-shgzd1y";
|
|
178
|
+
/** The main segment of a stretched split grows and may shrink; the caret stays square. */
|
|
179
|
+
var SPLIT_MAIN_FILL_CSS = "gx-Button-SPLIT_MAIN_FILL_CSS-s1dvmg9h";
|
|
180
|
+
/** The main segment: square end corners, no end border (the seam draws it). */
|
|
181
|
+
var SPLIT_MAIN_CSS = "gx-Button-SPLIT_MAIN_CSS-syyksk0";
|
|
182
|
+
/** The caret segment: square start corners, no start border (the seam draws it). */
|
|
183
|
+
var SPLIT_CARET_CSS = "gx-Button-SPLIT_CARET_CSS-s1dfb7ff";
|
|
184
|
+
/**
|
|
185
|
+
* Seam color per mode: the on-solid color at low alpha on the solids (it reads on every fill in
|
|
186
|
+
* both themes), the segments' own border on `SECONDARY`, `border.secondary` on the `BASE` fill,
|
|
187
|
+
* none on `TERTIARY` (as in 1.x).
|
|
188
|
+
*/
|
|
189
|
+
var BUTTON_VARIANT_TO_SPLIT_SEAM_CSS_MAP = {
|
|
190
|
+
["PRIMARY"]: "gx-Button-PRIMARY-paybm67",
|
|
191
|
+
["SECONDARY"]: "gx-Button-SECONDARY-s117mlpl",
|
|
192
|
+
["TERTIARY"]: "gx-Button-TERTIARY-tu1m2jx",
|
|
193
|
+
["BASE"]: "gx-Button-BASE-b1du68nl",
|
|
194
|
+
["ERROR"]: "gx-Button-ERROR-e1k8uw0a"
|
|
110
195
|
};
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
propsAsIs: false,
|
|
115
|
-
vars: { "s2x7iw5-0": [_exp18()] }
|
|
116
|
-
}));
|
|
117
|
-
function getTextVariant(variant, activeTheme) {
|
|
118
|
-
return match(variant).with("PRIMARY", () => activeTheme === GalaxyTheme.DARK ? TextVariant.PRIMARY : TextVariant.PRIMARY_ALT).with("PRIMARY_ALT", () => TextVariant.PRIMARY_ALT).with("SECONDARY", () => TextVariant.PRIMARY).with("TERTIARY", () => TextVariant.PRIMARY).with("SUCCESS", () => activeTheme === GalaxyTheme.DARK ? TextVariant.PRIMARY : TextVariant.PRIMARY_ALT).with("ERROR", () => activeTheme === GalaxyTheme.DARK ? TextVariant.PRIMARY : TextVariant.PRIMARY_ALT).exhaustive();
|
|
119
|
-
}
|
|
120
|
-
function getIconVariant(variant, activeTheme) {
|
|
121
|
-
return match(variant).with("PRIMARY", () => activeTheme === GalaxyTheme.DARK ? IconVariant.PRIMARY : IconVariant.PRIMARY_ALT).with("PRIMARY_ALT", () => IconVariant.PRIMARY_ALT).with("SECONDARY", () => IconVariant.PRIMARY).with("TERTIARY", () => IconVariant.PRIMARY).with("SUCCESS", () => activeTheme === GalaxyTheme.DARK ? IconVariant.PRIMARY : IconVariant.PRIMARY_ALT).with("ERROR", () => activeTheme === GalaxyTheme.DARK ? IconVariant.PRIMARY : IconVariant.PRIMARY_ALT).exhaustive();
|
|
122
|
-
}
|
|
196
|
+
/** The seam while the split is blocked (disabled or loading). Declared after the seam map. */
|
|
197
|
+
var SPLIT_SEAM_DISABLED_CSS = "gx-Button-SPLIT_SEAM_DISABLED_CSS-spdjko7";
|
|
198
|
+
/** Label type step per rung (Constitution III-A.4). */
|
|
123
199
|
var BUTTON_SIZE_TO_TEXT_SIZE_MAP = {
|
|
200
|
+
["X_SMALL"]: TextSize.CAPTION,
|
|
124
201
|
["SMALL"]: TextSize.BODY_SM,
|
|
125
202
|
["MEDIUM"]: TextSize.BODY_MD,
|
|
126
|
-
["LARGE"]: TextSize.BODY_LG
|
|
203
|
+
["LARGE"]: TextSize.BODY_LG,
|
|
204
|
+
["X_LARGE"]: TextSize.BODY_LG
|
|
205
|
+
};
|
|
206
|
+
/**
|
|
207
|
+
* Icon px per rung (the icon, the external arrow and the loading ring): 13 / 13 / 15 / 15 / 17,
|
|
208
|
+
* one pixel over the 2026-10-04 step-down (Mitch, 2026-10-05). Odd, so each sits in an `IconSlot`
|
|
209
|
+
* (whole pixels at 1x, centered at 2x); the caret keeps its own sizes.
|
|
210
|
+
*/
|
|
211
|
+
var BUTTON_SIZE_TO_ICON_PX_MAP = {
|
|
212
|
+
["X_SMALL"]: 13,
|
|
213
|
+
["SMALL"]: 13,
|
|
214
|
+
["MEDIUM"]: 15,
|
|
215
|
+
["LARGE"]: 15,
|
|
216
|
+
["X_LARGE"]: 17
|
|
217
|
+
};
|
|
218
|
+
/** The split caret: 12px, 10px on the 20px and 24px rungs (the collapsible Widget's caret). */
|
|
219
|
+
var BUTTON_SIZE_TO_CARET_PX_MAP = {
|
|
220
|
+
["X_SMALL"]: 10,
|
|
221
|
+
["SMALL"]: 10,
|
|
222
|
+
["MEDIUM"]: 12,
|
|
223
|
+
["LARGE"]: 12,
|
|
224
|
+
["X_LARGE"]: 12
|
|
127
225
|
};
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
["
|
|
131
|
-
["
|
|
226
|
+
/** Identity: Kbd has all five rungs. */
|
|
227
|
+
var BUTTON_SIZE_TO_KBD_SIZE_MAP = {
|
|
228
|
+
["X_SMALL"]: KbdSize.X_SMALL,
|
|
229
|
+
["SMALL"]: KbdSize.SMALL,
|
|
230
|
+
["MEDIUM"]: KbdSize.MEDIUM,
|
|
231
|
+
["LARGE"]: KbdSize.LARGE,
|
|
232
|
+
["X_LARGE"]: KbdSize.X_LARGE
|
|
132
233
|
};
|
|
133
234
|
/**
|
|
134
|
-
*
|
|
135
|
-
*
|
|
136
|
-
* `isLoading` and `isDisabled` behave identically at the DOM level — both set
|
|
137
|
-
* `disabled` on the `<button>` and swallow `onClick`. Loading is a lockout, not
|
|
138
|
-
* a spinner; render your own indicator alongside if you need one.
|
|
139
|
-
*
|
|
140
|
-
* With `contentWhenDropdown`, renders as a split button: a caret segment after
|
|
141
|
-
* a hairline divider opens an anchored dropdown of advanced actions.
|
|
235
|
+
* Solid modes take plain caps in the on-solid color (`Kbd isPlain`, Kbd Decision 4); the others a
|
|
236
|
+
* raised `TERTIARY` fill.
|
|
142
237
|
*/
|
|
143
|
-
var
|
|
144
|
-
|
|
238
|
+
var BUTTON_VARIANT_TO_KBD_PROPS_MAP = {
|
|
239
|
+
["PRIMARY"]: { isPlain: true },
|
|
240
|
+
["SECONDARY"]: { variant: KbdVariant.TERTIARY },
|
|
241
|
+
["TERTIARY"]: { variant: KbdVariant.TERTIARY },
|
|
242
|
+
["BASE"]: { variant: KbdVariant.TERTIARY },
|
|
243
|
+
["ERROR"]: { isPlain: true }
|
|
244
|
+
};
|
|
245
|
+
/** Same name on every platform. */
|
|
246
|
+
var sameName = (name) => ({
|
|
247
|
+
mac: name,
|
|
248
|
+
other: name
|
|
249
|
+
});
|
|
250
|
+
/**
|
|
251
|
+
* Grammar token → `aria-keyshortcuts` key name (WAI-ARIA uses `KeyboardEvent.key` values).
|
|
252
|
+
* `mod` is `Meta` on Mac and `Control` elsewhere. A single character upper-cases instead.
|
|
253
|
+
*/
|
|
254
|
+
var HOTKEY_TOKEN_TO_ARIA_KEY_MAP = {
|
|
255
|
+
mod: {
|
|
256
|
+
mac: "Meta",
|
|
257
|
+
other: "Control"
|
|
258
|
+
},
|
|
259
|
+
ctrl: sameName("Control"),
|
|
260
|
+
meta: sameName("Meta"),
|
|
261
|
+
cmd: sameName("Meta"),
|
|
262
|
+
alt: sameName("Alt"),
|
|
263
|
+
option: sameName("Alt"),
|
|
264
|
+
shift: sameName("Shift"),
|
|
265
|
+
enter: sameName("Enter"),
|
|
266
|
+
escape: sameName("Escape"),
|
|
267
|
+
esc: sameName("Escape"),
|
|
268
|
+
space: sameName("Space"),
|
|
269
|
+
tab: sameName("Tab"),
|
|
270
|
+
backspace: sameName("Backspace"),
|
|
271
|
+
delete: sameName("Delete"),
|
|
272
|
+
up: sameName("ArrowUp"),
|
|
273
|
+
down: sameName("ArrowDown"),
|
|
274
|
+
left: sameName("ArrowLeft"),
|
|
275
|
+
right: sameName("ArrowRight"),
|
|
276
|
+
home: sameName("Home"),
|
|
277
|
+
end: sameName("End"),
|
|
278
|
+
pageup: sameName("PageUp"),
|
|
279
|
+
pagedown: sameName("PageDown"),
|
|
280
|
+
f1: sameName("F1"),
|
|
281
|
+
f2: sameName("F2"),
|
|
282
|
+
f3: sameName("F3"),
|
|
283
|
+
f4: sameName("F4"),
|
|
284
|
+
f5: sameName("F5"),
|
|
285
|
+
f6: sameName("F6"),
|
|
286
|
+
f7: sameName("F7"),
|
|
287
|
+
f8: sameName("F8"),
|
|
288
|
+
f9: sameName("F9"),
|
|
289
|
+
f10: sameName("F10"),
|
|
290
|
+
f11: sameName("F11"),
|
|
291
|
+
f12: sameName("F12")
|
|
292
|
+
};
|
|
293
|
+
/** Tokens that make a combo safe to fire while typing (Shift alone is not). */
|
|
294
|
+
var MODIFIER_TOKENS = new Set([
|
|
295
|
+
"mod",
|
|
296
|
+
"ctrl",
|
|
297
|
+
"meta",
|
|
298
|
+
"cmd",
|
|
299
|
+
"alt",
|
|
300
|
+
"option"
|
|
301
|
+
]);
|
|
302
|
+
var isHotkeyToken = (token) => Object.hasOwn(HOTKEY_TOKEN_TO_ARIA_KEY_MAP, token);
|
|
303
|
+
/** The `aria-keyshortcuts` value for a combo, or `undefined` when a token has no name. */
|
|
304
|
+
function toAriaKeyShortcuts(hotKeys, isMac) {
|
|
305
|
+
const names = [];
|
|
306
|
+
for (const entry of hotKeys) {
|
|
307
|
+
const token = entry.trim().toLowerCase();
|
|
308
|
+
if (isHotkeyToken(token)) {
|
|
309
|
+
const name = HOTKEY_TOKEN_TO_ARIA_KEY_MAP[token];
|
|
310
|
+
names.push(isMac ? name.mac : name.other);
|
|
311
|
+
} else if ([...token].length === 1) names.push(token.toUpperCase());
|
|
312
|
+
else return;
|
|
313
|
+
}
|
|
314
|
+
return names.join("+");
|
|
315
|
+
}
|
|
316
|
+
/** The standard action control: a label, an icon or both, in one of four modes and five rungs. */
|
|
317
|
+
var Button = forwardRef(function Button({ label, icon, isIconTrailing = false, leading, trailing, hotKeys, shouldBindHotKey = false, variant = "PRIMARY", size = "MEDIUM", type = "button", href, isExternal = false, as, tooltip, dropdown, isDisabled = false, isLoading = false, isActive, isRound = false, fillWidth = false, onClick, ariaLabel, id, className, style, ...rest }, ref) {
|
|
318
|
+
const isMac = useIsMac();
|
|
319
|
+
const rootRef = useRef(null);
|
|
320
|
+
const setRootRef = useCallback((node) => {
|
|
321
|
+
rootRef.current = node;
|
|
322
|
+
if (typeof ref === "function") ref(node);
|
|
323
|
+
else if (ref) ref.current = node;
|
|
324
|
+
}, [ref]);
|
|
325
|
+
const hasLabel = label !== void 0 && label !== "";
|
|
326
|
+
const hasHotKeys = hotKeys !== void 0 && hotKeys.length > 0;
|
|
327
|
+
const isIconOnly = icon !== void 0 && !hasLabel && leading === void 0 && trailing === void 0;
|
|
328
|
+
const hasTooltip = tooltip !== void 0 || isIconOnly && hasHotKeys;
|
|
329
|
+
const isLink = href !== void 0;
|
|
330
|
+
const isBlocked = isDisabled || isLoading;
|
|
331
|
+
const isSplit = dropdown !== void 0;
|
|
145
332
|
const [isDropdownOpen, setIsDropdownOpen] = useState(false);
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
}
|
|
157
|
-
const
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
333
|
+
if (isBlocked && isDropdownOpen) setIsDropdownOpen(false);
|
|
334
|
+
const isFocusableWhenBlocked = isLoading || hasTooltip;
|
|
335
|
+
const isNativeDisabled = !isLink && isDisabled && !isFocusableWhenBlocked;
|
|
336
|
+
const combo = hasHotKeys ? hotKeys.join("+") : "";
|
|
337
|
+
const isBound = shouldBindHotKey && hasHotKeys && parseHotkey(combo) !== null;
|
|
338
|
+
const hasModifier = hasHotKeys && hotKeys.some((entry) => MODIFIER_TOKENS.has(entry.trim().toLowerCase()));
|
|
339
|
+
useHotkey(combo, () => rootRef.current?.click(), {
|
|
340
|
+
isEnabled: isBound && !isBlocked,
|
|
341
|
+
shouldPreventDefault: true,
|
|
342
|
+
shouldIgnoreInputs: !hasModifier
|
|
343
|
+
});
|
|
344
|
+
const ariaKeyShortcuts = isBound ? toAriaKeyShortcuts(hotKeys, isMac) : void 0;
|
|
345
|
+
const handleClick = (event) => {
|
|
346
|
+
if (isBlocked) {
|
|
347
|
+
event.preventDefault();
|
|
348
|
+
return;
|
|
349
|
+
}
|
|
350
|
+
onClick?.(event);
|
|
351
|
+
};
|
|
352
|
+
const computedAria = {};
|
|
353
|
+
if (ariaLabel !== void 0) computedAria["aria-label"] = ariaLabel;
|
|
354
|
+
if (isBlocked && !isNativeDisabled) computedAria["aria-disabled"] = true;
|
|
355
|
+
if (isLoading) computedAria["aria-busy"] = true;
|
|
356
|
+
if (ariaKeyShortcuts !== void 0) computedAria["aria-keyshortcuts"] = ariaKeyShortcuts;
|
|
357
|
+
if (isLink) {
|
|
358
|
+
if (isActive === true) computedAria["aria-current"] = "page";
|
|
359
|
+
} else if (isActive !== void 0) computedAria["aria-pressed"] = isActive;
|
|
360
|
+
const elementProps = {};
|
|
361
|
+
if (!isLink) {
|
|
362
|
+
elementProps.type = type;
|
|
363
|
+
if (isNativeDisabled) elementProps.disabled = true;
|
|
364
|
+
} else if (isBlocked) {
|
|
365
|
+
elementProps.as = "a";
|
|
366
|
+
elementProps.role = "link";
|
|
367
|
+
elementProps.tabIndex = isFocusableWhenBlocked ? 0 : -1;
|
|
368
|
+
} else {
|
|
369
|
+
elementProps.as = as ?? "a";
|
|
370
|
+
elementProps.href = href;
|
|
371
|
+
if (isExternal) {
|
|
372
|
+
elementProps.target = "_blank";
|
|
373
|
+
elementProps.rel = "noopener noreferrer";
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
const iconPx = BUTTON_SIZE_TO_ICON_PX_MAP[size];
|
|
377
|
+
const loadingRing = /* @__PURE__ */ jsx(IconSlot, {
|
|
378
|
+
px: iconPx,
|
|
379
|
+
children: /* @__PURE__ */ jsx(Icon, {
|
|
380
|
+
component: CircleNotchIcon,
|
|
381
|
+
isSpinning: true,
|
|
382
|
+
size: iconPx,
|
|
383
|
+
variant: IconVariant.INHERIT
|
|
384
|
+
})
|
|
385
|
+
});
|
|
386
|
+
const iconNode = icon === void 0 ? null : isLoading ? loadingRing : /* @__PURE__ */ jsx(IconSlot, {
|
|
387
|
+
px: iconPx,
|
|
388
|
+
children: /* @__PURE__ */ jsx(Icon, {
|
|
389
|
+
component: icon,
|
|
390
|
+
size: iconPx,
|
|
391
|
+
variant: IconVariant.INHERIT
|
|
392
|
+
})
|
|
393
|
+
});
|
|
394
|
+
const hasOverlay = isLoading && icon === void 0;
|
|
395
|
+
const hasInlineHotKeys = hasHotKeys && !isIconOnly;
|
|
396
|
+
const root = /* @__PURE__ */ jsxs(Root, {
|
|
397
|
+
...computedAria,
|
|
398
|
+
...rest,
|
|
399
|
+
...elementProps,
|
|
400
|
+
ref: setRootRef,
|
|
401
|
+
id,
|
|
212
402
|
onClick: handleClick,
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
onMouseLeave,
|
|
216
|
-
"aria-label": ariaLabel,
|
|
217
|
-
"aria-expanded": ariaExpanded,
|
|
218
|
-
"aria-controls": ariaControls,
|
|
219
|
-
"aria-haspopup": ariaHasPopup,
|
|
403
|
+
className: cx(BUTTON_VARIANT_TO_CSS_MAP[variant], isActive === true && BUTTON_VARIANT_TO_PRESSED_CSS_MAP[variant], isDisabled && BUTTON_VARIANT_TO_DISABLED_CSS_MAP[variant], BUTTON_SIZE_TO_CSS_MAP[size], isIconOnly && BUTTON_SIZE_TO_ICON_ONLY_CSS_MAP[size], isRound && ROUND_CSS, fillWidth && !isSplit && FILL_WIDTH_CSS, isLoading && LOADING_CSS, hasOverlay && LOADING_OVERLAY_CSS, isSplit && SPLIT_MAIN_CSS, isSplit && fillWidth && SPLIT_MAIN_FILL_CSS, isSplit ? void 0 : className),
|
|
404
|
+
...isSplit ? {} : { style },
|
|
220
405
|
children: [
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
406
|
+
leading !== void 0 && /* @__PURE__ */ jsx(Slot, { children: leading }),
|
|
407
|
+
!isIconTrailing && iconNode,
|
|
408
|
+
hasLabel && /* @__PURE__ */ jsx(Text, {
|
|
409
|
+
as: "span",
|
|
410
|
+
size: BUTTON_SIZE_TO_TEXT_SIZE_MAP[size],
|
|
411
|
+
weight: TextWeight.MEDIUM,
|
|
412
|
+
variant: TextVariant.INHERIT,
|
|
413
|
+
lineClamp: 1,
|
|
414
|
+
children: label
|
|
415
|
+
}),
|
|
416
|
+
isIconTrailing && iconNode,
|
|
417
|
+
isLink && isExternal && /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(IconSlot, {
|
|
418
|
+
px: iconPx,
|
|
419
|
+
children: /* @__PURE__ */ jsx(Icon, {
|
|
420
|
+
component: ArrowUpRightIcon,
|
|
421
|
+
size: iconPx,
|
|
422
|
+
variant: IconVariant.INHERIT
|
|
423
|
+
})
|
|
424
|
+
}), /* @__PURE__ */ jsx(VisuallyHidden, { children: " (opens in a new tab)" })] }),
|
|
425
|
+
trailing !== void 0 && /* @__PURE__ */ jsx(Slot, { children: trailing }),
|
|
426
|
+
hasInlineHotKeys && /* @__PURE__ */ jsx(Kbd, {
|
|
427
|
+
hotKeys,
|
|
428
|
+
size: BUTTON_SIZE_TO_KBD_SIZE_MAP[size],
|
|
429
|
+
...BUTTON_VARIANT_TO_KBD_PROPS_MAP[variant],
|
|
430
|
+
isDisabled,
|
|
431
|
+
"aria-hidden": true,
|
|
432
|
+
className: NO_SHRINK_CSS
|
|
433
|
+
}),
|
|
434
|
+
hasOverlay && /* @__PURE__ */ jsx(LoadingOverlay, { children: loadingRing })
|
|
224
435
|
]
|
|
225
436
|
});
|
|
226
|
-
|
|
227
|
-
const
|
|
228
|
-
|
|
229
|
-
|
|
437
|
+
const isFallbackBody = tooltip === void 0;
|
|
438
|
+
const main = hasTooltip ? /* @__PURE__ */ jsx(Tooltip, {
|
|
439
|
+
body: isFallbackBody ? ariaLabel : tooltip,
|
|
440
|
+
...isIconOnly && hasHotKeys ? { hotKeys } : {},
|
|
441
|
+
...isFallbackBody ? { "aria-hidden": true } : {},
|
|
442
|
+
children: root
|
|
443
|
+
}) : root;
|
|
444
|
+
if (!isSplit) return main;
|
|
445
|
+
return /* @__PURE__ */ jsxs(SplitRoot, {
|
|
446
|
+
role: "group",
|
|
447
|
+
"aria-label": hasLabel ? label : ariaLabel,
|
|
448
|
+
className: cx(fillWidth && SPLIT_FILL_WIDTH_CSS, className),
|
|
449
|
+
style,
|
|
230
450
|
children: [
|
|
231
|
-
|
|
232
|
-
/* @__PURE__ */ jsx(
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
$isDisabled: isDisabled || isLoading
|
|
451
|
+
main,
|
|
452
|
+
/* @__PURE__ */ jsx(Seam, {
|
|
453
|
+
"aria-hidden": true,
|
|
454
|
+
className: cx(BUTTON_VARIANT_TO_SPLIT_SEAM_CSS_MAP[variant], isBlocked && SPLIT_SEAM_DISABLED_CSS)
|
|
236
455
|
}),
|
|
237
|
-
/* @__PURE__ */ jsx(
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
"aria-expanded": isDropdownOpen,
|
|
257
|
-
children: /* @__PURE__ */ jsx(Rotate, {
|
|
258
|
-
isRotated: isDropdownOpen,
|
|
259
|
-
deg: -180,
|
|
260
|
-
children: /* @__PURE__ */ jsx(Icon, {
|
|
261
|
-
component: CaretDownIcon,
|
|
262
|
-
variant: getIconVariant(variant, activeTheme),
|
|
263
|
-
size: BUTTON_SIZE_TO_ICON_SIZE_MAP[size],
|
|
264
|
-
weight: IconWeight.BOLD
|
|
265
|
-
})
|
|
456
|
+
/* @__PURE__ */ jsx(Dropdown, {
|
|
457
|
+
body: dropdown,
|
|
458
|
+
placement: Placement.BOTTOM_END,
|
|
459
|
+
isOpen: isDropdownOpen,
|
|
460
|
+
onOpenChange: setIsDropdownOpen,
|
|
461
|
+
isDisabled: isBlocked,
|
|
462
|
+
children: /* @__PURE__ */ jsx(Root, {
|
|
463
|
+
type: "button",
|
|
464
|
+
"aria-label": SPLIT_CARET_LABEL,
|
|
465
|
+
disabled: isBlocked,
|
|
466
|
+
className: cx(BUTTON_VARIANT_TO_CSS_MAP[variant], isDropdownOpen && BUTTON_VARIANT_TO_PRESSED_CSS_MAP[variant], isBlocked && BUTTON_VARIANT_TO_DISABLED_CSS_MAP[variant], BUTTON_SIZE_TO_CSS_MAP[size], BUTTON_SIZE_TO_ICON_ONLY_CSS_MAP[size], isRound && ROUND_CSS, SPLIT_CARET_CSS),
|
|
467
|
+
children: /* @__PURE__ */ jsx(Rotate, {
|
|
468
|
+
isRotated: isDropdownOpen,
|
|
469
|
+
deg: -180,
|
|
470
|
+
"aria-hidden": true,
|
|
471
|
+
children: /* @__PURE__ */ jsx(Icon, {
|
|
472
|
+
component: CaretDownIcon,
|
|
473
|
+
size: BUTTON_SIZE_TO_CARET_PX_MAP[size],
|
|
474
|
+
variant: IconVariant.INHERIT
|
|
266
475
|
})
|
|
267
476
|
})
|
|
268
477
|
})
|
|
269
478
|
})
|
|
270
479
|
]
|
|
271
480
|
});
|
|
272
|
-
};
|
|
481
|
+
});
|
|
482
|
+
Button.displayName = "Button";
|
|
273
483
|
//#endregion
|
|
274
484
|
export { ButtonSize, ButtonVariant, Button as default };
|