@galaxy-io/dls 1.6.1 → 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 -30
- package/dist/inputs/SwitcherInput.js +0 -81
- package/dist/inputs/hooks.d.ts +0 -10
- package/dist/inputs/hooks.js +0 -22
- package/dist/overlay/constants.d.ts +0 -28
- package/dist/overlay/constants.js +0 -37
- package/dist/resizable/HorizontalResizeHandle.d.ts +0 -17
- package/dist/resizable/HorizontalResizeHandle.js +0 -38
- package/dist/resizable/VerticalResizeHandle.d.ts +0 -18
- package/dist/resizable/VerticalResizeHandle.js +0 -39
- package/dist/table/SpreadsheetCell.d.ts +0 -21
- package/dist/table/SpreadsheetCell.js +0 -71
- package/dist/table/SpreadsheetHeaderCell.d.ts +0 -23
- package/dist/table/SpreadsheetHeaderCell.js +0 -91
- package/dist/table/SpreadsheetMenuItem.d.ts +0 -14
- package/dist/table/SpreadsheetMenuItem.js +0 -33
- package/dist/table/SpreadsheetPrimitives.d.ts +0 -172
- package/dist/table/SpreadsheetPrimitives.js +0 -105
- package/dist/table/SpreadsheetRow.d.ts +0 -33
- package/dist/table/SpreadsheetRow.js +0 -73
- package/dist/table/SpreadsheetRowActionCell.d.ts +0 -14
- package/dist/table/SpreadsheetRowActionCell.js +0 -51
- package/dist/table/TableExpandCell.d.ts +0 -11
- package/dist/table/TableExpandCell.js +0 -24
- package/dist/table/TableExpandedRow.d.ts +0 -16
- package/dist/table/TableExpandedRow.js +0 -77
- package/dist/table/TableHeaderCellContent.d.ts +0 -30
- package/dist/table/TableHeaderCellContent.js +0 -48
- package/dist/table/TablePrimitives.d.ts +0 -313
- package/dist/table/TablePrimitives.js +0 -302
- package/dist/table/TableSelectCell.d.ts +0 -18
- package/dist/table/TableSelectCell.js +0 -27
- package/dist/table/TableStatusRow.d.ts +0 -18
- package/dist/table/TableStatusRow.js +0 -50
- package/dist/table/useSpreadsheetEditing.d.ts +0 -13
- package/dist/table/useSpreadsheetEditing.js +0 -41
- package/dist/table/useTableColumnResize.d.ts +0 -38
- package/dist/table/useTableColumnResize.js +0 -155
- package/dist/table/useTableRowExpansion.d.ts +0 -24
- package/dist/table/useTableRowExpansion.js +0 -62
- package/dist/table/utils.d.ts +0 -50
- package/dist/table/utils.js +0 -78
- package/dist/text/HotKeys.d.ts +0 -30
- package/dist/text/HotKeys.js +0 -74
- package/dist/text/Paragraph.d.ts +0 -33
- package/dist/text/Paragraph.js +0 -83
- package/dist/text/TextShimmer.d.ts +0 -14
- package/dist/text/TextShimmer.js +0 -34
- package/dist/theme/GalaxyTheme.d.ts +0 -67
- package/dist/theme/GalaxyTheme.js +0 -119
- package/dist/theme/constants.d.ts +0 -8
- package/dist/theme/constants.js +0 -38
- package/dist/theme/index.d.ts +0 -6
- package/dist/theme/index.js +0 -7
- package/dist/theme/types.d.ts +0 -195
- package/dist/theme/types.js +0 -10
- package/dist/theme/typography.d.ts +0 -2
- package/dist/theme/typography.js +0 -73
- package/dist/theme/variants/dark.d.ts +0 -2
- package/dist/theme/variants/dark.js +0 -125
- package/dist/theme/variants/light.d.ts +0 -2
- package/dist/theme/variants/light.js +0 -125
- package/dist/toast/ToastContainer.d.ts +0 -10
- package/dist/toast/ToastContainer.js +0 -31
- package/dist/toast/ToastWrapper.d.ts +0 -6
- package/dist/toast/ToastWrapper.js +0 -27
- package/dist/transform/Flash.d.ts +0 -7
- package/dist/transform/Flash.js +0 -18
- package/dist/transform/Spin.d.ts +0 -14
- package/dist/transform/Spin.js +0 -25
- package/dist/utils/linaria.d.ts +0 -1
- package/dist/utils/linaria.js +0 -8
|
@@ -1,37 +1,82 @@
|
|
|
1
|
-
import Text, { TextSize, TextVariant
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import Circle from "../shapes/Circle.js";
|
|
1
|
+
import Text, { TextSize, TextVariant } from "../text/Text.js";
|
|
2
|
+
import Flex, { AlignItems, FlexDirection } from "../layout/Flex.js";
|
|
3
|
+
import "./constants.js";
|
|
4
|
+
import Circle, { CircleSize } from "../shapes/Circle.js";
|
|
5
|
+
import Square, { SquareSize } from "../shapes/Square.js";
|
|
6
|
+
import { ChartLegendSwatch } from "./ChartLegend.js";
|
|
7
|
+
import Grid, { GridAlignItems } from "../layout/Grid.js";
|
|
5
8
|
import { useChartTooltipPosition } from "./useChartTooltipPosition.js";
|
|
6
|
-
|
|
9
|
+
/* empty css */
|
|
10
|
+
import { styled } from "@linaria/react";
|
|
7
11
|
import { Fragment, useState } from "react";
|
|
8
12
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
13
|
+
import { cx } from "@linaria/core";
|
|
9
14
|
//#region src/charts/ChartTooltip.tsx
|
|
10
|
-
|
|
15
|
+
/**
|
|
16
|
+
* @internal The in-chart tooltip: an absolutely positioned box inside the plot box, anchored to a
|
|
17
|
+
* geometric point that tracks the engaged category (not the `Tooltip` component, which anchors
|
|
18
|
+
* to a trigger element; chartgroupprovider.md Decision 8). It stays mounted so it can fade out,
|
|
19
|
+
* keeping its last content while it does. `aria-hidden`: keyboard moves are announced through the
|
|
20
|
+
* frame's live region instead.
|
|
21
|
+
*/
|
|
22
|
+
/** The positioned box. Position arrives as `--gx-chart-tooltip-x` / `-y` (continuous values). */
|
|
23
|
+
var Root = /*#__PURE__*/ styled("div")({
|
|
24
|
+
name: "Root",
|
|
25
|
+
class: "gx-ChartTooltip-rtysfji",
|
|
26
|
+
propsAsIs: false
|
|
27
|
+
});
|
|
28
|
+
/** Shown. Declared after `Root` so it wins. */
|
|
29
|
+
var VISIBLE_STATE_CSS = "gx-ChartTooltip-VISIBLE_STATE_CSS-v1o4v2om";
|
|
30
|
+
function Row({ row, swatch }) {
|
|
31
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsxs(Flex, {
|
|
32
|
+
alignItems: AlignItems.CENTER,
|
|
33
|
+
gap: 8,
|
|
34
|
+
minWidth: 0,
|
|
35
|
+
children: [swatch === ChartLegendSwatch.SQUARE ? /* @__PURE__ */ jsx(Square, {
|
|
36
|
+
size: SquareSize.SMALL,
|
|
37
|
+
hex: row.color
|
|
38
|
+
}) : /* @__PURE__ */ jsx(Circle, {
|
|
39
|
+
size: CircleSize.SMALL,
|
|
40
|
+
hex: row.color
|
|
41
|
+
}), /* @__PURE__ */ jsx(Text, {
|
|
42
|
+
size: TextSize.BODY_SM,
|
|
43
|
+
variant: TextVariant.SECONDARY,
|
|
44
|
+
lineClamp: 1,
|
|
45
|
+
children: row.label
|
|
46
|
+
})]
|
|
47
|
+
}), /* @__PURE__ */ jsx(Text, {
|
|
48
|
+
size: TextSize.BODY_SM,
|
|
49
|
+
isTabular: true,
|
|
50
|
+
align: "right",
|
|
51
|
+
children: row.formattedValue
|
|
52
|
+
})] });
|
|
53
|
+
}
|
|
54
|
+
/** @internal The chart tooltip body and positioner. */
|
|
55
|
+
function ChartTooltip({ model, containerWidth, containerHeight, anchorHalfWidth, placeAwayFromX, verticalAlign, renderTooltip, swatch = ChartLegendSwatch.CIRCLE }) {
|
|
11
56
|
const [retained, setRetained] = useState(model);
|
|
12
57
|
if (model !== null && model !== retained) setRetained(model);
|
|
58
|
+
const displayed = model ?? retained;
|
|
13
59
|
const { tooltipRef, x, y, isMeasured } = useChartTooltipPosition({
|
|
14
|
-
anchorX:
|
|
15
|
-
anchorY:
|
|
60
|
+
anchorX: displayed?.anchorX ?? 0,
|
|
61
|
+
anchorY: displayed?.anchorY ?? 0,
|
|
16
62
|
containerWidth,
|
|
17
63
|
containerHeight,
|
|
18
64
|
anchorHalfWidth,
|
|
19
65
|
placeAwayFromX,
|
|
20
66
|
verticalAlign
|
|
21
67
|
});
|
|
22
|
-
const displayed = model ?? retained;
|
|
23
68
|
const rows = displayed?.rows ?? [];
|
|
24
|
-
const
|
|
25
|
-
const visibleRows = rows.slice(0, cap);
|
|
69
|
+
const visibleRows = rows.slice(0, 8);
|
|
26
70
|
const hiddenCount = rows.length - visibleRows.length;
|
|
27
|
-
return /* @__PURE__ */ jsx(
|
|
71
|
+
return /* @__PURE__ */ jsx(Root, {
|
|
28
72
|
ref: tooltipRef,
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
73
|
+
"aria-hidden": "true",
|
|
74
|
+
className: cx(model !== null && isMeasured && VISIBLE_STATE_CSS),
|
|
75
|
+
style: {
|
|
76
|
+
"--gx-chart-tooltip-x": `${x}px`,
|
|
77
|
+
"--gx-chart-tooltip-y": `${y}px`
|
|
78
|
+
},
|
|
79
|
+
children: displayed === null ? null : renderTooltip ? renderTooltip(displayed) : /* @__PURE__ */ jsxs(Flex, {
|
|
35
80
|
direction: FlexDirection.COLUMN,
|
|
36
81
|
gap: 8,
|
|
37
82
|
fillWidth: true,
|
|
@@ -39,37 +84,29 @@ var ChartTooltip = ({ model, containerWidth, containerHeight, anchorHalfWidth, p
|
|
|
39
84
|
/* @__PURE__ */ jsx(Text, {
|
|
40
85
|
size: TextSize.BODY_SM,
|
|
41
86
|
variant: TextVariant.SECONDARY,
|
|
42
|
-
|
|
87
|
+
lineClamp: 1,
|
|
43
88
|
children: displayed.label
|
|
44
89
|
}),
|
|
45
|
-
|
|
90
|
+
rows.length === 0 ? /* @__PURE__ */ jsx(Text, {
|
|
46
91
|
size: TextSize.BODY_SM,
|
|
47
|
-
variant: TextVariant.SECONDARY,
|
|
48
92
|
children: "No data"
|
|
49
|
-
}) : /* @__PURE__ */ jsx(
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
children: row.label
|
|
59
|
-
})] }), /* @__PURE__ */ jsx(ChartTooltipValueCell, { children: /* @__PURE__ */ jsx(Text, {
|
|
60
|
-
size: TextSize.BODY_SM,
|
|
61
|
-
weight: TextWeight.MEDIUM,
|
|
62
|
-
align: "right",
|
|
63
|
-
children: row.formattedValue
|
|
64
|
-
}) })] }, row.key)) }),
|
|
93
|
+
}) : /* @__PURE__ */ jsx(Grid, {
|
|
94
|
+
columns: "minmax(0, 1fr) auto",
|
|
95
|
+
gap: [4, 16],
|
|
96
|
+
alignItems: GridAlignItems.CENTER,
|
|
97
|
+
children: visibleRows.map((row) => /* @__PURE__ */ jsx(Row, {
|
|
98
|
+
row,
|
|
99
|
+
swatch
|
|
100
|
+
}, row.key))
|
|
101
|
+
}),
|
|
65
102
|
hiddenCount > 0 && /* @__PURE__ */ jsx(Text, {
|
|
66
103
|
size: TextSize.BODY_SM,
|
|
67
|
-
variant: TextVariant.
|
|
104
|
+
variant: TextVariant.TERTIARY,
|
|
68
105
|
children: `+${hiddenCount} more`
|
|
69
106
|
})
|
|
70
107
|
]
|
|
71
108
|
})
|
|
72
109
|
});
|
|
73
|
-
}
|
|
110
|
+
}
|
|
74
111
|
//#endregion
|
|
75
|
-
export { ChartTooltip
|
|
112
|
+
export { ChartTooltip };
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { type BaseChartProps, type ChartLabelFormatter, ChartPalette, type ChartValueDomain } from "./types.js";
|
|
2
|
+
/** One cell of the grid. */
|
|
3
|
+
export interface HeatmapCellDatum {
|
|
4
|
+
/** Column label; must match a column on the x-axis. */
|
|
5
|
+
column: string;
|
|
6
|
+
/** Row label; must match a row on the y-axis. */
|
|
7
|
+
row: string;
|
|
8
|
+
/** Value; `null` is an empty cell (no reading), which is not the same as 0. */
|
|
9
|
+
value: number | null;
|
|
10
|
+
}
|
|
11
|
+
/** Heatmap's own props; the shared chart props follow (`BaseChartProps`). */
|
|
12
|
+
interface HeatmapOwnProps {
|
|
13
|
+
/** One entry per filled cell. A column × row pair with no entry, or `value: null`, is an empty cell. */
|
|
14
|
+
cells: HeatmapCellDatum[];
|
|
15
|
+
/** Column order, left to right (e.g. hours). Pass it when some columns have no cells. @default every cell's `column`, first-seen order */
|
|
16
|
+
columns?: string[];
|
|
17
|
+
/** Row order, top to bottom (e.g. weekdays). Pass it when some rows have no cells. @default every cell's `row`, first-seen order */
|
|
18
|
+
rows?: string[];
|
|
19
|
+
/**
|
|
20
|
+
* The hue whose ramp fills the cells. `PRIMARY`, `SECONDARY` and `TERTIARY` use the `indigo`, `sky` and `violet` ramps (no gray).
|
|
21
|
+
* @default ChartPalette.PURPLE
|
|
22
|
+
*/
|
|
23
|
+
color?: ChartPalette;
|
|
24
|
+
/**
|
|
25
|
+
* Formats column and row labels on the axes and in the tooltip heading. Selection still matches raw labels.
|
|
26
|
+
* @default (label) => label
|
|
27
|
+
*/
|
|
28
|
+
labelFormatter?: ChartLabelFormatter;
|
|
29
|
+
/** `min` / `max` of the color ramp (`tickCount` is ignored). Fix it to compare heatmaps. @default [smallest, largest] of the non-null values */
|
|
30
|
+
valueDomain?: Partial<ChartValueDomain>;
|
|
31
|
+
}
|
|
32
|
+
export type HeatmapProps = HeatmapOwnProps & BaseChartProps<string>;
|
|
33
|
+
/** A grid of cells colored by value along one hue's token ramp. */
|
|
34
|
+
declare const Heatmap: import("react").ForwardRefExoticComponent<HeatmapOwnProps & BaseChartProps<string> & import("react").RefAttributes<HTMLDivElement>>;
|
|
35
|
+
export default Heatmap;
|
|
@@ -0,0 +1,295 @@
|
|
|
1
|
+
import { Orientation } from "../theme/enums.js";
|
|
2
|
+
import Text, { TextSize, TextVariant } from "../text/Text.js";
|
|
3
|
+
import { t } from "../theme/tokens/t.js";
|
|
4
|
+
import Flex, { AlignItems } from "../layout/Flex.js";
|
|
5
|
+
import { ChartKind, ChartLegendPlacement, ChartMarkState, ChartPalette, ChartTargetShape } from "./types.js";
|
|
6
|
+
import { CHART_MARK_STATE_TO_CSS_MAP, HEATMAP_CELL_CSS, HEATMAP_EMPTY_CELL_CSS } from "./ChartPrimitives.js";
|
|
7
|
+
import { PLOT_INSET_BOTTOM, PLOT_INSET_RIGHT, PLOT_INSET_TOP } from "./constants.js";
|
|
8
|
+
import { clamp } from "./chartScales.js";
|
|
9
|
+
import { ChartCategoryAxis } from "./ChartAxis.js";
|
|
10
|
+
import Square, { SquareSize, SquareVariant } from "../shapes/Square.js";
|
|
11
|
+
import { ChartLegendSwatch } from "./ChartLegend.js";
|
|
12
|
+
import { ChartFrame } from "./ChartFrame.js";
|
|
13
|
+
import { formatChartValue } from "./chartFormat.js";
|
|
14
|
+
import { useChartDimensions } from "./useChartDimensions.js";
|
|
15
|
+
import { useChartFormatters } from "./useChartFormatters.js";
|
|
16
|
+
import { useChartInteraction } from "./useChartInteraction.js";
|
|
17
|
+
import { HEATMAP_CELL_RADIUS, HEATMAP_STEP_TO_TOKEN_MAP, buildHeatmapGeometry, estimateRowLabelInset, getHeatmapDomain, getHeatmapLabels } from "./heatmapGeometry.js";
|
|
18
|
+
/* empty css */
|
|
19
|
+
import { styled } from "@linaria/react";
|
|
20
|
+
import { forwardRef, useCallback, useMemo, useRef } from "react";
|
|
21
|
+
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
22
|
+
import { cx } from "@linaria/core";
|
|
23
|
+
//#region src/charts/Heatmap.tsx
|
|
24
|
+
/**
|
|
25
|
+
* Heatmap shows a value for every pair of two categories (hour × weekday, endpoint × region) as a
|
|
26
|
+
* grid of cells whose fill gets stronger as the value grows. The fill is one hue's token ramp in
|
|
27
|
+
* five steps (`color`, a `ChartPalette` slot), so it follows the theme; a
|
|
28
|
+
* missing value is an empty, outlined cell. Hover and arrow keys move cell by cell (Up / Down by
|
|
29
|
+
* row); the tooltip names the column, the row and the value; a click or Enter reports the cell. A
|
|
30
|
+
* step legend shows the low and high ends. It does not join `ChartGroupProvider` sync.
|
|
31
|
+
*
|
|
32
|
+
* The chart fills its parent; with no definite parent height it takes an aspect ratio of columns
|
|
33
|
+
* to rows (clamped 1–4), so cells stay near-square. Needs the optional peers `d3-scale` and
|
|
34
|
+
* `d3-shape`.
|
|
35
|
+
*/
|
|
36
|
+
var DEFAULT_PLACEHOLDER = "No data available";
|
|
37
|
+
/** The step legend: aligned with the plot's left edge (a continuous inset). */
|
|
38
|
+
var LegendRoot = /*#__PURE__*/ styled("div")({
|
|
39
|
+
name: "LegendRoot",
|
|
40
|
+
class: "gx-Heatmap-LegendRoot-lii3tjm",
|
|
41
|
+
propsAsIs: false
|
|
42
|
+
});
|
|
43
|
+
/** A ramp swatch: a `Square INHERIT` that fills with this wrapper's `color`. */
|
|
44
|
+
var RampSwatch = /*#__PURE__*/ styled("span")({
|
|
45
|
+
name: "RampSwatch",
|
|
46
|
+
class: "gx-Heatmap-RampSwatch-r12vxnd7",
|
|
47
|
+
propsAsIs: false
|
|
48
|
+
});
|
|
49
|
+
/** The "No data" swatch: an outlined square the size of `SquareSize.SMALL`. */
|
|
50
|
+
var EmptySwatch = /*#__PURE__*/ styled("span")({
|
|
51
|
+
name: "EmptySwatch",
|
|
52
|
+
class: "gx-Heatmap-EmptySwatch-echoni0",
|
|
53
|
+
propsAsIs: false
|
|
54
|
+
});
|
|
55
|
+
function HeatmapLegend({ ramp, min, max, hasEmpty, inset }) {
|
|
56
|
+
return /* @__PURE__ */ jsx(LegendRoot, {
|
|
57
|
+
style: { "--gx-heatmap-legend-inset": `${inset}px` },
|
|
58
|
+
children: /* @__PURE__ */ jsxs(Flex, {
|
|
59
|
+
alignItems: AlignItems.CENTER,
|
|
60
|
+
gap: 8,
|
|
61
|
+
children: [
|
|
62
|
+
/* @__PURE__ */ jsx(Text, {
|
|
63
|
+
size: TextSize.CAPTION,
|
|
64
|
+
variant: TextVariant.TERTIARY,
|
|
65
|
+
isTabular: true,
|
|
66
|
+
children: min
|
|
67
|
+
}),
|
|
68
|
+
ramp.map((token) => /* @__PURE__ */ jsx(RampSwatch, {
|
|
69
|
+
style: { "--gx-chart-mark-color": token },
|
|
70
|
+
children: /* @__PURE__ */ jsx(Square, {
|
|
71
|
+
size: SquareSize.SMALL,
|
|
72
|
+
variant: SquareVariant.INHERIT
|
|
73
|
+
})
|
|
74
|
+
}, token)),
|
|
75
|
+
/* @__PURE__ */ jsx(Text, {
|
|
76
|
+
size: TextSize.CAPTION,
|
|
77
|
+
variant: TextVariant.TERTIARY,
|
|
78
|
+
isTabular: true,
|
|
79
|
+
children: max
|
|
80
|
+
}),
|
|
81
|
+
hasEmpty && /* @__PURE__ */ jsxs(Flex, {
|
|
82
|
+
alignItems: AlignItems.CENTER,
|
|
83
|
+
gap: 8,
|
|
84
|
+
padding: [
|
|
85
|
+
0,
|
|
86
|
+
0,
|
|
87
|
+
0,
|
|
88
|
+
8
|
|
89
|
+
],
|
|
90
|
+
children: [/* @__PURE__ */ jsx(EmptySwatch, {}), /* @__PURE__ */ jsx(Text, {
|
|
91
|
+
size: TextSize.CAPTION,
|
|
92
|
+
variant: TextVariant.TERTIARY,
|
|
93
|
+
children: "No data"
|
|
94
|
+
})]
|
|
95
|
+
})
|
|
96
|
+
]
|
|
97
|
+
})
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
/** A grid of cells colored by value along one hue's token ramp. */
|
|
101
|
+
var Heatmap = forwardRef(function Heatmap(props, ref) {
|
|
102
|
+
const { cells, columns: explicitColumns, rows: explicitRows, color = ChartPalette.PURPLE, labelFormatter, valueDomain, valueFormatter, hasLegend = true, hasTooltip = true, renderTooltip, isLoading = false, placeholder = DEFAULT_PLACEHOLDER, onSelect, selection, ariaLabel, id, className, style, ...rest } = props;
|
|
103
|
+
const plotRef = useRef(null);
|
|
104
|
+
const { formatValue, formatLabel } = useChartFormatters(valueFormatter, labelFormatter);
|
|
105
|
+
const { columns, rows } = useMemo(() => getHeatmapLabels(cells, explicitColumns, explicitRows), [
|
|
106
|
+
cells,
|
|
107
|
+
explicitColumns,
|
|
108
|
+
explicitRows
|
|
109
|
+
]);
|
|
110
|
+
const domainMin = valueDomain?.min;
|
|
111
|
+
const domainMax = valueDomain?.max;
|
|
112
|
+
const domain = useMemo(() => getHeatmapDomain(cells, {
|
|
113
|
+
min: domainMin,
|
|
114
|
+
max: domainMax
|
|
115
|
+
}), [
|
|
116
|
+
cells,
|
|
117
|
+
domainMin,
|
|
118
|
+
domainMax
|
|
119
|
+
]);
|
|
120
|
+
const ramp = HEATMAP_STEP_TO_TOKEN_MAP[color];
|
|
121
|
+
const formattedRows = useMemo(() => rows.map(formatLabel), [rows, formatLabel]);
|
|
122
|
+
const insetLeft = useMemo(() => estimateRowLabelInset(formattedRows), [formattedRows]);
|
|
123
|
+
const dimensions = useChartDimensions(plotRef, useMemo(() => ({
|
|
124
|
+
top: PLOT_INSET_TOP,
|
|
125
|
+
right: PLOT_INSET_RIGHT,
|
|
126
|
+
bottom: PLOT_INSET_BOTTOM,
|
|
127
|
+
left: insetLeft
|
|
128
|
+
}), [insetLeft]));
|
|
129
|
+
const { plotWidth, plotHeight } = dimensions;
|
|
130
|
+
const geometry = useMemo(() => buildHeatmapGeometry({
|
|
131
|
+
cells,
|
|
132
|
+
columns,
|
|
133
|
+
rows,
|
|
134
|
+
domain,
|
|
135
|
+
plotWidth,
|
|
136
|
+
plotHeight
|
|
137
|
+
}), [
|
|
138
|
+
cells,
|
|
139
|
+
columns,
|
|
140
|
+
rows,
|
|
141
|
+
domain,
|
|
142
|
+
plotWidth,
|
|
143
|
+
plotHeight
|
|
144
|
+
]);
|
|
145
|
+
const isEmpty = columns.length === 0 || rows.length === 0;
|
|
146
|
+
const cellCount = columns.length * rows.length;
|
|
147
|
+
const cellColumnKeys = useMemo(() => rows.flatMap(() => columns), [rows, columns]);
|
|
148
|
+
const grid = useMemo(() => ({ columns: Math.max(1, columns.length) }), [columns.length]);
|
|
149
|
+
const interaction = useChartInteraction({
|
|
150
|
+
categoryCount: cellCount,
|
|
151
|
+
categoryKeys: cellColumnKeys,
|
|
152
|
+
enableGroupSync: false,
|
|
153
|
+
selection,
|
|
154
|
+
categoryMuteState: ChartMarkState.ACTIVE,
|
|
155
|
+
isDisabled: !(hasTooltip || onSelect) || isLoading || isEmpty,
|
|
156
|
+
isLoading,
|
|
157
|
+
grid
|
|
158
|
+
});
|
|
159
|
+
const stepColor = useCallback((cell) => cell.step === null ? t.color.border.primary : ramp[cell.step] ?? "", [ramp]);
|
|
160
|
+
const buildCategoryTooltip = useCallback((index) => {
|
|
161
|
+
const cell = geometry.cells[index];
|
|
162
|
+
if (!cell) return null;
|
|
163
|
+
return {
|
|
164
|
+
label: `${formatLabel(cell.column)} · ${formatLabel(cell.row)}`,
|
|
165
|
+
rows: [{
|
|
166
|
+
key: cell.id,
|
|
167
|
+
label: "Value",
|
|
168
|
+
value: cell.value,
|
|
169
|
+
formattedValue: formatChartValue(cell.value, formatValue),
|
|
170
|
+
color: stepColor(cell)
|
|
171
|
+
}],
|
|
172
|
+
anchorX: cell.x + cell.width / 2,
|
|
173
|
+
anchorY: cell.y
|
|
174
|
+
};
|
|
175
|
+
}, [
|
|
176
|
+
geometry.cells,
|
|
177
|
+
formatLabel,
|
|
178
|
+
formatValue,
|
|
179
|
+
stepColor
|
|
180
|
+
]);
|
|
181
|
+
const describeCategory = useCallback((index) => {
|
|
182
|
+
const cell = geometry.cells[index];
|
|
183
|
+
if (!cell) return "";
|
|
184
|
+
const value = cell.value === null ? "no data" : formatValue(cell.value);
|
|
185
|
+
return `${formatLabel(cell.column)}, ${formatLabel(cell.row)}: ${value}.`;
|
|
186
|
+
}, [
|
|
187
|
+
geometry.cells,
|
|
188
|
+
formatLabel,
|
|
189
|
+
formatValue
|
|
190
|
+
]);
|
|
191
|
+
const categoryTargets = useMemo(() => geometry.cells.map((cell) => {
|
|
192
|
+
const x0 = Math.max(0, cell.x - geometry.gapX / 2);
|
|
193
|
+
const y0 = Math.max(0, cell.y - geometry.gapY / 2);
|
|
194
|
+
const x1 = Math.min(plotWidth, cell.x + cell.width + geometry.gapX / 2);
|
|
195
|
+
const y1 = Math.min(plotHeight, cell.y + cell.height + geometry.gapY / 2);
|
|
196
|
+
return {
|
|
197
|
+
key: cell.id,
|
|
198
|
+
shape: ChartTargetShape.RECT,
|
|
199
|
+
x: x0,
|
|
200
|
+
y: y0,
|
|
201
|
+
width: x1 - x0,
|
|
202
|
+
height: y1 - y0
|
|
203
|
+
};
|
|
204
|
+
}), [
|
|
205
|
+
geometry,
|
|
206
|
+
plotWidth,
|
|
207
|
+
plotHeight
|
|
208
|
+
]);
|
|
209
|
+
const handleSelect = useCallback((index) => {
|
|
210
|
+
const cell = geometry.cells[index];
|
|
211
|
+
if (!cell || !onSelect) return;
|
|
212
|
+
onSelect({
|
|
213
|
+
categoryIndex: cell.columnIndex,
|
|
214
|
+
categoryKey: cell.column,
|
|
215
|
+
seriesKey: cell.row,
|
|
216
|
+
...cell.value !== null && { value: cell.value }
|
|
217
|
+
});
|
|
218
|
+
}, [geometry.cells, onSelect]);
|
|
219
|
+
const passedAriaLabel = typeof rest["aria-label"] === "string" ? rest["aria-label"] : void 0;
|
|
220
|
+
const resolvedAriaLabel = ariaLabel ?? passedAriaLabel ?? `Heatmap, ${columns.length} columns by ${rows.length} rows`;
|
|
221
|
+
const aspectRatio = clamp(columns.length / Math.max(1, rows.length), 1, 4);
|
|
222
|
+
return /* @__PURE__ */ jsx(ChartFrame, {
|
|
223
|
+
rootRef: ref,
|
|
224
|
+
plotRef,
|
|
225
|
+
id,
|
|
226
|
+
className,
|
|
227
|
+
style,
|
|
228
|
+
rest,
|
|
229
|
+
dimensions,
|
|
230
|
+
interaction,
|
|
231
|
+
kind: ChartKind.HEATMAP,
|
|
232
|
+
categoryCount: cellCount,
|
|
233
|
+
ariaLabel: resolvedAriaLabel,
|
|
234
|
+
aspectRatio,
|
|
235
|
+
axes: /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(ChartCategoryAxis, {
|
|
236
|
+
labels: columns,
|
|
237
|
+
positions: geometry.columnPositions,
|
|
238
|
+
step: geometry.columnStep,
|
|
239
|
+
plotWidth,
|
|
240
|
+
plotHeight,
|
|
241
|
+
orientation: Orientation.HORIZONTAL,
|
|
242
|
+
insetLeft,
|
|
243
|
+
formatter: formatLabel
|
|
244
|
+
}), /* @__PURE__ */ jsx(ChartCategoryAxis, {
|
|
245
|
+
labels: rows,
|
|
246
|
+
positions: geometry.rowPositions,
|
|
247
|
+
step: geometry.rowStep,
|
|
248
|
+
plotWidth,
|
|
249
|
+
plotHeight,
|
|
250
|
+
orientation: Orientation.VERTICAL,
|
|
251
|
+
insetLeft,
|
|
252
|
+
formatter: formatLabel
|
|
253
|
+
})] }),
|
|
254
|
+
describeCategory,
|
|
255
|
+
hasTooltip,
|
|
256
|
+
buildCategoryTooltip,
|
|
257
|
+
renderTooltip,
|
|
258
|
+
categoryTargets,
|
|
259
|
+
onCategorySelect: onSelect && handleSelect,
|
|
260
|
+
anchorHalfWidth: (geometry.cells[0]?.width ?? 0) / 2,
|
|
261
|
+
isEmpty,
|
|
262
|
+
isLoading,
|
|
263
|
+
placeholder,
|
|
264
|
+
hasLegend,
|
|
265
|
+
legendItems: [],
|
|
266
|
+
legendPlacement: ChartLegendPlacement.BOTTOM,
|
|
267
|
+
legendSwatch: ChartLegendSwatch.SQUARE,
|
|
268
|
+
legend: isEmpty ? null : /* @__PURE__ */ jsx(HeatmapLegend, {
|
|
269
|
+
ramp,
|
|
270
|
+
min: formatValue(domain[0]),
|
|
271
|
+
max: formatValue(domain[1]),
|
|
272
|
+
hasEmpty: geometry.hasEmptyCells,
|
|
273
|
+
inset: insetLeft
|
|
274
|
+
}),
|
|
275
|
+
children: geometry.cells.map((cell, index) => {
|
|
276
|
+
let state = interaction.getMarkState({
|
|
277
|
+
categoryIndex: index,
|
|
278
|
+
seriesKey: cell.row
|
|
279
|
+
});
|
|
280
|
+
if (state === ChartMarkState.MUTED && !isLoading) state = ChartMarkState.DIMMED;
|
|
281
|
+
return /* @__PURE__ */ jsx("rect", {
|
|
282
|
+
x: cell.x,
|
|
283
|
+
y: cell.y,
|
|
284
|
+
width: cell.width,
|
|
285
|
+
height: cell.height,
|
|
286
|
+
rx: HEATMAP_CELL_RADIUS,
|
|
287
|
+
className: cx(cell.step === null ? HEATMAP_EMPTY_CELL_CSS : HEATMAP_CELL_CSS, interaction.activeIndex === index && "gx-ChartPrimitives-HEATMAP_ACTIVE_CELL_CSS-h17guewt", CHART_MARK_STATE_TO_CSS_MAP[state]),
|
|
288
|
+
style: cell.step === null ? void 0 : { "--gx-chart-mark-color": stepColor(cell) }
|
|
289
|
+
}, cell.id);
|
|
290
|
+
})
|
|
291
|
+
});
|
|
292
|
+
});
|
|
293
|
+
Heatmap.displayName = "Heatmap";
|
|
294
|
+
//#endregion
|
|
295
|
+
export { Heatmap as default };
|
|
@@ -1,57 +1,64 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import type
|
|
3
|
-
|
|
1
|
+
import { type ReactElement, type RefAttributes } from "react";
|
|
2
|
+
import { type BaseCartesianChartProps, ChartCurve, ChartKind, type ChartSeriesStyles } from "./types.js";
|
|
3
|
+
/** One reading on a line. */
|
|
4
|
+
export interface LineChartPointDatum {
|
|
5
|
+
/** Category this point sits on; must match a category on the axis. */
|
|
6
|
+
x: string;
|
|
7
|
+
/** Value; `null` breaks the line (a missing reading is not zero). */
|
|
8
|
+
y: number | null;
|
|
9
|
+
}
|
|
10
|
+
/** One line. Its label and color come from the chart's `series` record, keyed by `metric`. */
|
|
11
|
+
export interface LineChartLineDatum<TMetric extends string> {
|
|
12
|
+
/** Which metric this line draws; a key of `series`. */
|
|
13
|
+
metric: TMetric;
|
|
14
|
+
/** Points in category order. Sparse is fine: a missing category is a gap. */
|
|
15
|
+
points: LineChartPointDatum[];
|
|
4
16
|
/**
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* `TMetric` is inferred from these keys alone — `lines` wraps it in
|
|
8
|
-
* `NoInfer` — so a mistyped metric is a compile error rather than a line
|
|
9
|
-
* that silently fails to draw.
|
|
17
|
+
* Draw the line dashed (4px dash, 4px gap): a forecast, a target, a previous period.
|
|
18
|
+
* @default false
|
|
10
19
|
*/
|
|
20
|
+
isDashed?: boolean;
|
|
21
|
+
}
|
|
22
|
+
/** LineChart's own props; the shared chart props follow (`BaseCartesianChartProps`). */
|
|
23
|
+
interface LineChartOwnProps<TMetric extends string> {
|
|
24
|
+
/** Label and color for every metric, keyed by metric. `TMetric` is inferred from these keys only, so a misspelt metric in `lines` is a type error. */
|
|
11
25
|
series: ChartSeriesStyles<TMetric>;
|
|
12
|
-
/** One entry per line. Lines may be sparse. */
|
|
26
|
+
/** One entry per line. Lines may be sparse; a missing category or a `null` reading is a gap. */
|
|
13
27
|
lines: LineChartLineDatum<NoInfer<TMetric>>[];
|
|
14
|
-
/**
|
|
15
|
-
* Explicit category order along the x-axis.
|
|
16
|
-
*
|
|
17
|
-
* Worth supplying whenever the lines are sparse: the inferred order is the
|
|
18
|
-
* union of each line's categories in first-seen order, which is only
|
|
19
|
-
* correct if some line covers them all.
|
|
20
|
-
*/
|
|
28
|
+
/** Category order along the x-axis. Pass it whenever lines are sparse. @default the union of every line's `x`, first-seen order */
|
|
21
29
|
categories?: string[];
|
|
22
|
-
/** @default LineChartCurve.SMOOTH */
|
|
23
|
-
curve?: LineChartCurve;
|
|
24
|
-
/** Default stroke width in px, overridable per line. */
|
|
25
|
-
strokeWidth?: number;
|
|
26
|
-
/** Draw a vertical rule at the active category. @default true */
|
|
27
|
-
showCursor?: boolean;
|
|
28
|
-
/**
|
|
29
|
-
* Fires when a category is clicked. Supplying it is what makes the plot
|
|
30
|
-
* clickable.
|
|
31
|
-
*
|
|
32
|
-
* Always the category, never a single line: hit testing is per column here,
|
|
33
|
-
* and a line has no segment to land on — the reading at a category belongs
|
|
34
|
-
* to every line at once, which is exactly what the tooltip reports. Use
|
|
35
|
-
* `seriesKey` in {@link selection} to narrow to one line.
|
|
36
|
-
*/
|
|
37
|
-
onSelect?: (event: ChartSelectionEvent<NoInfer<TMetric>>) => void;
|
|
38
30
|
/**
|
|
39
|
-
*
|
|
40
|
-
*
|
|
41
|
-
* dots — the hover rule one step firmer, held rather than previewed.
|
|
42
|
-
*
|
|
43
|
-
* Presentational and never written by the chart: the state belongs to
|
|
44
|
-
* whatever the selection is filtering, so the two cannot drift apart.
|
|
31
|
+
* How segments between points are drawn.
|
|
32
|
+
* @default ChartCurve.SMOOTH
|
|
45
33
|
*/
|
|
46
|
-
|
|
47
|
-
}
|
|
34
|
+
curve?: ChartCurve;
|
|
35
|
+
}
|
|
36
|
+
export type LineChartProps<TMetric extends string> = LineChartOwnProps<TMetric> & BaseCartesianChartProps<NoInfer<TMetric>>;
|
|
37
|
+
/** @internal How `LineChartRoot` fills under its lines. */
|
|
38
|
+
export declare enum LineChartFill {
|
|
39
|
+
/** Lines only (LineChart). */
|
|
40
|
+
NONE = "NONE",
|
|
41
|
+
/** A translucent area to the baseline (AreaChart). */
|
|
42
|
+
AREA = "AREA"
|
|
43
|
+
}
|
|
44
|
+
/** @internal `LineChartRoot`'s extra props: the engine modes AreaChart sets. */
|
|
45
|
+
export interface LineChartRootProps<TMetric extends string> extends LineChartOwnProps<TMetric> {
|
|
46
|
+
/** Fill mode. */
|
|
47
|
+
fill: LineChartFill;
|
|
48
|
+
/** Stack the series in array order (AreaChart): top edges are running totals. */
|
|
49
|
+
isStacked: boolean;
|
|
50
|
+
/** Which chart (default name and legend swatch). */
|
|
51
|
+
kind: ChartKind;
|
|
52
|
+
}
|
|
53
|
+
/** @internal The generic signature of `LineChartRoot` (docgen reads an arrow function). */
|
|
54
|
+
declare const LINE_CHART_ROOT_SIGNATURE: <TMetric extends string>(_props: LineChartRootProps<TMetric> & BaseCartesianChartProps<NoInfer<TMetric>> & RefAttributes<HTMLDivElement>) => ReactElement | null;
|
|
55
|
+
/** @internal Shared by LineChart and AreaChart; apps use those. */
|
|
56
|
+
export declare const LineChartRoot: typeof LINE_CHART_ROOT_SIGNATURE;
|
|
48
57
|
/**
|
|
49
|
-
*
|
|
50
|
-
*
|
|
51
|
-
* Hit testing is per category column rather than per stroke: the tooltip
|
|
52
|
-
* reports every line at the hovered category at once, which is almost always
|
|
53
|
-
* what a reader wants, and it avoids the proximity search a
|
|
54
|
-
* nearest-point-to-cursor model needs.
|
|
58
|
+
* The public, generic call signature (`TMetric` inferred from `series`). Never called: it only
|
|
59
|
+
* types the default export. An arrow function so react-docgen-typescript reads the props.
|
|
55
60
|
*/
|
|
56
|
-
declare const
|
|
61
|
+
declare const LINE_CHART_SIGNATURE: <TMetric extends string>(_props: LineChartProps<TMetric> & RefAttributes<HTMLDivElement>) => ReactElement | null;
|
|
62
|
+
/** Lines over a categorical x-axis. */
|
|
63
|
+
declare const LineChart: typeof LINE_CHART_SIGNATURE;
|
|
57
64
|
export default LineChart;
|