@galaxy-io/dls 1.6.1 → 2.0.1
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 +160 -124
- 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 +33 -20
- package/dist/charts/ChartFrame.d.ts +71 -116
- package/dist/charts/ChartFrame.js +306 -97
- package/dist/charts/ChartGroupProvider.d.ts +30 -41
- package/dist/charts/ChartGroupProvider.js +20 -7
- package/dist/charts/ChartLegend.d.ts +37 -48
- package/dist/charts/ChartLegend.js +243 -125
- package/dist/charts/ChartMarkTargets.d.ts +12 -28
- package/dist/charts/ChartMarkTargets.js +34 -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 +307 -0
- package/dist/charts/LineChart.d.ts +54 -47
- package/dist/charts/LineChart.js +174 -121
- package/dist/charts/PieChart.d.ts +32 -53
- package/dist/charts/PieChart.js +159 -136
- 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/chartSelection.d.ts +15 -0
- package/dist/charts/chartSelection.js +22 -0
- package/dist/charts/constants.d.ts +100 -256
- package/dist/charts/constants.js +109 -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 +206 -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 +69 -116
- package/dist/charts/useChartInteraction.js +148 -78
- 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 +83 -17
- package/dist/drawer/Drawer.js +399 -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 +298 -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 +1082 -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 +120 -0
- package/dist/timeline/Timeline.js +301 -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 +855 -157
- package/dist/accordion/Accordion.d.ts +0 -54
- package/dist/accordion/Accordion.js +0 -183
- package/dist/assets/components/GalaxyFilamentWordmarkDark.d.ts +0 -3
- package/dist/assets/components/GalaxyFilamentWordmarkDark.js +0 -14
- package/dist/assets/components/GalaxyFilamentWordmarkLight.d.ts +0 -3
- package/dist/assets/components/GalaxyFilamentWordmarkLight.js +0 -14
- package/dist/assets/components/GalaxyLogomarkDark.d.ts +0 -3
- package/dist/assets/components/GalaxyLogomarkDark.js +0 -11
- package/dist/assets/components/GalaxyLogomarkLight.d.ts +0 -3
- package/dist/assets/components/GalaxyLogomarkLight.js +0 -17
- package/dist/assets/components/GalaxyWordmarkDark.d.ts +0 -3
- package/dist/assets/components/GalaxyWordmarkDark.js +0 -15
- package/dist/assets/components/GalaxyWordmarkLight.d.ts +0 -3
- package/dist/assets/components/GalaxyWordmarkLight.js +0 -28
- package/dist/assets/models/galaxy-animation.js +0 -136666
- package/dist/assets/models/galaxy-logomark.js +0 -4
- package/dist/avatar/AvatarShimmer.d.ts +0 -30
- package/dist/avatar/AvatarShimmer.js +0 -22
- package/dist/backgrounds/CellGridBackground.d.ts +0 -24
- package/dist/backgrounds/CellGridBackground.js +0 -44
- package/dist/backgrounds/CrossGridBackground.d.ts +0 -26
- package/dist/backgrounds/CrossGridBackground.js +0 -49
- package/dist/backgrounds/DotGridBackground.d.ts +0 -24
- package/dist/backgrounds/DotGridBackground.js +0 -47
- package/dist/badge/Badge.d.ts +0 -42
- package/dist/badge/Badge.js +0 -99
- package/dist/charts/ChartEmptyState.d.ts +0 -17
- package/dist/charts/ChartEmptyState.js +0 -29
- package/dist/charts/ProgressBar.d.ts +0 -29
- package/dist/charts/ProgressBar.js +0 -65
- package/dist/charts/chartTheme.d.ts +0 -18
- package/dist/charts/chartTheme.js +0 -26
- package/dist/containers/FlexItem.d.ts +0 -50
- package/dist/containers/FlexItem.js +0 -91
- package/dist/containers/FlexWrapper.d.ts +0 -96
- package/dist/containers/FlexWrapper.js +0 -143
- package/dist/containers/GridWrapper.d.ts +0 -79
- package/dist/containers/GridWrapper.js +0 -125
- package/dist/containers/Spacing.d.ts +0 -23
- package/dist/containers/Spacing.js +0 -59
- package/dist/containers/Wrapper.d.ts +0 -26
- package/dist/containers/Wrapper.js +0 -54
- package/dist/dividers/HorizontalDivider.d.ts +0 -7
- package/dist/dividers/HorizontalDivider.js +0 -39
- package/dist/dividers/VerticalDivider.d.ts +0 -6
- package/dist/dividers/VerticalDivider.js +0 -21
- package/dist/icons/GalaxyFilamentWordmark.d.ts +0 -11
- package/dist/icons/GalaxyFilamentWordmark.js +0 -25
- package/dist/icons/GalaxyLogomark.d.ts +0 -13
- package/dist/icons/GalaxyLogomark.js +0 -27
- package/dist/icons/GalaxyLogomark3D.d.ts +0 -56
- package/dist/icons/GalaxyLogomark3D.js +0 -319
- package/dist/icons/GalaxyLogomarkAnimation.d.ts +0 -18
- package/dist/icons/GalaxyLogomarkAnimation.js +0 -48
- package/dist/icons/GalaxyWordmark.d.ts +0 -11
- package/dist/icons/GalaxyWordmark.js +0 -25
- package/dist/inputs/MultiTextInput.d.ts +0 -32
- package/dist/inputs/MultiTextInput.js +0 -180
- package/dist/inputs/SwitcherInput.d.ts +0 -30
- package/dist/inputs/SwitcherInput.js +0 -81
- package/dist/inputs/hooks.d.ts +0 -10
- package/dist/inputs/hooks.js +0 -22
- package/dist/overlay/constants.d.ts +0 -28
- package/dist/overlay/constants.js +0 -37
- package/dist/resizable/HorizontalResizeHandle.d.ts +0 -17
- package/dist/resizable/HorizontalResizeHandle.js +0 -38
- package/dist/resizable/VerticalResizeHandle.d.ts +0 -18
- package/dist/resizable/VerticalResizeHandle.js +0 -39
- package/dist/table/SpreadsheetCell.d.ts +0 -21
- package/dist/table/SpreadsheetCell.js +0 -71
- package/dist/table/SpreadsheetHeaderCell.d.ts +0 -23
- package/dist/table/SpreadsheetHeaderCell.js +0 -91
- package/dist/table/SpreadsheetMenuItem.d.ts +0 -14
- package/dist/table/SpreadsheetMenuItem.js +0 -33
- package/dist/table/SpreadsheetPrimitives.d.ts +0 -172
- package/dist/table/SpreadsheetPrimitives.js +0 -105
- package/dist/table/SpreadsheetRow.d.ts +0 -33
- package/dist/table/SpreadsheetRow.js +0 -73
- package/dist/table/SpreadsheetRowActionCell.d.ts +0 -14
- package/dist/table/SpreadsheetRowActionCell.js +0 -51
- package/dist/table/TableExpandCell.d.ts +0 -11
- package/dist/table/TableExpandCell.js +0 -24
- package/dist/table/TableExpandedRow.d.ts +0 -16
- package/dist/table/TableExpandedRow.js +0 -77
- package/dist/table/TableHeaderCellContent.d.ts +0 -30
- package/dist/table/TableHeaderCellContent.js +0 -48
- package/dist/table/TablePrimitives.d.ts +0 -313
- package/dist/table/TablePrimitives.js +0 -302
- package/dist/table/TableSelectCell.d.ts +0 -18
- package/dist/table/TableSelectCell.js +0 -27
- package/dist/table/TableStatusRow.d.ts +0 -18
- package/dist/table/TableStatusRow.js +0 -50
- package/dist/table/useSpreadsheetEditing.d.ts +0 -13
- package/dist/table/useSpreadsheetEditing.js +0 -41
- package/dist/table/useTableColumnResize.d.ts +0 -38
- package/dist/table/useTableColumnResize.js +0 -155
- package/dist/table/useTableRowExpansion.d.ts +0 -24
- package/dist/table/useTableRowExpansion.js +0 -62
- package/dist/table/utils.d.ts +0 -50
- package/dist/table/utils.js +0 -78
- package/dist/text/HotKeys.d.ts +0 -30
- package/dist/text/HotKeys.js +0 -74
- package/dist/text/Paragraph.d.ts +0 -33
- package/dist/text/Paragraph.js +0 -83
- package/dist/text/TextShimmer.d.ts +0 -14
- package/dist/text/TextShimmer.js +0 -34
- package/dist/theme/GalaxyTheme.d.ts +0 -67
- package/dist/theme/GalaxyTheme.js +0 -119
- package/dist/theme/constants.d.ts +0 -8
- package/dist/theme/constants.js +0 -38
- package/dist/theme/index.d.ts +0 -6
- package/dist/theme/index.js +0 -7
- package/dist/theme/types.d.ts +0 -195
- package/dist/theme/types.js +0 -10
- package/dist/theme/typography.d.ts +0 -2
- package/dist/theme/typography.js +0 -73
- package/dist/theme/variants/dark.d.ts +0 -2
- package/dist/theme/variants/dark.js +0 -125
- package/dist/theme/variants/light.d.ts +0 -2
- package/dist/theme/variants/light.js +0 -125
- package/dist/toast/ToastContainer.d.ts +0 -10
- package/dist/toast/ToastContainer.js +0 -31
- package/dist/toast/ToastWrapper.d.ts +0 -6
- package/dist/toast/ToastWrapper.js +0 -27
- package/dist/transform/Flash.d.ts +0 -7
- package/dist/transform/Flash.js +0 -18
- package/dist/transform/Spin.d.ts +0 -14
- package/dist/transform/Spin.js +0 -25
- package/dist/utils/linaria.d.ts +0 -1
- package/dist/utils/linaria.js +0 -8
package/dist/widget/Widget.js
CHANGED
|
@@ -1,117 +1,356 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import Text, { TextSize, TextVariant, TextWeight } from "../text/Text.js";
|
|
2
|
+
import { useControlledOpenState } from "../hooks/useControlledOpenState.js";
|
|
3
|
+
import Divider from "../layout/Divider.js";
|
|
4
|
+
import Icon, { IconVariant } from "../icons/Icon.js";
|
|
5
|
+
import IconSlot from "../icons/internal/IconSlot.js";
|
|
6
|
+
import Rotate from "../transform/Rotate.js";
|
|
7
|
+
import Spinner, { SpinnerVariant } from "../feedback/Spinner.js";
|
|
8
|
+
import CollapseMotion from "../transform/internal/CollapseMotion.js";
|
|
3
9
|
/* empty css */
|
|
4
10
|
import { styled } from "@linaria/react";
|
|
11
|
+
import { createContext, forwardRef, useContext, useEffect, useId, useRef } from "react";
|
|
12
|
+
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
13
|
+
import { cx } from "@linaria/core";
|
|
5
14
|
import { match } from "ts-pattern";
|
|
6
|
-
import {
|
|
15
|
+
import { CaretDownIcon } from "@phosphor-icons/react";
|
|
7
16
|
//#region src/widget/Widget.tsx
|
|
8
|
-
/**
|
|
17
|
+
/**
|
|
18
|
+
* The card: a hairline-bordered, rounded surface that groups related content. Every region is
|
|
19
|
+
* optional around the body: a header row (a title, an optional subheader and leading icon, and
|
|
20
|
+
* `actions` at the end) and a footer row, separated from the body by hairline `Divider`s that
|
|
21
|
+
* appear only between two rendered regions. One component covers four header cases:
|
|
22
|
+
*
|
|
23
|
+
* - no `header`: the body alone (the 1.x card);
|
|
24
|
+
* - a static `header`: a titled card;
|
|
25
|
+
* - `isCollapsible`: the header is one stretched `<button>` (`aria-expanded`, `aria-controls`, named
|
|
26
|
+
* by the title, described by the subheader) that folds the body and footer away with an
|
|
27
|
+
* animated height (instant under reduced motion), with a turning caret; the folded content is a named region and leaves the tab
|
|
28
|
+
* order while closed;
|
|
29
|
+
* - `isCollapsible hasCaret={false}`: the same disclosure without the caret.
|
|
30
|
+
*
|
|
31
|
+
* It can also show a loading body (`isLoading`, a centered `Spinner`), be one click target
|
|
32
|
+
* (`isInteractive` with `onClick`: a childless `<button>` stretched under the content, so nothing
|
|
33
|
+
* nests inside a button) and show a chosen state (`isSelected`, a `text.primary` hairline). The
|
|
34
|
+
* fill comes from the surface set; `size` sets the header, footer and body density.
|
|
35
|
+
*
|
|
36
|
+
* Collapsible Widgets that coordinate (one open at a time, arrow keys between headers) are wrapped
|
|
37
|
+
* in `WidgetGroup`, which owns their open state through the context exported here. A plain surface
|
|
38
|
+
* with no border, regions or states is a `Box`; a status message is an `Alert`.
|
|
39
|
+
*/
|
|
40
|
+
/** Card fill (Constitution V-A surface set). */
|
|
9
41
|
var WidgetVariant = /* @__PURE__ */ function(WidgetVariant) {
|
|
42
|
+
/** `background.base`. */
|
|
10
43
|
WidgetVariant["BASE"] = "BASE";
|
|
44
|
+
/** `background.primary`. The default (1.x default). */
|
|
11
45
|
WidgetVariant["PRIMARY"] = "PRIMARY";
|
|
12
|
-
|
|
46
|
+
/** `background.secondary`. */
|
|
13
47
|
WidgetVariant["SECONDARY"] = "SECONDARY";
|
|
14
|
-
|
|
48
|
+
/** `background.tertiary`. */
|
|
15
49
|
WidgetVariant["TERTIARY"] = "TERTIARY";
|
|
16
|
-
WidgetVariant["TERTIARY_ALT"] = "TERTIARY_ALT";
|
|
17
|
-
WidgetVariant["SUCCESS"] = "SUCCESS";
|
|
18
|
-
WidgetVariant["ERROR"] = "ERROR";
|
|
19
|
-
WidgetVariant["WARNING"] = "WARNING";
|
|
20
|
-
WidgetVariant["DISABLED"] = "DISABLED";
|
|
21
|
-
WidgetVariant["BLUE"] = "BLUE";
|
|
22
|
-
WidgetVariant["LIME"] = "LIME";
|
|
23
|
-
WidgetVariant["TEAL"] = "TEAL";
|
|
24
|
-
WidgetVariant["YELLOW"] = "YELLOW";
|
|
25
|
-
WidgetVariant["ORANGE"] = "ORANGE";
|
|
26
|
-
WidgetVariant["PURPLE"] = "PURPLE";
|
|
27
|
-
WidgetVariant["PINK"] = "PINK";
|
|
28
50
|
return WidgetVariant;
|
|
29
51
|
}({});
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
var
|
|
46
|
-
|
|
47
|
-
|
|
52
|
+
/** Header, footer and body density; canonical rungs `SMALL MEDIUM LARGE` (the 1.x Accordion members). */
|
|
53
|
+
var WidgetSize = /* @__PURE__ */ function(WidgetSize) {
|
|
54
|
+
/** 32px header and footer rows, 8px body inset and gap, `body_sm` title, `caption` subheader, 13px icon. */
|
|
55
|
+
WidgetSize["SMALL"] = "SMALL";
|
|
56
|
+
/** 40px header and footer rows, 12px body inset and gap, `body_md` title, `body_sm` subheader, 15px icon. The default. */
|
|
57
|
+
WidgetSize["MEDIUM"] = "MEDIUM";
|
|
58
|
+
/** 48px header and footer rows, 16px body inset and gap, `body_lg` title, `body_md` subheader, 15px icon. */
|
|
59
|
+
WidgetSize["LARGE"] = "LARGE";
|
|
60
|
+
return WidgetSize;
|
|
61
|
+
}({});
|
|
62
|
+
/**
|
|
63
|
+
* Plumbing between `WidgetGroup` and its collapsible `Widget`s. `null` outside a group and inside a
|
|
64
|
+
* Widget's body, so nested Widgets are standalone.
|
|
65
|
+
* @internal
|
|
66
|
+
*/
|
|
67
|
+
var WidgetGroupContext = createContext(null);
|
|
68
|
+
/** The stretched, childless card button of an interactive card (declared first: `INTERACTIVE_CSS` selects it). */
|
|
69
|
+
var HitTarget = /*#__PURE__*/ styled("button")({
|
|
70
|
+
name: "HitTarget",
|
|
71
|
+
class: "gx-Widget-HitTarget-hx1o0cd",
|
|
72
|
+
propsAsIs: false
|
|
73
|
+
});
|
|
74
|
+
/** The card: hairline, `radius.lg`, a column of regions. No clip, so focus rings show in full. */
|
|
75
|
+
var Root = /*#__PURE__*/ styled("div")({
|
|
76
|
+
name: "Root",
|
|
77
|
+
class: "gx-Widget-r18wxf9x",
|
|
78
|
+
propsAsIs: false
|
|
79
|
+
});
|
|
80
|
+
/** The header row: icon, titles, actions and caret, over the stretched header button. */
|
|
81
|
+
var Header = /*#__PURE__*/ styled("div")({
|
|
82
|
+
name: "Header",
|
|
83
|
+
class: "gx-Widget-Header-h569d4k",
|
|
84
|
+
propsAsIs: false
|
|
85
|
+
});
|
|
86
|
+
/** The stretched, childless header button of a collapsible card: one target for the whole row. */
|
|
87
|
+
var HeaderToggle = /*#__PURE__*/ styled("button")({
|
|
88
|
+
name: "HeaderToggle",
|
|
89
|
+
class: "gx-Widget-HeaderToggle-hci64f9",
|
|
90
|
+
propsAsIs: false
|
|
91
|
+
});
|
|
92
|
+
/** Title over subheader; takes the free width and wraps. */
|
|
93
|
+
var Titles = /*#__PURE__*/ styled("div")({
|
|
94
|
+
name: "Titles",
|
|
95
|
+
class: "gx-Widget-Titles-t2het6w",
|
|
96
|
+
propsAsIs: false
|
|
97
|
+
});
|
|
98
|
+
/** A node title: its own row of content. */
|
|
99
|
+
var TitleNode = /*#__PURE__*/ styled("div")({
|
|
100
|
+
name: "TitleNode",
|
|
101
|
+
class: "gx-Widget-TitleNode-t1cuwt7c",
|
|
102
|
+
propsAsIs: false
|
|
103
|
+
});
|
|
104
|
+
/** The header's end slot, above both stretched buttons and pointer-reachable. */
|
|
105
|
+
var Actions = /*#__PURE__*/ styled("div")({
|
|
106
|
+
name: "Actions",
|
|
107
|
+
class: "gx-Widget-Actions-a1oiu5i6",
|
|
108
|
+
propsAsIs: false
|
|
109
|
+
});
|
|
110
|
+
/** The folded content of a collapsible card: a named region, a column like the card. */
|
|
111
|
+
var Panel = /*#__PURE__*/ styled("section")({
|
|
112
|
+
name: "Panel",
|
|
113
|
+
class: "gx-Widget-Panel-p1u3h98q",
|
|
114
|
+
propsAsIs: false
|
|
115
|
+
});
|
|
116
|
+
/** The body region: a column of the children. */
|
|
117
|
+
var Body = /*#__PURE__*/ styled("div")({
|
|
118
|
+
name: "Body",
|
|
119
|
+
class: "gx-Widget-Body-b1t0k6w8",
|
|
120
|
+
propsAsIs: false
|
|
121
|
+
});
|
|
122
|
+
/** The loading body: a centered spinner with a 24px inset, even when flush. */
|
|
123
|
+
var Loading = /*#__PURE__*/ styled("div")({
|
|
124
|
+
name: "Loading",
|
|
125
|
+
class: "gx-Widget-Loading-l13kd2xw",
|
|
126
|
+
propsAsIs: false
|
|
127
|
+
});
|
|
128
|
+
/** The footer row: start-aligned content. */
|
|
129
|
+
var Footer = /*#__PURE__*/ styled("div")({
|
|
130
|
+
name: "Footer",
|
|
131
|
+
class: "gx-Widget-Footer-f1ltvlgq",
|
|
132
|
+
propsAsIs: false
|
|
133
|
+
});
|
|
134
|
+
var WIDGET_VARIANT_TO_CSS_MAP = {
|
|
135
|
+
["BASE"]: "gx-Widget-BASE-b1yp190m",
|
|
136
|
+
["PRIMARY"]: "gx-Widget-PRIMARY-p1365057",
|
|
137
|
+
["SECONDARY"]: "gx-Widget-SECONDARY-s1f3h6ms",
|
|
138
|
+
["TERTIARY"]: "gx-Widget-TERTIARY-t1c1upfe"
|
|
48
139
|
};
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
140
|
+
/** Header and footer rows: inset and minimum height (a control rung plus the block inset). */
|
|
141
|
+
var WIDGET_SIZE_TO_ROW_CSS_MAP = {
|
|
142
|
+
["SMALL"]: "gx-Widget-SMALL-s14rp7e3",
|
|
143
|
+
["MEDIUM"]: "gx-Widget-MEDIUM-m14youd7",
|
|
144
|
+
["LARGE"]: "gx-Widget-LARGE-lmk1xrm"
|
|
52
145
|
};
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
146
|
+
/** Body inset and gap. */
|
|
147
|
+
var WIDGET_SIZE_TO_BODY_CSS_MAP = {
|
|
148
|
+
["SMALL"]: "gx-Widget-SMALL-s1qcxaeu",
|
|
149
|
+
["MEDIUM"]: "gx-Widget-MEDIUM-m1niqf43",
|
|
150
|
+
["LARGE"]: "gx-Widget-LARGE-l1wi0lfv"
|
|
56
151
|
};
|
|
57
|
-
var
|
|
58
|
-
|
|
59
|
-
|
|
152
|
+
var WIDGET_SIZE_TO_TEXT_SIZE_MAP = {
|
|
153
|
+
["SMALL"]: TextSize.BODY_SM,
|
|
154
|
+
["MEDIUM"]: TextSize.BODY_MD,
|
|
155
|
+
["LARGE"]: TextSize.BODY_LG
|
|
60
156
|
};
|
|
61
|
-
var
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
157
|
+
var WIDGET_SIZE_TO_SUBHEADER_TEXT_SIZE_MAP = {
|
|
158
|
+
["SMALL"]: TextSize.CAPTION,
|
|
159
|
+
["MEDIUM"]: TextSize.BODY_SM,
|
|
160
|
+
["LARGE"]: TextSize.BODY_MD
|
|
65
161
|
};
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
162
|
+
/**
|
|
163
|
+
* Leading icon px per rung: 13 / 15 / 15, Button's icons at the matching rungs (Mitch,
|
|
164
|
+
* 2026-10-05). Odd, so the icon sits in an `IconSlot` (whole pixels at 1x, centered at 2x).
|
|
165
|
+
*/
|
|
166
|
+
var WIDGET_SIZE_TO_ICON_PX_MAP = {
|
|
167
|
+
["SMALL"]: 13,
|
|
168
|
+
["MEDIUM"]: 15,
|
|
169
|
+
["LARGE"]: 15
|
|
73
170
|
};
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
vars: {
|
|
79
|
-
"sx1o0cd-0": [_exp()],
|
|
80
|
-
"sx1o0cd-1": [_exp2()],
|
|
81
|
-
"sx1o0cd-2": [_exp3()],
|
|
82
|
-
"sx1o0cd-3": [_exp4()],
|
|
83
|
-
"sx1o0cd-4": [_exp5()],
|
|
84
|
-
"sx1o0cd-5": [_exp6()],
|
|
85
|
-
"sx1o0cd-6": [_exp7()],
|
|
86
|
-
"sx1o0cd-7": [_exp8()],
|
|
87
|
-
"sx1o0cd-8": [_exp9()],
|
|
88
|
-
"sx1o0cd-9": [_exp0()],
|
|
89
|
-
"sx1o0cd-10": [_exp1()],
|
|
90
|
-
"sx1o0cd-11": [_exp10()]
|
|
91
|
-
}
|
|
92
|
-
}));
|
|
171
|
+
/** A collapsible card: `border.secondary` on hover (one step stronger, 1.x Accordion). */
|
|
172
|
+
var COLLAPSIBLE_CSS = "gx-Widget-COLLAPSIBLE_CSS-c1993nui";
|
|
173
|
+
/** An open collapsible card keeps the stronger border at rest. */
|
|
174
|
+
var OPEN_CSS = "gx-Widget-OPEN_CSS-osd319a";
|
|
93
175
|
/**
|
|
94
|
-
*
|
|
95
|
-
*
|
|
176
|
+
* An interactive card: pointer, hover border, and the content regions lifted above the card
|
|
177
|
+
* button with presses passing through them (`Actions` and `HeaderToggle` take theirs back).
|
|
96
178
|
*/
|
|
97
|
-
var
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
179
|
+
var INTERACTIVE_CSS = "gx-Widget-INTERACTIVE_CSS-i11hrzgx";
|
|
180
|
+
/** Disabled (and not open): the hover border and pointer are cancelled. */
|
|
181
|
+
var DISABLED_CSS = "gx-Widget-DISABLED_CSS-d27d11a";
|
|
182
|
+
/** Chosen: a `text.primary` hairline, also on hover (declared after the hover states, so it wins). */
|
|
183
|
+
var SELECTED_CSS = "gx-Widget-SELECTED_CSS-s13jeom8";
|
|
184
|
+
/** `isFlush`: no body inset (the gap stays); the body clips its content inside the corners it shares. */
|
|
185
|
+
var FLUSH_CSS = "gx-Widget-FLUSH_CSS-f18mgbxd";
|
|
186
|
+
/** A flush body with no header row above it rounds the card's top corners. */
|
|
187
|
+
var FLUSH_TOP_CORNERS_CSS = "gx-Widget-FLUSH_TOP_CORNERS_CSS-f1djym4t";
|
|
188
|
+
/** A flush body with no footer under it rounds the card's bottom corners. */
|
|
189
|
+
var FLUSH_BOTTOM_CORNERS_CSS = "gx-Widget-FLUSH_BOTTOM_CORNERS_CSS-fln5c1k";
|
|
190
|
+
/** The caret lies over the header button (Rotate's transform paints it above); presses pass through. */
|
|
191
|
+
var CARET_CSS = "gx-Widget-CARET_CSS-c190r628";
|
|
192
|
+
/** The caret glyph size at every rung (1.x Accordion). */
|
|
193
|
+
var CARET_PX = 12;
|
|
194
|
+
/** A static or open header reads at full strength, a closed one a step down, a disabled one dims. */
|
|
195
|
+
var headerColors = (isOpen, isDisabled) => match({
|
|
196
|
+
isOpen,
|
|
197
|
+
isDisabled
|
|
198
|
+
}).with({ isDisabled: true }, () => ({
|
|
199
|
+
title: TextVariant.DISABLED,
|
|
200
|
+
subheader: TextVariant.DISABLED,
|
|
201
|
+
icon: IconVariant.DISABLED
|
|
202
|
+
})).with({
|
|
203
|
+
isDisabled: false,
|
|
204
|
+
isOpen: true
|
|
205
|
+
}, () => ({
|
|
206
|
+
title: TextVariant.PRIMARY,
|
|
207
|
+
subheader: TextVariant.SECONDARY,
|
|
208
|
+
icon: IconVariant.PRIMARY
|
|
209
|
+
})).with({
|
|
210
|
+
isDisabled: false,
|
|
211
|
+
isOpen: false
|
|
212
|
+
}, () => ({
|
|
213
|
+
title: TextVariant.SECONDARY,
|
|
214
|
+
subheader: TextVariant.TERTIARY,
|
|
215
|
+
icon: IconVariant.SECONDARY
|
|
216
|
+
})).exhaustive();
|
|
217
|
+
/** Whether a slot has something to render. */
|
|
218
|
+
var hasContent = (node) => node !== void 0 && node !== null && node !== false;
|
|
219
|
+
/** A card: a bordered surface with an optional (collapsible) header, actions, footer and states. */
|
|
220
|
+
var Widget = forwardRef(function Widget({ children, variant = "PRIMARY", size = "MEDIUM", header, subheader, icon, actions, footer, isFlush = false, isCollapsible = false, hasCaret = true, isOpen: isOpenProp, defaultIsOpen = false, onOpenChange, isDisabled = false, isLoading = false, isSelected, isInteractive = false, onClick, ariaLabel, id, className, style, ...rest }, ref) {
|
|
221
|
+
const baseId = useId();
|
|
222
|
+
const rootId = id ?? baseId;
|
|
223
|
+
const titleId = `${baseId}-title`;
|
|
224
|
+
const subheaderId = `${baseId}-subheader`;
|
|
225
|
+
const bodyId = `${baseId}-body`;
|
|
226
|
+
const panelId = `${baseId}-panel`;
|
|
227
|
+
const toggleRef = useRef(null);
|
|
228
|
+
const group = useContext(WidgetGroupContext);
|
|
229
|
+
const isGrouped = group !== null && isCollapsible;
|
|
230
|
+
const own = useControlledOpenState({
|
|
231
|
+
isOpen: isOpenProp,
|
|
232
|
+
defaultIsOpen,
|
|
233
|
+
onOpenChange
|
|
114
234
|
});
|
|
115
|
-
|
|
235
|
+
const isOpen = !isCollapsible || (isGrouped ? group.openIds.includes(rootId) : own.isOpen);
|
|
236
|
+
const registerToggle = isGrouped ? group.registerToggle : void 0;
|
|
237
|
+
useEffect(() => {
|
|
238
|
+
if (registerToggle === void 0) return;
|
|
239
|
+
registerToggle(toggleRef.current, rootId);
|
|
240
|
+
return () => registerToggle(null, rootId);
|
|
241
|
+
}, [registerToggle, rootId]);
|
|
242
|
+
const handleToggle = () => {
|
|
243
|
+
const next = !isOpen;
|
|
244
|
+
if (!isGrouped) {
|
|
245
|
+
own.setOpen(next);
|
|
246
|
+
return;
|
|
247
|
+
}
|
|
248
|
+
group.setItemOpen(rootId, next);
|
|
249
|
+
onOpenChange?.(next);
|
|
250
|
+
};
|
|
251
|
+
const hasHeader = hasContent(header);
|
|
252
|
+
const hasActions = hasContent(actions);
|
|
253
|
+
const hasHeaderRow = hasHeader || hasActions;
|
|
254
|
+
const hasFooter = hasContent(footer);
|
|
255
|
+
const hasSubheader = hasHeader && Boolean(subheader);
|
|
256
|
+
const hasAriaLabel = ariaLabel !== void 0 && ariaLabel !== "";
|
|
257
|
+
const colors = headerColors(isOpen, isDisabled);
|
|
258
|
+
const regions = /* @__PURE__ */ jsxs(Fragment$1, { children: [
|
|
259
|
+
hasHeaderRow && /* @__PURE__ */ jsx(Divider, {}),
|
|
260
|
+
/* @__PURE__ */ jsx(Body, {
|
|
261
|
+
id: bodyId,
|
|
262
|
+
className: cx(WIDGET_SIZE_TO_BODY_CSS_MAP[size], isFlush && FLUSH_CSS, isFlush && !hasHeaderRow && FLUSH_TOP_CORNERS_CSS, isFlush && !hasFooter && FLUSH_BOTTOM_CORNERS_CSS),
|
|
263
|
+
children: isLoading ? /* @__PURE__ */ jsx(Loading, { children: /* @__PURE__ */ jsx(Spinner, {
|
|
264
|
+
variant: SpinnerVariant.SECONDARY,
|
|
265
|
+
ariaLabel: "Loading"
|
|
266
|
+
}) }) : children
|
|
267
|
+
}),
|
|
268
|
+
hasFooter && /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(Divider, {}), /* @__PURE__ */ jsx(Footer, {
|
|
269
|
+
className: WIDGET_SIZE_TO_ROW_CSS_MAP[size],
|
|
270
|
+
children: footer
|
|
271
|
+
})] })
|
|
272
|
+
] });
|
|
273
|
+
return /* @__PURE__ */ jsxs(Root, {
|
|
274
|
+
...rest,
|
|
275
|
+
ref,
|
|
276
|
+
id: rootId,
|
|
277
|
+
"aria-busy": isLoading ? true : rest["aria-busy"],
|
|
278
|
+
className: cx(WIDGET_VARIANT_TO_CSS_MAP[variant], isCollapsible && COLLAPSIBLE_CSS, isCollapsible && isOpen && OPEN_CSS, isInteractive && INTERACTIVE_CSS, isDisabled && !(isCollapsible && isOpen) && DISABLED_CSS, isSelected === true && SELECTED_CSS, className),
|
|
279
|
+
style,
|
|
280
|
+
children: [
|
|
281
|
+
isInteractive && /* @__PURE__ */ jsx(HitTarget, {
|
|
282
|
+
type: "button",
|
|
283
|
+
onClick,
|
|
284
|
+
disabled: isDisabled,
|
|
285
|
+
"aria-pressed": isSelected,
|
|
286
|
+
"aria-label": hasAriaLabel ? ariaLabel : void 0,
|
|
287
|
+
"aria-labelledby": hasAriaLabel ? void 0 : hasHeader ? titleId : bodyId
|
|
288
|
+
}),
|
|
289
|
+
hasHeaderRow && /* @__PURE__ */ jsxs(Header, {
|
|
290
|
+
className: WIDGET_SIZE_TO_ROW_CSS_MAP[size],
|
|
291
|
+
children: [
|
|
292
|
+
isCollapsible && /* @__PURE__ */ jsx(HeaderToggle, {
|
|
293
|
+
ref: toggleRef,
|
|
294
|
+
type: "button",
|
|
295
|
+
"aria-expanded": isOpen,
|
|
296
|
+
"aria-controls": isOpen ? panelId : void 0,
|
|
297
|
+
"aria-labelledby": titleId,
|
|
298
|
+
"aria-describedby": hasSubheader ? subheaderId : void 0,
|
|
299
|
+
disabled: isDisabled,
|
|
300
|
+
onClick: handleToggle
|
|
301
|
+
}),
|
|
302
|
+
hasHeader && icon !== void 0 && /* @__PURE__ */ jsx(IconSlot, {
|
|
303
|
+
px: WIDGET_SIZE_TO_ICON_PX_MAP[size],
|
|
304
|
+
children: /* @__PURE__ */ jsx(Icon, {
|
|
305
|
+
component: icon,
|
|
306
|
+
size: WIDGET_SIZE_TO_ICON_PX_MAP[size],
|
|
307
|
+
variant: colors.icon
|
|
308
|
+
})
|
|
309
|
+
}),
|
|
310
|
+
/* @__PURE__ */ jsxs(Titles, { children: [typeof header === "string" ? /* @__PURE__ */ jsx(Text, {
|
|
311
|
+
as: "span",
|
|
312
|
+
id: titleId,
|
|
313
|
+
size: WIDGET_SIZE_TO_TEXT_SIZE_MAP[size],
|
|
314
|
+
weight: TextWeight.MEDIUM,
|
|
315
|
+
variant: colors.title,
|
|
316
|
+
children: header
|
|
317
|
+
}) : hasHeader && /* @__PURE__ */ jsx(TitleNode, {
|
|
318
|
+
id: titleId,
|
|
319
|
+
children: header
|
|
320
|
+
}), hasSubheader && /* @__PURE__ */ jsx(Text, {
|
|
321
|
+
as: "span",
|
|
322
|
+
id: subheaderId,
|
|
323
|
+
size: WIDGET_SIZE_TO_SUBHEADER_TEXT_SIZE_MAP[size],
|
|
324
|
+
variant: colors.subheader,
|
|
325
|
+
children: subheader
|
|
326
|
+
})] }),
|
|
327
|
+
hasActions && /* @__PURE__ */ jsx(Actions, { children: actions }),
|
|
328
|
+
isCollapsible && hasCaret && /* @__PURE__ */ jsx(Rotate, {
|
|
329
|
+
isRotated: isOpen,
|
|
330
|
+
deg: -180,
|
|
331
|
+
className: CARET_CSS,
|
|
332
|
+
children: /* @__PURE__ */ jsx(Icon, {
|
|
333
|
+
component: CaretDownIcon,
|
|
334
|
+
size: CARET_PX,
|
|
335
|
+
variant: colors.icon
|
|
336
|
+
})
|
|
337
|
+
})
|
|
338
|
+
]
|
|
339
|
+
}),
|
|
340
|
+
/* @__PURE__ */ jsx(WidgetGroupContext.Provider, {
|
|
341
|
+
value: null,
|
|
342
|
+
children: isCollapsible ? /* @__PURE__ */ jsx(CollapseMotion, {
|
|
343
|
+
isOpen,
|
|
344
|
+
children: /* @__PURE__ */ jsx(Panel, {
|
|
345
|
+
id: panelId,
|
|
346
|
+
"aria-labelledby": titleId,
|
|
347
|
+
children: regions
|
|
348
|
+
})
|
|
349
|
+
}) : regions
|
|
350
|
+
})
|
|
351
|
+
]
|
|
352
|
+
});
|
|
353
|
+
});
|
|
354
|
+
Widget.displayName = "Widget";
|
|
116
355
|
//#endregion
|
|
117
|
-
export { WidgetVariant, Widget as default };
|
|
356
|
+
export { WidgetGroupContext, WidgetSize, WidgetVariant, Widget as default };
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { type AriaAttributes, type CSSProperties, type ReactNode } from "react";
|
|
2
|
+
export interface WidgetGroupProps extends AriaAttributes {
|
|
3
|
+
/**
|
|
4
|
+
* The collapsible `Widget`s, in order. Other elements may sit between them (a `Text` caption);
|
|
5
|
+
* only collapsible Widgets take part.
|
|
6
|
+
*/
|
|
7
|
+
children?: ReactNode;
|
|
8
|
+
/**
|
|
9
|
+
* Controlled list of open Widget `id`s. Pass it with `onChange`, and give the Widgets
|
|
10
|
+
* stable `id`s. In single-open mode only the first id is used.
|
|
11
|
+
*/
|
|
12
|
+
value?: string[];
|
|
13
|
+
/**
|
|
14
|
+
* Initial open `id`s while uncontrolled. In single-open mode only the first is used.
|
|
15
|
+
* @default []
|
|
16
|
+
*/
|
|
17
|
+
defaultValue?: string[];
|
|
18
|
+
/** Called with the next list of open `id`s when a header is pressed. */
|
|
19
|
+
onChange?: (value: string[]) => void;
|
|
20
|
+
/**
|
|
21
|
+
* Lets several Widgets be open at once. Off: opening one closes the others.
|
|
22
|
+
* @default false
|
|
23
|
+
*/
|
|
24
|
+
canOpenMultiple?: boolean;
|
|
25
|
+
/** DOM id on the root `<div>`. */
|
|
26
|
+
id?: string;
|
|
27
|
+
/** Any `data-*` attribute, forwarded to the root `<div>`. */
|
|
28
|
+
[dataAttribute: `data-${string}`]: string | number | boolean | undefined;
|
|
29
|
+
/** Extra class on the root `<div>`. */
|
|
30
|
+
className?: string;
|
|
31
|
+
/** Inline style on the root `<div>`; only for setting CSS custom properties. */
|
|
32
|
+
style?: CSSProperties;
|
|
33
|
+
}
|
|
34
|
+
/** Coordinates collapsible `Widget`s: one open at a time by default, arrow keys between headers. */
|
|
35
|
+
declare const WidgetGroup: import("react").ForwardRefExoticComponent<WidgetGroupProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
36
|
+
export default WidgetGroup;
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { useControlledState } from "../hooks/useControlledState.js";
|
|
2
|
+
import { WidgetGroupContext } from "./Widget.js";
|
|
3
|
+
/* empty css */
|
|
4
|
+
import { styled } from "@linaria/react";
|
|
5
|
+
import { forwardRef, useCallback, useMemo, useRef } from "react";
|
|
6
|
+
import { jsx } from "react/jsx-runtime";
|
|
7
|
+
//#region src/widget/WidgetGroup.tsx
|
|
8
|
+
/**
|
|
9
|
+
* Coordinates a stack of collapsible `Widget`s (`isCollapsible`): by default opening one closes the
|
|
10
|
+
* others, and ArrowUp / ArrowDown / Home / End move focus between their headers (the optional keys
|
|
11
|
+
* of the WAI-ARIA accordion pattern); Enter / Space toggle through the header buttons. It owns which
|
|
12
|
+
* Widgets are open as a list of their `id`s
|
|
13
|
+
* (`value` / `defaultValue` / `onChange`) and lays them out as a column with an 8px gap. It draws
|
|
14
|
+
* nothing else: no border, no fill, no dividers.
|
|
15
|
+
*
|
|
16
|
+
* Widgets find the group through `WidgetGroupContext` (exported `@internal` from the Widget
|
|
17
|
+
* module) and register their header buttons; arrow keys follow DOM order, so items may be wrapped
|
|
18
|
+
* or interleaved with other elements. A Widget that is not collapsible takes no part. Widgets that
|
|
19
|
+
* do not need to coordinate are simply stacked in a `Flex`. Replaces the 2.0 pre-release
|
|
20
|
+
* `AccordionGroup`.
|
|
21
|
+
*/
|
|
22
|
+
/** The stack: a column with the 1.x 8px gap. No border, fill, radius or padding. */
|
|
23
|
+
var Root = /*#__PURE__*/ styled("div")({
|
|
24
|
+
name: "Root",
|
|
25
|
+
class: "gx-WidgetGroup-r4oi007",
|
|
26
|
+
propsAsIs: false
|
|
27
|
+
});
|
|
28
|
+
/** No ids open. A module constant so the default keeps one identity across renders. */
|
|
29
|
+
var NO_IDS = [];
|
|
30
|
+
/** The keys that move focus between headers. */
|
|
31
|
+
var NAVIGATION_KEYS = new Set([
|
|
32
|
+
"ArrowDown",
|
|
33
|
+
"ArrowUp",
|
|
34
|
+
"Home",
|
|
35
|
+
"End"
|
|
36
|
+
]);
|
|
37
|
+
/** Orders two elements by their position in the document. */
|
|
38
|
+
var byDocumentOrder = (a, b) => a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_FOLLOWING ? -1 : 1;
|
|
39
|
+
/** Coordinates collapsible `Widget`s: one open at a time by default, arrow keys between headers. */
|
|
40
|
+
var WidgetGroup = forwardRef(function WidgetGroup({ children, value, defaultValue = NO_IDS, onChange, canOpenMultiple = false, id, className, style, ...rest }, ref) {
|
|
41
|
+
const [storedIds, setOpenIds] = useControlledState({
|
|
42
|
+
value,
|
|
43
|
+
defaultValue,
|
|
44
|
+
onChange
|
|
45
|
+
});
|
|
46
|
+
const openIds = useMemo(() => canOpenMultiple ? storedIds : storedIds.slice(0, 1), [canOpenMultiple, storedIds]);
|
|
47
|
+
const setItemOpen = useCallback((itemId, isOpen) => {
|
|
48
|
+
if (!canOpenMultiple) {
|
|
49
|
+
setOpenIds(isOpen ? [itemId] : []);
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
if (isOpen) {
|
|
53
|
+
setOpenIds(openIds.includes(itemId) ? [...openIds] : [...openIds, itemId]);
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
setOpenIds(openIds.filter((openId) => openId !== itemId));
|
|
57
|
+
}, [
|
|
58
|
+
canOpenMultiple,
|
|
59
|
+
openIds,
|
|
60
|
+
setOpenIds
|
|
61
|
+
]);
|
|
62
|
+
const togglesRef = useRef(/* @__PURE__ */ new Map());
|
|
63
|
+
const registerToggle = useCallback((element, itemId) => {
|
|
64
|
+
if (element === null) togglesRef.current.delete(itemId);
|
|
65
|
+
else togglesRef.current.set(itemId, element);
|
|
66
|
+
}, []);
|
|
67
|
+
const context = useMemo(() => ({
|
|
68
|
+
openIds,
|
|
69
|
+
setItemOpen,
|
|
70
|
+
registerToggle
|
|
71
|
+
}), [
|
|
72
|
+
openIds,
|
|
73
|
+
setItemOpen,
|
|
74
|
+
registerToggle
|
|
75
|
+
]);
|
|
76
|
+
const handleKeyDown = (event) => {
|
|
77
|
+
if (!NAVIGATION_KEYS.has(event.key)) return;
|
|
78
|
+
const registered = [...togglesRef.current.values()];
|
|
79
|
+
if (!registered.includes(event.target)) return;
|
|
80
|
+
const headers = registered.filter((element) => element.isConnected && !element.disabled).sort(byDocumentOrder);
|
|
81
|
+
if (headers.length === 0) return;
|
|
82
|
+
const current = headers.indexOf(event.target);
|
|
83
|
+
const last = headers.length - 1;
|
|
84
|
+
const next = event.key === "Home" ? 0 : event.key === "End" ? last : event.key === "ArrowDown" ? current === last ? 0 : current + 1 : current <= 0 ? last : current - 1;
|
|
85
|
+
event.preventDefault();
|
|
86
|
+
headers[next]?.focus();
|
|
87
|
+
};
|
|
88
|
+
return /* @__PURE__ */ jsx(Root, {
|
|
89
|
+
...rest,
|
|
90
|
+
ref,
|
|
91
|
+
id,
|
|
92
|
+
className,
|
|
93
|
+
style,
|
|
94
|
+
onKeyDown: handleKeyDown,
|
|
95
|
+
children: /* @__PURE__ */ jsx(WidgetGroupContext.Provider, {
|
|
96
|
+
value: context,
|
|
97
|
+
children
|
|
98
|
+
})
|
|
99
|
+
});
|
|
100
|
+
});
|
|
101
|
+
WidgetGroup.displayName = "WidgetGroup";
|
|
102
|
+
//#endregion
|
|
103
|
+
export { WidgetGroup as default };
|