@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
|
@@ -1,55 +1,75 @@
|
|
|
1
|
-
import type
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
RIGHT = "right",
|
|
8
|
-
TOP_START = "top-start",
|
|
9
|
-
TOP_END = "top-end",
|
|
10
|
-
BOTTOM_START = "bottom-start",
|
|
11
|
-
BOTTOM_END = "bottom-end",
|
|
12
|
-
RIGHT_START = "right-start",
|
|
13
|
-
RIGHT_END = "right-end",
|
|
14
|
-
LEFT_START = "left-start",
|
|
15
|
-
LEFT_END = "left-end",
|
|
16
|
-
AUTO = "auto",
|
|
17
|
-
AUTO_START = "auto-start",
|
|
18
|
-
AUTO_END = "auto-end"
|
|
19
|
-
}
|
|
20
|
-
/** Surface treatment of the tooltip bubble. */
|
|
1
|
+
import { type AriaAttributes, type CSSProperties, type ReactElement, type ReactNode } from "react";
|
|
2
|
+
import { Placement } from "../theme/enums.js";
|
|
3
|
+
/**
|
|
4
|
+
* Bubble fill: a surface step (Constitution V-A surface set), resolved **inside the inverse
|
|
5
|
+
* scope**, so every step is the opposite theme's (dark on a light UI, light on a dark one).
|
|
6
|
+
*/
|
|
21
7
|
export declare enum TooltipVariant {
|
|
8
|
+
/** The opposite theme's canvas fill, `background.base`: the high-contrast bubble. The default. */
|
|
22
9
|
BASE = "BASE",
|
|
10
|
+
/** The opposite theme's panel fill, `background.primary`. */
|
|
23
11
|
PRIMARY = "PRIMARY",
|
|
12
|
+
/** The opposite theme's raised fill, `background.secondary`. */
|
|
24
13
|
SECONDARY = "SECONDARY",
|
|
14
|
+
/** The opposite theme's most elevated fill, `background.tertiary`. */
|
|
25
15
|
TERTIARY = "TERTIARY"
|
|
26
16
|
}
|
|
27
|
-
export interface TooltipProps {
|
|
28
|
-
/**
|
|
29
|
-
|
|
30
|
-
|
|
17
|
+
export interface TooltipProps extends AriaAttributes {
|
|
18
|
+
/**
|
|
19
|
+
* The trigger: one element that forwards its `ref` and spreads props to a DOM element. Tooltip
|
|
20
|
+
* clones it and does not wrap it.
|
|
21
|
+
*/
|
|
22
|
+
children: ReactElement;
|
|
23
|
+
/**
|
|
24
|
+
* Hint content. A string or number renders as `Text` `BODY_SM`; a node renders as it is. An
|
|
25
|
+
* empty value never opens. Keep it short and non-interactive.
|
|
26
|
+
*/
|
|
27
|
+
body: ReactNode;
|
|
28
|
+
/**
|
|
29
|
+
* Shortcut for the trigger's action, shown as a trailing `Kbd` (`useHotkey` grammar). Display
|
|
30
|
+
* only: the host binds it.
|
|
31
|
+
*/
|
|
32
|
+
hotKeys?: string[];
|
|
33
|
+
/**
|
|
34
|
+
* Bubble fill: a surface step of the opposite theme (the bubble is always inverted).
|
|
35
|
+
* @default TooltipVariant.BASE
|
|
36
|
+
*/
|
|
31
37
|
variant?: TooltipVariant;
|
|
32
|
-
/**
|
|
33
|
-
|
|
34
|
-
|
|
38
|
+
/**
|
|
39
|
+
* Preferred side and alignment. The bubble flips and shifts to stay in the viewport; `AUTO*`
|
|
40
|
+
* picks the side with the most room.
|
|
41
|
+
* @default Placement.TOP
|
|
42
|
+
*/
|
|
43
|
+
placement?: Placement;
|
|
44
|
+
/**
|
|
45
|
+
* Milliseconds the pointer must rest on the trigger before the bubble opens. Skipped while
|
|
46
|
+
* another tooltip is open or has just closed; keyboard focus opens without a delay.
|
|
47
|
+
* @default 0
|
|
48
|
+
*/
|
|
35
49
|
delay?: number;
|
|
36
|
-
/**
|
|
37
|
-
|
|
38
|
-
/**
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
50
|
+
/** Controlled open state. When set, Tooltip calls `onOpenChange` and lets the caller decide. */
|
|
51
|
+
isOpen?: boolean;
|
|
52
|
+
/**
|
|
53
|
+
* Initial open state while uncontrolled.
|
|
54
|
+
* @default false
|
|
55
|
+
*/
|
|
56
|
+
defaultIsOpen?: boolean;
|
|
57
|
+
/** Called with the requested open state on hover, focus, blur, Escape, trigger press, and when another tooltip opens. */
|
|
58
|
+
onOpenChange?: (isOpen: boolean) => void;
|
|
59
|
+
/**
|
|
60
|
+
* Never opens and adds no `aria-describedby`. The trigger renders exactly as when enabled.
|
|
61
|
+
* @default false
|
|
62
|
+
*/
|
|
45
63
|
isDisabled?: boolean;
|
|
64
|
+
/** DOM id on the bubble; the trigger's `aria-describedby` target. @default a `useId()` value */
|
|
65
|
+
id?: string;
|
|
66
|
+
/** Any `data-*` attribute, forwarded to the bubble. */
|
|
67
|
+
[dataAttribute: `data-${string}`]: string | number | boolean | undefined;
|
|
68
|
+
/** Extra class on the bubble. */
|
|
69
|
+
className?: string;
|
|
70
|
+
/** Inline style on the bubble; only for setting CSS custom properties. */
|
|
71
|
+
style?: CSSProperties;
|
|
46
72
|
}
|
|
47
|
-
/**
|
|
48
|
-
|
|
49
|
-
* trigger, wrapped in an inline-block span.
|
|
50
|
-
*
|
|
51
|
-
* Sits at z-index 10000, above modals and drawers. Set `isInteractive` if the
|
|
52
|
-
* body contains anything clickable.
|
|
53
|
-
*/
|
|
54
|
-
declare const Tooltip: ({ children, variant, body, position, delay, offset, isInteractive, noPadding, noBorder, isDisabled, }: PropsWithChildren<TooltipProps>) => string | number | boolean | Iterable<import("react").ReactNode> | import("react").JSX.Element | null | undefined;
|
|
73
|
+
/** A short, non-interactive hint for one trigger, shown on hover or keyboard focus. */
|
|
74
|
+
declare const Tooltip: import("react").ForwardRefExoticComponent<TooltipProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
55
75
|
export default Tooltip;
|
package/dist/tooltip/Tooltip.js
CHANGED
|
@@ -1,90 +1,297 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import Text, { TextSize } from "../text/Text.js";
|
|
1
|
+
import { Placement } from "../theme/enums.js";
|
|
2
|
+
import Text, { TextSize, TextVariant } from "../text/Text.js";
|
|
3
|
+
import { SPACE } from "../theme/tokens/scales.js";
|
|
4
|
+
import { useControlledOpenState } from "../hooks/useControlledOpenState.js";
|
|
5
|
+
import Flex, { AlignItems } from "../layout/Flex.js";
|
|
6
|
+
import { ThemeScopeContext } from "../theme/useGalaxyTheme.js";
|
|
7
|
+
import Portal from "../layout/Portal.js";
|
|
8
|
+
import { OverlayLayer, useOverlay } from "../overlay/useOverlay.js";
|
|
9
|
+
import Kbd, { KbdSize, KbdVariant } from "../text/Kbd.js";
|
|
10
|
+
import { useInverseScope } from "../theme/useInverseScope.js";
|
|
3
11
|
/* empty css */
|
|
4
12
|
import { styled } from "@linaria/react";
|
|
5
|
-
import {
|
|
6
|
-
import { jsx } from "react/jsx-runtime";
|
|
7
|
-
import
|
|
13
|
+
import { cloneElement, forwardRef, useCallback, useEffect, useId, useReducer, useRef, version } from "react";
|
|
14
|
+
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
15
|
+
import { cx } from "@linaria/core";
|
|
16
|
+
import { autoPlacement, autoUpdate, flip, hide, offset, safePolygon, shift, useDismiss, useFloating, useFocus, useHover, useInteractions, useMergeRefs, useRole } from "@floating-ui/react";
|
|
8
17
|
//#region src/tooltip/Tooltip.tsx
|
|
9
|
-
/**
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
18
|
+
/**
|
|
19
|
+
* A short, non-interactive hint beside one trigger element, shown while the pointer rests on it or
|
|
20
|
+
* it has keyboard focus. The trigger is the single child: Tooltip clones it (adding the event
|
|
21
|
+
* handlers, the `ref` and `aria-describedby`) instead of wrapping it, so the trigger's box and
|
|
22
|
+
* HTML do not change. The bubble renders in a `Portal` only while open. Tooltip is the engine
|
|
23
|
+
* behind every `tooltip` shortcut prop in the library.
|
|
24
|
+
*
|
|
25
|
+
* Positioning and interactions come from `@floating-ui/react`. The computed `x`/`y` are written
|
|
26
|
+
* as the `--gx-tooltip-x` / `--gx-tooltip-y` custom properties, read by a static transform.
|
|
27
|
+
*
|
|
28
|
+
* The bubble is always an inverse scope (the opposite theme on its subtree, `useInverseScope`):
|
|
29
|
+
* dark on a light UI, light on a dark one. `variant` picks the surface step inside that scope.
|
|
30
|
+
*
|
|
31
|
+
* Text, Tooltip and Kbd import each other (Text → Tooltip → Kbd → Text). None of them reads
|
|
32
|
+
* another's exports at module scope, so any load order works: the one cross-cycle map here,
|
|
33
|
+
* `TOOLTIP_VARIANT_TO_KBD_VARIANT_MAP`, is built when called at render.
|
|
34
|
+
*/
|
|
35
|
+
/**
|
|
36
|
+
* Bubble fill: a surface step (Constitution V-A surface set), resolved **inside the inverse
|
|
37
|
+
* scope**, so every step is the opposite theme's (dark on a light UI, light on a dark one).
|
|
38
|
+
*/
|
|
29
39
|
var TooltipVariant = /* @__PURE__ */ function(TooltipVariant) {
|
|
40
|
+
/** The opposite theme's canvas fill, `background.base`: the high-contrast bubble. The default. */
|
|
30
41
|
TooltipVariant["BASE"] = "BASE";
|
|
42
|
+
/** The opposite theme's panel fill, `background.primary`. */
|
|
31
43
|
TooltipVariant["PRIMARY"] = "PRIMARY";
|
|
44
|
+
/** The opposite theme's raised fill, `background.secondary`. */
|
|
32
45
|
TooltipVariant["SECONDARY"] = "SECONDARY";
|
|
46
|
+
/** The opposite theme's most elevated fill, `background.tertiary`. */
|
|
33
47
|
TooltipVariant["TERTIARY"] = "TERTIARY";
|
|
34
48
|
return TooltipVariant;
|
|
35
49
|
}({});
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
var
|
|
42
|
-
|
|
43
|
-
|
|
50
|
+
/** The bubble's width cap. A module constant because no width token exists. */
|
|
51
|
+
/** Distance from the trigger and the viewport inset, resolved to numbers for the engine. */
|
|
52
|
+
var TOOLTIP_OFFSET_PX = Number.parseFloat(SPACE[4]);
|
|
53
|
+
var TOOLTIP_SHIFT_PADDING_PX = Number.parseFloat(SPACE[8]);
|
|
54
|
+
/** A hover within this many ms of a tooltip closing opens at once (delay grouping). */
|
|
55
|
+
var TOOLTIP_SKIP_DELAY_MS = 300;
|
|
56
|
+
/**
|
|
57
|
+
* Delay grouping, shared by every Tooltip. Plain JS: never touched at import time, only in event
|
|
58
|
+
* handlers and effects. `close` closes the tooltip that opened last from hover or focus.
|
|
59
|
+
*/
|
|
60
|
+
var TOOLTIP_GROUP = {
|
|
61
|
+
close: null,
|
|
62
|
+
lastClosedAt: Number.NEGATIVE_INFINITY
|
|
44
63
|
};
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
return
|
|
64
|
+
/** `true` while a grouped tooltip is open or one closed less than `TOOLTIP_SKIP_DELAY_MS` ago. */
|
|
65
|
+
function isTooltipGroupWarm() {
|
|
66
|
+
return TOOLTIP_GROUP.close !== null || Date.now() - TOOLTIP_GROUP.lastClosedAt < TOOLTIP_SKIP_DELAY_MS;
|
|
67
|
+
}
|
|
68
|
+
/** `Placement` → the engine: 12 sided placements, and `AUTO*` as `autoPlacement` (replacing `flip`). */
|
|
69
|
+
var TOOLTIP_PLACEMENT_TO_FLOATING_PLACEMENT_MAP = {
|
|
70
|
+
[Placement.TOP]: { placement: "top" },
|
|
71
|
+
[Placement.BOTTOM]: { placement: "bottom" },
|
|
72
|
+
[Placement.LEFT]: { placement: "left" },
|
|
73
|
+
[Placement.RIGHT]: { placement: "right" },
|
|
74
|
+
[Placement.TOP_START]: { placement: "top-start" },
|
|
75
|
+
[Placement.TOP_END]: { placement: "top-end" },
|
|
76
|
+
[Placement.BOTTOM_START]: { placement: "bottom-start" },
|
|
77
|
+
[Placement.BOTTOM_END]: { placement: "bottom-end" },
|
|
78
|
+
[Placement.LEFT_START]: { placement: "left-start" },
|
|
79
|
+
[Placement.LEFT_END]: { placement: "left-end" },
|
|
80
|
+
[Placement.RIGHT_START]: { placement: "right-start" },
|
|
81
|
+
[Placement.RIGHT_END]: { placement: "right-end" },
|
|
82
|
+
[Placement.AUTO]: { autoAlignment: void 0 },
|
|
83
|
+
[Placement.AUTO_START]: { autoAlignment: "start" },
|
|
84
|
+
[Placement.AUTO_END]: { autoAlignment: "end" }
|
|
48
85
|
};
|
|
49
|
-
var TooltipContent = withTheme(/*#__PURE__*/ styled("span")({
|
|
50
|
-
name: "TooltipContent",
|
|
51
|
-
class: "tjda4tq",
|
|
52
|
-
propsAsIs: false,
|
|
53
|
-
vars: {
|
|
54
|
-
"tjda4tq-0": [_exp()],
|
|
55
|
-
"tjda4tq-1": [_exp2()],
|
|
56
|
-
"tjda4tq-2": [_exp3()]
|
|
57
|
-
}
|
|
58
|
-
}));
|
|
59
86
|
/**
|
|
60
|
-
*
|
|
61
|
-
*
|
|
62
|
-
*
|
|
63
|
-
* Sits at z-index 10000, above modals and drawers. Set `isInteractive` if the
|
|
64
|
-
* body contains anything clickable.
|
|
87
|
+
* The shortcut caps sit one surface step above the bubble (inside the same inverse scope); the top
|
|
88
|
+
* step has nothing above it, so it steps down. Built when called at render (Text ↔ Tooltip ↔ Kbd
|
|
89
|
+
* cycle: no load-time reads of `KbdVariant`).
|
|
65
90
|
*/
|
|
66
|
-
var
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
91
|
+
var TOOLTIP_VARIANT_TO_KBD_VARIANT_MAP = () => ({
|
|
92
|
+
["BASE"]: KbdVariant.PRIMARY,
|
|
93
|
+
["PRIMARY"]: KbdVariant.SECONDARY,
|
|
94
|
+
["SECONDARY"]: KbdVariant.TERTIARY,
|
|
95
|
+
["TERTIARY"]: KbdVariant.SECONDARY
|
|
96
|
+
});
|
|
97
|
+
var Bubble = /*#__PURE__*/ styled("div")({
|
|
98
|
+
name: "Bubble",
|
|
99
|
+
class: "gx-Tooltip-Bubble-bbnx4ok",
|
|
100
|
+
propsAsIs: false
|
|
101
|
+
});
|
|
102
|
+
/**
|
|
103
|
+
* Bubble fill per surface step, resolved in the inverse scope. The hairline keeps its 0.5px but
|
|
104
|
+
* takes the fill's color on every step: an inverted bubble always contrasts with the page, and a
|
|
105
|
+
* visible hairline would only draw an opposite-theme rim around it.
|
|
106
|
+
*/
|
|
107
|
+
var TOOLTIP_VARIANT_TO_CSS_MAP = {
|
|
108
|
+
["BASE"]: "gx-Tooltip-BASE-bjda4tq",
|
|
109
|
+
["PRIMARY"]: "gx-Tooltip-PRIMARY-pvbsl8",
|
|
110
|
+
["SECONDARY"]: "gx-Tooltip-SECONDARY-sxdjaj",
|
|
111
|
+
["TERTIARY"]: "gx-Tooltip-TERTIARY-tfsg8kc"
|
|
112
|
+
};
|
|
113
|
+
/** The trigger scrolled fully out of view (or the first position is not computed yet). */
|
|
114
|
+
var REFERENCE_HIDDEN_CSS = "gx-Tooltip-REFERENCE_HIDDEN_CSS-r1itzgix";
|
|
115
|
+
/** React 19 moved an element's `ref` into `props`; React 18 keeps it on the element. */
|
|
116
|
+
var IS_REACT_19 = Number.parseInt(version, 10) >= 19;
|
|
117
|
+
/** The child's own ref, read where the running React version keeps it, so neither version warns. */
|
|
118
|
+
function getElementRef(element) {
|
|
119
|
+
return (IS_REACT_19 ? element.props : element).ref;
|
|
120
|
+
}
|
|
121
|
+
/** `undefined`, `null`, `false` and `""` are empty: the tooltip never opens. */
|
|
122
|
+
function isEmptyBody(body) {
|
|
123
|
+
return body === void 0 || body === null || body === false || body === "";
|
|
124
|
+
}
|
|
125
|
+
/** Rounds to the device pixel grid so the translated bubble's text stays sharp. */
|
|
126
|
+
function roundToDevicePixel(value) {
|
|
127
|
+
const ratio = typeof window === "undefined" ? 1 : window.devicePixelRatio || 1;
|
|
128
|
+
return Math.round(value * ratio) / ratio;
|
|
129
|
+
}
|
|
130
|
+
/** Opens from user interaction; only these take part in "one open at a time". */
|
|
131
|
+
var INTERACTION_OPEN_REASONS = new Set(["hover", "focus"]);
|
|
132
|
+
/** The open bubble: the engine's floating props, the passthrough, the position and the content. */
|
|
133
|
+
function TooltipBubble({ floatingProps, passthrough, bubbleRef, id, body, hotKeys, variant, x, y, isHidden, className, style }) {
|
|
134
|
+
const { tabIndex: _tabIndex, ...engineProps } = floatingProps;
|
|
135
|
+
const inverse = useInverseScope();
|
|
136
|
+
const content = typeof body === "string" || typeof body === "number" ? /* @__PURE__ */ jsx(Text, {
|
|
137
|
+
size: TextSize.BODY_SM,
|
|
138
|
+
variant: TextVariant.PRIMARY,
|
|
139
|
+
children: body
|
|
140
|
+
}) : body;
|
|
141
|
+
const inner = hotKeys !== void 0 && hotKeys.length > 0 ? /* @__PURE__ */ jsxs(Flex, {
|
|
142
|
+
alignItems: AlignItems.CENTER,
|
|
143
|
+
gap: 8,
|
|
144
|
+
children: [content, /* @__PURE__ */ jsx(Kbd, {
|
|
145
|
+
hotKeys,
|
|
146
|
+
size: KbdSize.SMALL,
|
|
147
|
+
variant: TOOLTIP_VARIANT_TO_KBD_VARIANT_MAP()[variant]
|
|
148
|
+
})]
|
|
149
|
+
}) : content;
|
|
150
|
+
const position = {
|
|
151
|
+
"--gx-tooltip-x": `${roundToDevicePixel(x)}px`,
|
|
152
|
+
"--gx-tooltip-y": `${roundToDevicePixel(y)}px`
|
|
153
|
+
};
|
|
154
|
+
return /* @__PURE__ */ jsx(Bubble, {
|
|
155
|
+
...engineProps,
|
|
156
|
+
...passthrough,
|
|
157
|
+
...inverse.attributes,
|
|
158
|
+
ref: bubbleRef,
|
|
159
|
+
id,
|
|
160
|
+
className: cx(TOOLTIP_VARIANT_TO_CSS_MAP[variant], isHidden && REFERENCE_HIDDEN_CSS, className),
|
|
161
|
+
style: {
|
|
162
|
+
...position,
|
|
163
|
+
...style
|
|
164
|
+
},
|
|
165
|
+
children: /* @__PURE__ */ jsx(ThemeScopeContext.Provider, {
|
|
166
|
+
value: inverse.scope,
|
|
167
|
+
children: inner
|
|
168
|
+
})
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
/** A short, non-interactive hint for one trigger, shown on hover or keyboard focus. */
|
|
172
|
+
var Tooltip = forwardRef(function Tooltip({ children, body, hotKeys, variant = "BASE", placement = Placement.TOP, delay = 0, isOpen: isOpenProp, defaultIsOpen = false, onOpenChange, isDisabled = false, id, className, style, ...rest }, ref) {
|
|
173
|
+
const generatedId = useId();
|
|
174
|
+
const bubbleId = id ?? generatedId;
|
|
175
|
+
const isDecorative = rest["aria-hidden"] === true || rest["aria-hidden"] === "true";
|
|
176
|
+
const isEnabled = !isDisabled && !isEmptyBody(body);
|
|
177
|
+
const { isOpen, setOpen } = useControlledOpenState({
|
|
178
|
+
isOpen: isOpenProp,
|
|
179
|
+
defaultIsOpen,
|
|
180
|
+
onOpenChange
|
|
181
|
+
});
|
|
182
|
+
const isShown = isOpen && isEnabled;
|
|
183
|
+
const isShownRef = useRef(isShown);
|
|
184
|
+
isShownRef.current = isShown;
|
|
185
|
+
const setOpenRef = useRef(setOpen);
|
|
186
|
+
setOpenRef.current = setOpen;
|
|
187
|
+
const delayRef = useRef(delay);
|
|
188
|
+
delayRef.current = delay;
|
|
189
|
+
/** Stable identity: the group compares it to know which tooltip it holds. */
|
|
190
|
+
const close = useCallback(() => setOpenRef.current(false), []);
|
|
191
|
+
/** Re-renders this tooltip, so `isShownRef` is reset to the real state after every request. */
|
|
192
|
+
const [, rerender] = useReducer((count) => count + 1, 0);
|
|
193
|
+
const handleOpenChange = useCallback((nextIsOpen, _event, reason) => {
|
|
194
|
+
if (nextIsOpen === isShownRef.current) return;
|
|
195
|
+
if (nextIsOpen && INTERACTION_OPEN_REASONS.has(reason)) {
|
|
196
|
+
const previousClose = TOOLTIP_GROUP.close;
|
|
197
|
+
TOOLTIP_GROUP.close = close;
|
|
198
|
+
if (previousClose !== null && previousClose !== close) previousClose();
|
|
199
|
+
}
|
|
200
|
+
isShownRef.current = nextIsOpen;
|
|
201
|
+
setOpenRef.current(nextIsOpen);
|
|
202
|
+
rerender();
|
|
203
|
+
}, [close]);
|
|
204
|
+
const wasShownRef = useRef(isShown);
|
|
205
|
+
useEffect(() => {
|
|
206
|
+
if (wasShownRef.current && !isShown) {
|
|
207
|
+
TOOLTIP_GROUP.lastClosedAt = Date.now();
|
|
208
|
+
if (TOOLTIP_GROUP.close === close) TOOLTIP_GROUP.close = null;
|
|
209
|
+
}
|
|
210
|
+
wasShownRef.current = isShown;
|
|
211
|
+
}, [isShown, close]);
|
|
212
|
+
useEffect(() => () => {
|
|
213
|
+
if (TOOLTIP_GROUP.close === close) TOOLTIP_GROUP.close = null;
|
|
214
|
+
}, [close]);
|
|
215
|
+
const target = TOOLTIP_PLACEMENT_TO_FLOATING_PLACEMENT_MAP[placement];
|
|
216
|
+
const { refs, context, x, y, middlewareData, isPositioned } = useFloating({
|
|
217
|
+
open: isShown,
|
|
218
|
+
onOpenChange: handleOpenChange,
|
|
219
|
+
placement: "placement" in target ? target.placement : "top",
|
|
220
|
+
strategy: "absolute",
|
|
221
|
+
whileElementsMounted: autoUpdate,
|
|
222
|
+
middleware: [
|
|
223
|
+
offset(TOOLTIP_OFFSET_PX),
|
|
224
|
+
"placement" in target ? flip() : autoPlacement({ alignment: target.autoAlignment }),
|
|
225
|
+
shift({ padding: TOOLTIP_SHIFT_PADDING_PX }),
|
|
226
|
+
hide()
|
|
227
|
+
]
|
|
228
|
+
});
|
|
229
|
+
const hover = useHover(context, {
|
|
230
|
+
enabled: isEnabled,
|
|
231
|
+
mouseOnly: true,
|
|
232
|
+
move: false,
|
|
233
|
+
delay: () => ({
|
|
234
|
+
open: isTooltipGroupWarm() ? 0 : delayRef.current,
|
|
235
|
+
close: 0
|
|
77
236
|
}),
|
|
78
|
-
|
|
79
|
-
delay,
|
|
80
|
-
duration: 0,
|
|
81
|
-
offset,
|
|
82
|
-
interactive: isInteractive,
|
|
83
|
-
appendTo: () => document.body,
|
|
84
|
-
maxWidth: "none",
|
|
85
|
-
zIndex: 1e4,
|
|
86
|
-
children: /* @__PURE__ */ jsx(TooltipWrapper, { children })
|
|
237
|
+
handleClose: safePolygon()
|
|
87
238
|
});
|
|
88
|
-
|
|
239
|
+
const focus = useFocus(context, {
|
|
240
|
+
enabled: isEnabled,
|
|
241
|
+
visibleOnly: true
|
|
242
|
+
});
|
|
243
|
+
useOverlay({
|
|
244
|
+
isOpen: isShown,
|
|
245
|
+
layer: OverlayLayer.TOOLTIP,
|
|
246
|
+
onEscape: close
|
|
247
|
+
});
|
|
248
|
+
const { getReferenceProps, getFloatingProps } = useInteractions([
|
|
249
|
+
hover,
|
|
250
|
+
focus,
|
|
251
|
+
useDismiss(context, {
|
|
252
|
+
enabled: isEnabled,
|
|
253
|
+
escapeKey: false,
|
|
254
|
+
referencePress: true,
|
|
255
|
+
outsidePress: false
|
|
256
|
+
}),
|
|
257
|
+
useRole(context, {
|
|
258
|
+
enabled: isEnabled,
|
|
259
|
+
role: "tooltip"
|
|
260
|
+
})
|
|
261
|
+
]);
|
|
262
|
+
const childProps = children.props;
|
|
263
|
+
const triggerRef = useMergeRefs([refs.setReference, getElementRef(children)]);
|
|
264
|
+
const bubbleRef = useMergeRefs([refs.setFloating, ref]);
|
|
265
|
+
const triggerProps = {};
|
|
266
|
+
for (const [key, value] of Object.entries(getReferenceProps())) {
|
|
267
|
+
if (key === "aria-describedby") continue;
|
|
268
|
+
const own = childProps[key];
|
|
269
|
+
triggerProps[key] = typeof value === "function" && typeof own === "function" ? (...args) => {
|
|
270
|
+
own(...args);
|
|
271
|
+
value(...args);
|
|
272
|
+
} : value;
|
|
273
|
+
}
|
|
274
|
+
const ownDescribedBy = childProps["aria-describedby"];
|
|
275
|
+
const describedBy = isShown && !isDecorative ? [typeof ownDescribedBy === "string" ? ownDescribedBy : void 0, bubbleId].filter(Boolean).join(" ") : ownDescribedBy;
|
|
276
|
+
return /* @__PURE__ */ jsxs(Fragment$1, { children: [cloneElement(children, {
|
|
277
|
+
...triggerProps,
|
|
278
|
+
ref: triggerRef,
|
|
279
|
+
"aria-describedby": describedBy
|
|
280
|
+
}), isShown && /* @__PURE__ */ jsx(Portal, { children: /* @__PURE__ */ jsx(TooltipBubble, {
|
|
281
|
+
floatingProps: getFloatingProps(),
|
|
282
|
+
passthrough: rest,
|
|
283
|
+
bubbleRef,
|
|
284
|
+
id: bubbleId,
|
|
285
|
+
body,
|
|
286
|
+
hotKeys,
|
|
287
|
+
variant,
|
|
288
|
+
x,
|
|
289
|
+
y,
|
|
290
|
+
isHidden: middlewareData.hide?.referenceHidden === true || !isPositioned,
|
|
291
|
+
className,
|
|
292
|
+
style
|
|
293
|
+
}) })] });
|
|
294
|
+
});
|
|
295
|
+
Tooltip.displayName = "Tooltip";
|
|
89
296
|
//#endregion
|
|
90
|
-
export {
|
|
297
|
+
export { TooltipVariant, Tooltip as default };
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { TooltipProps } from "../Tooltip.js";
|
|
2
|
+
/** @internal `Tooltip` behind `import()`: the trigger renders alone until the module has loaded. */
|
|
3
|
+
declare function LazyTooltip({ children, ...props }: TooltipProps): import("react").JSX.Element;
|
|
4
|
+
declare namespace LazyTooltip {
|
|
5
|
+
var displayName: string;
|
|
6
|
+
}
|
|
7
|
+
export default LazyTooltip;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { useIsClient } from "../../hooks/internal/useIsClient.js";
|
|
2
|
+
import { useEffect, useState } from "react";
|
|
3
|
+
import { jsx } from "react/jsx-runtime";
|
|
4
|
+
//#region src/tooltip/internal/LazyTooltip.tsx
|
|
5
|
+
/**
|
|
6
|
+
* @internal `Tooltip` loaded on first use. `Text` and `Icon` are in every app and almost never
|
|
7
|
+
* show a tooltip, but a static import would pull `Tooltip` (and with it floating-ui, `Portal`,
|
|
8
|
+
* the overlay store, `Flex` and `Kbd`) into every bundle that renders text, and would make `Text`
|
|
9
|
+
* ↔ `Tooltip` an import cycle.
|
|
10
|
+
*
|
|
11
|
+
* The module is fetched with `import()` once, after the first client render that needs it, and
|
|
12
|
+
* cached for every later instance. Until it has landed the trigger renders alone: on the server,
|
|
13
|
+
* during hydration (so the markup matches) and for the one tick the import takes in an app whose
|
|
14
|
+
* bundle already holds `Tooltip`. No `Suspense` boundary is involved, so `renderToString` emits
|
|
15
|
+
* plain markup and hydration never falls back to client rendering.
|
|
16
|
+
*
|
|
17
|
+
* Only `Text` and `Icon` use it. A component whose tooltip is part of its job (`Button`, `Chip`,
|
|
18
|
+
* `Field`) imports `Tooltip` directly.
|
|
19
|
+
*/
|
|
20
|
+
/** The loaded `Tooltip`, shared by every instance once the import has resolved. */
|
|
21
|
+
var loadedTooltip = null;
|
|
22
|
+
/** The in-flight import, so concurrent first renders share one request. */
|
|
23
|
+
var loading = null;
|
|
24
|
+
/** Starts (or joins) the import; resolves once `loadedTooltip` is set. */
|
|
25
|
+
function loadTooltip() {
|
|
26
|
+
loading ??= import("../Tooltip.js").then((module) => {
|
|
27
|
+
loadedTooltip = module.default;
|
|
28
|
+
});
|
|
29
|
+
return loading;
|
|
30
|
+
}
|
|
31
|
+
/** @internal `Tooltip` behind `import()`: the trigger renders alone until the module has loaded. */
|
|
32
|
+
function LazyTooltip({ children, ...props }) {
|
|
33
|
+
const isClient = useIsClient();
|
|
34
|
+
const [Tooltip, setTooltip] = useState(() => loadedTooltip);
|
|
35
|
+
useEffect(() => {
|
|
36
|
+
if (!isClient || Tooltip !== null) return;
|
|
37
|
+
let isMounted = true;
|
|
38
|
+
loadTooltip().then(() => {
|
|
39
|
+
if (isMounted) setTooltip(() => loadedTooltip);
|
|
40
|
+
});
|
|
41
|
+
return () => {
|
|
42
|
+
isMounted = false;
|
|
43
|
+
};
|
|
44
|
+
}, [isClient, Tooltip]);
|
|
45
|
+
if (!isClient || Tooltip === null) return children;
|
|
46
|
+
return /* @__PURE__ */ jsx(Tooltip, {
|
|
47
|
+
...props,
|
|
48
|
+
children
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
LazyTooltip.displayName = "LazyTooltip";
|
|
52
|
+
//#endregion
|
|
53
|
+
export { LazyTooltip as default };
|
package/dist/transform/Fade.d.ts
CHANGED
|
@@ -1,13 +1,35 @@
|
|
|
1
|
-
import type
|
|
2
|
-
export interface FadeProps {
|
|
3
|
-
/**
|
|
4
|
-
|
|
1
|
+
import { type AriaAttributes, type CSSProperties, type ReactNode } from "react";
|
|
2
|
+
export interface FadeProps extends AriaAttributes {
|
|
3
|
+
/** The content to fade in and out. */
|
|
4
|
+
children?: ReactNode;
|
|
5
|
+
/**
|
|
6
|
+
* Whether the content is shown. Changing it fades the content in or out. Controlled only; the
|
|
7
|
+
* host owns the state.
|
|
8
|
+
* @default false
|
|
9
|
+
*/
|
|
10
|
+
isOpen?: boolean;
|
|
11
|
+
/**
|
|
12
|
+
* Keep the content mounted while closed (transparent, `visibility: hidden`) so its state
|
|
13
|
+
* survives and it keeps its space in the layout. By default it unmounts after the fade-out.
|
|
14
|
+
* @default false
|
|
15
|
+
*/
|
|
16
|
+
shouldKeepMounted?: boolean;
|
|
17
|
+
/**
|
|
18
|
+
* Fade in when the component mounts already open (a message that appears with its row). By
|
|
19
|
+
* default a Fade that mounts open renders at rest. The server renders it transparent, so don't
|
|
20
|
+
* use it for server-rendered content that must be readable before JavaScript runs.
|
|
21
|
+
* @default false
|
|
22
|
+
*/
|
|
23
|
+
shouldAnimateOnMount?: boolean;
|
|
24
|
+
/** DOM id on the root `<div>`. */
|
|
25
|
+
id?: string;
|
|
26
|
+
/** Any `data-*` attribute, forwarded to the root `<div>`. */
|
|
27
|
+
[dataAttribute: `data-${string}`]: string | number | boolean | undefined;
|
|
28
|
+
/** Extra class on the root `<div>`. Must not set `opacity`, `transform` or `visibility`. */
|
|
29
|
+
className?: string;
|
|
30
|
+
/** Inline style on the root `<div>`; only for setting CSS custom properties. */
|
|
31
|
+
style?: CSSProperties;
|
|
5
32
|
}
|
|
6
|
-
/**
|
|
7
|
-
|
|
8
|
-
*
|
|
9
|
-
* The exit half only runs inside a framer-motion `AnimatePresence`. Fills its
|
|
10
|
-
* parent (100% × 100%).
|
|
11
|
-
*/
|
|
12
|
-
declare const Fade: ({ children, delay }: PropsWithChildren<FadeProps>) => import("react").JSX.Element;
|
|
33
|
+
/** Fades its content in and out; unmounts it when closed by default. */
|
|
34
|
+
declare const Fade: import("react").ForwardRefExoticComponent<FadeProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
13
35
|
export default Fade;
|