@galaxy-io/dls 1.6.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +47 -50
- package/biome/index.json +74 -0
- package/biome/plugins/no-hex-literal.grit +20 -0
- package/biome/plugins/no-inline-style.grit +13 -0
- package/biome/plugins/no-margin.grit +9 -0
- package/biome/plugins/warn/no-hex-literal.grit +23 -0
- package/biome/plugins/warn/no-inline-style.grit +13 -0
- package/biome/plugins/warn/no-margin.grit +9 -0
- package/dist/a11y/FocusScope.d.ts +44 -0
- package/dist/a11y/FocusScope.js +229 -0
- package/dist/a11y/VisuallyHidden.d.ts +21 -0
- package/dist/a11y/VisuallyHidden.js +30 -0
- package/dist/avatar/Avatar.d.ts +56 -14
- package/dist/avatar/Avatar.js +250 -96
- package/dist/avatar/AvatarGroup.d.ts +43 -0
- package/dist/avatar/AvatarGroup.js +153 -0
- package/dist/backgrounds/GridBackground.d.ts +48 -0
- package/dist/backgrounds/GridBackground.js +146 -0
- package/dist/beacons/Beacon.d.ts +86 -22
- package/dist/beacons/Beacon.js +170 -47
- package/dist/brand/GalaxyFilamentWordmark.d.ts +30 -0
- package/dist/brand/GalaxyFilamentWordmark.js +39 -0
- package/dist/brand/GalaxyLogomark.d.ts +26 -0
- package/dist/brand/GalaxyLogomark.js +41 -0
- package/dist/brand/GalaxyLogomarkAnimation.d.ts +36 -0
- package/dist/brand/GalaxyLogomarkAnimation.js +107 -0
- package/dist/brand/GalaxyWordmark.d.ts +30 -0
- package/dist/brand/GalaxyWordmark.js +63 -0
- package/dist/brand/assets/galaxy-logomark-animation.js +136678 -0
- package/dist/brand/brandMark.d.ts +26 -0
- package/dist/brand/brandMark.js +35 -0
- package/dist/buttons/Button.d.ts +148 -59
- package/dist/buttons/Button.js +437 -227
- package/dist/buttons/ButtonGroup.d.ts +38 -0
- package/dist/buttons/ButtonGroup.js +68 -0
- package/dist/buttons/CopyButton.d.ts +77 -0
- package/dist/buttons/CopyButton.js +65 -0
- package/dist/charts/AreaChart.d.ts +49 -0
- package/dist/charts/AreaChart.js +31 -0
- package/dist/charts/BarChart.d.ts +54 -67
- package/dist/charts/BarChart.js +136 -116
- package/dist/charts/ChartAxis.d.ts +35 -40
- package/dist/charts/ChartAxis.js +114 -90
- package/dist/charts/ChartCategoryTargets.d.ts +12 -26
- package/dist/charts/ChartCategoryTargets.js +32 -20
- package/dist/charts/ChartFrame.d.ts +69 -116
- package/dist/charts/ChartFrame.js +253 -119
- package/dist/charts/ChartGroupProvider.d.ts +30 -41
- package/dist/charts/ChartGroupProvider.js +20 -7
- package/dist/charts/ChartLegend.d.ts +27 -48
- package/dist/charts/ChartLegend.js +206 -125
- package/dist/charts/ChartMarkTargets.d.ts +12 -28
- package/dist/charts/ChartMarkTargets.js +33 -20
- package/dist/charts/ChartPrimitives.d.ts +50 -305
- package/dist/charts/ChartPrimitives.js +65 -413
- package/dist/charts/ChartTooltip.d.ts +20 -26
- package/dist/charts/ChartTooltip.js +77 -40
- package/dist/charts/Heatmap.d.ts +35 -0
- package/dist/charts/Heatmap.js +295 -0
- package/dist/charts/LineChart.d.ts +54 -47
- package/dist/charts/LineChart.js +159 -117
- package/dist/charts/PieChart.d.ts +32 -53
- package/dist/charts/PieChart.js +149 -135
- package/dist/charts/Sparkline.d.ts +107 -0
- package/dist/charts/Sparkline.js +244 -0
- package/dist/charts/StatChart.d.ts +37 -13
- package/dist/charts/StatChart.js +82 -35
- package/dist/charts/barChartGeometry.d.ts +138 -86
- package/dist/charts/barChartGeometry.js +122 -101
- package/dist/charts/barChartLegend.d.ts +14 -18
- package/dist/charts/barChartLegend.js +18 -13
- package/dist/charts/chartFormat.d.ts +12 -18
- package/dist/charts/chartFormat.js +20 -52
- package/dist/charts/chartPalette.d.ts +33 -0
- package/dist/charts/chartPalette.js +68 -0
- package/dist/charts/chartScales.d.ts +41 -108
- package/dist/charts/chartScales.js +62 -128
- package/dist/charts/constants.d.ts +96 -256
- package/dist/charts/constants.js +105 -275
- package/dist/charts/heatmapGeometry.d.ts +95 -0
- package/dist/charts/heatmapGeometry.js +155 -0
- package/dist/charts/lineChartGeometry.d.ts +108 -58
- package/dist/charts/lineChartGeometry.js +120 -78
- package/dist/charts/pieChartGeometry.d.ts +66 -40
- package/dist/charts/pieChartGeometry.js +68 -38
- package/dist/charts/types.d.ts +197 -466
- package/dist/charts/types.js +55 -144
- package/dist/charts/useCartesianChartLayout.d.ts +28 -59
- package/dist/charts/useCartesianChartLayout.js +47 -32
- package/dist/charts/useChartDimensions.d.ts +19 -40
- package/dist/charts/useChartDimensions.js +40 -56
- package/dist/charts/useChartFormatters.d.ts +6 -15
- package/dist/charts/useChartFormatters.js +4 -9
- package/dist/charts/useChartInteraction.d.ts +47 -116
- package/dist/charts/useChartInteraction.js +95 -71
- package/dist/charts/useChartTooltipPosition.d.ts +29 -39
- package/dist/charts/useChartTooltipPosition.js +14 -5
- package/dist/charts/useSeriesColorResolver.d.ts +11 -33
- package/dist/charts/useSeriesColorResolver.js +19 -12
- package/dist/chips/Chip.d.ts +155 -44
- package/dist/chips/Chip.js +329 -155
- package/dist/chips/ChipGroup.d.ts +53 -0
- package/dist/chips/ChipGroup.js +98 -0
- package/dist/drawer/Drawer.d.ts +81 -17
- package/dist/drawer/Drawer.js +370 -65
- package/dist/dropdown/Dropdown.d.ts +80 -63
- package/dist/dropdown/Dropdown.js +127 -129
- package/dist/editor/CodeEditor.d.ts +119 -40
- package/dist/editor/CodeEditor.js +490 -400
- package/dist/editor/CodeEditorReactWidget.d.ts +20 -17
- package/dist/editor/CodeEditorReactWidget.js +28 -21
- package/dist/feedback/Alert.d.ts +49 -0
- package/dist/feedback/Alert.js +172 -0
- package/dist/feedback/EmptyState.d.ts +39 -0
- package/dist/feedback/EmptyState.js +109 -0
- package/dist/feedback/ProgressBar.d.ts +125 -0
- package/dist/feedback/ProgressBar.js +183 -0
- package/dist/feedback/ProgressCircle.d.ts +99 -0
- package/dist/feedback/ProgressCircle.js +187 -0
- package/dist/feedback/Skeleton.d.ts +69 -0
- package/dist/feedback/Skeleton.js +130 -0
- package/dist/feedback/Spinner.d.ts +63 -0
- package/dist/feedback/Spinner.js +141 -0
- package/dist/fonts.css +70 -0
- package/dist/hooks/internal/useIsClient.d.ts +2 -0
- package/dist/hooks/internal/useIsClient.js +14 -0
- package/dist/hooks/useClipboard.d.ts +19 -0
- package/dist/hooks/useClipboard.js +45 -0
- package/dist/hooks/useControlledOpenState.d.ts +21 -0
- package/dist/hooks/useControlledOpenState.js +19 -0
- package/dist/hooks/useControlledState.d.ts +19 -0
- package/dist/hooks/useControlledState.js +22 -0
- package/dist/hooks/useDebouncedValue.d.ts +14 -0
- package/dist/hooks/useDebouncedValue.js +33 -0
- package/dist/hooks/useDisclosure.d.ts +26 -0
- package/dist/hooks/useDisclosure.js +36 -0
- package/dist/hooks/useDismiss.d.ts +23 -27
- package/dist/hooks/useDismiss.js +39 -27
- package/dist/hooks/useElementClientSize.d.ts +10 -10
- package/dist/hooks/useElementClientSize.js +8 -11
- package/dist/hooks/useElementWidth.d.ts +6 -13
- package/dist/hooks/useElementWidth.js +6 -14
- package/dist/hooks/useField.d.ts +47 -0
- package/dist/hooks/useField.js +40 -0
- package/dist/hooks/useHotkey.d.ts +77 -0
- package/dist/hooks/useHotkey.js +246 -0
- package/dist/hooks/useIsMac.d.ts +12 -0
- package/dist/hooks/useIsMac.js +27 -0
- package/dist/hooks/useIsomorphicLayoutEffect.d.ts +17 -0
- package/dist/hooks/useIsomorphicLayoutEffect.js +20 -0
- package/dist/hooks/useLocalStorage.d.ts +28 -0
- package/dist/hooks/useLocalStorage.js +145 -0
- package/dist/hooks/useMediaQuery.d.ts +11 -0
- package/dist/hooks/useMediaQuery.js +23 -0
- package/dist/hooks/usePrefersReducedMotion.d.ts +12 -0
- package/dist/hooks/usePrefersReducedMotion.js +25 -0
- package/dist/hooks/useResize.d.ts +42 -62
- package/dist/hooks/useResize.js +43 -31
- package/dist/icons/Icon.d.ts +64 -37
- package/dist/icons/Icon.js +96 -37
- package/dist/icons/internal/IconSlot.d.ts +10 -0
- package/dist/icons/internal/IconSlot.js +32 -0
- package/dist/inputs/CheckboxGroup.d.ts +115 -0
- package/dist/inputs/CheckboxGroup.js +183 -0
- package/dist/inputs/CheckboxInput.d.ts +98 -28
- package/dist/inputs/CheckboxInput.js +218 -88
- package/dist/inputs/ColorInput.d.ts +115 -29
- package/dist/inputs/ColorInput.js +748 -326
- package/dist/inputs/CopyInput.d.ts +49 -20
- package/dist/inputs/CopyInput.js +57 -49
- package/dist/inputs/CronInput.d.ts +94 -0
- package/dist/inputs/CronInput.js +618 -0
- package/dist/inputs/DateInput.d.ts +175 -28
- package/dist/inputs/DateInput.js +1109 -451
- package/dist/inputs/DurationInput.d.ts +101 -0
- package/dist/inputs/DurationInput.js +441 -0
- package/dist/inputs/Field.d.ts +75 -0
- package/dist/inputs/Field.js +247 -0
- package/dist/inputs/Fieldset.d.ts +53 -0
- package/dist/inputs/Fieldset.js +149 -0
- package/dist/inputs/FileInput.d.ts +110 -0
- package/dist/inputs/FileInput.js +476 -0
- package/dist/inputs/Input.d.ts +148 -187
- package/dist/inputs/Input.js +339 -259
- package/dist/inputs/KeyValueInput.d.ts +120 -0
- package/dist/inputs/KeyValueInput.js +383 -0
- package/dist/inputs/MultiSelectInput.d.ts +165 -54
- package/dist/inputs/MultiSelectInput.js +175 -559
- package/dist/inputs/NumberInput.d.ts +65 -9
- package/dist/inputs/NumberInput.js +197 -40
- package/dist/inputs/PasswordInput.d.ts +17 -12
- package/dist/inputs/PasswordInput.js +33 -33
- package/dist/inputs/PinInput.d.ts +117 -0
- package/dist/inputs/PinInput.js +364 -0
- package/dist/inputs/RadioGroup.d.ts +115 -0
- package/dist/inputs/RadioGroup.js +179 -0
- package/dist/inputs/RadioInput.d.ts +87 -24
- package/dist/inputs/RadioInput.js +182 -95
- package/dist/inputs/SearchInput.d.ts +66 -0
- package/dist/inputs/SearchInput.js +156 -0
- package/dist/inputs/SelectInput.d.ts +195 -55
- package/dist/inputs/SelectInput.js +1308 -446
- package/dist/inputs/SliderInput.d.ts +150 -30
- package/dist/inputs/SliderInput.js +441 -186
- package/dist/inputs/SwitchInput.d.ts +109 -0
- package/dist/inputs/SwitchInput.js +248 -0
- package/dist/inputs/TagInput.d.ts +117 -0
- package/dist/inputs/TagInput.js +408 -0
- package/dist/inputs/TextAreaInput.d.ts +146 -44
- package/dist/inputs/TextAreaInput.js +292 -198
- package/dist/inputs/TextInput.d.ts +4 -13
- package/dist/inputs/TextInput.js +13 -48
- package/dist/inputs/ToggleInput.d.ts +120 -22
- package/dist/inputs/ToggleInput.js +262 -116
- package/dist/inputs/internal/bareField.d.ts +18 -0
- package/dist/inputs/internal/bareField.js +38 -0
- package/dist/inputs/internal/devWarn.d.ts +7 -0
- package/dist/inputs/internal/devWarn.js +30 -0
- package/dist/inputs/internal/fieldFrame.d.ts +34 -0
- package/dist/inputs/internal/fieldFrame.js +64 -0
- package/dist/inputs/internal/fieldWiring.d.ts +50 -0
- package/dist/inputs/internal/fieldWiring.js +38 -0
- package/dist/inputs/internal/innerButton.d.ts +2 -0
- package/dist/inputs/internal/innerButton.js +24 -0
- package/dist/inputs/internal/ownField.d.ts +45 -0
- package/dist/inputs/internal/ownField.js +58 -0
- package/dist/inputs/internal/predicates.d.ts +9 -0
- package/dist/inputs/internal/predicates.js +11 -0
- package/dist/inputs/internal/useComboboxPopover.d.ts +46 -0
- package/dist/inputs/internal/useComboboxPopover.js +92 -0
- package/dist/json/JsonViewer.d.ts +62 -0
- package/dist/json/JsonViewer.js +483 -0
- package/dist/layout/Box.d.ts +87 -0
- package/dist/layout/Box.js +109 -0
- package/dist/layout/Divider.d.ts +25 -0
- package/dist/layout/Divider.js +70 -0
- package/dist/layout/Flex.d.ts +139 -0
- package/dist/layout/Flex.js +165 -0
- package/dist/layout/FlexItem.d.ts +72 -0
- package/dist/layout/FlexItem.js +84 -0
- package/dist/layout/Grid.d.ts +140 -0
- package/dist/layout/Grid.js +178 -0
- package/dist/layout/Portal.d.ts +29 -0
- package/dist/layout/Portal.js +27 -0
- package/dist/layout/ResizablePanels.d.ts +88 -0
- package/dist/layout/ResizablePanels.js +198 -0
- package/dist/layout/ResizeHandle.d.ts +48 -0
- package/dist/layout/ResizeHandle.js +143 -0
- package/dist/layout/ScrollArea.d.ts +30 -0
- package/dist/layout/ScrollArea.js +138 -0
- package/dist/links/Link.d.ts +101 -1
- package/dist/links/Link.js +166 -4
- package/dist/lists/BulletedList.d.ts +25 -7
- package/dist/lists/BulletedList.js +72 -27
- package/dist/lists/DescriptionList.d.ts +91 -0
- package/dist/lists/DescriptionList.js +147 -0
- package/dist/menu/ContextMenu.d.ts +64 -0
- package/dist/menu/ContextMenu.js +34 -0
- package/dist/menu/Menu.d.ts +280 -0
- package/dist/menu/Menu.js +1003 -0
- package/dist/modal/ConfirmDialog.d.ts +55 -0
- package/dist/modal/ConfirmDialog.js +151 -0
- package/dist/modal/Modal.d.ts +64 -14
- package/dist/modal/Modal.js +189 -48
- package/dist/navigation/Breadcrumbs.d.ts +65 -0
- package/dist/navigation/Breadcrumbs.js +243 -0
- package/dist/navigation/CommandPalette.d.ts +83 -0
- package/dist/navigation/CommandPalette.js +509 -0
- package/dist/navigation/Pagination.d.ts +87 -0
- package/dist/navigation/Pagination.js +300 -0
- package/dist/navigation/SidebarNav.d.ts +107 -0
- package/dist/navigation/SidebarNav.js +341 -0
- package/dist/navigation/Stepper.d.ts +52 -0
- package/dist/navigation/Stepper.js +207 -0
- package/dist/navigation/Tabs.d.ts +113 -0
- package/dist/navigation/Tabs.js +543 -0
- package/dist/navigation/Topbar.d.ts +20 -0
- package/dist/navigation/Topbar.js +62 -0
- package/dist/overlay/OverlayProvider.d.ts +28 -32
- package/dist/overlay/OverlayProvider.js +42 -93
- package/dist/overlay/useOverlay.d.ts +88 -12
- package/dist/overlay/useOverlay.js +220 -43
- package/dist/overlays/Popover.d.ts +114 -0
- package/dist/overlays/Popover.js +389 -0
- package/dist/shapes/Circle.d.ts +84 -8
- package/dist/shapes/Circle.js +122 -20
- package/dist/shapes/Square.d.ts +84 -8
- package/dist/shapes/Square.js +123 -20
- package/dist/styles/mixins.d.ts +35 -0
- package/dist/styles/mixins.js +60 -0
- package/dist/styles.css +1 -202
- package/dist/table/InfiniteSpreadsheet.d.ts +140 -10
- package/dist/table/InfiniteSpreadsheet.js +762 -225
- package/dist/table/InfiniteTable.d.ts +116 -14
- package/dist/table/InfiniteTable.js +287 -429
- package/dist/table/SpreadsheetCellEditor.d.ts +54 -6
- package/dist/table/SpreadsheetCellEditor.js +163 -84
- package/dist/table/TableCore.d.ts +252 -0
- package/dist/table/TableCore.js +1077 -0
- package/dist/table/VirtualizedInfiniteTable.d.ts +104 -14
- package/dist/table/VirtualizedInfiniteTable.js +280 -219
- package/dist/table/types.d.ts +66 -244
- package/dist/table/types.js +0 -51
- package/dist/table/useInfiniteScrollSentinel.d.ts +25 -21
- package/dist/table/useInfiniteScrollSentinel.js +38 -30
- package/dist/table/useSpreadsheetCellNavigation.d.ts +44 -0
- package/dist/table/useSpreadsheetCellNavigation.js +141 -0
- package/dist/table/useTableColumnLayout.d.ts +90 -25
- package/dist/table/useTableColumnLayout.js +255 -50
- package/dist/table/useTableKeyboardNavigation.d.ts +32 -21
- package/dist/table/useTableKeyboardNavigation.js +95 -71
- package/dist/table/useTableRowSelection.d.ts +24 -25
- package/dist/table/useTableRowSelection.js +57 -84
- package/dist/table/useTableVirtualizer.d.ts +20 -0
- package/dist/table/useTableVirtualizer.js +48 -0
- package/dist/text/Bold.d.ts +5 -6
- package/dist/text/Bold.js +16 -15
- package/dist/text/Code.d.ts +5 -6
- package/dist/text/Code.js +16 -25
- package/dist/text/CodeBlock.d.ts +77 -0
- package/dist/text/CodeBlock.js +373 -0
- package/dist/text/EditableText.d.ts +55 -15
- package/dist/text/EditableText.js +153 -135
- package/dist/text/Ellipsis.d.ts +34 -8
- package/dist/text/Ellipsis.js +55 -23
- package/dist/text/Kbd.d.ts +72 -0
- package/dist/text/Kbd.js +284 -0
- package/dist/text/MarkdownText.d.ts +27 -10
- package/dist/text/MarkdownText.js +317 -300
- package/dist/text/RequiredMarker.d.ts +17 -5
- package/dist/text/RequiredMarker.js +34 -36
- package/dist/text/Selectable.d.ts +5 -6
- package/dist/text/Selectable.js +16 -13
- package/dist/text/Span.d.ts +82 -0
- package/dist/text/Span.js +115 -0
- package/dist/text/Text.d.ts +128 -41
- package/dist/text/Text.js +209 -76
- package/dist/theme/GalaxyProvider.d.ts +75 -0
- package/dist/theme/GalaxyProvider.js +223 -0
- package/dist/theme/ThemeSwitcher.d.ts +52 -0
- package/dist/theme/ThemeSwitcher.js +94 -0
- package/dist/theme/enums.d.ts +118 -0
- package/dist/theme/enums.js +144 -0
- package/dist/theme/tokens/dark.d.ts +2 -0
- package/dist/theme/tokens/dark.js +275 -0
- package/dist/theme/tokens/generate.d.ts +15 -0
- package/dist/theme/tokens/generate.js +47 -0
- package/dist/theme/tokens/light.d.ts +2 -0
- package/dist/theme/tokens/light.js +274 -0
- package/dist/theme/tokens/palette.d.ts +14 -0
- package/dist/theme/tokens/palette.js +153 -0
- package/dist/theme/tokens/scales.d.ts +26 -0
- package/dist/theme/tokens/scales.js +154 -0
- package/dist/theme/tokens/t.d.ts +3 -0
- package/dist/theme/tokens/t.js +25 -0
- package/dist/theme/tokens/types.d.ts +189 -0
- package/dist/theme/tokens/types.js +0 -0
- package/dist/theme/useGalaxyTheme.d.ts +46 -0
- package/dist/theme/useGalaxyTheme.js +36 -0
- package/dist/theme/useInverseScope.d.ts +18 -0
- package/dist/theme/useInverseScope.js +33 -0
- package/dist/three/GalaxyLogomark3D.d.ts +46 -0
- package/dist/three/GalaxyLogomark3D.js +134 -0
- package/dist/three/assets/galaxy-logomark.js +4 -0
- package/dist/three/galaxyLogomark3DScene.d.ts +27 -0
- package/dist/three/galaxyLogomark3DScene.js +165 -0
- package/dist/timeline/Timeline.d.ts +99 -0
- package/dist/timeline/Timeline.js +269 -0
- package/dist/toast/Toast.d.ts +43 -19
- package/dist/toast/Toast.js +130 -89
- package/dist/toast/ToastProvider.d.ts +23 -23
- package/dist/toast/ToastProvider.js +298 -101
- package/dist/toast/ToastViewport.d.ts +12 -0
- package/dist/toast/ToastViewport.js +210 -0
- package/dist/toast/useToast.d.ts +139 -5
- package/dist/toast/useToast.js +15 -13
- package/dist/tokens.css +654 -0
- package/dist/tooltip/Tooltip.d.ts +64 -44
- package/dist/tooltip/Tooltip.js +280 -73
- package/dist/tooltip/internal/LazyTooltip.d.ts +7 -0
- package/dist/tooltip/internal/LazyTooltip.js +53 -0
- package/dist/transform/Fade.d.ts +33 -11
- package/dist/transform/Fade.js +71 -19
- package/dist/transform/Flasher.d.ts +25 -0
- package/dist/transform/Flasher.js +39 -0
- package/dist/transform/Rotate.d.ts +24 -12
- package/dist/transform/Rotate.js +36 -22
- package/dist/transform/ScaleFade.d.ts +36 -11
- package/dist/transform/ScaleFade.js +86 -28
- package/dist/transform/internal/CollapseMotion.d.ts +10 -0
- package/dist/transform/internal/CollapseMotion.js +65 -0
- package/dist/tree/Tree.d.ts +85 -0
- package/dist/tree/Tree.js +387 -0
- package/dist/tree/treeRow.d.ts +39 -0
- package/dist/tree/treeRow.js +75 -0
- package/dist/utils/colors.d.ts +46 -13
- package/dist/utils/colors.js +92 -34
- package/dist/utils/css.d.ts +23 -0
- package/dist/utils/css.js +30 -0
- package/dist/utils/format.d.ts +58 -0
- package/dist/utils/format.js +220 -0
- package/dist/vite/index.d.ts +16 -0
- package/dist/vite/index.js +52 -0
- package/dist/widget/Widget.d.ts +164 -48
- package/dist/widget/Widget.js +335 -96
- package/dist/widget/WidgetGroup.d.ts +36 -0
- package/dist/widget/WidgetGroup.js +103 -0
- package/package.json +851 -157
- package/dist/accordion/Accordion.d.ts +0 -54
- package/dist/accordion/Accordion.js +0 -183
- package/dist/assets/components/GalaxyFilamentWordmarkDark.d.ts +0 -3
- package/dist/assets/components/GalaxyFilamentWordmarkDark.js +0 -14
- package/dist/assets/components/GalaxyFilamentWordmarkLight.d.ts +0 -3
- package/dist/assets/components/GalaxyFilamentWordmarkLight.js +0 -14
- package/dist/assets/components/GalaxyLogomarkDark.d.ts +0 -3
- package/dist/assets/components/GalaxyLogomarkDark.js +0 -11
- package/dist/assets/components/GalaxyLogomarkLight.d.ts +0 -3
- package/dist/assets/components/GalaxyLogomarkLight.js +0 -17
- package/dist/assets/components/GalaxyWordmarkDark.d.ts +0 -3
- package/dist/assets/components/GalaxyWordmarkDark.js +0 -15
- package/dist/assets/components/GalaxyWordmarkLight.d.ts +0 -3
- package/dist/assets/components/GalaxyWordmarkLight.js +0 -28
- package/dist/assets/models/galaxy-animation.js +0 -136666
- package/dist/assets/models/galaxy-logomark.js +0 -4
- package/dist/avatar/AvatarShimmer.d.ts +0 -30
- package/dist/avatar/AvatarShimmer.js +0 -22
- package/dist/backgrounds/CellGridBackground.d.ts +0 -24
- package/dist/backgrounds/CellGridBackground.js +0 -44
- package/dist/backgrounds/CrossGridBackground.d.ts +0 -26
- package/dist/backgrounds/CrossGridBackground.js +0 -49
- package/dist/backgrounds/DotGridBackground.d.ts +0 -24
- package/dist/backgrounds/DotGridBackground.js +0 -47
- package/dist/badge/Badge.d.ts +0 -42
- package/dist/badge/Badge.js +0 -99
- package/dist/charts/ChartEmptyState.d.ts +0 -17
- package/dist/charts/ChartEmptyState.js +0 -29
- package/dist/charts/ProgressBar.d.ts +0 -29
- package/dist/charts/ProgressBar.js +0 -65
- package/dist/charts/chartTheme.d.ts +0 -18
- package/dist/charts/chartTheme.js +0 -26
- package/dist/containers/FlexItem.d.ts +0 -50
- package/dist/containers/FlexItem.js +0 -91
- package/dist/containers/FlexWrapper.d.ts +0 -96
- package/dist/containers/FlexWrapper.js +0 -143
- package/dist/containers/GridWrapper.d.ts +0 -79
- package/dist/containers/GridWrapper.js +0 -125
- package/dist/containers/Spacing.d.ts +0 -23
- package/dist/containers/Spacing.js +0 -59
- package/dist/containers/Wrapper.d.ts +0 -26
- package/dist/containers/Wrapper.js +0 -54
- package/dist/dividers/HorizontalDivider.d.ts +0 -7
- package/dist/dividers/HorizontalDivider.js +0 -39
- package/dist/dividers/VerticalDivider.d.ts +0 -6
- package/dist/dividers/VerticalDivider.js +0 -21
- package/dist/icons/GalaxyFilamentWordmark.d.ts +0 -11
- package/dist/icons/GalaxyFilamentWordmark.js +0 -25
- package/dist/icons/GalaxyLogomark.d.ts +0 -13
- package/dist/icons/GalaxyLogomark.js +0 -27
- package/dist/icons/GalaxyLogomark3D.d.ts +0 -56
- package/dist/icons/GalaxyLogomark3D.js +0 -319
- package/dist/icons/GalaxyLogomarkAnimation.d.ts +0 -18
- package/dist/icons/GalaxyLogomarkAnimation.js +0 -48
- package/dist/icons/GalaxyWordmark.d.ts +0 -11
- package/dist/icons/GalaxyWordmark.js +0 -25
- package/dist/inputs/MultiTextInput.d.ts +0 -32
- package/dist/inputs/MultiTextInput.js +0 -180
- package/dist/inputs/SwitcherInput.d.ts +0 -27
- package/dist/inputs/SwitcherInput.js +0 -64
- package/dist/inputs/hooks.d.ts +0 -10
- package/dist/inputs/hooks.js +0 -22
- package/dist/overlay/constants.d.ts +0 -28
- package/dist/overlay/constants.js +0 -37
- package/dist/resizable/HorizontalResizeHandle.d.ts +0 -17
- package/dist/resizable/HorizontalResizeHandle.js +0 -38
- package/dist/resizable/VerticalResizeHandle.d.ts +0 -18
- package/dist/resizable/VerticalResizeHandle.js +0 -39
- package/dist/table/SpreadsheetCell.d.ts +0 -21
- package/dist/table/SpreadsheetCell.js +0 -71
- package/dist/table/SpreadsheetHeaderCell.d.ts +0 -23
- package/dist/table/SpreadsheetHeaderCell.js +0 -91
- package/dist/table/SpreadsheetMenuItem.d.ts +0 -14
- package/dist/table/SpreadsheetMenuItem.js +0 -33
- package/dist/table/SpreadsheetPrimitives.d.ts +0 -172
- package/dist/table/SpreadsheetPrimitives.js +0 -105
- package/dist/table/SpreadsheetRow.d.ts +0 -33
- package/dist/table/SpreadsheetRow.js +0 -73
- package/dist/table/SpreadsheetRowActionCell.d.ts +0 -14
- package/dist/table/SpreadsheetRowActionCell.js +0 -51
- package/dist/table/TableExpandCell.d.ts +0 -11
- package/dist/table/TableExpandCell.js +0 -24
- package/dist/table/TableExpandedRow.d.ts +0 -16
- package/dist/table/TableExpandedRow.js +0 -77
- package/dist/table/TableHeaderCellContent.d.ts +0 -30
- package/dist/table/TableHeaderCellContent.js +0 -48
- package/dist/table/TablePrimitives.d.ts +0 -313
- package/dist/table/TablePrimitives.js +0 -302
- package/dist/table/TableSelectCell.d.ts +0 -18
- package/dist/table/TableSelectCell.js +0 -27
- package/dist/table/TableStatusRow.d.ts +0 -18
- package/dist/table/TableStatusRow.js +0 -50
- package/dist/table/useSpreadsheetEditing.d.ts +0 -13
- package/dist/table/useSpreadsheetEditing.js +0 -41
- package/dist/table/useTableColumnResize.d.ts +0 -38
- package/dist/table/useTableColumnResize.js +0 -155
- package/dist/table/useTableRowExpansion.d.ts +0 -24
- package/dist/table/useTableRowExpansion.js +0 -62
- package/dist/table/utils.d.ts +0 -50
- package/dist/table/utils.js +0 -78
- package/dist/text/HotKeys.d.ts +0 -30
- package/dist/text/HotKeys.js +0 -74
- package/dist/text/Paragraph.d.ts +0 -33
- package/dist/text/Paragraph.js +0 -83
- package/dist/text/TextShimmer.d.ts +0 -14
- package/dist/text/TextShimmer.js +0 -34
- package/dist/theme/GalaxyTheme.d.ts +0 -67
- package/dist/theme/GalaxyTheme.js +0 -119
- package/dist/theme/constants.d.ts +0 -8
- package/dist/theme/constants.js +0 -38
- package/dist/theme/index.d.ts +0 -6
- package/dist/theme/index.js +0 -7
- package/dist/theme/types.d.ts +0 -195
- package/dist/theme/types.js +0 -10
- package/dist/theme/typography.d.ts +0 -2
- package/dist/theme/typography.js +0 -73
- package/dist/theme/variants/dark.d.ts +0 -2
- package/dist/theme/variants/dark.js +0 -125
- package/dist/theme/variants/light.d.ts +0 -2
- package/dist/theme/variants/light.js +0 -125
- package/dist/toast/ToastContainer.d.ts +0 -10
- package/dist/toast/ToastContainer.js +0 -31
- package/dist/toast/ToastWrapper.d.ts +0 -6
- package/dist/toast/ToastWrapper.js +0 -27
- package/dist/transform/Flash.d.ts +0 -7
- package/dist/transform/Flash.js +0 -18
- package/dist/transform/Spin.d.ts +0 -14
- package/dist/transform/Spin.js +0 -25
- package/dist/utils/linaria.d.ts +0 -1
- package/dist/utils/linaria.js +0 -8
package/dist/avatar/Avatar.d.ts
CHANGED
|
@@ -1,18 +1,60 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import { type AriaAttributes, type CSSProperties } from "react";
|
|
2
|
+
import type { Hex, PaletteColor } from "../theme/tokens/types.js";
|
|
3
|
+
/** Canonical rungs; the diameter is the control height of the rung. */
|
|
4
|
+
export declare enum AvatarSize {
|
|
5
|
+
/** 20px (`size.control.xSmall`); initials `caption`. */
|
|
6
|
+
X_SMALL = "X_SMALL",
|
|
7
|
+
/** 24px (`size.control.small`); initials `body_sm`. */
|
|
8
|
+
SMALL = "SMALL",
|
|
9
|
+
/** 32px (`size.control.medium`); initials `body_md`. The default. */
|
|
10
|
+
MEDIUM = "MEDIUM",
|
|
11
|
+
/** 36px (`size.control.large`); initials `body_lg`. */
|
|
12
|
+
LARGE = "LARGE",
|
|
13
|
+
/** 40px (`size.control.xLarge`); initials `body_lg`. */
|
|
14
|
+
X_LARGE = "X_LARGE"
|
|
15
|
+
}
|
|
16
|
+
export interface AvatarProps extends AriaAttributes {
|
|
17
|
+
/** Name of the person or entity. It gives the initials fallback and the accessible name. */
|
|
18
|
+
name?: string;
|
|
19
|
+
/** Image URL. When it is missing, `null`, or fails to load, the fallback shows. */
|
|
3
20
|
img?: string | null;
|
|
4
|
-
/**
|
|
5
|
-
isLoading?: boolean;
|
|
6
|
-
/** Square size in px. @default 16 */
|
|
7
|
-
size?: number;
|
|
8
|
-
/** Override the generated pattern's color. */
|
|
9
|
-
hex?: string;
|
|
10
|
-
/** Input to the generated pattern — same seed always yields the same avatar. */
|
|
21
|
+
/** Input to the generated dot pattern: the same seed always draws the same pattern. When set, the fallback is the pattern instead of the initials. */
|
|
11
22
|
seed?: string;
|
|
23
|
+
/**
|
|
24
|
+
* Diameter: a control rung (20 / 24 / 32 / 36 / 40px), or a number of px for avatars off the
|
|
25
|
+
* scale. Prefer the rungs, and use even numbers so contents center on whole pixels.
|
|
26
|
+
* @default AvatarSize.MEDIUM
|
|
27
|
+
*/
|
|
28
|
+
size?: AvatarSize | number;
|
|
29
|
+
/**
|
|
30
|
+
* Square with `radius.md` corners instead of round. Use it for entities (workspaces, projects, sources), not people.
|
|
31
|
+
* @default false
|
|
32
|
+
*/
|
|
33
|
+
isSquare?: boolean;
|
|
34
|
+
/**
|
|
35
|
+
* Categorical palette family (`"blue"`, `"violet"`, …) that tints the fallback: the initials
|
|
36
|
+
* and pattern take `text.<family>`, the surface `background.<family>` with a `border.<family>`
|
|
37
|
+
* hairline. An image avatar is unaffected. Ignored with `hex`.
|
|
38
|
+
*/
|
|
39
|
+
color?: PaletteColor;
|
|
40
|
+
/** Raw color for the fallback (pattern dots and initials). Discouraged: it does not follow the theme. Use it only for data-driven colors. Overrides `color`. */
|
|
41
|
+
hex?: Hex;
|
|
42
|
+
/**
|
|
43
|
+
* Shows a pulsing `Skeleton` in the avatar's exact shape and box instead of the avatar.
|
|
44
|
+
* @default false
|
|
45
|
+
*/
|
|
46
|
+
isLoading?: boolean;
|
|
47
|
+
/** Accessible name, when it should differ from `name` (for example "Ada Lovelace, owner"). Without it and without `name`, the avatar is decorative (`aria-hidden`). */
|
|
48
|
+
ariaLabel?: string;
|
|
49
|
+
/** DOM id on the root `<span>`. */
|
|
50
|
+
id?: string;
|
|
51
|
+
/** Any `data-*` attribute, forwarded to the root `<span>`. */
|
|
52
|
+
[dataAttribute: `data-${string}`]: string | number | boolean | undefined;
|
|
53
|
+
/** Extra class on the root `<span>`. */
|
|
54
|
+
className?: string;
|
|
55
|
+
/** Inline style on the root `<span>`; only for setting CSS custom properties. Merged after `--gx-avatar-size` / `--gx-avatar-hex`. */
|
|
56
|
+
style?: CSSProperties;
|
|
12
57
|
}
|
|
13
|
-
/**
|
|
14
|
-
|
|
15
|
-
* there's no image, so the same user is always recognizable without one.
|
|
16
|
-
*/
|
|
17
|
-
declare const Avatar: ({ img, isLoading, size, hex, seed }: AvatarProps) => import("react").JSX.Element;
|
|
58
|
+
/** A person or entity: image, initials or generated pattern, round or square. */
|
|
59
|
+
declare const Avatar: import("react").ForwardRefExoticComponent<AvatarProps & import("react").RefAttributes<HTMLSpanElement>>;
|
|
18
60
|
export default Avatar;
|
package/dist/avatar/Avatar.js
CHANGED
|
@@ -1,45 +1,155 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
1
|
+
import Skeleton, { SkeletonVariant } from "../feedback/Skeleton.js";
|
|
2
|
+
import Text, { TextSize, TextVariant, TextWeight } from "../text/Text.js";
|
|
3
|
+
import { CONTROL_SIZE } from "../theme/tokens/scales.js";
|
|
4
4
|
/* empty css */
|
|
5
5
|
import { styled } from "@linaria/react";
|
|
6
|
-
import {
|
|
6
|
+
import { forwardRef, useEffect, useMemo, useRef, useState } from "react";
|
|
7
7
|
import { jsx } from "react/jsx-runtime";
|
|
8
|
+
import { cx } from "@linaria/core";
|
|
8
9
|
//#region src/avatar/Avatar.tsx
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
10
|
+
/**
|
|
11
|
+
* The small picture that stands for one person or one entity beside its name. It shows `img` when
|
|
12
|
+
* there is one and it loads; otherwise a fallback: the initials of `name`, or the 1.x generated dot
|
|
13
|
+
* pattern derived from `seed`, so the same user or project always looks the same without an image.
|
|
14
|
+
* Round by default (people), square with `isSquare` (entities), with a `Skeleton` stand-in while
|
|
15
|
+
* `isLoading`.
|
|
16
|
+
*
|
|
17
|
+
* Color is CSS, not JS: the pattern's five tones are `currentColor` tones (`color-mix`,
|
|
18
|
+
* `fill-opacity`); a categorical `color` tints the fallback through `AVATAR_COLOR_TO_CSS_MAP`
|
|
19
|
+
* (`--gx-avatar-tint`, the surface fill and hairline) and `hex` is the `--gx-avatar-hex` custom
|
|
20
|
+
* property, so a theme switch needs no re-render and nothing reads the theme at runtime.
|
|
21
|
+
*
|
|
22
|
+
* Not a button (wrap it in one), not a stack (`AvatarGroup`), not a name label (put a `Text`
|
|
23
|
+
* beside it), not a generic image container.
|
|
24
|
+
*/
|
|
25
|
+
/** Canonical rungs; the diameter is the control height of the rung. */
|
|
26
|
+
var AvatarSize = /* @__PURE__ */ function(AvatarSize) {
|
|
27
|
+
/** 20px (`size.control.xSmall`); initials `caption`. */
|
|
28
|
+
AvatarSize["X_SMALL"] = "X_SMALL";
|
|
29
|
+
/** 24px (`size.control.small`); initials `body_sm`. */
|
|
30
|
+
AvatarSize["SMALL"] = "SMALL";
|
|
31
|
+
/** 32px (`size.control.medium`); initials `body_md`. The default. */
|
|
32
|
+
AvatarSize["MEDIUM"] = "MEDIUM";
|
|
33
|
+
/** 36px (`size.control.large`); initials `body_lg`. */
|
|
34
|
+
AvatarSize["LARGE"] = "LARGE";
|
|
35
|
+
/** 40px (`size.control.xLarge`); initials `body_lg`. */
|
|
36
|
+
AvatarSize["X_LARGE"] = "X_LARGE";
|
|
37
|
+
return AvatarSize;
|
|
38
|
+
}({});
|
|
39
|
+
/**
|
|
40
|
+
* The avatar's box. Phrasing content, so it is valid inside `Text`, a `<button>` or a `<label>`.
|
|
41
|
+
* It does not clip; `Surface` clips.
|
|
42
|
+
*/
|
|
43
|
+
var Root = /*#__PURE__*/ styled("span")({
|
|
44
|
+
name: "Root",
|
|
45
|
+
class: "gx-Avatar-rve5wdp",
|
|
25
46
|
propsAsIs: false
|
|
26
47
|
});
|
|
27
|
-
|
|
28
|
-
var
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
name: "Dot",
|
|
33
|
-
class: "d1n32hoy",
|
|
34
|
-
propsAsIs: false,
|
|
35
|
-
vars: {
|
|
36
|
-
"d1n32hoy-0": [_exp6(), "px"],
|
|
37
|
-
"d1n32hoy-1": [_exp7()],
|
|
38
|
-
"d1n32hoy-2": [_exp8(), "px"],
|
|
39
|
-
"d1n32hoy-3": [_exp9(), "px"]
|
|
40
|
-
}
|
|
48
|
+
/** The neutral disc (or square) holding exactly one of the image, the initials or the pattern. */
|
|
49
|
+
var Surface = /*#__PURE__*/ styled("span")({
|
|
50
|
+
name: "Surface",
|
|
51
|
+
class: "gx-Avatar-Surface-s3r0r1h",
|
|
52
|
+
propsAsIs: false
|
|
41
53
|
});
|
|
42
|
-
var
|
|
54
|
+
var Image = /*#__PURE__*/ styled("img")({
|
|
55
|
+
name: "Image",
|
|
56
|
+
class: "gx-Avatar-Image-i1n32hoy",
|
|
57
|
+
propsAsIs: false
|
|
58
|
+
});
|
|
59
|
+
/** The generated pattern: one `viewBox` grid that scales to any diameter. Tinted by `hex` or `color`. */
|
|
60
|
+
var Pattern = /*#__PURE__*/ styled("svg")({
|
|
61
|
+
name: "Pattern",
|
|
62
|
+
class: "gx-Avatar-Pattern-p94shpk",
|
|
63
|
+
propsAsIs: false
|
|
64
|
+
});
|
|
65
|
+
/** Diameter per rung. */
|
|
66
|
+
var AVATAR_SIZE_TO_CSS_MAP = {
|
|
67
|
+
["X_SMALL"]: "gx-Avatar-X_SMALL-xblj6sc",
|
|
68
|
+
["SMALL"]: "gx-Avatar-SMALL-s116bpx4",
|
|
69
|
+
["MEDIUM"]: "gx-Avatar-MEDIUM-m1ykihtn",
|
|
70
|
+
["LARGE"]: "gx-Avatar-LARGE-l1vt38m2",
|
|
71
|
+
["X_LARGE"]: "gx-Avatar-X_LARGE-xjtmhfq"
|
|
72
|
+
};
|
|
73
|
+
/** A px diameter, set as `--gx-avatar-size` in `style` (a continuous value). */
|
|
74
|
+
var PX_SIZE_CSS = "gx-Avatar-PX_SIZE_CSS-ptukwhw";
|
|
75
|
+
/** `isSquare`: control-radius corners at every size. */
|
|
76
|
+
var SQUARE_CSS = "gx-Avatar-SQUARE_CSS-sdv3w7l";
|
|
77
|
+
/** The initials' color, which the `INHERIT` text takes. Tinted by `hex` or `color`. */
|
|
78
|
+
var INITIALS_CSS = "gx-Avatar-INITIALS_CSS-i1c3dn12";
|
|
79
|
+
/** Categorical `color` on the fallback surface: the tint the initials and pattern read, the family's fill and hairline. */
|
|
80
|
+
var AVATAR_COLOR_TO_CSS_MAP = {
|
|
81
|
+
red: "gx-Avatar-red-r63z1lx",
|
|
82
|
+
orange: "gx-Avatar-orange-o1x7b2uf",
|
|
83
|
+
amber: "gx-Avatar-amber-az59h18",
|
|
84
|
+
yellow: "gx-Avatar-yellow-y1y5rsmb",
|
|
85
|
+
lime: "gx-Avatar-lime-lzxsfel",
|
|
86
|
+
green: "gx-Avatar-green-g414m3u",
|
|
87
|
+
emerald: "gx-Avatar-emerald-e1uew7pg",
|
|
88
|
+
teal: "gx-Avatar-teal-t6z9q1b",
|
|
89
|
+
cyan: "gx-Avatar-cyan-chef53l",
|
|
90
|
+
sky: "gx-Avatar-sky-s1o5jkv9",
|
|
91
|
+
blue: "gx-Avatar-blue-be52zro",
|
|
92
|
+
indigo: "gx-Avatar-indigo-i9qjv1q",
|
|
93
|
+
violet: "gx-Avatar-violet-v6zn1e0",
|
|
94
|
+
purple: "gx-Avatar-purple-pc3yopb",
|
|
95
|
+
fuchsia: "gx-Avatar-fuchsia-fzee674",
|
|
96
|
+
pink: "gx-Avatar-pink-p1f7v2mb",
|
|
97
|
+
rose: "gx-Avatar-rose-r87xw4u"
|
|
98
|
+
};
|
|
99
|
+
/**
|
|
100
|
+
* The pattern's five tones of `currentColor`, indexed by the PRNG (a palette index, not an enum
|
|
101
|
+
* axis). They replace the 1.x JS color math: base, lighter, darker, 30% and 15% opaque.
|
|
102
|
+
*/
|
|
103
|
+
var PATTERN_TONE_CSS = [
|
|
104
|
+
"gx-Avatar-PATTERN_TONE_CSS-p17r187b",
|
|
105
|
+
"gx-Avatar-PATTERN_TONE_CSS-p9ksu8k",
|
|
106
|
+
"gx-Avatar-PATTERN_TONE_CSS-p1ql1bax",
|
|
107
|
+
"gx-Avatar-PATTERN_TONE_CSS-p12sxa1c",
|
|
108
|
+
"gx-Avatar-PATTERN_TONE_CSS-pq3238h"
|
|
109
|
+
];
|
|
110
|
+
/** Initials text per rung (Constitution III-A.4): lines 12 / 16 / 16 / 20 / 20px, so whole-pixel offsets. */
|
|
111
|
+
var AVATAR_SIZE_TO_TEXT_SIZE_MAP = {
|
|
112
|
+
["X_SMALL"]: TextSize.CAPTION,
|
|
113
|
+
["SMALL"]: TextSize.BODY_SM,
|
|
114
|
+
["MEDIUM"]: TextSize.BODY_MD,
|
|
115
|
+
["LARGE"]: TextSize.BODY_LG,
|
|
116
|
+
["X_LARGE"]: TextSize.BODY_LG
|
|
117
|
+
};
|
|
118
|
+
/** Rung diameters in px for JS logic, resolved from `CONTROL_SIZE` (the token source). */
|
|
119
|
+
var AVATAR_SIZE_TO_DIAMETER_PX_MAP = {
|
|
120
|
+
["X_SMALL"]: Number.parseFloat(CONTROL_SIZE.xSmall),
|
|
121
|
+
["SMALL"]: Number.parseFloat(CONTROL_SIZE.small),
|
|
122
|
+
["MEDIUM"]: Number.parseFloat(CONTROL_SIZE.medium),
|
|
123
|
+
["LARGE"]: Number.parseFloat(CONTROL_SIZE.large),
|
|
124
|
+
["X_LARGE"]: Number.parseFloat(CONTROL_SIZE.xLarge)
|
|
125
|
+
};
|
|
126
|
+
/** Px diameter → initials text step: the largest step whose minimum is ≤ the diameter. */
|
|
127
|
+
var AVATAR_PX_TO_TEXT_SIZE_STEPS = [
|
|
128
|
+
[80, TextSize.HEADING_LG],
|
|
129
|
+
[64, TextSize.HEADING_MD],
|
|
130
|
+
[48, TextSize.HEADING_SM],
|
|
131
|
+
[36, TextSize.BODY_LG],
|
|
132
|
+
[32, TextSize.BODY_MD],
|
|
133
|
+
[24, TextSize.BODY_SM],
|
|
134
|
+
[0, TextSize.CAPTION]
|
|
135
|
+
];
|
|
136
|
+
/** Diameter → pattern grid (the 1.x thresholds): ≤ 24px → 5, ≤ 48px → 7, larger → 9. */
|
|
137
|
+
var PATTERN_GRID_STEPS = [[24, 5], [48, 7]];
|
|
138
|
+
var PATTERN_GRID_MAX = 9;
|
|
139
|
+
/** Pattern dot radius in grid cells (dot = 0.6 of a cell, as in 1.x). */
|
|
140
|
+
var PATTERN_DOT_RADIUS = .3;
|
|
141
|
+
/** Number of pattern tones (`PATTERN_TONE_CSS`). */
|
|
142
|
+
var PATTERN_TONE_COUNT = 5;
|
|
143
|
+
/** The initials text step for a px diameter. */
|
|
144
|
+
function getTextSizeForPx(px) {
|
|
145
|
+
return AVATAR_PX_TO_TEXT_SIZE_STEPS.find(([min]) => min <= px)?.[1] ?? TextSize.CAPTION;
|
|
146
|
+
}
|
|
147
|
+
/** The pattern grid for a diameter. */
|
|
148
|
+
function getPatternGrid(px) {
|
|
149
|
+
return PATTERN_GRID_STEPS.find(([max]) => px <= max)?.[1] ?? PATTERN_GRID_MAX;
|
|
150
|
+
}
|
|
151
|
+
/** The 1.x seeded PRNG, verbatim: a 32-bit string hash feeding an LCG. */
|
|
152
|
+
function seededRandom(seed) {
|
|
43
153
|
let hash = 0;
|
|
44
154
|
for (let i = 0; i < seed.length; i++) {
|
|
45
155
|
const char = seed.charCodeAt(i);
|
|
@@ -50,71 +160,115 @@ var seededRandom = (seed) => {
|
|
|
50
160
|
hash = hash * 1103515245 + 12345 & 2147483647;
|
|
51
161
|
return hash / 2147483647;
|
|
52
162
|
};
|
|
53
|
-
}
|
|
163
|
+
}
|
|
164
|
+
/** The 1.x pattern: tones for the left half, row by row, mirrored onto the right half. */
|
|
165
|
+
function getPatternCells(seedValue, grid) {
|
|
166
|
+
const random = seededRandom(seedValue);
|
|
167
|
+
const halfCols = Math.ceil(grid / 2);
|
|
168
|
+
const cells = [];
|
|
169
|
+
for (let row = 0; row < grid; row++) {
|
|
170
|
+
const tones = [];
|
|
171
|
+
for (let col = 0; col < halfCols; col++) tones.push(Math.floor(random() * PATTERN_TONE_COUNT));
|
|
172
|
+
for (let col = 0; col < grid; col++) {
|
|
173
|
+
const tone = col < halfCols ? tones[col] : tones[grid - 1 - col];
|
|
174
|
+
cells.push({
|
|
175
|
+
key: `${row}-${col}`,
|
|
176
|
+
row,
|
|
177
|
+
col,
|
|
178
|
+
tone: tone ?? 0
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
return cells;
|
|
183
|
+
}
|
|
54
184
|
/**
|
|
55
|
-
*
|
|
56
|
-
*
|
|
185
|
+
* Initials from `name`: one part keeps one or two characters whole, otherwise its first; two or
|
|
186
|
+
* more parts give the first character of the first and of the last part. Code points, upper-cased.
|
|
57
187
|
*/
|
|
58
|
-
|
|
59
|
-
|
|
188
|
+
function getInitials(name) {
|
|
189
|
+
if (name === void 0) return "";
|
|
190
|
+
const parts = name.trim().split(/\s+/).filter((part) => part.length > 0);
|
|
191
|
+
const first = parts[0];
|
|
192
|
+
if (first === void 0) return "";
|
|
193
|
+
const firstChars = Array.from(first);
|
|
194
|
+
if (parts.length === 1) return (firstChars.length <= 2 ? first : firstChars[0] ?? "").toLocaleUpperCase();
|
|
195
|
+
const last = parts[parts.length - 1] ?? "";
|
|
196
|
+
return `${firstChars[0] ?? ""}${Array.from(last)[0] ?? ""}`.toLocaleUpperCase();
|
|
197
|
+
}
|
|
198
|
+
/** A person or entity: image, initials or generated pattern, round or square. */
|
|
199
|
+
var Avatar = forwardRef(function Avatar({ name, img, seed, size = "MEDIUM", isSquare = false, color, hex, isLoading = false, ariaLabel, id, className, style, ...rest }, ref) {
|
|
200
|
+
const imageRef = useRef(null);
|
|
60
201
|
const [failedSrc, setFailedSrc] = useState(null);
|
|
61
|
-
|
|
62
|
-
|
|
202
|
+
useEffect(() => {
|
|
203
|
+
const image = imageRef.current;
|
|
204
|
+
if (image?.complete && image.naturalWidth === 0 && img) setFailedSrc(img);
|
|
63
205
|
}, [img]);
|
|
64
|
-
const
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
$size: size,
|
|
107
|
-
children: isLoading ? /* @__PURE__ */ jsx(AvatarShimmer, { size }) : Boolean(img) && failedSrc !== img ? /* @__PURE__ */ jsx(AvatarImage, {
|
|
108
|
-
src: img,
|
|
109
|
-
alt: "Avatar",
|
|
110
|
-
onError: handleError
|
|
111
|
-
}) : dots.dotPositions.map(({ x, y, color, key }) => /* @__PURE__ */ jsx(Dot, {
|
|
112
|
-
$dotSize: dots.dotSize,
|
|
113
|
-
$x: x,
|
|
114
|
-
$y: y,
|
|
115
|
-
$color: color
|
|
206
|
+
const isPx = typeof size === "number";
|
|
207
|
+
const diameter = isPx ? size : AVATAR_SIZE_TO_DIAMETER_PX_MAP[size];
|
|
208
|
+
const textSize = isPx ? getTextSizeForPx(size) : AVATAR_SIZE_TO_TEXT_SIZE_MAP[size];
|
|
209
|
+
const imageSrc = typeof img === "string" && img.length > 0 && img !== failedSrc ? img : void 0;
|
|
210
|
+
const hasImage = imageSrc !== void 0;
|
|
211
|
+
const initials = getInitials(name);
|
|
212
|
+
const isInitials = !hasImage && seed === void 0 && initials.length > 0;
|
|
213
|
+
const tintCss = color !== void 0 && hex === void 0 && !hasImage ? AVATAR_COLOR_TO_CSS_MAP[color] : void 0;
|
|
214
|
+
const seedValue = seed ?? hex ?? "default";
|
|
215
|
+
const grid = getPatternGrid(diameter);
|
|
216
|
+
const cells = useMemo(() => getPatternCells(seedValue, grid), [seedValue, grid]);
|
|
217
|
+
const accessibleName = ariaLabel ?? name;
|
|
218
|
+
const accessibility = accessibleName !== void 0 && accessibleName.length > 0 ? {
|
|
219
|
+
role: "img",
|
|
220
|
+
"aria-label": accessibleName
|
|
221
|
+
} : { "aria-hidden": true };
|
|
222
|
+
const variables = {};
|
|
223
|
+
if (isPx) variables["--gx-avatar-size"] = `${size}px`;
|
|
224
|
+
if (hex !== void 0) variables["--gx-avatar-hex"] = hex;
|
|
225
|
+
let content;
|
|
226
|
+
if (imageSrc !== void 0) content = /* @__PURE__ */ jsx(Image, {
|
|
227
|
+
ref: imageRef,
|
|
228
|
+
src: imageSrc,
|
|
229
|
+
alt: "",
|
|
230
|
+
onError: () => setFailedSrc(imageSrc)
|
|
231
|
+
});
|
|
232
|
+
else if (isInitials) content = /* @__PURE__ */ jsx(Text, {
|
|
233
|
+
as: "span",
|
|
234
|
+
size: textSize,
|
|
235
|
+
weight: TextWeight.MEDIUM,
|
|
236
|
+
variant: TextVariant.INHERIT,
|
|
237
|
+
children: initials
|
|
238
|
+
});
|
|
239
|
+
else content = /* @__PURE__ */ jsx(Pattern, {
|
|
240
|
+
viewBox: `0 0 ${grid} ${grid}`,
|
|
241
|
+
"aria-hidden": "true",
|
|
242
|
+
focusable: "false",
|
|
243
|
+
children: cells.map(({ key, row, col, tone }) => /* @__PURE__ */ jsx("circle", {
|
|
244
|
+
cx: col + .5,
|
|
245
|
+
cy: row + .5,
|
|
246
|
+
r: PATTERN_DOT_RADIUS,
|
|
247
|
+
className: PATTERN_TONE_CSS[tone]
|
|
116
248
|
}, key))
|
|
117
249
|
});
|
|
118
|
-
|
|
250
|
+
const root = /* @__PURE__ */ jsx(Root, {
|
|
251
|
+
...accessibility,
|
|
252
|
+
...rest,
|
|
253
|
+
ref,
|
|
254
|
+
id,
|
|
255
|
+
className: cx(isPx ? PX_SIZE_CSS : AVATAR_SIZE_TO_CSS_MAP[size], isSquare && SQUARE_CSS, className),
|
|
256
|
+
style: {
|
|
257
|
+
...variables,
|
|
258
|
+
...style
|
|
259
|
+
},
|
|
260
|
+
children: /* @__PURE__ */ jsx(Surface, {
|
|
261
|
+
className: cx(tintCss, isInitials && INITIALS_CSS),
|
|
262
|
+
children: content
|
|
263
|
+
})
|
|
264
|
+
});
|
|
265
|
+
if (!isLoading) return root;
|
|
266
|
+
return /* @__PURE__ */ jsx(Skeleton, {
|
|
267
|
+
variant: isSquare ? SkeletonVariant.RECT : SkeletonVariant.CIRCLE,
|
|
268
|
+
isLoading: true,
|
|
269
|
+
children: root
|
|
270
|
+
});
|
|
271
|
+
});
|
|
272
|
+
Avatar.displayName = "Avatar";
|
|
119
273
|
//#endregion
|
|
120
|
-
export { Avatar as default };
|
|
274
|
+
export { AvatarSize, Avatar as default };
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { type AriaAttributes, type CSSProperties, type ReactNode } from "react";
|
|
2
|
+
/** Canonical rungs; the diameter of every avatar in the group is the rung's control height. */
|
|
3
|
+
export declare enum AvatarGroupSize {
|
|
4
|
+
/** 20px avatars, 4px overlap (16px step). */
|
|
5
|
+
X_SMALL = "X_SMALL",
|
|
6
|
+
/** 24px avatars, 8px overlap (16px step). */
|
|
7
|
+
SMALL = "SMALL",
|
|
8
|
+
/** 32px avatars, 8px overlap (24px step). The default. */
|
|
9
|
+
MEDIUM = "MEDIUM",
|
|
10
|
+
/** 36px avatars, 12px overlap (24px step). */
|
|
11
|
+
LARGE = "LARGE",
|
|
12
|
+
/** 40px avatars, 12px overlap (28px step). */
|
|
13
|
+
X_LARGE = "X_LARGE"
|
|
14
|
+
}
|
|
15
|
+
export interface AvatarGroupProps extends AriaAttributes {
|
|
16
|
+
/** The `Avatar` elements, in display order. Each one's `size` and `isSquare` are replaced by the group's. Non-element children are ignored. */
|
|
17
|
+
children?: ReactNode;
|
|
18
|
+
/** Most avatars to show. When there are more, the first `max` show and a `+N` tile stands for the rest. Floored; values below 1 show 1. Unset shows all. */
|
|
19
|
+
max?: number;
|
|
20
|
+
/**
|
|
21
|
+
* Rung of every avatar and of the `+N` tile (20 / 24 / 32 / 36 / 40px). It also sets the overlap.
|
|
22
|
+
* @default AvatarGroupSize.MEDIUM
|
|
23
|
+
*/
|
|
24
|
+
size?: AvatarGroupSize;
|
|
25
|
+
/**
|
|
26
|
+
* Square avatars and `+N` tile (`radius.md`), for groups of entities.
|
|
27
|
+
* @default false
|
|
28
|
+
*/
|
|
29
|
+
isSquare?: boolean;
|
|
30
|
+
/** Accessible name of the group (for example "Workspace members"). */
|
|
31
|
+
ariaLabel?: string;
|
|
32
|
+
/** DOM id on the root `<span>`. */
|
|
33
|
+
id?: string;
|
|
34
|
+
/** Any `data-*` attribute, forwarded to the root `<span>`. */
|
|
35
|
+
[dataAttribute: `data-${string}`]: string | number | boolean | undefined;
|
|
36
|
+
/** Extra class on the root `<span>`. */
|
|
37
|
+
className?: string;
|
|
38
|
+
/** Inline style on the root `<span>`; only for setting CSS custom properties. */
|
|
39
|
+
style?: CSSProperties;
|
|
40
|
+
}
|
|
41
|
+
/** A row of overlapping avatars, at most `max` of them, ending in a `+N` tile for the rest. */
|
|
42
|
+
declare const AvatarGroup: import("react").ForwardRefExoticComponent<AvatarGroupProps & import("react").RefAttributes<HTMLSpanElement>>;
|
|
43
|
+
export default AvatarGroup;
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import Text, { TextSize, TextVariant, TextWeight } from "../text/Text.js";
|
|
2
|
+
import { AvatarSize } from "./Avatar.js";
|
|
3
|
+
import Tooltip from "../tooltip/Tooltip.js";
|
|
4
|
+
/* empty css */
|
|
5
|
+
import { styled } from "@linaria/react";
|
|
6
|
+
import { Children, cloneElement, forwardRef, isValidElement } from "react";
|
|
7
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
8
|
+
import { cx } from "@linaria/core";
|
|
9
|
+
//#region src/avatar/AvatarGroup.tsx
|
|
10
|
+
/**
|
|
11
|
+
* A set of people or entities as one compact, overlapping row of `Avatar`s (a facepile). Every
|
|
12
|
+
* avatar takes the group's `size` and `isSquare`, they overlap by a fixed step per rung, at most
|
|
13
|
+
* `max` show, and a `+N` tile stands for the rest. Hovering a named avatar shows its name; the `+N`
|
|
14
|
+
* tile lists the hidden names in a tooltip and is a tab stop when it has names to show.
|
|
15
|
+
*
|
|
16
|
+
* The overlap is layout, not margins or transforms: each item is `diameter − overlap` wide and the
|
|
17
|
+
* last one is `auto`, so every avatar overflows into the next item, later items paint over earlier
|
|
18
|
+
* ones in DOM order, and the root's box is exactly the visible row.
|
|
19
|
+
*
|
|
20
|
+
* Not a member list ("show all" belongs to the host or a Popover), not interactive beyond the `+N`
|
|
21
|
+
* tile's tooltip, and it does not fetch or sort members.
|
|
22
|
+
*/
|
|
23
|
+
/** Canonical rungs; the diameter of every avatar in the group is the rung's control height. */
|
|
24
|
+
var AvatarGroupSize = /* @__PURE__ */ function(AvatarGroupSize) {
|
|
25
|
+
/** 20px avatars, 4px overlap (16px step). */
|
|
26
|
+
AvatarGroupSize["X_SMALL"] = "X_SMALL";
|
|
27
|
+
/** 24px avatars, 8px overlap (16px step). */
|
|
28
|
+
AvatarGroupSize["SMALL"] = "SMALL";
|
|
29
|
+
/** 32px avatars, 8px overlap (24px step). The default. */
|
|
30
|
+
AvatarGroupSize["MEDIUM"] = "MEDIUM";
|
|
31
|
+
/** 36px avatars, 12px overlap (24px step). */
|
|
32
|
+
AvatarGroupSize["LARGE"] = "LARGE";
|
|
33
|
+
/** 40px avatars, 12px overlap (28px step). */
|
|
34
|
+
AvatarGroupSize["X_LARGE"] = "X_LARGE";
|
|
35
|
+
return AvatarGroupSize;
|
|
36
|
+
}({});
|
|
37
|
+
/** The row. Phrasing content, so a group is valid inside a `<button>` or inline in a cell. */
|
|
38
|
+
var Root = /*#__PURE__*/ styled("span")({
|
|
39
|
+
name: "Root",
|
|
40
|
+
class: "gx-AvatarGroup-razfxgq",
|
|
41
|
+
propsAsIs: false
|
|
42
|
+
});
|
|
43
|
+
/**
|
|
44
|
+
* One shown avatar (or the `+N` tile), one step wide so its content overflows into the next item.
|
|
45
|
+
* `position: relative` puts every item in the positioned paint layer, so later items paint over
|
|
46
|
+
* earlier ones in DOM order whatever they hold (an avatar, a loading Skeleton, the tile).
|
|
47
|
+
*/
|
|
48
|
+
var Item = /*#__PURE__*/ styled("span")({
|
|
49
|
+
name: "Item",
|
|
50
|
+
class: "gx-AvatarGroup-Item-iva7ybl",
|
|
51
|
+
propsAsIs: false
|
|
52
|
+
});
|
|
53
|
+
/** The `+N` tile, styled as an initials avatar; a long count widens it into a pill. */
|
|
54
|
+
var Overflow = /*#__PURE__*/ styled("span")({
|
|
55
|
+
name: "Overflow",
|
|
56
|
+
class: "gx-AvatarGroup-Overflow-oie8ywq",
|
|
57
|
+
propsAsIs: false
|
|
58
|
+
});
|
|
59
|
+
/** `isSquare`: the tile's corners match a square avatar. */
|
|
60
|
+
var SQUARE_CSS = "gx-AvatarGroup-SQUARE_CSS-sebt40z";
|
|
61
|
+
/** Diameter and step (diameter − overlap) per rung; every step is a whole number of pixels. */
|
|
62
|
+
var AVATAR_GROUP_SIZE_TO_CSS_MAP = {
|
|
63
|
+
["X_SMALL"]: "gx-AvatarGroup-X_SMALL-x164dxk",
|
|
64
|
+
["SMALL"]: "gx-AvatarGroup-SMALL-surveac",
|
|
65
|
+
["MEDIUM"]: "gx-AvatarGroup-MEDIUM-m1wq31ro",
|
|
66
|
+
["LARGE"]: "gx-AvatarGroup-LARGE-lslwrbi",
|
|
67
|
+
["X_LARGE"]: "gx-AvatarGroup-X_LARGE-xdshhax"
|
|
68
|
+
};
|
|
69
|
+
/** Every avatar takes the group's rung. */
|
|
70
|
+
var AVATAR_GROUP_SIZE_TO_AVATAR_SIZE_MAP = {
|
|
71
|
+
["X_SMALL"]: AvatarSize.X_SMALL,
|
|
72
|
+
["SMALL"]: AvatarSize.SMALL,
|
|
73
|
+
["MEDIUM"]: AvatarSize.MEDIUM,
|
|
74
|
+
["LARGE"]: AvatarSize.LARGE,
|
|
75
|
+
["X_LARGE"]: AvatarSize.X_LARGE
|
|
76
|
+
};
|
|
77
|
+
/** The `+N` label: the same rung text as an Avatar's initials. */
|
|
78
|
+
var AVATAR_GROUP_SIZE_TO_TEXT_SIZE_MAP = {
|
|
79
|
+
["X_SMALL"]: TextSize.CAPTION,
|
|
80
|
+
["SMALL"]: TextSize.BODY_SM,
|
|
81
|
+
["MEDIUM"]: TextSize.BODY_MD,
|
|
82
|
+
["LARGE"]: TextSize.BODY_LG,
|
|
83
|
+
["X_LARGE"]: TextSize.BODY_LG
|
|
84
|
+
};
|
|
85
|
+
/** Names shown in the `+N` tooltip before it ends with "…" (the `aria-label` lists all). */
|
|
86
|
+
var OVERFLOW_TOOLTIP_NAME_LIMIT = 10;
|
|
87
|
+
/** A child's non-empty string `name`, or `undefined`. */
|
|
88
|
+
function getName(child) {
|
|
89
|
+
const { name } = child.props;
|
|
90
|
+
return typeof name === "string" && name.length > 0 ? name : void 0;
|
|
91
|
+
}
|
|
92
|
+
/** `max` normalized: floored, at least 1; unset or non-finite shows all. */
|
|
93
|
+
function toShownCount(max, total) {
|
|
94
|
+
if (max === void 0 || !Number.isFinite(max)) return total;
|
|
95
|
+
return Math.min(total, Math.max(1, Math.floor(max)));
|
|
96
|
+
}
|
|
97
|
+
/** A row of overlapping avatars, at most `max` of them, ending in a `+N` tile for the rest. */
|
|
98
|
+
var AvatarGroup = forwardRef(function AvatarGroup({ children, max, size = "MEDIUM", isSquare = false, ariaLabel, id, className, style, ...rest }, ref) {
|
|
99
|
+
const items = Children.toArray(children).filter(isValidElement);
|
|
100
|
+
const shownCount = toShownCount(max, items.length);
|
|
101
|
+
const shown = items.slice(0, shownCount);
|
|
102
|
+
const hidden = items.slice(shownCount);
|
|
103
|
+
const hiddenNames = hidden.map(getName).filter((name) => name !== void 0);
|
|
104
|
+
const avatarSize = AVATAR_GROUP_SIZE_TO_AVATAR_SIZE_MAP[size];
|
|
105
|
+
const groupAccessibility = { role: "group" };
|
|
106
|
+
if (ariaLabel !== void 0) groupAccessibility["aria-label"] = ariaLabel;
|
|
107
|
+
let overflow = null;
|
|
108
|
+
if (hidden.length > 0) {
|
|
109
|
+
const hasTooltip = hiddenNames.length > 0;
|
|
110
|
+
const tile = /* @__PURE__ */ jsx(Overflow, {
|
|
111
|
+
role: "img",
|
|
112
|
+
"aria-label": hasTooltip ? `+${hidden.length}: ${hiddenNames.join(", ")}` : `+${hidden.length}`,
|
|
113
|
+
...hasTooltip ? { tabIndex: 0 } : {},
|
|
114
|
+
className: cx(isSquare && SQUARE_CSS),
|
|
115
|
+
children: /* @__PURE__ */ jsx(Text, {
|
|
116
|
+
as: "span",
|
|
117
|
+
size: AVATAR_GROUP_SIZE_TO_TEXT_SIZE_MAP[size],
|
|
118
|
+
weight: TextWeight.MEDIUM,
|
|
119
|
+
variant: TextVariant.SECONDARY,
|
|
120
|
+
children: `+${hidden.length}`
|
|
121
|
+
})
|
|
122
|
+
});
|
|
123
|
+
const summary = hiddenNames.slice(0, OVERFLOW_TOOLTIP_NAME_LIMIT).join(", ") + (hiddenNames.length > OVERFLOW_TOOLTIP_NAME_LIMIT ? ", …" : "");
|
|
124
|
+
overflow = /* @__PURE__ */ jsx(Item, { children: hasTooltip ? /* @__PURE__ */ jsx(Tooltip, {
|
|
125
|
+
body: summary,
|
|
126
|
+
"aria-hidden": true,
|
|
127
|
+
children: tile
|
|
128
|
+
}) : tile });
|
|
129
|
+
}
|
|
130
|
+
return /* @__PURE__ */ jsxs(Root, {
|
|
131
|
+
...groupAccessibility,
|
|
132
|
+
...rest,
|
|
133
|
+
ref,
|
|
134
|
+
id,
|
|
135
|
+
className: cx(AVATAR_GROUP_SIZE_TO_CSS_MAP[size], className),
|
|
136
|
+
style,
|
|
137
|
+
children: [shown.map((child, index) => {
|
|
138
|
+
const clone = cloneElement(child, {
|
|
139
|
+
size: avatarSize,
|
|
140
|
+
isSquare
|
|
141
|
+
});
|
|
142
|
+
const name = getName(child);
|
|
143
|
+
return /* @__PURE__ */ jsx(Item, { children: name === void 0 ? clone : /* @__PURE__ */ jsx(Tooltip, {
|
|
144
|
+
body: name,
|
|
145
|
+
"aria-hidden": true,
|
|
146
|
+
children: clone
|
|
147
|
+
}) }, child.key ?? index);
|
|
148
|
+
}), overflow]
|
|
149
|
+
});
|
|
150
|
+
});
|
|
151
|
+
AvatarGroup.displayName = "AvatarGroup";
|
|
152
|
+
//#endregion
|
|
153
|
+
export { AvatarGroupSize, AvatarGroup as default };
|