@galaxy-io/dls 1.6.1 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +47 -50
- package/biome/index.json +74 -0
- package/biome/plugins/no-hex-literal.grit +20 -0
- package/biome/plugins/no-inline-style.grit +13 -0
- package/biome/plugins/no-margin.grit +9 -0
- package/biome/plugins/warn/no-hex-literal.grit +23 -0
- package/biome/plugins/warn/no-inline-style.grit +13 -0
- package/biome/plugins/warn/no-margin.grit +9 -0
- package/dist/a11y/FocusScope.d.ts +44 -0
- package/dist/a11y/FocusScope.js +229 -0
- package/dist/a11y/VisuallyHidden.d.ts +21 -0
- package/dist/a11y/VisuallyHidden.js +30 -0
- package/dist/avatar/Avatar.d.ts +56 -14
- package/dist/avatar/Avatar.js +250 -96
- package/dist/avatar/AvatarGroup.d.ts +43 -0
- package/dist/avatar/AvatarGroup.js +153 -0
- package/dist/backgrounds/GridBackground.d.ts +48 -0
- package/dist/backgrounds/GridBackground.js +146 -0
- package/dist/beacons/Beacon.d.ts +86 -22
- package/dist/beacons/Beacon.js +170 -47
- package/dist/brand/GalaxyFilamentWordmark.d.ts +30 -0
- package/dist/brand/GalaxyFilamentWordmark.js +39 -0
- package/dist/brand/GalaxyLogomark.d.ts +26 -0
- package/dist/brand/GalaxyLogomark.js +41 -0
- package/dist/brand/GalaxyLogomarkAnimation.d.ts +36 -0
- package/dist/brand/GalaxyLogomarkAnimation.js +107 -0
- package/dist/brand/GalaxyWordmark.d.ts +30 -0
- package/dist/brand/GalaxyWordmark.js +63 -0
- package/dist/brand/assets/galaxy-logomark-animation.js +136678 -0
- package/dist/brand/brandMark.d.ts +26 -0
- package/dist/brand/brandMark.js +35 -0
- package/dist/buttons/Button.d.ts +148 -59
- package/dist/buttons/Button.js +437 -227
- package/dist/buttons/ButtonGroup.d.ts +38 -0
- package/dist/buttons/ButtonGroup.js +68 -0
- package/dist/buttons/CopyButton.d.ts +77 -0
- package/dist/buttons/CopyButton.js +65 -0
- package/dist/charts/AreaChart.d.ts +49 -0
- package/dist/charts/AreaChart.js +31 -0
- package/dist/charts/BarChart.d.ts +54 -67
- package/dist/charts/BarChart.js +160 -124
- package/dist/charts/ChartAxis.d.ts +35 -40
- package/dist/charts/ChartAxis.js +114 -90
- package/dist/charts/ChartCategoryTargets.d.ts +12 -26
- package/dist/charts/ChartCategoryTargets.js +33 -20
- package/dist/charts/ChartFrame.d.ts +71 -116
- package/dist/charts/ChartFrame.js +306 -97
- package/dist/charts/ChartGroupProvider.d.ts +30 -41
- package/dist/charts/ChartGroupProvider.js +20 -7
- package/dist/charts/ChartLegend.d.ts +37 -48
- package/dist/charts/ChartLegend.js +243 -125
- package/dist/charts/ChartMarkTargets.d.ts +12 -28
- package/dist/charts/ChartMarkTargets.js +34 -20
- package/dist/charts/ChartPrimitives.d.ts +50 -305
- package/dist/charts/ChartPrimitives.js +65 -413
- package/dist/charts/ChartTooltip.d.ts +20 -26
- package/dist/charts/ChartTooltip.js +77 -40
- package/dist/charts/Heatmap.d.ts +35 -0
- package/dist/charts/Heatmap.js +307 -0
- package/dist/charts/LineChart.d.ts +54 -47
- package/dist/charts/LineChart.js +174 -121
- package/dist/charts/PieChart.d.ts +32 -53
- package/dist/charts/PieChart.js +159 -136
- package/dist/charts/Sparkline.d.ts +107 -0
- package/dist/charts/Sparkline.js +244 -0
- package/dist/charts/StatChart.d.ts +37 -13
- package/dist/charts/StatChart.js +82 -35
- package/dist/charts/barChartGeometry.d.ts +138 -86
- package/dist/charts/barChartGeometry.js +122 -101
- package/dist/charts/barChartLegend.d.ts +14 -18
- package/dist/charts/barChartLegend.js +18 -13
- package/dist/charts/chartFormat.d.ts +12 -18
- package/dist/charts/chartFormat.js +20 -52
- package/dist/charts/chartPalette.d.ts +33 -0
- package/dist/charts/chartPalette.js +68 -0
- package/dist/charts/chartScales.d.ts +41 -108
- package/dist/charts/chartScales.js +62 -128
- package/dist/charts/chartSelection.d.ts +15 -0
- package/dist/charts/chartSelection.js +22 -0
- package/dist/charts/constants.d.ts +100 -256
- package/dist/charts/constants.js +109 -275
- package/dist/charts/heatmapGeometry.d.ts +95 -0
- package/dist/charts/heatmapGeometry.js +155 -0
- package/dist/charts/lineChartGeometry.d.ts +108 -58
- package/dist/charts/lineChartGeometry.js +120 -78
- package/dist/charts/pieChartGeometry.d.ts +66 -40
- package/dist/charts/pieChartGeometry.js +68 -38
- package/dist/charts/types.d.ts +206 -466
- package/dist/charts/types.js +55 -144
- package/dist/charts/useCartesianChartLayout.d.ts +28 -59
- package/dist/charts/useCartesianChartLayout.js +47 -32
- package/dist/charts/useChartDimensions.d.ts +19 -40
- package/dist/charts/useChartDimensions.js +40 -56
- package/dist/charts/useChartFormatters.d.ts +6 -15
- package/dist/charts/useChartFormatters.js +4 -9
- package/dist/charts/useChartInteraction.d.ts +69 -116
- package/dist/charts/useChartInteraction.js +148 -78
- package/dist/charts/useChartTooltipPosition.d.ts +29 -39
- package/dist/charts/useChartTooltipPosition.js +14 -5
- package/dist/charts/useSeriesColorResolver.d.ts +11 -33
- package/dist/charts/useSeriesColorResolver.js +19 -12
- package/dist/chips/Chip.d.ts +155 -44
- package/dist/chips/Chip.js +329 -155
- package/dist/chips/ChipGroup.d.ts +53 -0
- package/dist/chips/ChipGroup.js +98 -0
- package/dist/drawer/Drawer.d.ts +83 -17
- package/dist/drawer/Drawer.js +399 -65
- package/dist/dropdown/Dropdown.d.ts +80 -63
- package/dist/dropdown/Dropdown.js +127 -129
- package/dist/editor/CodeEditor.d.ts +119 -40
- package/dist/editor/CodeEditor.js +490 -400
- package/dist/editor/CodeEditorReactWidget.d.ts +20 -17
- package/dist/editor/CodeEditorReactWidget.js +28 -21
- package/dist/feedback/Alert.d.ts +49 -0
- package/dist/feedback/Alert.js +172 -0
- package/dist/feedback/EmptyState.d.ts +39 -0
- package/dist/feedback/EmptyState.js +109 -0
- package/dist/feedback/ProgressBar.d.ts +125 -0
- package/dist/feedback/ProgressBar.js +183 -0
- package/dist/feedback/ProgressCircle.d.ts +99 -0
- package/dist/feedback/ProgressCircle.js +187 -0
- package/dist/feedback/Skeleton.d.ts +69 -0
- package/dist/feedback/Skeleton.js +130 -0
- package/dist/feedback/Spinner.d.ts +63 -0
- package/dist/feedback/Spinner.js +141 -0
- package/dist/fonts.css +70 -0
- package/dist/hooks/internal/useIsClient.d.ts +2 -0
- package/dist/hooks/internal/useIsClient.js +14 -0
- package/dist/hooks/useClipboard.d.ts +19 -0
- package/dist/hooks/useClipboard.js +45 -0
- package/dist/hooks/useControlledOpenState.d.ts +21 -0
- package/dist/hooks/useControlledOpenState.js +19 -0
- package/dist/hooks/useControlledState.d.ts +19 -0
- package/dist/hooks/useControlledState.js +22 -0
- package/dist/hooks/useDebouncedValue.d.ts +14 -0
- package/dist/hooks/useDebouncedValue.js +33 -0
- package/dist/hooks/useDisclosure.d.ts +26 -0
- package/dist/hooks/useDisclosure.js +36 -0
- package/dist/hooks/useDismiss.d.ts +23 -27
- package/dist/hooks/useDismiss.js +39 -27
- package/dist/hooks/useElementClientSize.d.ts +10 -10
- package/dist/hooks/useElementClientSize.js +8 -11
- package/dist/hooks/useElementWidth.d.ts +6 -13
- package/dist/hooks/useElementWidth.js +6 -14
- package/dist/hooks/useField.d.ts +47 -0
- package/dist/hooks/useField.js +40 -0
- package/dist/hooks/useHotkey.d.ts +77 -0
- package/dist/hooks/useHotkey.js +246 -0
- package/dist/hooks/useIsMac.d.ts +12 -0
- package/dist/hooks/useIsMac.js +27 -0
- package/dist/hooks/useIsomorphicLayoutEffect.d.ts +17 -0
- package/dist/hooks/useIsomorphicLayoutEffect.js +20 -0
- package/dist/hooks/useLocalStorage.d.ts +28 -0
- package/dist/hooks/useLocalStorage.js +145 -0
- package/dist/hooks/useMediaQuery.d.ts +11 -0
- package/dist/hooks/useMediaQuery.js +23 -0
- package/dist/hooks/usePrefersReducedMotion.d.ts +12 -0
- package/dist/hooks/usePrefersReducedMotion.js +25 -0
- package/dist/hooks/useResize.d.ts +42 -62
- package/dist/hooks/useResize.js +43 -31
- package/dist/icons/Icon.d.ts +64 -37
- package/dist/icons/Icon.js +96 -37
- package/dist/icons/internal/IconSlot.d.ts +10 -0
- package/dist/icons/internal/IconSlot.js +32 -0
- package/dist/inputs/CheckboxGroup.d.ts +115 -0
- package/dist/inputs/CheckboxGroup.js +183 -0
- package/dist/inputs/CheckboxInput.d.ts +98 -28
- package/dist/inputs/CheckboxInput.js +218 -88
- package/dist/inputs/ColorInput.d.ts +115 -29
- package/dist/inputs/ColorInput.js +748 -326
- package/dist/inputs/CopyInput.d.ts +49 -20
- package/dist/inputs/CopyInput.js +57 -49
- package/dist/inputs/CronInput.d.ts +94 -0
- package/dist/inputs/CronInput.js +618 -0
- package/dist/inputs/DateInput.d.ts +175 -28
- package/dist/inputs/DateInput.js +1109 -451
- package/dist/inputs/DurationInput.d.ts +101 -0
- package/dist/inputs/DurationInput.js +441 -0
- package/dist/inputs/Field.d.ts +75 -0
- package/dist/inputs/Field.js +247 -0
- package/dist/inputs/Fieldset.d.ts +53 -0
- package/dist/inputs/Fieldset.js +149 -0
- package/dist/inputs/FileInput.d.ts +110 -0
- package/dist/inputs/FileInput.js +476 -0
- package/dist/inputs/Input.d.ts +148 -187
- package/dist/inputs/Input.js +339 -259
- package/dist/inputs/KeyValueInput.d.ts +120 -0
- package/dist/inputs/KeyValueInput.js +383 -0
- package/dist/inputs/MultiSelectInput.d.ts +165 -54
- package/dist/inputs/MultiSelectInput.js +175 -559
- package/dist/inputs/NumberInput.d.ts +65 -9
- package/dist/inputs/NumberInput.js +197 -40
- package/dist/inputs/PasswordInput.d.ts +17 -12
- package/dist/inputs/PasswordInput.js +33 -33
- package/dist/inputs/PinInput.d.ts +117 -0
- package/dist/inputs/PinInput.js +364 -0
- package/dist/inputs/RadioGroup.d.ts +115 -0
- package/dist/inputs/RadioGroup.js +179 -0
- package/dist/inputs/RadioInput.d.ts +87 -24
- package/dist/inputs/RadioInput.js +182 -95
- package/dist/inputs/SearchInput.d.ts +66 -0
- package/dist/inputs/SearchInput.js +156 -0
- package/dist/inputs/SelectInput.d.ts +195 -55
- package/dist/inputs/SelectInput.js +1308 -446
- package/dist/inputs/SliderInput.d.ts +150 -30
- package/dist/inputs/SliderInput.js +441 -186
- package/dist/inputs/SwitchInput.d.ts +109 -0
- package/dist/inputs/SwitchInput.js +248 -0
- package/dist/inputs/TagInput.d.ts +117 -0
- package/dist/inputs/TagInput.js +408 -0
- package/dist/inputs/TextAreaInput.d.ts +146 -44
- package/dist/inputs/TextAreaInput.js +298 -198
- package/dist/inputs/TextInput.d.ts +4 -13
- package/dist/inputs/TextInput.js +13 -48
- package/dist/inputs/ToggleInput.d.ts +120 -22
- package/dist/inputs/ToggleInput.js +262 -116
- package/dist/inputs/internal/bareField.d.ts +18 -0
- package/dist/inputs/internal/bareField.js +38 -0
- package/dist/inputs/internal/devWarn.d.ts +7 -0
- package/dist/inputs/internal/devWarn.js +30 -0
- package/dist/inputs/internal/fieldFrame.d.ts +34 -0
- package/dist/inputs/internal/fieldFrame.js +64 -0
- package/dist/inputs/internal/fieldWiring.d.ts +50 -0
- package/dist/inputs/internal/fieldWiring.js +38 -0
- package/dist/inputs/internal/innerButton.d.ts +2 -0
- package/dist/inputs/internal/innerButton.js +24 -0
- package/dist/inputs/internal/ownField.d.ts +45 -0
- package/dist/inputs/internal/ownField.js +58 -0
- package/dist/inputs/internal/predicates.d.ts +9 -0
- package/dist/inputs/internal/predicates.js +11 -0
- package/dist/inputs/internal/useComboboxPopover.d.ts +46 -0
- package/dist/inputs/internal/useComboboxPopover.js +92 -0
- package/dist/json/JsonViewer.d.ts +62 -0
- package/dist/json/JsonViewer.js +483 -0
- package/dist/layout/Box.d.ts +87 -0
- package/dist/layout/Box.js +109 -0
- package/dist/layout/Divider.d.ts +25 -0
- package/dist/layout/Divider.js +70 -0
- package/dist/layout/Flex.d.ts +139 -0
- package/dist/layout/Flex.js +165 -0
- package/dist/layout/FlexItem.d.ts +72 -0
- package/dist/layout/FlexItem.js +84 -0
- package/dist/layout/Grid.d.ts +140 -0
- package/dist/layout/Grid.js +178 -0
- package/dist/layout/Portal.d.ts +29 -0
- package/dist/layout/Portal.js +27 -0
- package/dist/layout/ResizablePanels.d.ts +88 -0
- package/dist/layout/ResizablePanels.js +198 -0
- package/dist/layout/ResizeHandle.d.ts +48 -0
- package/dist/layout/ResizeHandle.js +143 -0
- package/dist/layout/ScrollArea.d.ts +30 -0
- package/dist/layout/ScrollArea.js +138 -0
- package/dist/links/Link.d.ts +101 -1
- package/dist/links/Link.js +166 -4
- package/dist/lists/BulletedList.d.ts +25 -7
- package/dist/lists/BulletedList.js +72 -27
- package/dist/lists/DescriptionList.d.ts +91 -0
- package/dist/lists/DescriptionList.js +147 -0
- package/dist/menu/ContextMenu.d.ts +64 -0
- package/dist/menu/ContextMenu.js +34 -0
- package/dist/menu/Menu.d.ts +280 -0
- package/dist/menu/Menu.js +1003 -0
- package/dist/modal/ConfirmDialog.d.ts +55 -0
- package/dist/modal/ConfirmDialog.js +151 -0
- package/dist/modal/Modal.d.ts +64 -14
- package/dist/modal/Modal.js +189 -48
- package/dist/navigation/Breadcrumbs.d.ts +65 -0
- package/dist/navigation/Breadcrumbs.js +243 -0
- package/dist/navigation/CommandPalette.d.ts +83 -0
- package/dist/navigation/CommandPalette.js +509 -0
- package/dist/navigation/Pagination.d.ts +87 -0
- package/dist/navigation/Pagination.js +300 -0
- package/dist/navigation/SidebarNav.d.ts +107 -0
- package/dist/navigation/SidebarNav.js +341 -0
- package/dist/navigation/Stepper.d.ts +52 -0
- package/dist/navigation/Stepper.js +207 -0
- package/dist/navigation/Tabs.d.ts +113 -0
- package/dist/navigation/Tabs.js +543 -0
- package/dist/navigation/Topbar.d.ts +20 -0
- package/dist/navigation/Topbar.js +62 -0
- package/dist/overlay/OverlayProvider.d.ts +28 -32
- package/dist/overlay/OverlayProvider.js +42 -93
- package/dist/overlay/useOverlay.d.ts +88 -12
- package/dist/overlay/useOverlay.js +220 -43
- package/dist/overlays/Popover.d.ts +114 -0
- package/dist/overlays/Popover.js +389 -0
- package/dist/shapes/Circle.d.ts +84 -8
- package/dist/shapes/Circle.js +122 -20
- package/dist/shapes/Square.d.ts +84 -8
- package/dist/shapes/Square.js +123 -20
- package/dist/styles/mixins.d.ts +35 -0
- package/dist/styles/mixins.js +60 -0
- package/dist/styles.css +1 -202
- package/dist/table/InfiniteSpreadsheet.d.ts +140 -10
- package/dist/table/InfiniteSpreadsheet.js +762 -225
- package/dist/table/InfiniteTable.d.ts +116 -14
- package/dist/table/InfiniteTable.js +287 -429
- package/dist/table/SpreadsheetCellEditor.d.ts +54 -6
- package/dist/table/SpreadsheetCellEditor.js +163 -84
- package/dist/table/TableCore.d.ts +252 -0
- package/dist/table/TableCore.js +1082 -0
- package/dist/table/VirtualizedInfiniteTable.d.ts +104 -14
- package/dist/table/VirtualizedInfiniteTable.js +280 -219
- package/dist/table/types.d.ts +66 -244
- package/dist/table/types.js +0 -51
- package/dist/table/useInfiniteScrollSentinel.d.ts +25 -21
- package/dist/table/useInfiniteScrollSentinel.js +38 -30
- package/dist/table/useSpreadsheetCellNavigation.d.ts +44 -0
- package/dist/table/useSpreadsheetCellNavigation.js +141 -0
- package/dist/table/useTableColumnLayout.d.ts +90 -25
- package/dist/table/useTableColumnLayout.js +255 -50
- package/dist/table/useTableKeyboardNavigation.d.ts +32 -21
- package/dist/table/useTableKeyboardNavigation.js +95 -71
- package/dist/table/useTableRowSelection.d.ts +24 -25
- package/dist/table/useTableRowSelection.js +57 -84
- package/dist/table/useTableVirtualizer.d.ts +20 -0
- package/dist/table/useTableVirtualizer.js +48 -0
- package/dist/text/Bold.d.ts +5 -6
- package/dist/text/Bold.js +16 -15
- package/dist/text/Code.d.ts +5 -6
- package/dist/text/Code.js +16 -25
- package/dist/text/CodeBlock.d.ts +77 -0
- package/dist/text/CodeBlock.js +373 -0
- package/dist/text/EditableText.d.ts +55 -15
- package/dist/text/EditableText.js +153 -135
- package/dist/text/Ellipsis.d.ts +34 -8
- package/dist/text/Ellipsis.js +55 -23
- package/dist/text/Kbd.d.ts +72 -0
- package/dist/text/Kbd.js +284 -0
- package/dist/text/MarkdownText.d.ts +27 -10
- package/dist/text/MarkdownText.js +317 -300
- package/dist/text/RequiredMarker.d.ts +17 -5
- package/dist/text/RequiredMarker.js +34 -36
- package/dist/text/Selectable.d.ts +5 -6
- package/dist/text/Selectable.js +16 -13
- package/dist/text/Span.d.ts +82 -0
- package/dist/text/Span.js +115 -0
- package/dist/text/Text.d.ts +128 -41
- package/dist/text/Text.js +209 -76
- package/dist/theme/GalaxyProvider.d.ts +75 -0
- package/dist/theme/GalaxyProvider.js +223 -0
- package/dist/theme/ThemeSwitcher.d.ts +52 -0
- package/dist/theme/ThemeSwitcher.js +94 -0
- package/dist/theme/enums.d.ts +118 -0
- package/dist/theme/enums.js +144 -0
- package/dist/theme/tokens/dark.d.ts +2 -0
- package/dist/theme/tokens/dark.js +275 -0
- package/dist/theme/tokens/generate.d.ts +15 -0
- package/dist/theme/tokens/generate.js +47 -0
- package/dist/theme/tokens/light.d.ts +2 -0
- package/dist/theme/tokens/light.js +274 -0
- package/dist/theme/tokens/palette.d.ts +14 -0
- package/dist/theme/tokens/palette.js +153 -0
- package/dist/theme/tokens/scales.d.ts +26 -0
- package/dist/theme/tokens/scales.js +154 -0
- package/dist/theme/tokens/t.d.ts +3 -0
- package/dist/theme/tokens/t.js +25 -0
- package/dist/theme/tokens/types.d.ts +189 -0
- package/dist/theme/tokens/types.js +0 -0
- package/dist/theme/useGalaxyTheme.d.ts +46 -0
- package/dist/theme/useGalaxyTheme.js +36 -0
- package/dist/theme/useInverseScope.d.ts +18 -0
- package/dist/theme/useInverseScope.js +33 -0
- package/dist/three/GalaxyLogomark3D.d.ts +46 -0
- package/dist/three/GalaxyLogomark3D.js +134 -0
- package/dist/three/assets/galaxy-logomark.js +4 -0
- package/dist/three/galaxyLogomark3DScene.d.ts +27 -0
- package/dist/three/galaxyLogomark3DScene.js +165 -0
- package/dist/timeline/Timeline.d.ts +120 -0
- package/dist/timeline/Timeline.js +301 -0
- package/dist/toast/Toast.d.ts +43 -19
- package/dist/toast/Toast.js +130 -89
- package/dist/toast/ToastProvider.d.ts +23 -23
- package/dist/toast/ToastProvider.js +298 -101
- package/dist/toast/ToastViewport.d.ts +12 -0
- package/dist/toast/ToastViewport.js +210 -0
- package/dist/toast/useToast.d.ts +139 -5
- package/dist/toast/useToast.js +15 -13
- package/dist/tokens.css +654 -0
- package/dist/tooltip/Tooltip.d.ts +64 -44
- package/dist/tooltip/Tooltip.js +280 -73
- package/dist/tooltip/internal/LazyTooltip.d.ts +7 -0
- package/dist/tooltip/internal/LazyTooltip.js +53 -0
- package/dist/transform/Fade.d.ts +33 -11
- package/dist/transform/Fade.js +71 -19
- package/dist/transform/Flasher.d.ts +25 -0
- package/dist/transform/Flasher.js +39 -0
- package/dist/transform/Rotate.d.ts +24 -12
- package/dist/transform/Rotate.js +36 -22
- package/dist/transform/ScaleFade.d.ts +36 -11
- package/dist/transform/ScaleFade.js +86 -28
- package/dist/transform/internal/CollapseMotion.d.ts +10 -0
- package/dist/transform/internal/CollapseMotion.js +65 -0
- package/dist/tree/Tree.d.ts +85 -0
- package/dist/tree/Tree.js +387 -0
- package/dist/tree/treeRow.d.ts +39 -0
- package/dist/tree/treeRow.js +75 -0
- package/dist/utils/colors.d.ts +46 -13
- package/dist/utils/colors.js +92 -34
- package/dist/utils/css.d.ts +23 -0
- package/dist/utils/css.js +30 -0
- package/dist/utils/format.d.ts +58 -0
- package/dist/utils/format.js +220 -0
- package/dist/vite/index.d.ts +16 -0
- package/dist/vite/index.js +52 -0
- package/dist/widget/Widget.d.ts +164 -48
- package/dist/widget/Widget.js +335 -96
- package/dist/widget/WidgetGroup.d.ts +36 -0
- package/dist/widget/WidgetGroup.js +103 -0
- package/package.json +855 -157
- package/dist/accordion/Accordion.d.ts +0 -54
- package/dist/accordion/Accordion.js +0 -183
- package/dist/assets/components/GalaxyFilamentWordmarkDark.d.ts +0 -3
- package/dist/assets/components/GalaxyFilamentWordmarkDark.js +0 -14
- package/dist/assets/components/GalaxyFilamentWordmarkLight.d.ts +0 -3
- package/dist/assets/components/GalaxyFilamentWordmarkLight.js +0 -14
- package/dist/assets/components/GalaxyLogomarkDark.d.ts +0 -3
- package/dist/assets/components/GalaxyLogomarkDark.js +0 -11
- package/dist/assets/components/GalaxyLogomarkLight.d.ts +0 -3
- package/dist/assets/components/GalaxyLogomarkLight.js +0 -17
- package/dist/assets/components/GalaxyWordmarkDark.d.ts +0 -3
- package/dist/assets/components/GalaxyWordmarkDark.js +0 -15
- package/dist/assets/components/GalaxyWordmarkLight.d.ts +0 -3
- package/dist/assets/components/GalaxyWordmarkLight.js +0 -28
- package/dist/assets/models/galaxy-animation.js +0 -136666
- package/dist/assets/models/galaxy-logomark.js +0 -4
- package/dist/avatar/AvatarShimmer.d.ts +0 -30
- package/dist/avatar/AvatarShimmer.js +0 -22
- package/dist/backgrounds/CellGridBackground.d.ts +0 -24
- package/dist/backgrounds/CellGridBackground.js +0 -44
- package/dist/backgrounds/CrossGridBackground.d.ts +0 -26
- package/dist/backgrounds/CrossGridBackground.js +0 -49
- package/dist/backgrounds/DotGridBackground.d.ts +0 -24
- package/dist/backgrounds/DotGridBackground.js +0 -47
- package/dist/badge/Badge.d.ts +0 -42
- package/dist/badge/Badge.js +0 -99
- package/dist/charts/ChartEmptyState.d.ts +0 -17
- package/dist/charts/ChartEmptyState.js +0 -29
- package/dist/charts/ProgressBar.d.ts +0 -29
- package/dist/charts/ProgressBar.js +0 -65
- package/dist/charts/chartTheme.d.ts +0 -18
- package/dist/charts/chartTheme.js +0 -26
- package/dist/containers/FlexItem.d.ts +0 -50
- package/dist/containers/FlexItem.js +0 -91
- package/dist/containers/FlexWrapper.d.ts +0 -96
- package/dist/containers/FlexWrapper.js +0 -143
- package/dist/containers/GridWrapper.d.ts +0 -79
- package/dist/containers/GridWrapper.js +0 -125
- package/dist/containers/Spacing.d.ts +0 -23
- package/dist/containers/Spacing.js +0 -59
- package/dist/containers/Wrapper.d.ts +0 -26
- package/dist/containers/Wrapper.js +0 -54
- package/dist/dividers/HorizontalDivider.d.ts +0 -7
- package/dist/dividers/HorizontalDivider.js +0 -39
- package/dist/dividers/VerticalDivider.d.ts +0 -6
- package/dist/dividers/VerticalDivider.js +0 -21
- package/dist/icons/GalaxyFilamentWordmark.d.ts +0 -11
- package/dist/icons/GalaxyFilamentWordmark.js +0 -25
- package/dist/icons/GalaxyLogomark.d.ts +0 -13
- package/dist/icons/GalaxyLogomark.js +0 -27
- package/dist/icons/GalaxyLogomark3D.d.ts +0 -56
- package/dist/icons/GalaxyLogomark3D.js +0 -319
- package/dist/icons/GalaxyLogomarkAnimation.d.ts +0 -18
- package/dist/icons/GalaxyLogomarkAnimation.js +0 -48
- package/dist/icons/GalaxyWordmark.d.ts +0 -11
- package/dist/icons/GalaxyWordmark.js +0 -25
- package/dist/inputs/MultiTextInput.d.ts +0 -32
- package/dist/inputs/MultiTextInput.js +0 -180
- package/dist/inputs/SwitcherInput.d.ts +0 -30
- package/dist/inputs/SwitcherInput.js +0 -81
- package/dist/inputs/hooks.d.ts +0 -10
- package/dist/inputs/hooks.js +0 -22
- package/dist/overlay/constants.d.ts +0 -28
- package/dist/overlay/constants.js +0 -37
- package/dist/resizable/HorizontalResizeHandle.d.ts +0 -17
- package/dist/resizable/HorizontalResizeHandle.js +0 -38
- package/dist/resizable/VerticalResizeHandle.d.ts +0 -18
- package/dist/resizable/VerticalResizeHandle.js +0 -39
- package/dist/table/SpreadsheetCell.d.ts +0 -21
- package/dist/table/SpreadsheetCell.js +0 -71
- package/dist/table/SpreadsheetHeaderCell.d.ts +0 -23
- package/dist/table/SpreadsheetHeaderCell.js +0 -91
- package/dist/table/SpreadsheetMenuItem.d.ts +0 -14
- package/dist/table/SpreadsheetMenuItem.js +0 -33
- package/dist/table/SpreadsheetPrimitives.d.ts +0 -172
- package/dist/table/SpreadsheetPrimitives.js +0 -105
- package/dist/table/SpreadsheetRow.d.ts +0 -33
- package/dist/table/SpreadsheetRow.js +0 -73
- package/dist/table/SpreadsheetRowActionCell.d.ts +0 -14
- package/dist/table/SpreadsheetRowActionCell.js +0 -51
- package/dist/table/TableExpandCell.d.ts +0 -11
- package/dist/table/TableExpandCell.js +0 -24
- package/dist/table/TableExpandedRow.d.ts +0 -16
- package/dist/table/TableExpandedRow.js +0 -77
- package/dist/table/TableHeaderCellContent.d.ts +0 -30
- package/dist/table/TableHeaderCellContent.js +0 -48
- package/dist/table/TablePrimitives.d.ts +0 -313
- package/dist/table/TablePrimitives.js +0 -302
- package/dist/table/TableSelectCell.d.ts +0 -18
- package/dist/table/TableSelectCell.js +0 -27
- package/dist/table/TableStatusRow.d.ts +0 -18
- package/dist/table/TableStatusRow.js +0 -50
- package/dist/table/useSpreadsheetEditing.d.ts +0 -13
- package/dist/table/useSpreadsheetEditing.js +0 -41
- package/dist/table/useTableColumnResize.d.ts +0 -38
- package/dist/table/useTableColumnResize.js +0 -155
- package/dist/table/useTableRowExpansion.d.ts +0 -24
- package/dist/table/useTableRowExpansion.js +0 -62
- package/dist/table/utils.d.ts +0 -50
- package/dist/table/utils.js +0 -78
- package/dist/text/HotKeys.d.ts +0 -30
- package/dist/text/HotKeys.js +0 -74
- package/dist/text/Paragraph.d.ts +0 -33
- package/dist/text/Paragraph.js +0 -83
- package/dist/text/TextShimmer.d.ts +0 -14
- package/dist/text/TextShimmer.js +0 -34
- package/dist/theme/GalaxyTheme.d.ts +0 -67
- package/dist/theme/GalaxyTheme.js +0 -119
- package/dist/theme/constants.d.ts +0 -8
- package/dist/theme/constants.js +0 -38
- package/dist/theme/index.d.ts +0 -6
- package/dist/theme/index.js +0 -7
- package/dist/theme/types.d.ts +0 -195
- package/dist/theme/types.js +0 -10
- package/dist/theme/typography.d.ts +0 -2
- package/dist/theme/typography.js +0 -73
- package/dist/theme/variants/dark.d.ts +0 -2
- package/dist/theme/variants/dark.js +0 -125
- package/dist/theme/variants/light.d.ts +0 -2
- package/dist/theme/variants/light.js +0 -125
- package/dist/toast/ToastContainer.d.ts +0 -10
- package/dist/toast/ToastContainer.js +0 -31
- package/dist/toast/ToastWrapper.d.ts +0 -6
- package/dist/toast/ToastWrapper.js +0 -27
- package/dist/transform/Flash.d.ts +0 -7
- package/dist/transform/Flash.js +0 -18
- package/dist/transform/Spin.d.ts +0 -14
- package/dist/transform/Spin.js +0 -25
- package/dist/utils/linaria.d.ts +0 -1
- package/dist/utils/linaria.js +0 -8
|
@@ -1,30 +1,93 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import { type AriaAttributes, type ChangeEvent, type CSSProperties, type InputHTMLAttributes, type ReactNode } from "react";
|
|
2
|
+
/** Rung of the radio (Constitution III-A.4). The circle is the rung's icon size. */
|
|
3
|
+
export declare enum RadioInputSize {
|
|
4
|
+
/** 12px circle, caption label. */
|
|
5
|
+
X_SMALL = "X_SMALL",
|
|
6
|
+
/** 14px circle, body_sm label. */
|
|
7
|
+
SMALL = "SMALL",
|
|
8
|
+
/** 16px circle, body_md label. The default; the 1.x MEDIUM circle. */
|
|
9
|
+
MEDIUM = "MEDIUM",
|
|
10
|
+
/** 16px circle, body_lg label. */
|
|
11
|
+
LARGE = "LARGE",
|
|
12
|
+
/** 18px circle, body_lg label. */
|
|
13
|
+
X_LARGE = "X_LARGE"
|
|
14
|
+
}
|
|
15
|
+
/** Fill of the unselected circle (Constitution V-A surface set; 1.x InputVariant unchanged). */
|
|
16
|
+
export declare enum RadioInputVariant {
|
|
17
|
+
/** `background.base`. */
|
|
18
|
+
BASE = "BASE",
|
|
19
|
+
/** `background.primary`. The default. */
|
|
20
|
+
PRIMARY = "PRIMARY",
|
|
21
|
+
/** `background.secondary`. */
|
|
22
|
+
SECONDARY = "SECONDARY",
|
|
23
|
+
/** `background.tertiary`. */
|
|
24
|
+
TERTIARY = "TERTIARY"
|
|
25
|
+
}
|
|
26
|
+
/** Native `<input>` attributes, typed as React types them. */
|
|
27
|
+
type NativeInputAttributes = InputHTMLAttributes<HTMLInputElement>;
|
|
28
|
+
/** The native passthrough allowlist, each documented. */
|
|
29
|
+
interface RadioInputNativeProps {
|
|
30
|
+
/** Native group name. Radios with the same `name` form one arrow-key group; RadioGroup sets it. */
|
|
31
|
+
name?: NativeInputAttributes["name"];
|
|
32
|
+
/** Focus the radio on mount. */
|
|
33
|
+
autoFocus?: NativeInputAttributes["autoFocus"];
|
|
34
|
+
/** Focus handler on the `<input>`. */
|
|
35
|
+
onFocus?: NativeInputAttributes["onFocus"];
|
|
36
|
+
/** Blur handler on the `<input>`. */
|
|
37
|
+
onBlur?: NativeInputAttributes["onBlur"];
|
|
38
|
+
}
|
|
39
|
+
export interface RadioInputProps extends AriaAttributes, RadioInputNativeProps {
|
|
3
40
|
/**
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* inputs, `TRANSPARENT` keeps the hairline border here — without it the
|
|
7
|
-
* circle would be invisible. @default InputVariant.PRIMARY
|
|
41
|
+
* Whether this option is the chosen one. Controlled: update it from `onChange`.
|
|
42
|
+
* @default false
|
|
8
43
|
*/
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
/** Controlled state. The radio holds none of its own. */
|
|
14
|
-
isSelected: boolean;
|
|
15
|
-
/** Text beside the circle. */
|
|
44
|
+
isSelected?: boolean;
|
|
45
|
+
/** Called with `true` when the user selects this radio (click, Space, Enter or an arrow key); the native change event is second. */
|
|
46
|
+
onChange?: (isSelected: boolean, event: ChangeEvent<HTMLInputElement>) => void;
|
|
47
|
+
/** Text beside the circle. Clicking it selects the radio. */
|
|
16
48
|
label?: string;
|
|
17
|
-
/**
|
|
18
|
-
|
|
19
|
-
|
|
49
|
+
/** Help copy under the label. Text and inline `Link`s only. */
|
|
50
|
+
description?: ReactNode;
|
|
51
|
+
/**
|
|
52
|
+
* Rung: sets the circle, the type steps and the gap.
|
|
53
|
+
* @default RadioInputSize.MEDIUM
|
|
54
|
+
*/
|
|
55
|
+
size?: RadioInputSize;
|
|
56
|
+
/**
|
|
57
|
+
* Fill of the unselected circle, from the surface set. Ignored with `isGhost`.
|
|
58
|
+
* @default RadioInputVariant.PRIMARY
|
|
59
|
+
*/
|
|
60
|
+
variant?: RadioInputVariant;
|
|
61
|
+
/**
|
|
62
|
+
* Ghost unselected circle: no fill, the hairline kept (1.x `TRANSPARENT`). For radios on a
|
|
63
|
+
* surface whose own fill should show through, such as a selected table row.
|
|
64
|
+
* @default false
|
|
65
|
+
*/
|
|
66
|
+
isGhost?: boolean;
|
|
67
|
+
/**
|
|
68
|
+
* Error border. The group carries `aria-invalid` (RadioGroup).
|
|
69
|
+
* @default false
|
|
70
|
+
*/
|
|
71
|
+
isError?: boolean;
|
|
72
|
+
/**
|
|
73
|
+
* Not focusable or selectable. Shows the disabled look.
|
|
74
|
+
* @default false
|
|
75
|
+
*/
|
|
20
76
|
isDisabled?: boolean;
|
|
21
|
-
|
|
77
|
+
/** Accessible name when there is no `label`. */
|
|
78
|
+
ariaLabel?: string;
|
|
79
|
+
/**
|
|
80
|
+
* DOM id of the `<input>`.
|
|
81
|
+
* @default useId()
|
|
82
|
+
*/
|
|
83
|
+
id?: string;
|
|
84
|
+
/** Any `data-*` attribute, forwarded to the `<input>`. */
|
|
85
|
+
[dataAttribute: `data-${string}`]: string | number | boolean | undefined;
|
|
86
|
+
/** Extra class on the root `<label>`. */
|
|
87
|
+
className?: string;
|
|
88
|
+
/** Inline style on the root `<label>`; only for setting CSS custom properties. */
|
|
89
|
+
style?: CSSProperties;
|
|
22
90
|
}
|
|
23
|
-
/**
|
|
24
|
-
|
|
25
|
-
*
|
|
26
|
-
* There is no group component — render several and enforce single-selection in
|
|
27
|
-
* your own state.
|
|
28
|
-
*/
|
|
29
|
-
declare const RadioInput: ({ variant, size, isSelected, label, labelTooltip, isRequired, isDisabled, onChange, }: RadioInputProps) => import("react").JSX.Element;
|
|
91
|
+
/** One labelled option of a radio set: a native `<input type="radio">` drawn as a circle, selected by the whole row. */
|
|
92
|
+
declare const RadioInput: import("react").ForwardRefExoticComponent<RadioInputProps & import("react").RefAttributes<HTMLInputElement>>;
|
|
30
93
|
export default RadioInput;
|
|
@@ -1,105 +1,192 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import FlexWrapper, { AlignItems } from "../containers/FlexWrapper.js";
|
|
6
|
-
import RequiredMarker from "../text/RequiredMarker.js";
|
|
7
|
-
import Spacing from "../containers/Spacing.js";
|
|
8
|
-
import { InputSize, InputVariant, getInputControlSize, getInputSurfaceColor } from "./Input.js";
|
|
1
|
+
import Text, { TextSize, TextVariant } from "../text/Text.js";
|
|
2
|
+
import { useDevWarning } from "./internal/devWarn.js";
|
|
3
|
+
import { hasContent, isFilled } from "./internal/predicates.js";
|
|
4
|
+
import { joinIds } from "./internal/fieldWiring.js";
|
|
9
5
|
/* empty css */
|
|
10
6
|
import { styled } from "@linaria/react";
|
|
11
|
-
import {
|
|
7
|
+
import { forwardRef, useId, useRef } from "react";
|
|
12
8
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
13
|
-
import {
|
|
9
|
+
import { cx } from "@linaria/core";
|
|
10
|
+
import { useMergeRefs } from "@floating-ui/react";
|
|
14
11
|
//#region src/inputs/RadioInput.tsx
|
|
15
|
-
var _exp = () => ({ $isDisabled }) => $isDisabled ? "not-allowed" : "pointer";
|
|
16
|
-
var _exp2 = () => ({ $isDisabled }) => $isDisabled ? .5 : 1;
|
|
17
|
-
var RadioContainer = /*#__PURE__*/ styled("div")({
|
|
18
|
-
name: "RadioContainer",
|
|
19
|
-
class: "r1pzr59l",
|
|
20
|
-
propsAsIs: false,
|
|
21
|
-
vars: {
|
|
22
|
-
"r1pzr59l-0": [_exp()],
|
|
23
|
-
"r1pzr59l-1": [_exp2()]
|
|
24
|
-
}
|
|
25
|
-
});
|
|
26
|
-
var _exp4 = () => ({ $size }) => getInputControlSize($size);
|
|
27
|
-
var _exp5 = () => ({ theme }) => theme.color.border.primary;
|
|
28
|
-
var _exp6 = () => ({ theme, $variant, $isSelected }) => $isSelected ? theme.color.background.primaryAlt : getInputSurfaceColor(theme, $variant);
|
|
29
|
-
var RadioWrapper = withTheme(/*#__PURE__*/ styled("div")({
|
|
30
|
-
name: "RadioWrapper",
|
|
31
|
-
class: "r1mwwvky",
|
|
32
|
-
propsAsIs: false,
|
|
33
|
-
vars: {
|
|
34
|
-
"r1mwwvky-0": [_exp4()],
|
|
35
|
-
"r1mwwvky-1": [_exp5()],
|
|
36
|
-
"r1mwwvky-2": [_exp6()]
|
|
37
|
-
}
|
|
38
|
-
}));
|
|
39
|
-
/** The dot is half the circle it sits in — see `getInputControlSize`. */
|
|
40
|
-
function getRadioDotSize(size) {
|
|
41
|
-
return match(size).returnType().with(InputSize.SMALL, () => "6px").with(InputSize.MEDIUM, () => "8px").with(InputSize.LARGE, () => "10px").exhaustive();
|
|
42
|
-
}
|
|
43
|
-
var _exp8 = () => ({ $size }) => getRadioDotSize($size);
|
|
44
|
-
var _exp9 = () => ({ theme }) => theme.color.background.primary;
|
|
45
|
-
var _exp0 = () => ({ $isSelected }) => $isSelected ? 1 : 0;
|
|
46
|
-
var _exp1 = () => ({ $isSelected }) => $isSelected ? "scale(1)" : "scale(0)";
|
|
47
|
-
var RadioDot = withTheme(/*#__PURE__*/ styled("div")({
|
|
48
|
-
name: "RadioDot",
|
|
49
|
-
class: "r137y8ev",
|
|
50
|
-
propsAsIs: false,
|
|
51
|
-
vars: {
|
|
52
|
-
"r137y8ev-0": [_exp8()],
|
|
53
|
-
"r137y8ev-1": [_exp9()],
|
|
54
|
-
"r137y8ev-2": [_exp0()],
|
|
55
|
-
"r137y8ev-3": [_exp1()]
|
|
56
|
-
}
|
|
57
|
-
}));
|
|
58
12
|
/**
|
|
59
|
-
*
|
|
13
|
+
* One option in a set where exactly one can be chosen. A native `<input type="radio">` drawn as a
|
|
14
|
+
* small circle (`appearance: none`), with an optional `label` and `description` beside it; the
|
|
15
|
+
* whole row is a `<label>`, so clicking the text selects. It is controlled: `isSelected` comes
|
|
16
|
+
* from the app or a `RadioGroup`, and `onChange(true, event)` reports a selection. Radios that
|
|
17
|
+
* share a `name` get the browser's radio keyboard pattern (one tab stop, arrow keys select).
|
|
18
|
+
* Selected is the monochrome `solid.primary` fill with an on-solid dot.
|
|
60
19
|
*
|
|
61
|
-
*
|
|
62
|
-
*
|
|
20
|
+
* It does not hold the group's value, name the question or validate: that is `RadioGroup`, which
|
|
21
|
+
* renders one RadioInput per option. Use RadioInput alone only for a custom layout (a radio in
|
|
22
|
+
* each row of a table). Replaces 1.x `RadioInput` (`InputSize` / `InputVariant` →
|
|
23
|
+
* `RadioInputSize` / `RadioInputVariant`; native input instead of a clickable `div`;
|
|
24
|
+
* `labelTooltip` → `description`; `isRequired` moves to `RadioGroup`; `onChange` fires only on
|
|
25
|
+
* selection, with `true`).
|
|
26
|
+
*/
|
|
27
|
+
/** Rung of the radio (Constitution III-A.4). The circle is the rung's icon size. */
|
|
28
|
+
var RadioInputSize = /* @__PURE__ */ function(RadioInputSize) {
|
|
29
|
+
/** 12px circle, caption label. */
|
|
30
|
+
RadioInputSize["X_SMALL"] = "X_SMALL";
|
|
31
|
+
/** 14px circle, body_sm label. */
|
|
32
|
+
RadioInputSize["SMALL"] = "SMALL";
|
|
33
|
+
/** 16px circle, body_md label. The default; the 1.x MEDIUM circle. */
|
|
34
|
+
RadioInputSize["MEDIUM"] = "MEDIUM";
|
|
35
|
+
/** 16px circle, body_lg label. */
|
|
36
|
+
RadioInputSize["LARGE"] = "LARGE";
|
|
37
|
+
/** 18px circle, body_lg label. */
|
|
38
|
+
RadioInputSize["X_LARGE"] = "X_LARGE";
|
|
39
|
+
return RadioInputSize;
|
|
40
|
+
}({});
|
|
41
|
+
/** Fill of the unselected circle (Constitution V-A surface set; 1.x InputVariant unchanged). */
|
|
42
|
+
var RadioInputVariant = /* @__PURE__ */ function(RadioInputVariant) {
|
|
43
|
+
/** `background.base`. */
|
|
44
|
+
RadioInputVariant["BASE"] = "BASE";
|
|
45
|
+
/** `background.primary`. The default. */
|
|
46
|
+
RadioInputVariant["PRIMARY"] = "PRIMARY";
|
|
47
|
+
/** `background.secondary`. */
|
|
48
|
+
RadioInputVariant["SECONDARY"] = "SECONDARY";
|
|
49
|
+
/** `background.tertiary`. */
|
|
50
|
+
RadioInputVariant["TERTIARY"] = "TERTIARY";
|
|
51
|
+
return RadioInputVariant;
|
|
52
|
+
}({});
|
|
53
|
+
/** The row: circle column, then label and description. State lives in custom properties set here, so hovering anywhere lights the circle. */
|
|
54
|
+
var Root = /*#__PURE__*/ styled("label")({
|
|
55
|
+
name: "Root",
|
|
56
|
+
class: "gx-RadioInput-r1pzr59l",
|
|
57
|
+
propsAsIs: false
|
|
58
|
+
});
|
|
59
|
+
/** As tall as the label's first line, so the circle centers on it. */
|
|
60
|
+
var Indicator = /*#__PURE__*/ styled("span")({
|
|
61
|
+
name: "Indicator",
|
|
62
|
+
class: "gx-RadioInput-Indicator-i1mwwvky",
|
|
63
|
+
propsAsIs: false
|
|
64
|
+
});
|
|
65
|
+
/** The circle's footprint; positions the dot over the input. */
|
|
66
|
+
var BoxWrap = /*#__PURE__*/ styled("span")({
|
|
67
|
+
name: "BoxWrap",
|
|
68
|
+
class: "gx-RadioInput-BoxWrap-b137y8ev",
|
|
69
|
+
propsAsIs: false
|
|
70
|
+
});
|
|
71
|
+
/** The native radio, drawn as the circle. It is the focused element, so `FOCUS_RING` applies as written. */
|
|
72
|
+
var Control = /*#__PURE__*/ styled("input")({
|
|
73
|
+
name: "Control",
|
|
74
|
+
class: "gx-RadioInput-Control-c1c8ijkb",
|
|
75
|
+
propsAsIs: false
|
|
76
|
+
});
|
|
77
|
+
/** The dot, centered over the circle; scales in when selected. Decorative and click-through. */
|
|
78
|
+
var Dot = /*#__PURE__*/ styled("span")({
|
|
79
|
+
name: "Dot",
|
|
80
|
+
class: "gx-RadioInput-Dot-d1wh1wjm",
|
|
81
|
+
propsAsIs: false
|
|
82
|
+
});
|
|
83
|
+
/** Label over description, Field's label-to-description gap. */
|
|
84
|
+
var Content = /*#__PURE__*/ styled("span")({
|
|
85
|
+
name: "Content",
|
|
86
|
+
class: "gx-RadioInput-Content-clety7y",
|
|
87
|
+
propsAsIs: false
|
|
88
|
+
});
|
|
89
|
+
/** Circle, dot, first-line height and gap per rung: the circle is the rung's icon size, the gap the rung's gap. */
|
|
90
|
+
var RADIO_INPUT_SIZE_TO_CSS_MAP = {
|
|
91
|
+
["X_SMALL"]: "gx-RadioInput-X_SMALL-x190ba3z",
|
|
92
|
+
["SMALL"]: "gx-RadioInput-SMALL-sdil791",
|
|
93
|
+
["MEDIUM"]: "gx-RadioInput-MEDIUM-mox9tg9",
|
|
94
|
+
["LARGE"]: "gx-RadioInput-LARGE-l1pffvb6",
|
|
95
|
+
["X_LARGE"]: "gx-RadioInput-X_LARGE-x12lumk7"
|
|
96
|
+
};
|
|
97
|
+
/** Rest look of the unselected circle (Input's table). */
|
|
98
|
+
var RADIO_INPUT_VARIANT_TO_CSS_MAP = {
|
|
99
|
+
["BASE"]: "gx-RadioInput-BASE-b1h3kcqp",
|
|
100
|
+
["PRIMARY"]: "gx-RadioInput-PRIMARY-ptrdag8",
|
|
101
|
+
["SECONDARY"]: "gx-RadioInput-SECONDARY-s1x9nxv1",
|
|
102
|
+
["TERTIARY"]: "gx-RadioInput-TERTIARY-twyki5h"
|
|
103
|
+
};
|
|
104
|
+
/** `isGhost`: no fill, the hairline kept. Declared after the variant map, which it replaces. */
|
|
105
|
+
var GHOST_CSS = "gx-RadioInput-GHOST_CSS-g1xdbhty";
|
|
106
|
+
/** The label and description column beside the circle. */
|
|
107
|
+
var HAS_CONTENT_CSS = "gx-RadioInput-HAS_CONTENT_CSS-hqnpcbl";
|
|
108
|
+
/** Hover and press on an enabled circle: `border.hovered`, the field-frame hover (2026-10-03 resolution). */
|
|
109
|
+
var INTERACTIVE_CSS = "gx-RadioInput-INTERACTIVE_CSS-i14sv8xb";
|
|
110
|
+
/** Selected: the `solid.primary` fill and an on-solid dot, scaled in. */
|
|
111
|
+
var SELECTED_CSS = "gx-RadioInput-SELECTED_CSS-s1025v6a";
|
|
112
|
+
/** Hover and press on an enabled selected circle; declared after `INTERACTIVE_CSS` so it wins. */
|
|
113
|
+
var SELECTED_INTERACTIVE_CSS = "gx-RadioInput-SELECTED_INTERACTIVE_CSS-s1g1ek83";
|
|
114
|
+
/** Red hairline at rest, on hover and on press; a selected circle keeps its `solid.primary` fill. */
|
|
115
|
+
var ERROR_CSS = "gx-RadioInput-ERROR_CSS-ezk6lpr";
|
|
116
|
+
/**
|
|
117
|
+
* Disabled, unselected: the disabled fill (`background.pressed`, as disabled-selected) over
|
|
118
|
+
* the resting hairline, so a circle with no label still reads as disabled; the label and cursor too.
|
|
63
119
|
*/
|
|
64
|
-
var
|
|
65
|
-
|
|
66
|
-
|
|
120
|
+
var DISABLED_CSS = "gx-RadioInput-DISABLED_CSS-dsz9xw9";
|
|
121
|
+
/** Disabled, selected: Button's disabled `PRIMARY` fill, the resting hairline and a disabled dot. */
|
|
122
|
+
var DISABLED_SELECTED_CSS = "gx-RadioInput-DISABLED_SELECTED_CSS-dtueym8";
|
|
123
|
+
/** Label step per rung (the canonical control text). */
|
|
124
|
+
var RADIO_INPUT_SIZE_TO_TEXT_SIZE_MAP = {
|
|
125
|
+
["X_SMALL"]: TextSize.CAPTION,
|
|
126
|
+
["SMALL"]: TextSize.BODY_SM,
|
|
127
|
+
["MEDIUM"]: TextSize.BODY_MD,
|
|
128
|
+
["LARGE"]: TextSize.BODY_LG,
|
|
129
|
+
["X_LARGE"]: TextSize.BODY_LG
|
|
130
|
+
};
|
|
131
|
+
/** Description step per rung (Field's help steps). */
|
|
132
|
+
var RADIO_INPUT_SIZE_TO_HELP_TEXT_SIZE_MAP = {
|
|
133
|
+
["X_SMALL"]: TextSize.CAPTION,
|
|
134
|
+
["SMALL"]: TextSize.CAPTION,
|
|
135
|
+
["MEDIUM"]: TextSize.BODY_SM,
|
|
136
|
+
["LARGE"]: TextSize.BODY_SM,
|
|
137
|
+
["X_LARGE"]: TextSize.BODY_MD
|
|
138
|
+
};
|
|
139
|
+
/** One labelled option of a radio set: a native `<input type="radio">` drawn as a circle, selected by the whole row. */
|
|
140
|
+
var RadioInput = forwardRef(function RadioInput(props, ref) {
|
|
141
|
+
const { isSelected = false, onChange, label, description, size = "MEDIUM", variant = "PRIMARY", isGhost = false, isError = false, isDisabled = false, ariaLabel, id, "aria-describedby": ariaDescribedBy, className, style, ...rest } = props;
|
|
142
|
+
const generatedId = useId();
|
|
143
|
+
const inputId = id ?? generatedId;
|
|
144
|
+
const labelId = `${inputId}-label`;
|
|
145
|
+
const descriptionId = `${inputId}-description`;
|
|
146
|
+
const mergedRef = useMergeRefs([useRef(null), ref]);
|
|
147
|
+
const hasLabel = isFilled(label);
|
|
148
|
+
const hasDescription = hasContent(description);
|
|
149
|
+
const describedBy = joinIds([hasDescription && descriptionId, ariaDescribedBy]);
|
|
150
|
+
useDevWarning(!(hasLabel || isFilled(ariaLabel) || isFilled(rest["aria-labelledby"]) || isFilled(rest["aria-label"])), "[@galaxy-io/dls] RadioInput has no accessible name. Pass `label` or set `ariaLabel`.");
|
|
151
|
+
const handleChange = (event) => {
|
|
152
|
+
if (event.currentTarget.checked) onChange?.(true, event);
|
|
153
|
+
};
|
|
154
|
+
/** Enter selects too, through the native click so `onChange` runs once, as for a mouse click. */
|
|
155
|
+
const handleKeyDown = (event) => {
|
|
156
|
+
if (event.key !== "Enter" || event.nativeEvent.isComposing) return;
|
|
157
|
+
event.preventDefault();
|
|
158
|
+
event.currentTarget.click();
|
|
67
159
|
};
|
|
68
|
-
return /* @__PURE__ */ jsxs(
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
children: [/* @__PURE__ */ jsx(
|
|
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
|
-
size: 12
|
|
97
|
-
})
|
|
98
|
-
})
|
|
99
|
-
})
|
|
100
|
-
]
|
|
101
|
-
})]
|
|
160
|
+
return /* @__PURE__ */ jsxs(Root, {
|
|
161
|
+
className: cx(RADIO_INPUT_SIZE_TO_CSS_MAP[size], isGhost ? GHOST_CSS : RADIO_INPUT_VARIANT_TO_CSS_MAP[variant], (hasLabel || hasDescription) && HAS_CONTENT_CSS, !isDisabled && INTERACTIVE_CSS, isSelected && SELECTED_CSS, isSelected && !isDisabled && SELECTED_INTERACTIVE_CSS, isError && ERROR_CSS, isDisabled && (isSelected ? DISABLED_SELECTED_CSS : DISABLED_CSS), className),
|
|
162
|
+
...style === void 0 ? {} : { style },
|
|
163
|
+
children: [/* @__PURE__ */ jsx(Indicator, { children: /* @__PURE__ */ jsxs(BoxWrap, { children: [/* @__PURE__ */ jsx(Control, {
|
|
164
|
+
ref: mergedRef,
|
|
165
|
+
type: "radio",
|
|
166
|
+
id: inputId,
|
|
167
|
+
checked: isSelected,
|
|
168
|
+
onChange: handleChange,
|
|
169
|
+
onKeyDown: handleKeyDown,
|
|
170
|
+
disabled: isDisabled,
|
|
171
|
+
"aria-label": ariaLabel,
|
|
172
|
+
"aria-labelledby": hasLabel ? labelId : void 0,
|
|
173
|
+
"aria-describedby": describedBy,
|
|
174
|
+
...rest
|
|
175
|
+
}), /* @__PURE__ */ jsx(Dot, { "aria-hidden": true })] }) }), (hasLabel || hasDescription) && /* @__PURE__ */ jsxs(Content, { children: [hasLabel && /* @__PURE__ */ jsx(Text, {
|
|
176
|
+
as: "span",
|
|
177
|
+
id: labelId,
|
|
178
|
+
size: RADIO_INPUT_SIZE_TO_TEXT_SIZE_MAP[size],
|
|
179
|
+
variant: isDisabled ? TextVariant.DISABLED : TextVariant.PRIMARY,
|
|
180
|
+
children: label
|
|
181
|
+
}), hasDescription && /* @__PURE__ */ jsx(Text, {
|
|
182
|
+
as: "span",
|
|
183
|
+
id: descriptionId,
|
|
184
|
+
size: RADIO_INPUT_SIZE_TO_HELP_TEXT_SIZE_MAP[size],
|
|
185
|
+
variant: isDisabled ? TextVariant.DISABLED : TextVariant.TERTIARY,
|
|
186
|
+
children: description
|
|
187
|
+
})] })]
|
|
102
188
|
});
|
|
103
|
-
};
|
|
189
|
+
});
|
|
190
|
+
RadioInput.displayName = "RadioInput";
|
|
104
191
|
//#endregion
|
|
105
|
-
export { RadioInput as default };
|
|
192
|
+
export { RadioInputSize, RadioInputVariant, RadioInput as default };
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { type InputProps } from "./Input.js";
|
|
2
|
+
/** Every `Input` prop except those the search field fixes or owns, plus its own. */
|
|
3
|
+
export type SearchInputProps = Omit<InputProps, "type" | "icon" | "leading" | "prefix" | "suffix" | "isClearable" | "onEnter" | "inputMode" | "enterKeyHint" | "placeholder" | "ariaLabel"> & {
|
|
4
|
+
/**
|
|
5
|
+
* Hint shown while the value is empty.
|
|
6
|
+
* @default "Search"
|
|
7
|
+
*/
|
|
8
|
+
placeholder?: string;
|
|
9
|
+
/**
|
|
10
|
+
* Accessible name when there is no visible label. Defaults to "Search" when there is no `label` and no enclosing `Field`.
|
|
11
|
+
* @default "Search"
|
|
12
|
+
*/
|
|
13
|
+
ariaLabel?: string;
|
|
14
|
+
/** Called with the text once typing pauses for `debounceMs`, at once on Enter, and at once when emptied. Never twice in a row with the same term, never on mount. */
|
|
15
|
+
onSearch?: (term: string) => void;
|
|
16
|
+
/**
|
|
17
|
+
* Quiet period before `onSearch` fires while typing. `0` searches on every change.
|
|
18
|
+
* @default 150
|
|
19
|
+
*/
|
|
20
|
+
debounceMs?: number;
|
|
21
|
+
/** Focus shortcut in `useHotkey` grammar (`["mod", "k"]`, `["/"]`), shown as `Kbd` caps while empty and not focused. Display only unless `shouldBindHotKey`. */
|
|
22
|
+
hotKeys?: string[];
|
|
23
|
+
/**
|
|
24
|
+
* Also bind `hotKeys`: the shortcut focuses the field and selects its text.
|
|
25
|
+
* @default false
|
|
26
|
+
*/
|
|
27
|
+
shouldBindHotKey?: boolean;
|
|
28
|
+
/**
|
|
29
|
+
* Shows a `Spinner` at the end of the field while the app's search runs. The field stays editable.
|
|
30
|
+
* @default false
|
|
31
|
+
*/
|
|
32
|
+
isLoading?: boolean;
|
|
33
|
+
};
|
|
34
|
+
/** A search field: `Input` with `type="search"`, a magnifier, clearing, a debounced `onSearch` and a focus shortcut. */
|
|
35
|
+
declare const SearchInput: import("react").ForwardRefExoticComponent<Omit<InputProps, "icon" | "ariaLabel" | "enterKeyHint" | "prefix" | "inputMode" | "type" | "leading" | "placeholder" | "onEnter" | "suffix" | "isClearable"> & {
|
|
36
|
+
/**
|
|
37
|
+
* Hint shown while the value is empty.
|
|
38
|
+
* @default "Search"
|
|
39
|
+
*/
|
|
40
|
+
placeholder?: string;
|
|
41
|
+
/**
|
|
42
|
+
* Accessible name when there is no visible label. Defaults to "Search" when there is no `label` and no enclosing `Field`.
|
|
43
|
+
* @default "Search"
|
|
44
|
+
*/
|
|
45
|
+
ariaLabel?: string;
|
|
46
|
+
/** Called with the text once typing pauses for `debounceMs`, at once on Enter, and at once when emptied. Never twice in a row with the same term, never on mount. */
|
|
47
|
+
onSearch?: (term: string) => void;
|
|
48
|
+
/**
|
|
49
|
+
* Quiet period before `onSearch` fires while typing. `0` searches on every change.
|
|
50
|
+
* @default 150
|
|
51
|
+
*/
|
|
52
|
+
debounceMs?: number;
|
|
53
|
+
/** Focus shortcut in `useHotkey` grammar (`["mod", "k"]`, `["/"]`), shown as `Kbd` caps while empty and not focused. Display only unless `shouldBindHotKey`. */
|
|
54
|
+
hotKeys?: string[];
|
|
55
|
+
/**
|
|
56
|
+
* Also bind `hotKeys`: the shortcut focuses the field and selects its text.
|
|
57
|
+
* @default false
|
|
58
|
+
*/
|
|
59
|
+
shouldBindHotKey?: boolean;
|
|
60
|
+
/**
|
|
61
|
+
* Shows a `Spinner` at the end of the field while the app's search runs. The field stays editable.
|
|
62
|
+
* @default false
|
|
63
|
+
*/
|
|
64
|
+
isLoading?: boolean;
|
|
65
|
+
} & import("react").RefAttributes<HTMLInputElement>>;
|
|
66
|
+
export default SearchInput;
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
import { useControlledState } from "../hooks/useControlledState.js";
|
|
2
|
+
import Flex, { AlignItems } from "../layout/Flex.js";
|
|
3
|
+
import Kbd, { KbdSize } from "../text/Kbd.js";
|
|
4
|
+
import { parseHotkey, useHotkey } from "../hooks/useHotkey.js";
|
|
5
|
+
import { useField } from "../hooks/useField.js";
|
|
6
|
+
import Spinner, { SpinnerSize } from "../feedback/Spinner.js";
|
|
7
|
+
import { useDebouncedValue } from "../hooks/useDebouncedValue.js";
|
|
8
|
+
import Input, { INPUT_SIZE_TO_GAP_MAP, InputSize } from "./Input.js";
|
|
9
|
+
import { forwardRef, useCallback, useEffect, useRef, useState } from "react";
|
|
10
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
11
|
+
import { useMergeRefs } from "@floating-ui/react";
|
|
12
|
+
import { MagnifyingGlassIcon } from "@phosphor-icons/react";
|
|
13
|
+
//#region src/inputs/SearchInput.tsx
|
|
14
|
+
/**
|
|
15
|
+
* The field for searching or filtering: a text field with a magnifier at its start, a clear button
|
|
16
|
+
* once it has text (Escape clears too), an optional focus shortcut (`hotKeys`, shown as `Kbd` caps
|
|
17
|
+
* while empty and not focused; bound with `shouldBindHotKey`), and `onSearch`, which fires once
|
|
18
|
+
* typing pauses for `debounceMs`, at once on Enter, and at once when the field is emptied.
|
|
19
|
+
* `onChange` still reports every keystroke for a controlled value.
|
|
20
|
+
*
|
|
21
|
+
* A preset over `Input` (base) with `type="search"`; `InputSize` / `InputVariant` are imported
|
|
22
|
+
* from `inputs/Input`. It never fetches, filters or routes: the app does that in `onSearch` and
|
|
23
|
+
* passes `isLoading` while it runs. New in 2.0 (1.x built searches from `TextInput` by hand).
|
|
24
|
+
*/
|
|
25
|
+
/** The spinner takes the field's rung (Spinner's identity-map rule). */
|
|
26
|
+
var INPUT_SIZE_TO_SPINNER_SIZE_MAP = {
|
|
27
|
+
[InputSize.X_SMALL]: SpinnerSize.X_SMALL,
|
|
28
|
+
[InputSize.SMALL]: SpinnerSize.SMALL,
|
|
29
|
+
[InputSize.MEDIUM]: SpinnerSize.MEDIUM,
|
|
30
|
+
[InputSize.LARGE]: SpinnerSize.LARGE,
|
|
31
|
+
[InputSize.X_LARGE]: SpinnerSize.X_LARGE
|
|
32
|
+
};
|
|
33
|
+
/** The caps match the rung of the control they sit in. */
|
|
34
|
+
var INPUT_SIZE_TO_KBD_SIZE_MAP = {
|
|
35
|
+
[InputSize.X_SMALL]: KbdSize.X_SMALL,
|
|
36
|
+
[InputSize.SMALL]: KbdSize.SMALL,
|
|
37
|
+
[InputSize.MEDIUM]: KbdSize.MEDIUM,
|
|
38
|
+
[InputSize.LARGE]: KbdSize.LARGE,
|
|
39
|
+
[InputSize.X_LARGE]: KbdSize.X_LARGE
|
|
40
|
+
};
|
|
41
|
+
/** Tokens that make a combo safe to fire while typing (Button's rule; Shift alone is not). */
|
|
42
|
+
var MODIFIER_TOKENS = new Set([
|
|
43
|
+
"mod",
|
|
44
|
+
"ctrl",
|
|
45
|
+
"meta",
|
|
46
|
+
"cmd",
|
|
47
|
+
"alt",
|
|
48
|
+
"option"
|
|
49
|
+
]);
|
|
50
|
+
/** A search field: `Input` with `type="search"`, a magnifier, clearing, a debounced `onSearch` and a focus shortcut. */
|
|
51
|
+
var SearchInput = forwardRef(function SearchInput(props, ref) {
|
|
52
|
+
const { value: valueProp, defaultValue, onChange, onSearch, debounceMs = 150, hotKeys, shouldBindHotKey = false, isLoading = false, placeholder = "Search", ariaLabel, label, trailing, size = InputSize.MEDIUM, isDisabled = false, isReadOnly = false, onFocus, onBlur, onKeyDown, ...rest } = props;
|
|
53
|
+
const field = useField();
|
|
54
|
+
const innerRef = useRef(null);
|
|
55
|
+
const mergedRef = useMergeRefs([innerRef, ref]);
|
|
56
|
+
const [isFocused, setIsFocused] = useState(false);
|
|
57
|
+
const [value, setValue] = useControlledState({
|
|
58
|
+
value: valueProp,
|
|
59
|
+
defaultValue: defaultValue ?? "",
|
|
60
|
+
onChange
|
|
61
|
+
});
|
|
62
|
+
const lastSearchedRef = useRef(value);
|
|
63
|
+
const onSearchRef = useRef(onSearch);
|
|
64
|
+
useEffect(() => {
|
|
65
|
+
onSearchRef.current = onSearch;
|
|
66
|
+
});
|
|
67
|
+
const search = useCallback((term) => {
|
|
68
|
+
if (term === lastSearchedRef.current) return;
|
|
69
|
+
lastSearchedRef.current = term;
|
|
70
|
+
onSearchRef.current?.(term);
|
|
71
|
+
}, []);
|
|
72
|
+
const debouncedValue = useDebouncedValue(value, debounceMs, debounceMs > 0);
|
|
73
|
+
useEffect(() => {
|
|
74
|
+
search(debouncedValue);
|
|
75
|
+
}, [debouncedValue, search]);
|
|
76
|
+
/** Every edit; an emptied field searches at once. */
|
|
77
|
+
const handleChange = (next) => {
|
|
78
|
+
setValue(next);
|
|
79
|
+
if (next === "") search("");
|
|
80
|
+
};
|
|
81
|
+
const handleFocus = (event) => {
|
|
82
|
+
onFocus?.(event);
|
|
83
|
+
setIsFocused(true);
|
|
84
|
+
};
|
|
85
|
+
const handleBlur = (event) => {
|
|
86
|
+
onBlur?.(event);
|
|
87
|
+
setIsFocused(false);
|
|
88
|
+
};
|
|
89
|
+
/** Escape clears a non-empty editable field and stops there; an empty field lets it through. */
|
|
90
|
+
const handleKeyDown = (event) => {
|
|
91
|
+
onKeyDown?.(event);
|
|
92
|
+
if (event.defaultPrevented || event.key !== "Escape") return;
|
|
93
|
+
if (value === "" || isDisabled || isReadOnly) return;
|
|
94
|
+
event.preventDefault();
|
|
95
|
+
event.stopPropagation();
|
|
96
|
+
handleChange("");
|
|
97
|
+
};
|
|
98
|
+
const hasHotKeys = hotKeys !== void 0 && hotKeys.length > 0;
|
|
99
|
+
const combo = hasHotKeys ? hotKeys.join("+") : "";
|
|
100
|
+
const hasModifier = hasHotKeys && hotKeys.some((entry) => MODIFIER_TOKENS.has(entry.trim().toLowerCase()));
|
|
101
|
+
useHotkey(combo, () => {
|
|
102
|
+
innerRef.current?.focus();
|
|
103
|
+
innerRef.current?.select();
|
|
104
|
+
}, {
|
|
105
|
+
isEnabled: shouldBindHotKey && hasHotKeys && !isDisabled && parseHotkey(combo) !== null,
|
|
106
|
+
shouldPreventDefault: true,
|
|
107
|
+
shouldIgnoreInputs: !hasModifier
|
|
108
|
+
});
|
|
109
|
+
const showsCaps = hasHotKeys && value === "" && !isFocused;
|
|
110
|
+
const hasTrailing = trailing !== void 0 && trailing !== null && trailing !== false;
|
|
111
|
+
const trailingNode = isLoading || showsCaps || hasTrailing ? /* @__PURE__ */ jsxs(Flex, {
|
|
112
|
+
as: "span",
|
|
113
|
+
alignItems: AlignItems.CENTER,
|
|
114
|
+
gap: INPUT_SIZE_TO_GAP_MAP[size],
|
|
115
|
+
children: [
|
|
116
|
+
isLoading && /* @__PURE__ */ jsx(Spinner, {
|
|
117
|
+
size: INPUT_SIZE_TO_SPINNER_SIZE_MAP[size],
|
|
118
|
+
ariaLabel: "Searching"
|
|
119
|
+
}),
|
|
120
|
+
showsCaps && /* @__PURE__ */ jsx(Kbd, {
|
|
121
|
+
hotKeys,
|
|
122
|
+
size: INPUT_SIZE_TO_KBD_SIZE_MAP[size],
|
|
123
|
+
isDisabled,
|
|
124
|
+
"aria-hidden": true
|
|
125
|
+
}),
|
|
126
|
+
hasTrailing && trailing
|
|
127
|
+
]
|
|
128
|
+
}) : void 0;
|
|
129
|
+
const resolvedAriaLabel = ariaLabel ?? (!(label !== void 0 && label !== "") && field === null ? "Search" : void 0);
|
|
130
|
+
return /* @__PURE__ */ jsx(Input, {
|
|
131
|
+
ref: mergedRef,
|
|
132
|
+
...rest,
|
|
133
|
+
...label === void 0 ? {} : { label },
|
|
134
|
+
...resolvedAriaLabel === void 0 ? {} : { ariaLabel: resolvedAriaLabel },
|
|
135
|
+
...isLoading ? { "aria-busy": true } : {},
|
|
136
|
+
size,
|
|
137
|
+
isDisabled,
|
|
138
|
+
isReadOnly,
|
|
139
|
+
type: "search",
|
|
140
|
+
inputMode: "search",
|
|
141
|
+
enterKeyHint: "search",
|
|
142
|
+
icon: MagnifyingGlassIcon,
|
|
143
|
+
isClearable: true,
|
|
144
|
+
placeholder,
|
|
145
|
+
value,
|
|
146
|
+
onChange: handleChange,
|
|
147
|
+
onEnter: search,
|
|
148
|
+
onFocus: handleFocus,
|
|
149
|
+
onBlur: handleBlur,
|
|
150
|
+
onKeyDown: handleKeyDown,
|
|
151
|
+
trailing: trailingNode
|
|
152
|
+
});
|
|
153
|
+
});
|
|
154
|
+
SearchInput.displayName = "SearchInput";
|
|
155
|
+
//#endregion
|
|
156
|
+
export { SearchInput as default };
|