@galaxy-io/dls 1.6.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +47 -50
- package/biome/index.json +74 -0
- package/biome/plugins/no-hex-literal.grit +20 -0
- package/biome/plugins/no-inline-style.grit +13 -0
- package/biome/plugins/no-margin.grit +9 -0
- package/biome/plugins/warn/no-hex-literal.grit +23 -0
- package/biome/plugins/warn/no-inline-style.grit +13 -0
- package/biome/plugins/warn/no-margin.grit +9 -0
- package/dist/a11y/FocusScope.d.ts +44 -0
- package/dist/a11y/FocusScope.js +229 -0
- package/dist/a11y/VisuallyHidden.d.ts +21 -0
- package/dist/a11y/VisuallyHidden.js +30 -0
- package/dist/avatar/Avatar.d.ts +56 -14
- package/dist/avatar/Avatar.js +250 -96
- package/dist/avatar/AvatarGroup.d.ts +43 -0
- package/dist/avatar/AvatarGroup.js +153 -0
- package/dist/backgrounds/GridBackground.d.ts +48 -0
- package/dist/backgrounds/GridBackground.js +146 -0
- package/dist/beacons/Beacon.d.ts +86 -22
- package/dist/beacons/Beacon.js +170 -47
- package/dist/brand/GalaxyFilamentWordmark.d.ts +30 -0
- package/dist/brand/GalaxyFilamentWordmark.js +39 -0
- package/dist/brand/GalaxyLogomark.d.ts +26 -0
- package/dist/brand/GalaxyLogomark.js +41 -0
- package/dist/brand/GalaxyLogomarkAnimation.d.ts +36 -0
- package/dist/brand/GalaxyLogomarkAnimation.js +107 -0
- package/dist/brand/GalaxyWordmark.d.ts +30 -0
- package/dist/brand/GalaxyWordmark.js +63 -0
- package/dist/brand/assets/galaxy-logomark-animation.js +136678 -0
- package/dist/brand/brandMark.d.ts +26 -0
- package/dist/brand/brandMark.js +35 -0
- package/dist/buttons/Button.d.ts +148 -59
- package/dist/buttons/Button.js +437 -227
- package/dist/buttons/ButtonGroup.d.ts +38 -0
- package/dist/buttons/ButtonGroup.js +68 -0
- package/dist/buttons/CopyButton.d.ts +77 -0
- package/dist/buttons/CopyButton.js +65 -0
- package/dist/charts/AreaChart.d.ts +49 -0
- package/dist/charts/AreaChart.js +31 -0
- package/dist/charts/BarChart.d.ts +54 -67
- package/dist/charts/BarChart.js +136 -116
- package/dist/charts/ChartAxis.d.ts +35 -40
- package/dist/charts/ChartAxis.js +114 -90
- package/dist/charts/ChartCategoryTargets.d.ts +12 -26
- package/dist/charts/ChartCategoryTargets.js +32 -20
- package/dist/charts/ChartFrame.d.ts +69 -116
- package/dist/charts/ChartFrame.js +253 -119
- package/dist/charts/ChartGroupProvider.d.ts +30 -41
- package/dist/charts/ChartGroupProvider.js +20 -7
- package/dist/charts/ChartLegend.d.ts +27 -48
- package/dist/charts/ChartLegend.js +206 -125
- package/dist/charts/ChartMarkTargets.d.ts +12 -28
- package/dist/charts/ChartMarkTargets.js +33 -20
- package/dist/charts/ChartPrimitives.d.ts +50 -305
- package/dist/charts/ChartPrimitives.js +65 -413
- package/dist/charts/ChartTooltip.d.ts +20 -26
- package/dist/charts/ChartTooltip.js +77 -40
- package/dist/charts/Heatmap.d.ts +35 -0
- package/dist/charts/Heatmap.js +295 -0
- package/dist/charts/LineChart.d.ts +54 -47
- package/dist/charts/LineChart.js +159 -117
- package/dist/charts/PieChart.d.ts +32 -53
- package/dist/charts/PieChart.js +149 -135
- package/dist/charts/Sparkline.d.ts +107 -0
- package/dist/charts/Sparkline.js +244 -0
- package/dist/charts/StatChart.d.ts +37 -13
- package/dist/charts/StatChart.js +82 -35
- package/dist/charts/barChartGeometry.d.ts +138 -86
- package/dist/charts/barChartGeometry.js +122 -101
- package/dist/charts/barChartLegend.d.ts +14 -18
- package/dist/charts/barChartLegend.js +18 -13
- package/dist/charts/chartFormat.d.ts +12 -18
- package/dist/charts/chartFormat.js +20 -52
- package/dist/charts/chartPalette.d.ts +33 -0
- package/dist/charts/chartPalette.js +68 -0
- package/dist/charts/chartScales.d.ts +41 -108
- package/dist/charts/chartScales.js +62 -128
- package/dist/charts/constants.d.ts +96 -256
- package/dist/charts/constants.js +105 -275
- package/dist/charts/heatmapGeometry.d.ts +95 -0
- package/dist/charts/heatmapGeometry.js +155 -0
- package/dist/charts/lineChartGeometry.d.ts +108 -58
- package/dist/charts/lineChartGeometry.js +120 -78
- package/dist/charts/pieChartGeometry.d.ts +66 -40
- package/dist/charts/pieChartGeometry.js +68 -38
- package/dist/charts/types.d.ts +197 -466
- package/dist/charts/types.js +55 -144
- package/dist/charts/useCartesianChartLayout.d.ts +28 -59
- package/dist/charts/useCartesianChartLayout.js +47 -32
- package/dist/charts/useChartDimensions.d.ts +19 -40
- package/dist/charts/useChartDimensions.js +40 -56
- package/dist/charts/useChartFormatters.d.ts +6 -15
- package/dist/charts/useChartFormatters.js +4 -9
- package/dist/charts/useChartInteraction.d.ts +47 -116
- package/dist/charts/useChartInteraction.js +95 -71
- package/dist/charts/useChartTooltipPosition.d.ts +29 -39
- package/dist/charts/useChartTooltipPosition.js +14 -5
- package/dist/charts/useSeriesColorResolver.d.ts +11 -33
- package/dist/charts/useSeriesColorResolver.js +19 -12
- package/dist/chips/Chip.d.ts +155 -44
- package/dist/chips/Chip.js +329 -155
- package/dist/chips/ChipGroup.d.ts +53 -0
- package/dist/chips/ChipGroup.js +98 -0
- package/dist/drawer/Drawer.d.ts +81 -17
- package/dist/drawer/Drawer.js +370 -65
- package/dist/dropdown/Dropdown.d.ts +80 -63
- package/dist/dropdown/Dropdown.js +127 -129
- package/dist/editor/CodeEditor.d.ts +119 -40
- package/dist/editor/CodeEditor.js +490 -400
- package/dist/editor/CodeEditorReactWidget.d.ts +20 -17
- package/dist/editor/CodeEditorReactWidget.js +28 -21
- package/dist/feedback/Alert.d.ts +49 -0
- package/dist/feedback/Alert.js +172 -0
- package/dist/feedback/EmptyState.d.ts +39 -0
- package/dist/feedback/EmptyState.js +109 -0
- package/dist/feedback/ProgressBar.d.ts +125 -0
- package/dist/feedback/ProgressBar.js +183 -0
- package/dist/feedback/ProgressCircle.d.ts +99 -0
- package/dist/feedback/ProgressCircle.js +187 -0
- package/dist/feedback/Skeleton.d.ts +69 -0
- package/dist/feedback/Skeleton.js +130 -0
- package/dist/feedback/Spinner.d.ts +63 -0
- package/dist/feedback/Spinner.js +141 -0
- package/dist/fonts.css +70 -0
- package/dist/hooks/internal/useIsClient.d.ts +2 -0
- package/dist/hooks/internal/useIsClient.js +14 -0
- package/dist/hooks/useClipboard.d.ts +19 -0
- package/dist/hooks/useClipboard.js +45 -0
- package/dist/hooks/useControlledOpenState.d.ts +21 -0
- package/dist/hooks/useControlledOpenState.js +19 -0
- package/dist/hooks/useControlledState.d.ts +19 -0
- package/dist/hooks/useControlledState.js +22 -0
- package/dist/hooks/useDebouncedValue.d.ts +14 -0
- package/dist/hooks/useDebouncedValue.js +33 -0
- package/dist/hooks/useDisclosure.d.ts +26 -0
- package/dist/hooks/useDisclosure.js +36 -0
- package/dist/hooks/useDismiss.d.ts +23 -27
- package/dist/hooks/useDismiss.js +39 -27
- package/dist/hooks/useElementClientSize.d.ts +10 -10
- package/dist/hooks/useElementClientSize.js +8 -11
- package/dist/hooks/useElementWidth.d.ts +6 -13
- package/dist/hooks/useElementWidth.js +6 -14
- package/dist/hooks/useField.d.ts +47 -0
- package/dist/hooks/useField.js +40 -0
- package/dist/hooks/useHotkey.d.ts +77 -0
- package/dist/hooks/useHotkey.js +246 -0
- package/dist/hooks/useIsMac.d.ts +12 -0
- package/dist/hooks/useIsMac.js +27 -0
- package/dist/hooks/useIsomorphicLayoutEffect.d.ts +17 -0
- package/dist/hooks/useIsomorphicLayoutEffect.js +20 -0
- package/dist/hooks/useLocalStorage.d.ts +28 -0
- package/dist/hooks/useLocalStorage.js +145 -0
- package/dist/hooks/useMediaQuery.d.ts +11 -0
- package/dist/hooks/useMediaQuery.js +23 -0
- package/dist/hooks/usePrefersReducedMotion.d.ts +12 -0
- package/dist/hooks/usePrefersReducedMotion.js +25 -0
- package/dist/hooks/useResize.d.ts +42 -62
- package/dist/hooks/useResize.js +43 -31
- package/dist/icons/Icon.d.ts +64 -37
- package/dist/icons/Icon.js +96 -37
- package/dist/icons/internal/IconSlot.d.ts +10 -0
- package/dist/icons/internal/IconSlot.js +32 -0
- package/dist/inputs/CheckboxGroup.d.ts +115 -0
- package/dist/inputs/CheckboxGroup.js +183 -0
- package/dist/inputs/CheckboxInput.d.ts +98 -28
- package/dist/inputs/CheckboxInput.js +218 -88
- package/dist/inputs/ColorInput.d.ts +115 -29
- package/dist/inputs/ColorInput.js +748 -326
- package/dist/inputs/CopyInput.d.ts +49 -20
- package/dist/inputs/CopyInput.js +57 -49
- package/dist/inputs/CronInput.d.ts +94 -0
- package/dist/inputs/CronInput.js +618 -0
- package/dist/inputs/DateInput.d.ts +175 -28
- package/dist/inputs/DateInput.js +1109 -451
- package/dist/inputs/DurationInput.d.ts +101 -0
- package/dist/inputs/DurationInput.js +441 -0
- package/dist/inputs/Field.d.ts +75 -0
- package/dist/inputs/Field.js +247 -0
- package/dist/inputs/Fieldset.d.ts +53 -0
- package/dist/inputs/Fieldset.js +149 -0
- package/dist/inputs/FileInput.d.ts +110 -0
- package/dist/inputs/FileInput.js +476 -0
- package/dist/inputs/Input.d.ts +148 -187
- package/dist/inputs/Input.js +339 -259
- package/dist/inputs/KeyValueInput.d.ts +120 -0
- package/dist/inputs/KeyValueInput.js +383 -0
- package/dist/inputs/MultiSelectInput.d.ts +165 -54
- package/dist/inputs/MultiSelectInput.js +175 -559
- package/dist/inputs/NumberInput.d.ts +65 -9
- package/dist/inputs/NumberInput.js +197 -40
- package/dist/inputs/PasswordInput.d.ts +17 -12
- package/dist/inputs/PasswordInput.js +33 -33
- package/dist/inputs/PinInput.d.ts +117 -0
- package/dist/inputs/PinInput.js +364 -0
- package/dist/inputs/RadioGroup.d.ts +115 -0
- package/dist/inputs/RadioGroup.js +179 -0
- package/dist/inputs/RadioInput.d.ts +87 -24
- package/dist/inputs/RadioInput.js +182 -95
- package/dist/inputs/SearchInput.d.ts +66 -0
- package/dist/inputs/SearchInput.js +156 -0
- package/dist/inputs/SelectInput.d.ts +195 -55
- package/dist/inputs/SelectInput.js +1308 -446
- package/dist/inputs/SliderInput.d.ts +150 -30
- package/dist/inputs/SliderInput.js +441 -186
- package/dist/inputs/SwitchInput.d.ts +109 -0
- package/dist/inputs/SwitchInput.js +248 -0
- package/dist/inputs/TagInput.d.ts +117 -0
- package/dist/inputs/TagInput.js +408 -0
- package/dist/inputs/TextAreaInput.d.ts +146 -44
- package/dist/inputs/TextAreaInput.js +292 -198
- package/dist/inputs/TextInput.d.ts +4 -13
- package/dist/inputs/TextInput.js +13 -48
- package/dist/inputs/ToggleInput.d.ts +120 -22
- package/dist/inputs/ToggleInput.js +262 -116
- package/dist/inputs/internal/bareField.d.ts +18 -0
- package/dist/inputs/internal/bareField.js +38 -0
- package/dist/inputs/internal/devWarn.d.ts +7 -0
- package/dist/inputs/internal/devWarn.js +30 -0
- package/dist/inputs/internal/fieldFrame.d.ts +34 -0
- package/dist/inputs/internal/fieldFrame.js +64 -0
- package/dist/inputs/internal/fieldWiring.d.ts +50 -0
- package/dist/inputs/internal/fieldWiring.js +38 -0
- package/dist/inputs/internal/innerButton.d.ts +2 -0
- package/dist/inputs/internal/innerButton.js +24 -0
- package/dist/inputs/internal/ownField.d.ts +45 -0
- package/dist/inputs/internal/ownField.js +58 -0
- package/dist/inputs/internal/predicates.d.ts +9 -0
- package/dist/inputs/internal/predicates.js +11 -0
- package/dist/inputs/internal/useComboboxPopover.d.ts +46 -0
- package/dist/inputs/internal/useComboboxPopover.js +92 -0
- package/dist/json/JsonViewer.d.ts +62 -0
- package/dist/json/JsonViewer.js +483 -0
- package/dist/layout/Box.d.ts +87 -0
- package/dist/layout/Box.js +109 -0
- package/dist/layout/Divider.d.ts +25 -0
- package/dist/layout/Divider.js +70 -0
- package/dist/layout/Flex.d.ts +139 -0
- package/dist/layout/Flex.js +165 -0
- package/dist/layout/FlexItem.d.ts +72 -0
- package/dist/layout/FlexItem.js +84 -0
- package/dist/layout/Grid.d.ts +140 -0
- package/dist/layout/Grid.js +178 -0
- package/dist/layout/Portal.d.ts +29 -0
- package/dist/layout/Portal.js +27 -0
- package/dist/layout/ResizablePanels.d.ts +88 -0
- package/dist/layout/ResizablePanels.js +198 -0
- package/dist/layout/ResizeHandle.d.ts +48 -0
- package/dist/layout/ResizeHandle.js +143 -0
- package/dist/layout/ScrollArea.d.ts +30 -0
- package/dist/layout/ScrollArea.js +138 -0
- package/dist/links/Link.d.ts +101 -1
- package/dist/links/Link.js +166 -4
- package/dist/lists/BulletedList.d.ts +25 -7
- package/dist/lists/BulletedList.js +72 -27
- package/dist/lists/DescriptionList.d.ts +91 -0
- package/dist/lists/DescriptionList.js +147 -0
- package/dist/menu/ContextMenu.d.ts +64 -0
- package/dist/menu/ContextMenu.js +34 -0
- package/dist/menu/Menu.d.ts +280 -0
- package/dist/menu/Menu.js +1003 -0
- package/dist/modal/ConfirmDialog.d.ts +55 -0
- package/dist/modal/ConfirmDialog.js +151 -0
- package/dist/modal/Modal.d.ts +64 -14
- package/dist/modal/Modal.js +189 -48
- package/dist/navigation/Breadcrumbs.d.ts +65 -0
- package/dist/navigation/Breadcrumbs.js +243 -0
- package/dist/navigation/CommandPalette.d.ts +83 -0
- package/dist/navigation/CommandPalette.js +509 -0
- package/dist/navigation/Pagination.d.ts +87 -0
- package/dist/navigation/Pagination.js +300 -0
- package/dist/navigation/SidebarNav.d.ts +107 -0
- package/dist/navigation/SidebarNav.js +341 -0
- package/dist/navigation/Stepper.d.ts +52 -0
- package/dist/navigation/Stepper.js +207 -0
- package/dist/navigation/Tabs.d.ts +113 -0
- package/dist/navigation/Tabs.js +543 -0
- package/dist/navigation/Topbar.d.ts +20 -0
- package/dist/navigation/Topbar.js +62 -0
- package/dist/overlay/OverlayProvider.d.ts +28 -32
- package/dist/overlay/OverlayProvider.js +42 -93
- package/dist/overlay/useOverlay.d.ts +88 -12
- package/dist/overlay/useOverlay.js +220 -43
- package/dist/overlays/Popover.d.ts +114 -0
- package/dist/overlays/Popover.js +389 -0
- package/dist/shapes/Circle.d.ts +84 -8
- package/dist/shapes/Circle.js +122 -20
- package/dist/shapes/Square.d.ts +84 -8
- package/dist/shapes/Square.js +123 -20
- package/dist/styles/mixins.d.ts +35 -0
- package/dist/styles/mixins.js +60 -0
- package/dist/styles.css +1 -202
- package/dist/table/InfiniteSpreadsheet.d.ts +140 -10
- package/dist/table/InfiniteSpreadsheet.js +762 -225
- package/dist/table/InfiniteTable.d.ts +116 -14
- package/dist/table/InfiniteTable.js +287 -429
- package/dist/table/SpreadsheetCellEditor.d.ts +54 -6
- package/dist/table/SpreadsheetCellEditor.js +163 -84
- package/dist/table/TableCore.d.ts +252 -0
- package/dist/table/TableCore.js +1077 -0
- package/dist/table/VirtualizedInfiniteTable.d.ts +104 -14
- package/dist/table/VirtualizedInfiniteTable.js +280 -219
- package/dist/table/types.d.ts +66 -244
- package/dist/table/types.js +0 -51
- package/dist/table/useInfiniteScrollSentinel.d.ts +25 -21
- package/dist/table/useInfiniteScrollSentinel.js +38 -30
- package/dist/table/useSpreadsheetCellNavigation.d.ts +44 -0
- package/dist/table/useSpreadsheetCellNavigation.js +141 -0
- package/dist/table/useTableColumnLayout.d.ts +90 -25
- package/dist/table/useTableColumnLayout.js +255 -50
- package/dist/table/useTableKeyboardNavigation.d.ts +32 -21
- package/dist/table/useTableKeyboardNavigation.js +95 -71
- package/dist/table/useTableRowSelection.d.ts +24 -25
- package/dist/table/useTableRowSelection.js +57 -84
- package/dist/table/useTableVirtualizer.d.ts +20 -0
- package/dist/table/useTableVirtualizer.js +48 -0
- package/dist/text/Bold.d.ts +5 -6
- package/dist/text/Bold.js +16 -15
- package/dist/text/Code.d.ts +5 -6
- package/dist/text/Code.js +16 -25
- package/dist/text/CodeBlock.d.ts +77 -0
- package/dist/text/CodeBlock.js +373 -0
- package/dist/text/EditableText.d.ts +55 -15
- package/dist/text/EditableText.js +153 -135
- package/dist/text/Ellipsis.d.ts +34 -8
- package/dist/text/Ellipsis.js +55 -23
- package/dist/text/Kbd.d.ts +72 -0
- package/dist/text/Kbd.js +284 -0
- package/dist/text/MarkdownText.d.ts +27 -10
- package/dist/text/MarkdownText.js +317 -300
- package/dist/text/RequiredMarker.d.ts +17 -5
- package/dist/text/RequiredMarker.js +34 -36
- package/dist/text/Selectable.d.ts +5 -6
- package/dist/text/Selectable.js +16 -13
- package/dist/text/Span.d.ts +82 -0
- package/dist/text/Span.js +115 -0
- package/dist/text/Text.d.ts +128 -41
- package/dist/text/Text.js +209 -76
- package/dist/theme/GalaxyProvider.d.ts +75 -0
- package/dist/theme/GalaxyProvider.js +223 -0
- package/dist/theme/ThemeSwitcher.d.ts +52 -0
- package/dist/theme/ThemeSwitcher.js +94 -0
- package/dist/theme/enums.d.ts +118 -0
- package/dist/theme/enums.js +144 -0
- package/dist/theme/tokens/dark.d.ts +2 -0
- package/dist/theme/tokens/dark.js +275 -0
- package/dist/theme/tokens/generate.d.ts +15 -0
- package/dist/theme/tokens/generate.js +47 -0
- package/dist/theme/tokens/light.d.ts +2 -0
- package/dist/theme/tokens/light.js +274 -0
- package/dist/theme/tokens/palette.d.ts +14 -0
- package/dist/theme/tokens/palette.js +153 -0
- package/dist/theme/tokens/scales.d.ts +26 -0
- package/dist/theme/tokens/scales.js +154 -0
- package/dist/theme/tokens/t.d.ts +3 -0
- package/dist/theme/tokens/t.js +25 -0
- package/dist/theme/tokens/types.d.ts +189 -0
- package/dist/theme/tokens/types.js +0 -0
- package/dist/theme/useGalaxyTheme.d.ts +46 -0
- package/dist/theme/useGalaxyTheme.js +36 -0
- package/dist/theme/useInverseScope.d.ts +18 -0
- package/dist/theme/useInverseScope.js +33 -0
- package/dist/three/GalaxyLogomark3D.d.ts +46 -0
- package/dist/three/GalaxyLogomark3D.js +134 -0
- package/dist/three/assets/galaxy-logomark.js +4 -0
- package/dist/three/galaxyLogomark3DScene.d.ts +27 -0
- package/dist/three/galaxyLogomark3DScene.js +165 -0
- package/dist/timeline/Timeline.d.ts +99 -0
- package/dist/timeline/Timeline.js +269 -0
- package/dist/toast/Toast.d.ts +43 -19
- package/dist/toast/Toast.js +130 -89
- package/dist/toast/ToastProvider.d.ts +23 -23
- package/dist/toast/ToastProvider.js +298 -101
- package/dist/toast/ToastViewport.d.ts +12 -0
- package/dist/toast/ToastViewport.js +210 -0
- package/dist/toast/useToast.d.ts +139 -5
- package/dist/toast/useToast.js +15 -13
- package/dist/tokens.css +654 -0
- package/dist/tooltip/Tooltip.d.ts +64 -44
- package/dist/tooltip/Tooltip.js +280 -73
- package/dist/tooltip/internal/LazyTooltip.d.ts +7 -0
- package/dist/tooltip/internal/LazyTooltip.js +53 -0
- package/dist/transform/Fade.d.ts +33 -11
- package/dist/transform/Fade.js +71 -19
- package/dist/transform/Flasher.d.ts +25 -0
- package/dist/transform/Flasher.js +39 -0
- package/dist/transform/Rotate.d.ts +24 -12
- package/dist/transform/Rotate.js +36 -22
- package/dist/transform/ScaleFade.d.ts +36 -11
- package/dist/transform/ScaleFade.js +86 -28
- package/dist/transform/internal/CollapseMotion.d.ts +10 -0
- package/dist/transform/internal/CollapseMotion.js +65 -0
- package/dist/tree/Tree.d.ts +85 -0
- package/dist/tree/Tree.js +387 -0
- package/dist/tree/treeRow.d.ts +39 -0
- package/dist/tree/treeRow.js +75 -0
- package/dist/utils/colors.d.ts +46 -13
- package/dist/utils/colors.js +92 -34
- package/dist/utils/css.d.ts +23 -0
- package/dist/utils/css.js +30 -0
- package/dist/utils/format.d.ts +58 -0
- package/dist/utils/format.js +220 -0
- package/dist/vite/index.d.ts +16 -0
- package/dist/vite/index.js +52 -0
- package/dist/widget/Widget.d.ts +164 -48
- package/dist/widget/Widget.js +335 -96
- package/dist/widget/WidgetGroup.d.ts +36 -0
- package/dist/widget/WidgetGroup.js +103 -0
- package/package.json +851 -157
- package/dist/accordion/Accordion.d.ts +0 -54
- package/dist/accordion/Accordion.js +0 -183
- package/dist/assets/components/GalaxyFilamentWordmarkDark.d.ts +0 -3
- package/dist/assets/components/GalaxyFilamentWordmarkDark.js +0 -14
- package/dist/assets/components/GalaxyFilamentWordmarkLight.d.ts +0 -3
- package/dist/assets/components/GalaxyFilamentWordmarkLight.js +0 -14
- package/dist/assets/components/GalaxyLogomarkDark.d.ts +0 -3
- package/dist/assets/components/GalaxyLogomarkDark.js +0 -11
- package/dist/assets/components/GalaxyLogomarkLight.d.ts +0 -3
- package/dist/assets/components/GalaxyLogomarkLight.js +0 -17
- package/dist/assets/components/GalaxyWordmarkDark.d.ts +0 -3
- package/dist/assets/components/GalaxyWordmarkDark.js +0 -15
- package/dist/assets/components/GalaxyWordmarkLight.d.ts +0 -3
- package/dist/assets/components/GalaxyWordmarkLight.js +0 -28
- package/dist/assets/models/galaxy-animation.js +0 -136666
- package/dist/assets/models/galaxy-logomark.js +0 -4
- package/dist/avatar/AvatarShimmer.d.ts +0 -30
- package/dist/avatar/AvatarShimmer.js +0 -22
- package/dist/backgrounds/CellGridBackground.d.ts +0 -24
- package/dist/backgrounds/CellGridBackground.js +0 -44
- package/dist/backgrounds/CrossGridBackground.d.ts +0 -26
- package/dist/backgrounds/CrossGridBackground.js +0 -49
- package/dist/backgrounds/DotGridBackground.d.ts +0 -24
- package/dist/backgrounds/DotGridBackground.js +0 -47
- package/dist/badge/Badge.d.ts +0 -42
- package/dist/badge/Badge.js +0 -99
- package/dist/charts/ChartEmptyState.d.ts +0 -17
- package/dist/charts/ChartEmptyState.js +0 -29
- package/dist/charts/ProgressBar.d.ts +0 -29
- package/dist/charts/ProgressBar.js +0 -65
- package/dist/charts/chartTheme.d.ts +0 -18
- package/dist/charts/chartTheme.js +0 -26
- package/dist/containers/FlexItem.d.ts +0 -50
- package/dist/containers/FlexItem.js +0 -91
- package/dist/containers/FlexWrapper.d.ts +0 -96
- package/dist/containers/FlexWrapper.js +0 -143
- package/dist/containers/GridWrapper.d.ts +0 -79
- package/dist/containers/GridWrapper.js +0 -125
- package/dist/containers/Spacing.d.ts +0 -23
- package/dist/containers/Spacing.js +0 -59
- package/dist/containers/Wrapper.d.ts +0 -26
- package/dist/containers/Wrapper.js +0 -54
- package/dist/dividers/HorizontalDivider.d.ts +0 -7
- package/dist/dividers/HorizontalDivider.js +0 -39
- package/dist/dividers/VerticalDivider.d.ts +0 -6
- package/dist/dividers/VerticalDivider.js +0 -21
- package/dist/icons/GalaxyFilamentWordmark.d.ts +0 -11
- package/dist/icons/GalaxyFilamentWordmark.js +0 -25
- package/dist/icons/GalaxyLogomark.d.ts +0 -13
- package/dist/icons/GalaxyLogomark.js +0 -27
- package/dist/icons/GalaxyLogomark3D.d.ts +0 -56
- package/dist/icons/GalaxyLogomark3D.js +0 -319
- package/dist/icons/GalaxyLogomarkAnimation.d.ts +0 -18
- package/dist/icons/GalaxyLogomarkAnimation.js +0 -48
- package/dist/icons/GalaxyWordmark.d.ts +0 -11
- package/dist/icons/GalaxyWordmark.js +0 -25
- package/dist/inputs/MultiTextInput.d.ts +0 -32
- package/dist/inputs/MultiTextInput.js +0 -180
- package/dist/inputs/SwitcherInput.d.ts +0 -27
- package/dist/inputs/SwitcherInput.js +0 -64
- package/dist/inputs/hooks.d.ts +0 -10
- package/dist/inputs/hooks.js +0 -22
- package/dist/overlay/constants.d.ts +0 -28
- package/dist/overlay/constants.js +0 -37
- package/dist/resizable/HorizontalResizeHandle.d.ts +0 -17
- package/dist/resizable/HorizontalResizeHandle.js +0 -38
- package/dist/resizable/VerticalResizeHandle.d.ts +0 -18
- package/dist/resizable/VerticalResizeHandle.js +0 -39
- package/dist/table/SpreadsheetCell.d.ts +0 -21
- package/dist/table/SpreadsheetCell.js +0 -71
- package/dist/table/SpreadsheetHeaderCell.d.ts +0 -23
- package/dist/table/SpreadsheetHeaderCell.js +0 -91
- package/dist/table/SpreadsheetMenuItem.d.ts +0 -14
- package/dist/table/SpreadsheetMenuItem.js +0 -33
- package/dist/table/SpreadsheetPrimitives.d.ts +0 -172
- package/dist/table/SpreadsheetPrimitives.js +0 -105
- package/dist/table/SpreadsheetRow.d.ts +0 -33
- package/dist/table/SpreadsheetRow.js +0 -73
- package/dist/table/SpreadsheetRowActionCell.d.ts +0 -14
- package/dist/table/SpreadsheetRowActionCell.js +0 -51
- package/dist/table/TableExpandCell.d.ts +0 -11
- package/dist/table/TableExpandCell.js +0 -24
- package/dist/table/TableExpandedRow.d.ts +0 -16
- package/dist/table/TableExpandedRow.js +0 -77
- package/dist/table/TableHeaderCellContent.d.ts +0 -30
- package/dist/table/TableHeaderCellContent.js +0 -48
- package/dist/table/TablePrimitives.d.ts +0 -313
- package/dist/table/TablePrimitives.js +0 -302
- package/dist/table/TableSelectCell.d.ts +0 -18
- package/dist/table/TableSelectCell.js +0 -27
- package/dist/table/TableStatusRow.d.ts +0 -18
- package/dist/table/TableStatusRow.js +0 -50
- package/dist/table/useSpreadsheetEditing.d.ts +0 -13
- package/dist/table/useSpreadsheetEditing.js +0 -41
- package/dist/table/useTableColumnResize.d.ts +0 -38
- package/dist/table/useTableColumnResize.js +0 -155
- package/dist/table/useTableRowExpansion.d.ts +0 -24
- package/dist/table/useTableRowExpansion.js +0 -62
- package/dist/table/utils.d.ts +0 -50
- package/dist/table/utils.js +0 -78
- package/dist/text/HotKeys.d.ts +0 -30
- package/dist/text/HotKeys.js +0 -74
- package/dist/text/Paragraph.d.ts +0 -33
- package/dist/text/Paragraph.js +0 -83
- package/dist/text/TextShimmer.d.ts +0 -14
- package/dist/text/TextShimmer.js +0 -34
- package/dist/theme/GalaxyTheme.d.ts +0 -67
- package/dist/theme/GalaxyTheme.js +0 -119
- package/dist/theme/constants.d.ts +0 -8
- package/dist/theme/constants.js +0 -38
- package/dist/theme/index.d.ts +0 -6
- package/dist/theme/index.js +0 -7
- package/dist/theme/types.d.ts +0 -195
- package/dist/theme/types.js +0 -10
- package/dist/theme/typography.d.ts +0 -2
- package/dist/theme/typography.js +0 -73
- package/dist/theme/variants/dark.d.ts +0 -2
- package/dist/theme/variants/dark.js +0 -125
- package/dist/theme/variants/light.d.ts +0 -2
- package/dist/theme/variants/light.js +0 -125
- package/dist/toast/ToastContainer.d.ts +0 -10
- package/dist/toast/ToastContainer.js +0 -31
- package/dist/toast/ToastWrapper.d.ts +0 -6
- package/dist/toast/ToastWrapper.js +0 -27
- package/dist/transform/Flash.d.ts +0 -7
- package/dist/transform/Flash.js +0 -18
- package/dist/transform/Spin.d.ts +0 -14
- package/dist/transform/Spin.js +0 -25
- package/dist/utils/linaria.d.ts +0 -1
- package/dist/utils/linaria.js +0 -8
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { type AriaAttributes, type CSSProperties, type ReactNode } from "react";
|
|
2
|
+
/** Canonical rungs; the member names the control rung the spinner sits in. */
|
|
3
|
+
export declare enum SpinnerSize {
|
|
4
|
+
/** 20px rung: 12px ring, `caption` label. */
|
|
5
|
+
X_SMALL = "X_SMALL",
|
|
6
|
+
/** 24px rung: 12px ring, `body_sm` label. */
|
|
7
|
+
SMALL = "SMALL",
|
|
8
|
+
/** 32px rung: 14px ring, `body_md` label. The default. */
|
|
9
|
+
MEDIUM = "MEDIUM",
|
|
10
|
+
/** 36px rung: 14px ring, `body_lg` label. */
|
|
11
|
+
LARGE = "LARGE",
|
|
12
|
+
/** 40px rung: 16px ring, `body_lg` label. */
|
|
13
|
+
X_LARGE = "X_LARGE"
|
|
14
|
+
}
|
|
15
|
+
/** Color role of the ring and label (Constitution V-A color set, neutral subset). */
|
|
16
|
+
export declare enum SpinnerVariant {
|
|
17
|
+
/** `text.primary`. */
|
|
18
|
+
PRIMARY = "PRIMARY",
|
|
19
|
+
/** `text.secondary`. The default: loading is quiet, auxiliary chrome. */
|
|
20
|
+
SECONDARY = "SECONDARY",
|
|
21
|
+
/** `text.tertiary`. */
|
|
22
|
+
TERTIARY = "TERTIARY",
|
|
23
|
+
/** The host's color (`currentColor`); used inside Button, Chip and Toast. */
|
|
24
|
+
INHERIT = "INHERIT"
|
|
25
|
+
}
|
|
26
|
+
export interface SpinnerProps extends AriaAttributes {
|
|
27
|
+
/**
|
|
28
|
+
* The control rung the spinner sits in. The ring is that rung's icon size (12 / 12 / 14 / 14 /
|
|
29
|
+
* 16px), so a host maps its own size with an identity map. With `children`, the size sets the
|
|
30
|
+
* line box and the label step; the content keeps its own size (give it the rung's icon px).
|
|
31
|
+
* @default SpinnerSize.MEDIUM
|
|
32
|
+
*/
|
|
33
|
+
size?: SpinnerSize;
|
|
34
|
+
/**
|
|
35
|
+
* Color role of the ring and label. `INHERIT` follows the host's `currentColor` (inside Button).
|
|
36
|
+
* Turning `children` take it when they inherit (`Icon variant={IconVariant.INHERIT}`).
|
|
37
|
+
* @default SpinnerVariant.SECONDARY
|
|
38
|
+
*/
|
|
39
|
+
variant?: SpinnerVariant;
|
|
40
|
+
/** Visible text after the ring ("Loading results…"); also the live region's text. */
|
|
41
|
+
label?: string;
|
|
42
|
+
/**
|
|
43
|
+
* What screen readers hear when there is no visible `label`. Ignored when `label` is set.
|
|
44
|
+
* @default "Loading"
|
|
45
|
+
*/
|
|
46
|
+
ariaLabel?: string;
|
|
47
|
+
/**
|
|
48
|
+
* Content to turn instead of the ring, usually an `Icon` (a refresh glyph while a sync runs).
|
|
49
|
+
* Phrasing content only (it renders inside a `<span>`). Stands still under reduced motion.
|
|
50
|
+
*/
|
|
51
|
+
children?: ReactNode;
|
|
52
|
+
/** DOM id on the root `<span>`. */
|
|
53
|
+
id?: string;
|
|
54
|
+
/** Any `data-*` attribute, forwarded to the root `<span>`. */
|
|
55
|
+
[dataAttribute: `data-${string}`]: string | number | boolean | undefined;
|
|
56
|
+
/** Extra class on the root `<span>`. */
|
|
57
|
+
className?: string;
|
|
58
|
+
/** Inline style on the root `<span>`; only for setting CSS custom properties. */
|
|
59
|
+
style?: CSSProperties;
|
|
60
|
+
}
|
|
61
|
+
/** A turning ring (or turning `children`) with a polite live region; optionally a visible label beside it. */
|
|
62
|
+
declare const Spinner: import("react").ForwardRefExoticComponent<SpinnerProps & import("react").RefAttributes<HTMLSpanElement>>;
|
|
63
|
+
export default Spinner;
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import VisuallyHidden from "../a11y/VisuallyHidden.js";
|
|
2
|
+
import Text, { TextSize, TextVariant } from "../text/Text.js";
|
|
3
|
+
import Icon, { IconVariant } from "../icons/Icon.js";
|
|
4
|
+
/* empty css */
|
|
5
|
+
import { styled } from "@linaria/react";
|
|
6
|
+
import { forwardRef } from "react";
|
|
7
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
8
|
+
import { cx } from "@linaria/core";
|
|
9
|
+
import { CircleNotchIcon } from "@phosphor-icons/react";
|
|
10
|
+
//#region src/feedback/Spinner.tsx
|
|
11
|
+
/**
|
|
12
|
+
* The indeterminate loading indicator: a turning ring for a short, unmeasured wait. A preset over
|
|
13
|
+
* `Icon` (`CircleNotchIcon` + `isSpinning`), so the turn and its reduced-motion handling are the
|
|
14
|
+
* Icon's. Spinner adds a polite `role="status"` live region with an accessible name, a size that
|
|
15
|
+
* matches the control rung it sits in, and an optional visible `label` beside the ring.
|
|
16
|
+
*
|
|
17
|
+
* Hosts that swap their icon for a Spinner (`Button isLoading`) map their size with an identity
|
|
18
|
+
* map (`BUTTON_SIZE_TO_SPINNER_SIZE_MAP`), render `variant={SpinnerVariant.INHERIT}`, pass
|
|
19
|
+
* `aria-hidden`, and set `aria-busy="true"` on themselves, so their accessible name stays their
|
|
20
|
+
* label. A loading region sets `aria-busy="true"` on itself and places a Spinner inside it.
|
|
21
|
+
*
|
|
22
|
+
* With `children`, Spinner turns that content instead of drawing the ring: a refresh glyph while a
|
|
23
|
+
* sync runs, a sync badge, a custom mark (`<Spinner><Icon component={ArrowsClockwiseIcon} /></Spinner>`).
|
|
24
|
+
* The turn is the ring's (one turn per `6 × duration.base`, linear) and stops under reduced
|
|
25
|
+
* motion; the live region, name, size and variant work the same. Render the Spinner only while
|
|
26
|
+
* the work runs and the plain content otherwise.
|
|
27
|
+
*
|
|
28
|
+
* Not progress (`ProgressBar`, `ProgressCircle`) and not the shape of loading content
|
|
29
|
+
* (`Skeleton`).
|
|
30
|
+
*/
|
|
31
|
+
/** Canonical rungs; the member names the control rung the spinner sits in. */
|
|
32
|
+
var SpinnerSize = /* @__PURE__ */ function(SpinnerSize) {
|
|
33
|
+
/** 20px rung: 12px ring, `caption` label. */
|
|
34
|
+
SpinnerSize["X_SMALL"] = "X_SMALL";
|
|
35
|
+
/** 24px rung: 12px ring, `body_sm` label. */
|
|
36
|
+
SpinnerSize["SMALL"] = "SMALL";
|
|
37
|
+
/** 32px rung: 14px ring, `body_md` label. The default. */
|
|
38
|
+
SpinnerSize["MEDIUM"] = "MEDIUM";
|
|
39
|
+
/** 36px rung: 14px ring, `body_lg` label. */
|
|
40
|
+
SpinnerSize["LARGE"] = "LARGE";
|
|
41
|
+
/** 40px rung: 16px ring, `body_lg` label. */
|
|
42
|
+
SpinnerSize["X_LARGE"] = "X_LARGE";
|
|
43
|
+
return SpinnerSize;
|
|
44
|
+
}({});
|
|
45
|
+
/** Color role of the ring and label (Constitution V-A color set, neutral subset). */
|
|
46
|
+
var SpinnerVariant = /* @__PURE__ */ function(SpinnerVariant) {
|
|
47
|
+
/** `text.primary`. */
|
|
48
|
+
SpinnerVariant["PRIMARY"] = "PRIMARY";
|
|
49
|
+
/** `text.secondary`. The default: loading is quiet, auxiliary chrome. */
|
|
50
|
+
SpinnerVariant["SECONDARY"] = "SECONDARY";
|
|
51
|
+
/** `text.tertiary`. */
|
|
52
|
+
SpinnerVariant["TERTIARY"] = "TERTIARY";
|
|
53
|
+
/** The host's color (`currentColor`); used inside Button, Chip and Toast. */
|
|
54
|
+
SpinnerVariant["INHERIT"] = "INHERIT";
|
|
55
|
+
return SpinnerVariant;
|
|
56
|
+
}({});
|
|
57
|
+
/**
|
|
58
|
+
* Phrasing content only (`span`, `svg`), so a Spinner is valid inside a `<button>`. The root is
|
|
59
|
+
* exactly its rung's text line height and top-aligned, so an inline Spinner beside its paired
|
|
60
|
+
* text step never grows the line box (the Kbd measurement).
|
|
61
|
+
*/
|
|
62
|
+
var Root = /*#__PURE__*/ styled("span")({
|
|
63
|
+
name: "Root",
|
|
64
|
+
class: "gx-Spinner-r1ivml5",
|
|
65
|
+
propsAsIs: false
|
|
66
|
+
});
|
|
67
|
+
/** Sets `color` on the root; the ring and label both inherit it, so they always match. */
|
|
68
|
+
var SPINNER_VARIANT_TO_CSS_MAP = {
|
|
69
|
+
["PRIMARY"]: "gx-Spinner-PRIMARY-p13j7c2o",
|
|
70
|
+
["SECONDARY"]: "gx-Spinner-SECONDARY-s8zy9wb",
|
|
71
|
+
["TERTIARY"]: "gx-Spinner-TERTIARY-t5gu4wz",
|
|
72
|
+
["INHERIT"]: "gx-Spinner-INHERIT-i1rr97gm"
|
|
73
|
+
};
|
|
74
|
+
/** Root height = the line height of the rung's text step; gap = the rung's gap (as Button). */
|
|
75
|
+
var SPINNER_SIZE_TO_CSS_MAP = {
|
|
76
|
+
["X_SMALL"]: "gx-Spinner-X_SMALL-xq5lz1a",
|
|
77
|
+
["SMALL"]: "gx-Spinner-SMALL-s1yd7rf9",
|
|
78
|
+
["MEDIUM"]: "gx-Spinner-MEDIUM-mvjisul",
|
|
79
|
+
["LARGE"]: "gx-Spinner-LARGE-lo34ltu",
|
|
80
|
+
["X_LARGE"]: "gx-Spinner-X_LARGE-x1ml6nkc"
|
|
81
|
+
};
|
|
82
|
+
/** Turns `children` about their center: inline, centered, never squeezed. */
|
|
83
|
+
var Turn = /*#__PURE__*/ styled("span")({
|
|
84
|
+
name: "Turn",
|
|
85
|
+
class: "gx-Spinner-Turn-txbcxfl",
|
|
86
|
+
propsAsIs: false
|
|
87
|
+
});
|
|
88
|
+
/**
|
|
89
|
+
* One turn every six `duration.base` steps (900ms), linear, forever: the `Icon isSpinning` period,
|
|
90
|
+
* so a turning child and the ring move alike. The keyframes are global, so the name is `gx-`
|
|
91
|
+
* prefixed. `REDUCED_MOTION` stops it.
|
|
92
|
+
*/
|
|
93
|
+
var TURNING_CSS = "gx-Spinner-TURNING_CSS-t19924lc";
|
|
94
|
+
/** The ring is the rung's icon px, one step below III-A.4 (Mitch, 2026-10-04). Button draws its own ring at its icon px (13 / 13 / 15 / 15 / 17). */
|
|
95
|
+
var SPINNER_SIZE_TO_ICON_PX_MAP = {
|
|
96
|
+
["X_SMALL"]: 12,
|
|
97
|
+
["SMALL"]: 12,
|
|
98
|
+
["MEDIUM"]: 14,
|
|
99
|
+
["LARGE"]: 14,
|
|
100
|
+
["X_LARGE"]: 16
|
|
101
|
+
};
|
|
102
|
+
/** The label is the rung's text step (Constitution III-A.4). */
|
|
103
|
+
var SPINNER_SIZE_TO_TEXT_SIZE_MAP = {
|
|
104
|
+
["X_SMALL"]: TextSize.CAPTION,
|
|
105
|
+
["SMALL"]: TextSize.BODY_SM,
|
|
106
|
+
["MEDIUM"]: TextSize.BODY_MD,
|
|
107
|
+
["LARGE"]: TextSize.BODY_LG,
|
|
108
|
+
["X_LARGE"]: TextSize.BODY_LG
|
|
109
|
+
};
|
|
110
|
+
/** Whether `children` render anything; `undefined`, `null`, `false` and `""` draw the ring. */
|
|
111
|
+
function hasContent(children) {
|
|
112
|
+
return children !== void 0 && children !== null && children !== false && children !== "";
|
|
113
|
+
}
|
|
114
|
+
/** A turning ring (or turning `children`) with a polite live region; optionally a visible label beside it. */
|
|
115
|
+
var Spinner = forwardRef(function Spinner({ size = "MEDIUM", variant = "SECONDARY", label, ariaLabel = "Loading", children, id, className, style, ...rest }, ref) {
|
|
116
|
+
return /* @__PURE__ */ jsxs(Root, {
|
|
117
|
+
role: "status",
|
|
118
|
+
...rest,
|
|
119
|
+
ref,
|
|
120
|
+
id,
|
|
121
|
+
className: cx(SPINNER_VARIANT_TO_CSS_MAP[variant], SPINNER_SIZE_TO_CSS_MAP[size], className),
|
|
122
|
+
style,
|
|
123
|
+
children: [hasContent(children) ? /* @__PURE__ */ jsx(Turn, {
|
|
124
|
+
className: TURNING_CSS,
|
|
125
|
+
children
|
|
126
|
+
}) : /* @__PURE__ */ jsx(Icon, {
|
|
127
|
+
component: CircleNotchIcon,
|
|
128
|
+
isSpinning: true,
|
|
129
|
+
size: SPINNER_SIZE_TO_ICON_PX_MAP[size],
|
|
130
|
+
variant: IconVariant.INHERIT
|
|
131
|
+
}), label === void 0 ? /* @__PURE__ */ jsx(VisuallyHidden, { children: ariaLabel }) : /* @__PURE__ */ jsx(Text, {
|
|
132
|
+
as: "span",
|
|
133
|
+
size: SPINNER_SIZE_TO_TEXT_SIZE_MAP[size],
|
|
134
|
+
variant: TextVariant.INHERIT,
|
|
135
|
+
children: label
|
|
136
|
+
})]
|
|
137
|
+
});
|
|
138
|
+
});
|
|
139
|
+
Spinner.displayName = "Spinner";
|
|
140
|
+
//#endregion
|
|
141
|
+
export { SpinnerSize, SpinnerVariant, Spinner as default };
|
package/dist/fonts.css
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* @galaxy-io/dls/fonts.css — the DLS font faces. Import once at the app root, beside
|
|
3
|
+
* styles.css and tokens.css. Families match `t.font.<family>.family`:
|
|
4
|
+
* sans → "ABC Diatype" 400, 500
|
|
5
|
+
* mono → "Berkeley Mono" 400, 500 (no Medium cut exists; 500 is Bold, as in 1.x)
|
|
6
|
+
* serif → "Cardo" 400, 400 italic, 700 (editorial only)
|
|
7
|
+
* Not part of styles.css, so apps that self-host the files can skip it.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
@font-face {
|
|
11
|
+
font-family: "ABC Diatype";
|
|
12
|
+
font-style: normal;
|
|
13
|
+
font-weight: 400;
|
|
14
|
+
font-display: swap;
|
|
15
|
+
src: url("https://cdn.getgalaxy.io/fonts/Diatype/ABCDiatype-Regular.otf") format("opentype");
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
@font-face {
|
|
19
|
+
font-family: "ABC Diatype";
|
|
20
|
+
font-style: normal;
|
|
21
|
+
font-weight: 500;
|
|
22
|
+
font-display: swap;
|
|
23
|
+
src: url("https://cdn.getgalaxy.io/fonts/Diatype/ABCDiatype-Medium.otf") format("opentype");
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
@font-face {
|
|
27
|
+
font-family: "Berkeley Mono";
|
|
28
|
+
font-style: normal;
|
|
29
|
+
font-weight: 400;
|
|
30
|
+
font-display: swap;
|
|
31
|
+
src: url("https://cdn.getgalaxy.io/fonts/BerkeleyMono/BerkeleyMono-Regular.otf")
|
|
32
|
+
format("opentype");
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
@font-face {
|
|
36
|
+
font-family: "Berkeley Mono";
|
|
37
|
+
font-style: normal;
|
|
38
|
+
font-weight: 500;
|
|
39
|
+
font-display: swap;
|
|
40
|
+
src: url("https://cdn.getgalaxy.io/fonts/BerkeleyMono/BerkeleyMono-Bold.otf") format("opentype");
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/*
|
|
44
|
+
* TODO: move Cardo to cdn.getgalaxy.io (`fonts/Cardo/Cardo-{Regular,Italic,Bold}.ttf`).
|
|
45
|
+
* Temporary: Google Fonts' static Cardo v21 files (OFL), whole-font TTFs so no unicode-range.
|
|
46
|
+
*/
|
|
47
|
+
|
|
48
|
+
@font-face {
|
|
49
|
+
font-family: "Cardo";
|
|
50
|
+
font-style: normal;
|
|
51
|
+
font-weight: 400;
|
|
52
|
+
font-display: swap;
|
|
53
|
+
src: url("https://fonts.gstatic.com/s/cardo/v21/wlp_gwjKBV1pqiv_.ttf") format("truetype");
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
@font-face {
|
|
57
|
+
font-family: "Cardo";
|
|
58
|
+
font-style: italic;
|
|
59
|
+
font-weight: 400;
|
|
60
|
+
font-display: swap;
|
|
61
|
+
src: url("https://fonts.gstatic.com/s/cardo/v21/wlpxgwjKBV1pqhv93IQ.ttf") format("truetype");
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
@font-face {
|
|
65
|
+
font-family: "Cardo";
|
|
66
|
+
font-style: normal;
|
|
67
|
+
font-weight: 700;
|
|
68
|
+
font-display: swap;
|
|
69
|
+
src: url("https://fonts.gstatic.com/s/cardo/v21/wlpygwjKBV1pqhND-aQR.ttf") format("truetype");
|
|
70
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { useSyncExternalStore } from "react";
|
|
2
|
+
//#region src/hooks/internal/useIsClient.ts
|
|
3
|
+
/**
|
|
4
|
+
* @internal `false` on the server and during hydration, `true` after (and on a plain client
|
|
5
|
+
* render). Components that render something only a browser can (a portal, a lazily imported
|
|
6
|
+
* module) return the server markup until this flips, so the hydrated tree matches the server's.
|
|
7
|
+
*/
|
|
8
|
+
var subscribeToNothing = () => () => {};
|
|
9
|
+
var getClientSnapshot = () => true;
|
|
10
|
+
var getServerSnapshot = () => false;
|
|
11
|
+
/** @internal Whether this render is a client render after hydration. */
|
|
12
|
+
var useIsClient = () => useSyncExternalStore(subscribeToNothing, getClientSnapshot, getServerSnapshot);
|
|
13
|
+
//#endregion
|
|
14
|
+
export { useIsClient };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/** What `useClipboard` returns. */
|
|
2
|
+
export interface UseClipboardReturn {
|
|
3
|
+
/** Writes `text` to the clipboard. Resolves `true` on success, `false` when the API is missing or refuses. */
|
|
4
|
+
copy: (text: string) => Promise<boolean>;
|
|
5
|
+
/** `true` for `timeoutMs` after a successful copy. */
|
|
6
|
+
hasCopied: boolean;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Copies text with `navigator.clipboard.writeText` and reports `hasCopied` for `timeoutMs` after
|
|
10
|
+
* a success. Each copy restarts the timer. There is no `execCommand` fallback.
|
|
11
|
+
*
|
|
12
|
+
* @param timeoutMs - How long `hasCopied` stays `true` after a success, in milliseconds (default `1500`)
|
|
13
|
+
* @returns `copy(text)` and `hasCopied`
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* const { copy, hasCopied } = useClipboard();
|
|
17
|
+
* <Button icon={hasCopied ? Check : Copy} onClick={() => copy(apiKey)} ariaLabel="Copy" />
|
|
18
|
+
*/
|
|
19
|
+
export declare function useClipboard(timeoutMs?: number): UseClipboardReturn;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
2
|
+
//#region src/hooks/useClipboard.ts
|
|
3
|
+
/**
|
|
4
|
+
* Copies text with `navigator.clipboard.writeText` and reports `hasCopied` for `timeoutMs` after
|
|
5
|
+
* a success. Each copy restarts the timer. There is no `execCommand` fallback.
|
|
6
|
+
*
|
|
7
|
+
* @param timeoutMs - How long `hasCopied` stays `true` after a success, in milliseconds (default `1500`)
|
|
8
|
+
* @returns `copy(text)` and `hasCopied`
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* const { copy, hasCopied } = useClipboard();
|
|
12
|
+
* <Button icon={hasCopied ? Check : Copy} onClick={() => copy(apiKey)} ariaLabel="Copy" />
|
|
13
|
+
*/
|
|
14
|
+
function useClipboard(timeoutMs = 1500) {
|
|
15
|
+
const [hasCopied, setHasCopied] = useState(false);
|
|
16
|
+
const timeoutRef = useRef(void 0);
|
|
17
|
+
const isMountedRef = useRef(false);
|
|
18
|
+
useEffect(() => {
|
|
19
|
+
isMountedRef.current = true;
|
|
20
|
+
return () => {
|
|
21
|
+
isMountedRef.current = false;
|
|
22
|
+
clearTimeout(timeoutRef.current);
|
|
23
|
+
};
|
|
24
|
+
}, []);
|
|
25
|
+
const copy = useCallback(async (text) => {
|
|
26
|
+
if (typeof navigator === "undefined" || typeof navigator.clipboard?.writeText !== "function") return false;
|
|
27
|
+
try {
|
|
28
|
+
await navigator.clipboard.writeText(text);
|
|
29
|
+
} catch {
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
if (isMountedRef.current) {
|
|
33
|
+
clearTimeout(timeoutRef.current);
|
|
34
|
+
setHasCopied(true);
|
|
35
|
+
timeoutRef.current = setTimeout(() => setHasCopied(false), timeoutMs);
|
|
36
|
+
}
|
|
37
|
+
return true;
|
|
38
|
+
}, [timeoutMs]);
|
|
39
|
+
return useMemo(() => ({
|
|
40
|
+
copy,
|
|
41
|
+
hasCopied
|
|
42
|
+
}), [copy, hasCopied]);
|
|
43
|
+
}
|
|
44
|
+
//#endregion
|
|
45
|
+
export { useClipboard };
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/** Options for `useControlledOpenState`; the `isOpen` / `defaultIsOpen` / `onOpenChange` triple (Constitution V). */
|
|
2
|
+
export interface UseControlledOpenStateOptions {
|
|
3
|
+
/** Controlled open state. When not `undefined` the hook is controlled. */
|
|
4
|
+
isOpen?: boolean | undefined;
|
|
5
|
+
/** Initial open state while uncontrolled. @default false */
|
|
6
|
+
defaultIsOpen?: boolean | undefined;
|
|
7
|
+
/** Called with the next open state on every `setOpen`, controlled or not. */
|
|
8
|
+
onOpenChange?: ((isOpen: boolean) => void) | undefined;
|
|
9
|
+
}
|
|
10
|
+
/** What `useControlledOpenState` returns. */
|
|
11
|
+
export interface ControlledOpenState {
|
|
12
|
+
/** Whether the overlay or disclosure is open. */
|
|
13
|
+
isOpen: boolean;
|
|
14
|
+
/** Request a new open state; calls `onOpenChange` and updates internal state while uncontrolled. */
|
|
15
|
+
setOpen: (isOpen: boolean) => void;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* `useControlledState` for overlays and disclosures, named for readability. Returns
|
|
19
|
+
* `{ isOpen, setOpen }`.
|
|
20
|
+
*/
|
|
21
|
+
export declare function useControlledOpenState({ isOpen, defaultIsOpen, onOpenChange, }: UseControlledOpenStateOptions): ControlledOpenState;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { useControlledState } from "./useControlledState.js";
|
|
2
|
+
//#region src/hooks/useControlledOpenState.ts
|
|
3
|
+
/**
|
|
4
|
+
* `useControlledState` for overlays and disclosures, named for readability. Returns
|
|
5
|
+
* `{ isOpen, setOpen }`.
|
|
6
|
+
*/
|
|
7
|
+
function useControlledOpenState({ isOpen, defaultIsOpen = false, onOpenChange }) {
|
|
8
|
+
const [value, setOpen] = useControlledState({
|
|
9
|
+
value: isOpen,
|
|
10
|
+
defaultValue: defaultIsOpen,
|
|
11
|
+
onChange: onOpenChange
|
|
12
|
+
});
|
|
13
|
+
return {
|
|
14
|
+
isOpen: value,
|
|
15
|
+
setOpen
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
//#endregion
|
|
19
|
+
export { useControlledOpenState };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/** Options for `useControlledState`; the `value` / `defaultValue` / `onChange` triple (Constitution V). */
|
|
2
|
+
export interface UseControlledStateOptions<T> {
|
|
3
|
+
/** Controlled value. When not `undefined` the hook is controlled; use `null`, not `undefined`, for "no value". */
|
|
4
|
+
value?: T | undefined;
|
|
5
|
+
/** Initial value while uncontrolled. */
|
|
6
|
+
defaultValue: T;
|
|
7
|
+
/** Called with the next value on every `setValue`, controlled or not. */
|
|
8
|
+
onChange?: ((value: T) => void) | undefined;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* State that is controlled when `value` is passed and uncontrolled otherwise, like a native
|
|
12
|
+
* input. Returns `[value, setValue]`. `setValue(next)` always calls `onChange(next)` and updates
|
|
13
|
+
* internal state only while uncontrolled. There is no updater-function form: `onChange` receives
|
|
14
|
+
* the value (Constitution V).
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* const [value, setValue] = useControlledState({ value: props.value, defaultValue: props.defaultValue ?? "", onChange: props.onChange });
|
|
18
|
+
*/
|
|
19
|
+
export declare function useControlledState<T>({ value, defaultValue, onChange, }: UseControlledStateOptions<T>): [value: T, setValue: (next: T) => void];
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { useCallback, useState } from "react";
|
|
2
|
+
//#region src/hooks/useControlledState.ts
|
|
3
|
+
/**
|
|
4
|
+
* State that is controlled when `value` is passed and uncontrolled otherwise, like a native
|
|
5
|
+
* input. Returns `[value, setValue]`. `setValue(next)` always calls `onChange(next)` and updates
|
|
6
|
+
* internal state only while uncontrolled. There is no updater-function form: `onChange` receives
|
|
7
|
+
* the value (Constitution V).
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* const [value, setValue] = useControlledState({ value: props.value, defaultValue: props.defaultValue ?? "", onChange: props.onChange });
|
|
11
|
+
*/
|
|
12
|
+
function useControlledState({ value, defaultValue, onChange }) {
|
|
13
|
+
const [internalValue, setInternalValue] = useState(defaultValue);
|
|
14
|
+
const isControlled = value !== void 0;
|
|
15
|
+
const setValue = useCallback((next) => {
|
|
16
|
+
if (!isControlled) setInternalValue(() => next);
|
|
17
|
+
onChange?.(next);
|
|
18
|
+
}, [isControlled, onChange]);
|
|
19
|
+
return [isControlled ? value : internalValue, setValue];
|
|
20
|
+
}
|
|
21
|
+
//#endregion
|
|
22
|
+
export { useControlledState };
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Returns `value` once it has stopped changing for `delayMs`. Changing `delayMs` restarts the
|
|
3
|
+
* timer. While `isEnabled` is false the current `value` is returned immediately. SSR-safe: the
|
|
4
|
+
* timer runs in an effect, so the server renders the initial `value`.
|
|
5
|
+
*
|
|
6
|
+
* @param value - The value to debounce
|
|
7
|
+
* @param delayMs - Quiet period in milliseconds before the value is taken
|
|
8
|
+
* @param isEnabled - Whether to debounce at all (default `true`)
|
|
9
|
+
* @returns The debounced value
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* const debouncedQuery = useDebouncedValue(query, 250);
|
|
13
|
+
*/
|
|
14
|
+
export declare function useDebouncedValue<T>(value: T, delayMs: number, isEnabled?: boolean): T;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { useEffect, useState } from "react";
|
|
2
|
+
//#region src/hooks/useDebouncedValue.ts
|
|
3
|
+
/**
|
|
4
|
+
* Returns `value` once it has stopped changing for `delayMs`. Changing `delayMs` restarts the
|
|
5
|
+
* timer. While `isEnabled` is false the current `value` is returned immediately. SSR-safe: the
|
|
6
|
+
* timer runs in an effect, so the server renders the initial `value`.
|
|
7
|
+
*
|
|
8
|
+
* @param value - The value to debounce
|
|
9
|
+
* @param delayMs - Quiet period in milliseconds before the value is taken
|
|
10
|
+
* @param isEnabled - Whether to debounce at all (default `true`)
|
|
11
|
+
* @returns The debounced value
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* const debouncedQuery = useDebouncedValue(query, 250);
|
|
15
|
+
*/
|
|
16
|
+
function useDebouncedValue(value, delayMs, isEnabled = true) {
|
|
17
|
+
const [debouncedValue, setDebouncedValue] = useState(value);
|
|
18
|
+
useEffect(() => {
|
|
19
|
+
if (!isEnabled) {
|
|
20
|
+
setDebouncedValue(() => value);
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
const timeout = setTimeout(() => setDebouncedValue(() => value), delayMs);
|
|
24
|
+
return () => clearTimeout(timeout);
|
|
25
|
+
}, [
|
|
26
|
+
value,
|
|
27
|
+
delayMs,
|
|
28
|
+
isEnabled
|
|
29
|
+
]);
|
|
30
|
+
return isEnabled ? debouncedValue : value;
|
|
31
|
+
}
|
|
32
|
+
//#endregion
|
|
33
|
+
export { useDebouncedValue };
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/** What `useDisclosure` returns. Every function keeps a stable identity. */
|
|
2
|
+
export interface UseDisclosureReturn {
|
|
3
|
+
/** Whether the disclosure is open. */
|
|
4
|
+
isOpen: boolean;
|
|
5
|
+
/** Opens it. */
|
|
6
|
+
open: () => void;
|
|
7
|
+
/** Closes it. */
|
|
8
|
+
close: () => void;
|
|
9
|
+
/** Flips it. */
|
|
10
|
+
toggle: () => void;
|
|
11
|
+
/** Sets it; fits an overlay's `onOpenChange` directly. */
|
|
12
|
+
setIsOpen: (isOpen: boolean) => void;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Open/closed state for a modal, drawer, popover or disclosure, with stable `open`, `close`,
|
|
16
|
+
* `toggle` and `setIsOpen`.
|
|
17
|
+
*
|
|
18
|
+
* @param defaultIsOpen - Whether it starts open (default `false`)
|
|
19
|
+
* @returns `isOpen` and the stable `open`, `close`, `toggle`, `setIsOpen`
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* const { isOpen, open, setIsOpen } = useDisclosure();
|
|
23
|
+
* <Button onClick={open}>Edit</Button>
|
|
24
|
+
* <Modal isOpen={isOpen} onOpenChange={setIsOpen}>…</Modal>
|
|
25
|
+
*/
|
|
26
|
+
export declare function useDisclosure(defaultIsOpen?: boolean): UseDisclosureReturn;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { useCallback, useMemo, useState } from "react";
|
|
2
|
+
//#region src/hooks/useDisclosure.ts
|
|
3
|
+
/**
|
|
4
|
+
* Open/closed state for a modal, drawer, popover or disclosure, with stable `open`, `close`,
|
|
5
|
+
* `toggle` and `setIsOpen`.
|
|
6
|
+
*
|
|
7
|
+
* @param defaultIsOpen - Whether it starts open (default `false`)
|
|
8
|
+
* @returns `isOpen` and the stable `open`, `close`, `toggle`, `setIsOpen`
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* const { isOpen, open, setIsOpen } = useDisclosure();
|
|
12
|
+
* <Button onClick={open}>Edit</Button>
|
|
13
|
+
* <Modal isOpen={isOpen} onOpenChange={setIsOpen}>…</Modal>
|
|
14
|
+
*/
|
|
15
|
+
function useDisclosure(defaultIsOpen = false) {
|
|
16
|
+
const [isOpen, setIsOpenState] = useState(defaultIsOpen);
|
|
17
|
+
const open = useCallback(() => setIsOpenState(true), []);
|
|
18
|
+
const close = useCallback(() => setIsOpenState(false), []);
|
|
19
|
+
const toggle = useCallback(() => setIsOpenState((previous) => !previous), []);
|
|
20
|
+
const setIsOpen = useCallback((next) => setIsOpenState(next), []);
|
|
21
|
+
return useMemo(() => ({
|
|
22
|
+
isOpen,
|
|
23
|
+
open,
|
|
24
|
+
close,
|
|
25
|
+
toggle,
|
|
26
|
+
setIsOpen
|
|
27
|
+
}), [
|
|
28
|
+
isOpen,
|
|
29
|
+
open,
|
|
30
|
+
close,
|
|
31
|
+
toggle,
|
|
32
|
+
setIsOpen
|
|
33
|
+
]);
|
|
34
|
+
}
|
|
35
|
+
//#endregion
|
|
36
|
+
export { useDisclosure };
|
|
@@ -1,33 +1,29 @@
|
|
|
1
|
-
import { RefObject } from "react";
|
|
1
|
+
import { type RefObject } from "react";
|
|
2
|
+
/** Options for `useDismiss`. */
|
|
2
3
|
export interface UseDismissOptions {
|
|
3
|
-
/**
|
|
4
|
-
* Refs to exclude from click outside detection (e.g., dropdowns, tooltips)
|
|
5
|
-
*/
|
|
6
|
-
excludeRefs?: RefObject<HTMLElement>[];
|
|
7
|
-
/**
|
|
8
|
-
* Whether to enable ESC key support
|
|
9
|
-
* @default true
|
|
10
|
-
*/
|
|
11
|
-
enableEscape?: boolean;
|
|
12
|
-
/**
|
|
13
|
-
* Whether to enable click outside detection
|
|
14
|
-
* @default true
|
|
15
|
-
*/
|
|
16
|
-
enableClickOutside?: boolean;
|
|
17
|
-
/**
|
|
18
|
-
* Whether the hook is enabled
|
|
19
|
-
* @default true
|
|
20
|
-
*/
|
|
21
|
-
enabled?: boolean;
|
|
22
|
-
/**
|
|
23
|
-
* The function to call when the dismiss is triggered
|
|
24
|
-
*/
|
|
4
|
+
/** Called when Escape is pressed or a mousedown lands outside the element (and outside `excludeRefs`). */
|
|
25
5
|
onDismiss?: () => void;
|
|
6
|
+
/** Whether the hook listens at all; pass the overlay's `isOpen`. @default true */
|
|
7
|
+
isEnabled?: boolean;
|
|
8
|
+
/** Whether Escape dismisses. Ignored while focus is in an `input`, `textarea`, `select` or `[contenteditable]`. @default true */
|
|
9
|
+
shouldCloseOnEscape?: boolean;
|
|
10
|
+
/** Whether a mousedown outside the element dismisses. @default true */
|
|
11
|
+
shouldCloseOnOutsideClick?: boolean;
|
|
12
|
+
/** Elements that count as inside (e.g. a portalled dropdown or tooltip); clicks in them never dismiss. */
|
|
13
|
+
excludeRefs?: RefObject<HTMLElement | null>[];
|
|
26
14
|
}
|
|
27
15
|
/**
|
|
28
|
-
*
|
|
29
|
-
* attach to the element
|
|
16
|
+
* Dismisses an app-built floating element on Escape or on a mousedown outside it. Returns the ref
|
|
17
|
+
* to attach to the element that should stay open. DLS overlays (Popover, Modal, Drawer, Menu,
|
|
18
|
+
* Tooltip, Toast) dismiss themselves through the overlay stack and never need this hook.
|
|
30
19
|
*
|
|
31
|
-
*
|
|
20
|
+
* Every mounted `useDismiss` hears every Escape (its own `document` listener, no shortcut
|
|
21
|
+
* registry), except one an open DLS overlay has already consumed (the overlay stack calls
|
|
22
|
+
* `preventDefault()`; mount order decides which listener runs first). SSR-safe: listeners attach
|
|
23
|
+
* in effects only.
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* const ref = useDismiss<HTMLDivElement>({ onDismiss: () => onOpenChange(false), isEnabled: isOpen });
|
|
27
|
+
* return <div ref={ref}>…</div>;
|
|
32
28
|
*/
|
|
33
|
-
export declare
|
|
29
|
+
export declare function useDismiss<T extends HTMLElement = HTMLElement>({ onDismiss, isEnabled, shouldCloseOnEscape, shouldCloseOnOutsideClick, excludeRefs, }: UseDismissOptions): RefObject<T | null>;
|