@galaxy-io/dls 1.6.1 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +47 -50
- package/biome/index.json +74 -0
- package/biome/plugins/no-hex-literal.grit +20 -0
- package/biome/plugins/no-inline-style.grit +13 -0
- package/biome/plugins/no-margin.grit +9 -0
- package/biome/plugins/warn/no-hex-literal.grit +23 -0
- package/biome/plugins/warn/no-inline-style.grit +13 -0
- package/biome/plugins/warn/no-margin.grit +9 -0
- package/dist/a11y/FocusScope.d.ts +44 -0
- package/dist/a11y/FocusScope.js +229 -0
- package/dist/a11y/VisuallyHidden.d.ts +21 -0
- package/dist/a11y/VisuallyHidden.js +30 -0
- package/dist/avatar/Avatar.d.ts +56 -14
- package/dist/avatar/Avatar.js +250 -96
- package/dist/avatar/AvatarGroup.d.ts +43 -0
- package/dist/avatar/AvatarGroup.js +153 -0
- package/dist/backgrounds/GridBackground.d.ts +48 -0
- package/dist/backgrounds/GridBackground.js +146 -0
- package/dist/beacons/Beacon.d.ts +86 -22
- package/dist/beacons/Beacon.js +170 -47
- package/dist/brand/GalaxyFilamentWordmark.d.ts +30 -0
- package/dist/brand/GalaxyFilamentWordmark.js +39 -0
- package/dist/brand/GalaxyLogomark.d.ts +26 -0
- package/dist/brand/GalaxyLogomark.js +41 -0
- package/dist/brand/GalaxyLogomarkAnimation.d.ts +36 -0
- package/dist/brand/GalaxyLogomarkAnimation.js +107 -0
- package/dist/brand/GalaxyWordmark.d.ts +30 -0
- package/dist/brand/GalaxyWordmark.js +63 -0
- package/dist/brand/assets/galaxy-logomark-animation.js +136678 -0
- package/dist/brand/brandMark.d.ts +26 -0
- package/dist/brand/brandMark.js +35 -0
- package/dist/buttons/Button.d.ts +148 -59
- package/dist/buttons/Button.js +437 -227
- package/dist/buttons/ButtonGroup.d.ts +38 -0
- package/dist/buttons/ButtonGroup.js +68 -0
- package/dist/buttons/CopyButton.d.ts +77 -0
- package/dist/buttons/CopyButton.js +65 -0
- package/dist/charts/AreaChart.d.ts +49 -0
- package/dist/charts/AreaChart.js +31 -0
- package/dist/charts/BarChart.d.ts +54 -67
- package/dist/charts/BarChart.js +136 -116
- package/dist/charts/ChartAxis.d.ts +35 -40
- package/dist/charts/ChartAxis.js +114 -90
- package/dist/charts/ChartCategoryTargets.d.ts +12 -26
- package/dist/charts/ChartCategoryTargets.js +32 -20
- package/dist/charts/ChartFrame.d.ts +69 -116
- package/dist/charts/ChartFrame.js +253 -119
- package/dist/charts/ChartGroupProvider.d.ts +30 -41
- package/dist/charts/ChartGroupProvider.js +20 -7
- package/dist/charts/ChartLegend.d.ts +27 -48
- package/dist/charts/ChartLegend.js +206 -125
- package/dist/charts/ChartMarkTargets.d.ts +12 -28
- package/dist/charts/ChartMarkTargets.js +33 -20
- package/dist/charts/ChartPrimitives.d.ts +50 -305
- package/dist/charts/ChartPrimitives.js +65 -413
- package/dist/charts/ChartTooltip.d.ts +20 -26
- package/dist/charts/ChartTooltip.js +77 -40
- package/dist/charts/Heatmap.d.ts +35 -0
- package/dist/charts/Heatmap.js +295 -0
- package/dist/charts/LineChart.d.ts +54 -47
- package/dist/charts/LineChart.js +159 -117
- package/dist/charts/PieChart.d.ts +32 -53
- package/dist/charts/PieChart.js +149 -135
- package/dist/charts/Sparkline.d.ts +107 -0
- package/dist/charts/Sparkline.js +244 -0
- package/dist/charts/StatChart.d.ts +37 -13
- package/dist/charts/StatChart.js +82 -35
- package/dist/charts/barChartGeometry.d.ts +138 -86
- package/dist/charts/barChartGeometry.js +122 -101
- package/dist/charts/barChartLegend.d.ts +14 -18
- package/dist/charts/barChartLegend.js +18 -13
- package/dist/charts/chartFormat.d.ts +12 -18
- package/dist/charts/chartFormat.js +20 -52
- package/dist/charts/chartPalette.d.ts +33 -0
- package/dist/charts/chartPalette.js +68 -0
- package/dist/charts/chartScales.d.ts +41 -108
- package/dist/charts/chartScales.js +62 -128
- package/dist/charts/constants.d.ts +96 -256
- package/dist/charts/constants.js +105 -275
- package/dist/charts/heatmapGeometry.d.ts +95 -0
- package/dist/charts/heatmapGeometry.js +155 -0
- package/dist/charts/lineChartGeometry.d.ts +108 -58
- package/dist/charts/lineChartGeometry.js +120 -78
- package/dist/charts/pieChartGeometry.d.ts +66 -40
- package/dist/charts/pieChartGeometry.js +68 -38
- package/dist/charts/types.d.ts +197 -466
- package/dist/charts/types.js +55 -144
- package/dist/charts/useCartesianChartLayout.d.ts +28 -59
- package/dist/charts/useCartesianChartLayout.js +47 -32
- package/dist/charts/useChartDimensions.d.ts +19 -40
- package/dist/charts/useChartDimensions.js +40 -56
- package/dist/charts/useChartFormatters.d.ts +6 -15
- package/dist/charts/useChartFormatters.js +4 -9
- package/dist/charts/useChartInteraction.d.ts +47 -116
- package/dist/charts/useChartInteraction.js +95 -71
- package/dist/charts/useChartTooltipPosition.d.ts +29 -39
- package/dist/charts/useChartTooltipPosition.js +14 -5
- package/dist/charts/useSeriesColorResolver.d.ts +11 -33
- package/dist/charts/useSeriesColorResolver.js +19 -12
- package/dist/chips/Chip.d.ts +155 -44
- package/dist/chips/Chip.js +329 -155
- package/dist/chips/ChipGroup.d.ts +53 -0
- package/dist/chips/ChipGroup.js +98 -0
- package/dist/drawer/Drawer.d.ts +81 -17
- package/dist/drawer/Drawer.js +370 -65
- package/dist/dropdown/Dropdown.d.ts +80 -63
- package/dist/dropdown/Dropdown.js +127 -129
- package/dist/editor/CodeEditor.d.ts +119 -40
- package/dist/editor/CodeEditor.js +490 -400
- package/dist/editor/CodeEditorReactWidget.d.ts +20 -17
- package/dist/editor/CodeEditorReactWidget.js +28 -21
- package/dist/feedback/Alert.d.ts +49 -0
- package/dist/feedback/Alert.js +172 -0
- package/dist/feedback/EmptyState.d.ts +39 -0
- package/dist/feedback/EmptyState.js +109 -0
- package/dist/feedback/ProgressBar.d.ts +125 -0
- package/dist/feedback/ProgressBar.js +183 -0
- package/dist/feedback/ProgressCircle.d.ts +99 -0
- package/dist/feedback/ProgressCircle.js +187 -0
- package/dist/feedback/Skeleton.d.ts +69 -0
- package/dist/feedback/Skeleton.js +130 -0
- package/dist/feedback/Spinner.d.ts +63 -0
- package/dist/feedback/Spinner.js +141 -0
- package/dist/fonts.css +70 -0
- package/dist/hooks/internal/useIsClient.d.ts +2 -0
- package/dist/hooks/internal/useIsClient.js +14 -0
- package/dist/hooks/useClipboard.d.ts +19 -0
- package/dist/hooks/useClipboard.js +45 -0
- package/dist/hooks/useControlledOpenState.d.ts +21 -0
- package/dist/hooks/useControlledOpenState.js +19 -0
- package/dist/hooks/useControlledState.d.ts +19 -0
- package/dist/hooks/useControlledState.js +22 -0
- package/dist/hooks/useDebouncedValue.d.ts +14 -0
- package/dist/hooks/useDebouncedValue.js +33 -0
- package/dist/hooks/useDisclosure.d.ts +26 -0
- package/dist/hooks/useDisclosure.js +36 -0
- package/dist/hooks/useDismiss.d.ts +23 -27
- package/dist/hooks/useDismiss.js +39 -27
- package/dist/hooks/useElementClientSize.d.ts +10 -10
- package/dist/hooks/useElementClientSize.js +8 -11
- package/dist/hooks/useElementWidth.d.ts +6 -13
- package/dist/hooks/useElementWidth.js +6 -14
- package/dist/hooks/useField.d.ts +47 -0
- package/dist/hooks/useField.js +40 -0
- package/dist/hooks/useHotkey.d.ts +77 -0
- package/dist/hooks/useHotkey.js +246 -0
- package/dist/hooks/useIsMac.d.ts +12 -0
- package/dist/hooks/useIsMac.js +27 -0
- package/dist/hooks/useIsomorphicLayoutEffect.d.ts +17 -0
- package/dist/hooks/useIsomorphicLayoutEffect.js +20 -0
- package/dist/hooks/useLocalStorage.d.ts +28 -0
- package/dist/hooks/useLocalStorage.js +145 -0
- package/dist/hooks/useMediaQuery.d.ts +11 -0
- package/dist/hooks/useMediaQuery.js +23 -0
- package/dist/hooks/usePrefersReducedMotion.d.ts +12 -0
- package/dist/hooks/usePrefersReducedMotion.js +25 -0
- package/dist/hooks/useResize.d.ts +42 -62
- package/dist/hooks/useResize.js +43 -31
- package/dist/icons/Icon.d.ts +64 -37
- package/dist/icons/Icon.js +96 -37
- package/dist/icons/internal/IconSlot.d.ts +10 -0
- package/dist/icons/internal/IconSlot.js +32 -0
- package/dist/inputs/CheckboxGroup.d.ts +115 -0
- package/dist/inputs/CheckboxGroup.js +183 -0
- package/dist/inputs/CheckboxInput.d.ts +98 -28
- package/dist/inputs/CheckboxInput.js +218 -88
- package/dist/inputs/ColorInput.d.ts +115 -29
- package/dist/inputs/ColorInput.js +748 -326
- package/dist/inputs/CopyInput.d.ts +49 -20
- package/dist/inputs/CopyInput.js +57 -49
- package/dist/inputs/CronInput.d.ts +94 -0
- package/dist/inputs/CronInput.js +618 -0
- package/dist/inputs/DateInput.d.ts +175 -28
- package/dist/inputs/DateInput.js +1109 -451
- package/dist/inputs/DurationInput.d.ts +101 -0
- package/dist/inputs/DurationInput.js +441 -0
- package/dist/inputs/Field.d.ts +75 -0
- package/dist/inputs/Field.js +247 -0
- package/dist/inputs/Fieldset.d.ts +53 -0
- package/dist/inputs/Fieldset.js +149 -0
- package/dist/inputs/FileInput.d.ts +110 -0
- package/dist/inputs/FileInput.js +476 -0
- package/dist/inputs/Input.d.ts +148 -187
- package/dist/inputs/Input.js +339 -259
- package/dist/inputs/KeyValueInput.d.ts +120 -0
- package/dist/inputs/KeyValueInput.js +383 -0
- package/dist/inputs/MultiSelectInput.d.ts +165 -54
- package/dist/inputs/MultiSelectInput.js +175 -559
- package/dist/inputs/NumberInput.d.ts +65 -9
- package/dist/inputs/NumberInput.js +197 -40
- package/dist/inputs/PasswordInput.d.ts +17 -12
- package/dist/inputs/PasswordInput.js +33 -33
- package/dist/inputs/PinInput.d.ts +117 -0
- package/dist/inputs/PinInput.js +364 -0
- package/dist/inputs/RadioGroup.d.ts +115 -0
- package/dist/inputs/RadioGroup.js +179 -0
- package/dist/inputs/RadioInput.d.ts +87 -24
- package/dist/inputs/RadioInput.js +182 -95
- package/dist/inputs/SearchInput.d.ts +66 -0
- package/dist/inputs/SearchInput.js +156 -0
- package/dist/inputs/SelectInput.d.ts +195 -55
- package/dist/inputs/SelectInput.js +1308 -446
- package/dist/inputs/SliderInput.d.ts +150 -30
- package/dist/inputs/SliderInput.js +441 -186
- package/dist/inputs/SwitchInput.d.ts +109 -0
- package/dist/inputs/SwitchInput.js +248 -0
- package/dist/inputs/TagInput.d.ts +117 -0
- package/dist/inputs/TagInput.js +408 -0
- package/dist/inputs/TextAreaInput.d.ts +146 -44
- package/dist/inputs/TextAreaInput.js +292 -198
- package/dist/inputs/TextInput.d.ts +4 -13
- package/dist/inputs/TextInput.js +13 -48
- package/dist/inputs/ToggleInput.d.ts +120 -22
- package/dist/inputs/ToggleInput.js +262 -116
- package/dist/inputs/internal/bareField.d.ts +18 -0
- package/dist/inputs/internal/bareField.js +38 -0
- package/dist/inputs/internal/devWarn.d.ts +7 -0
- package/dist/inputs/internal/devWarn.js +30 -0
- package/dist/inputs/internal/fieldFrame.d.ts +34 -0
- package/dist/inputs/internal/fieldFrame.js +64 -0
- package/dist/inputs/internal/fieldWiring.d.ts +50 -0
- package/dist/inputs/internal/fieldWiring.js +38 -0
- package/dist/inputs/internal/innerButton.d.ts +2 -0
- package/dist/inputs/internal/innerButton.js +24 -0
- package/dist/inputs/internal/ownField.d.ts +45 -0
- package/dist/inputs/internal/ownField.js +58 -0
- package/dist/inputs/internal/predicates.d.ts +9 -0
- package/dist/inputs/internal/predicates.js +11 -0
- package/dist/inputs/internal/useComboboxPopover.d.ts +46 -0
- package/dist/inputs/internal/useComboboxPopover.js +92 -0
- package/dist/json/JsonViewer.d.ts +62 -0
- package/dist/json/JsonViewer.js +483 -0
- package/dist/layout/Box.d.ts +87 -0
- package/dist/layout/Box.js +109 -0
- package/dist/layout/Divider.d.ts +25 -0
- package/dist/layout/Divider.js +70 -0
- package/dist/layout/Flex.d.ts +139 -0
- package/dist/layout/Flex.js +165 -0
- package/dist/layout/FlexItem.d.ts +72 -0
- package/dist/layout/FlexItem.js +84 -0
- package/dist/layout/Grid.d.ts +140 -0
- package/dist/layout/Grid.js +178 -0
- package/dist/layout/Portal.d.ts +29 -0
- package/dist/layout/Portal.js +27 -0
- package/dist/layout/ResizablePanels.d.ts +88 -0
- package/dist/layout/ResizablePanels.js +198 -0
- package/dist/layout/ResizeHandle.d.ts +48 -0
- package/dist/layout/ResizeHandle.js +143 -0
- package/dist/layout/ScrollArea.d.ts +30 -0
- package/dist/layout/ScrollArea.js +138 -0
- package/dist/links/Link.d.ts +101 -1
- package/dist/links/Link.js +166 -4
- package/dist/lists/BulletedList.d.ts +25 -7
- package/dist/lists/BulletedList.js +72 -27
- package/dist/lists/DescriptionList.d.ts +91 -0
- package/dist/lists/DescriptionList.js +147 -0
- package/dist/menu/ContextMenu.d.ts +64 -0
- package/dist/menu/ContextMenu.js +34 -0
- package/dist/menu/Menu.d.ts +280 -0
- package/dist/menu/Menu.js +1003 -0
- package/dist/modal/ConfirmDialog.d.ts +55 -0
- package/dist/modal/ConfirmDialog.js +151 -0
- package/dist/modal/Modal.d.ts +64 -14
- package/dist/modal/Modal.js +189 -48
- package/dist/navigation/Breadcrumbs.d.ts +65 -0
- package/dist/navigation/Breadcrumbs.js +243 -0
- package/dist/navigation/CommandPalette.d.ts +83 -0
- package/dist/navigation/CommandPalette.js +509 -0
- package/dist/navigation/Pagination.d.ts +87 -0
- package/dist/navigation/Pagination.js +300 -0
- package/dist/navigation/SidebarNav.d.ts +107 -0
- package/dist/navigation/SidebarNav.js +341 -0
- package/dist/navigation/Stepper.d.ts +52 -0
- package/dist/navigation/Stepper.js +207 -0
- package/dist/navigation/Tabs.d.ts +113 -0
- package/dist/navigation/Tabs.js +543 -0
- package/dist/navigation/Topbar.d.ts +20 -0
- package/dist/navigation/Topbar.js +62 -0
- package/dist/overlay/OverlayProvider.d.ts +28 -32
- package/dist/overlay/OverlayProvider.js +42 -93
- package/dist/overlay/useOverlay.d.ts +88 -12
- package/dist/overlay/useOverlay.js +220 -43
- package/dist/overlays/Popover.d.ts +114 -0
- package/dist/overlays/Popover.js +389 -0
- package/dist/shapes/Circle.d.ts +84 -8
- package/dist/shapes/Circle.js +122 -20
- package/dist/shapes/Square.d.ts +84 -8
- package/dist/shapes/Square.js +123 -20
- package/dist/styles/mixins.d.ts +35 -0
- package/dist/styles/mixins.js +60 -0
- package/dist/styles.css +1 -202
- package/dist/table/InfiniteSpreadsheet.d.ts +140 -10
- package/dist/table/InfiniteSpreadsheet.js +762 -225
- package/dist/table/InfiniteTable.d.ts +116 -14
- package/dist/table/InfiniteTable.js +287 -429
- package/dist/table/SpreadsheetCellEditor.d.ts +54 -6
- package/dist/table/SpreadsheetCellEditor.js +163 -84
- package/dist/table/TableCore.d.ts +252 -0
- package/dist/table/TableCore.js +1077 -0
- package/dist/table/VirtualizedInfiniteTable.d.ts +104 -14
- package/dist/table/VirtualizedInfiniteTable.js +280 -219
- package/dist/table/types.d.ts +66 -244
- package/dist/table/types.js +0 -51
- package/dist/table/useInfiniteScrollSentinel.d.ts +25 -21
- package/dist/table/useInfiniteScrollSentinel.js +38 -30
- package/dist/table/useSpreadsheetCellNavigation.d.ts +44 -0
- package/dist/table/useSpreadsheetCellNavigation.js +141 -0
- package/dist/table/useTableColumnLayout.d.ts +90 -25
- package/dist/table/useTableColumnLayout.js +255 -50
- package/dist/table/useTableKeyboardNavigation.d.ts +32 -21
- package/dist/table/useTableKeyboardNavigation.js +95 -71
- package/dist/table/useTableRowSelection.d.ts +24 -25
- package/dist/table/useTableRowSelection.js +57 -84
- package/dist/table/useTableVirtualizer.d.ts +20 -0
- package/dist/table/useTableVirtualizer.js +48 -0
- package/dist/text/Bold.d.ts +5 -6
- package/dist/text/Bold.js +16 -15
- package/dist/text/Code.d.ts +5 -6
- package/dist/text/Code.js +16 -25
- package/dist/text/CodeBlock.d.ts +77 -0
- package/dist/text/CodeBlock.js +373 -0
- package/dist/text/EditableText.d.ts +55 -15
- package/dist/text/EditableText.js +153 -135
- package/dist/text/Ellipsis.d.ts +34 -8
- package/dist/text/Ellipsis.js +55 -23
- package/dist/text/Kbd.d.ts +72 -0
- package/dist/text/Kbd.js +284 -0
- package/dist/text/MarkdownText.d.ts +27 -10
- package/dist/text/MarkdownText.js +317 -300
- package/dist/text/RequiredMarker.d.ts +17 -5
- package/dist/text/RequiredMarker.js +34 -36
- package/dist/text/Selectable.d.ts +5 -6
- package/dist/text/Selectable.js +16 -13
- package/dist/text/Span.d.ts +82 -0
- package/dist/text/Span.js +115 -0
- package/dist/text/Text.d.ts +128 -41
- package/dist/text/Text.js +209 -76
- package/dist/theme/GalaxyProvider.d.ts +75 -0
- package/dist/theme/GalaxyProvider.js +223 -0
- package/dist/theme/ThemeSwitcher.d.ts +52 -0
- package/dist/theme/ThemeSwitcher.js +94 -0
- package/dist/theme/enums.d.ts +118 -0
- package/dist/theme/enums.js +144 -0
- package/dist/theme/tokens/dark.d.ts +2 -0
- package/dist/theme/tokens/dark.js +275 -0
- package/dist/theme/tokens/generate.d.ts +15 -0
- package/dist/theme/tokens/generate.js +47 -0
- package/dist/theme/tokens/light.d.ts +2 -0
- package/dist/theme/tokens/light.js +274 -0
- package/dist/theme/tokens/palette.d.ts +14 -0
- package/dist/theme/tokens/palette.js +153 -0
- package/dist/theme/tokens/scales.d.ts +26 -0
- package/dist/theme/tokens/scales.js +154 -0
- package/dist/theme/tokens/t.d.ts +3 -0
- package/dist/theme/tokens/t.js +25 -0
- package/dist/theme/tokens/types.d.ts +189 -0
- package/dist/theme/tokens/types.js +0 -0
- package/dist/theme/useGalaxyTheme.d.ts +46 -0
- package/dist/theme/useGalaxyTheme.js +36 -0
- package/dist/theme/useInverseScope.d.ts +18 -0
- package/dist/theme/useInverseScope.js +33 -0
- package/dist/three/GalaxyLogomark3D.d.ts +46 -0
- package/dist/three/GalaxyLogomark3D.js +134 -0
- package/dist/three/assets/galaxy-logomark.js +4 -0
- package/dist/three/galaxyLogomark3DScene.d.ts +27 -0
- package/dist/three/galaxyLogomark3DScene.js +165 -0
- package/dist/timeline/Timeline.d.ts +99 -0
- package/dist/timeline/Timeline.js +269 -0
- package/dist/toast/Toast.d.ts +43 -19
- package/dist/toast/Toast.js +130 -89
- package/dist/toast/ToastProvider.d.ts +23 -23
- package/dist/toast/ToastProvider.js +298 -101
- package/dist/toast/ToastViewport.d.ts +12 -0
- package/dist/toast/ToastViewport.js +210 -0
- package/dist/toast/useToast.d.ts +139 -5
- package/dist/toast/useToast.js +15 -13
- package/dist/tokens.css +654 -0
- package/dist/tooltip/Tooltip.d.ts +64 -44
- package/dist/tooltip/Tooltip.js +280 -73
- package/dist/tooltip/internal/LazyTooltip.d.ts +7 -0
- package/dist/tooltip/internal/LazyTooltip.js +53 -0
- package/dist/transform/Fade.d.ts +33 -11
- package/dist/transform/Fade.js +71 -19
- package/dist/transform/Flasher.d.ts +25 -0
- package/dist/transform/Flasher.js +39 -0
- package/dist/transform/Rotate.d.ts +24 -12
- package/dist/transform/Rotate.js +36 -22
- package/dist/transform/ScaleFade.d.ts +36 -11
- package/dist/transform/ScaleFade.js +86 -28
- package/dist/transform/internal/CollapseMotion.d.ts +10 -0
- package/dist/transform/internal/CollapseMotion.js +65 -0
- package/dist/tree/Tree.d.ts +85 -0
- package/dist/tree/Tree.js +387 -0
- package/dist/tree/treeRow.d.ts +39 -0
- package/dist/tree/treeRow.js +75 -0
- package/dist/utils/colors.d.ts +46 -13
- package/dist/utils/colors.js +92 -34
- package/dist/utils/css.d.ts +23 -0
- package/dist/utils/css.js +30 -0
- package/dist/utils/format.d.ts +58 -0
- package/dist/utils/format.js +220 -0
- package/dist/vite/index.d.ts +16 -0
- package/dist/vite/index.js +52 -0
- package/dist/widget/Widget.d.ts +164 -48
- package/dist/widget/Widget.js +335 -96
- package/dist/widget/WidgetGroup.d.ts +36 -0
- package/dist/widget/WidgetGroup.js +103 -0
- package/package.json +851 -157
- package/dist/accordion/Accordion.d.ts +0 -54
- package/dist/accordion/Accordion.js +0 -183
- package/dist/assets/components/GalaxyFilamentWordmarkDark.d.ts +0 -3
- package/dist/assets/components/GalaxyFilamentWordmarkDark.js +0 -14
- package/dist/assets/components/GalaxyFilamentWordmarkLight.d.ts +0 -3
- package/dist/assets/components/GalaxyFilamentWordmarkLight.js +0 -14
- package/dist/assets/components/GalaxyLogomarkDark.d.ts +0 -3
- package/dist/assets/components/GalaxyLogomarkDark.js +0 -11
- package/dist/assets/components/GalaxyLogomarkLight.d.ts +0 -3
- package/dist/assets/components/GalaxyLogomarkLight.js +0 -17
- package/dist/assets/components/GalaxyWordmarkDark.d.ts +0 -3
- package/dist/assets/components/GalaxyWordmarkDark.js +0 -15
- package/dist/assets/components/GalaxyWordmarkLight.d.ts +0 -3
- package/dist/assets/components/GalaxyWordmarkLight.js +0 -28
- package/dist/assets/models/galaxy-animation.js +0 -136666
- package/dist/assets/models/galaxy-logomark.js +0 -4
- package/dist/avatar/AvatarShimmer.d.ts +0 -30
- package/dist/avatar/AvatarShimmer.js +0 -22
- package/dist/backgrounds/CellGridBackground.d.ts +0 -24
- package/dist/backgrounds/CellGridBackground.js +0 -44
- package/dist/backgrounds/CrossGridBackground.d.ts +0 -26
- package/dist/backgrounds/CrossGridBackground.js +0 -49
- package/dist/backgrounds/DotGridBackground.d.ts +0 -24
- package/dist/backgrounds/DotGridBackground.js +0 -47
- package/dist/badge/Badge.d.ts +0 -42
- package/dist/badge/Badge.js +0 -99
- package/dist/charts/ChartEmptyState.d.ts +0 -17
- package/dist/charts/ChartEmptyState.js +0 -29
- package/dist/charts/ProgressBar.d.ts +0 -29
- package/dist/charts/ProgressBar.js +0 -65
- package/dist/charts/chartTheme.d.ts +0 -18
- package/dist/charts/chartTheme.js +0 -26
- package/dist/containers/FlexItem.d.ts +0 -50
- package/dist/containers/FlexItem.js +0 -91
- package/dist/containers/FlexWrapper.d.ts +0 -96
- package/dist/containers/FlexWrapper.js +0 -143
- package/dist/containers/GridWrapper.d.ts +0 -79
- package/dist/containers/GridWrapper.js +0 -125
- package/dist/containers/Spacing.d.ts +0 -23
- package/dist/containers/Spacing.js +0 -59
- package/dist/containers/Wrapper.d.ts +0 -26
- package/dist/containers/Wrapper.js +0 -54
- package/dist/dividers/HorizontalDivider.d.ts +0 -7
- package/dist/dividers/HorizontalDivider.js +0 -39
- package/dist/dividers/VerticalDivider.d.ts +0 -6
- package/dist/dividers/VerticalDivider.js +0 -21
- package/dist/icons/GalaxyFilamentWordmark.d.ts +0 -11
- package/dist/icons/GalaxyFilamentWordmark.js +0 -25
- package/dist/icons/GalaxyLogomark.d.ts +0 -13
- package/dist/icons/GalaxyLogomark.js +0 -27
- package/dist/icons/GalaxyLogomark3D.d.ts +0 -56
- package/dist/icons/GalaxyLogomark3D.js +0 -319
- package/dist/icons/GalaxyLogomarkAnimation.d.ts +0 -18
- package/dist/icons/GalaxyLogomarkAnimation.js +0 -48
- package/dist/icons/GalaxyWordmark.d.ts +0 -11
- package/dist/icons/GalaxyWordmark.js +0 -25
- package/dist/inputs/MultiTextInput.d.ts +0 -32
- package/dist/inputs/MultiTextInput.js +0 -180
- package/dist/inputs/SwitcherInput.d.ts +0 -30
- package/dist/inputs/SwitcherInput.js +0 -81
- package/dist/inputs/hooks.d.ts +0 -10
- package/dist/inputs/hooks.js +0 -22
- package/dist/overlay/constants.d.ts +0 -28
- package/dist/overlay/constants.js +0 -37
- package/dist/resizable/HorizontalResizeHandle.d.ts +0 -17
- package/dist/resizable/HorizontalResizeHandle.js +0 -38
- package/dist/resizable/VerticalResizeHandle.d.ts +0 -18
- package/dist/resizable/VerticalResizeHandle.js +0 -39
- package/dist/table/SpreadsheetCell.d.ts +0 -21
- package/dist/table/SpreadsheetCell.js +0 -71
- package/dist/table/SpreadsheetHeaderCell.d.ts +0 -23
- package/dist/table/SpreadsheetHeaderCell.js +0 -91
- package/dist/table/SpreadsheetMenuItem.d.ts +0 -14
- package/dist/table/SpreadsheetMenuItem.js +0 -33
- package/dist/table/SpreadsheetPrimitives.d.ts +0 -172
- package/dist/table/SpreadsheetPrimitives.js +0 -105
- package/dist/table/SpreadsheetRow.d.ts +0 -33
- package/dist/table/SpreadsheetRow.js +0 -73
- package/dist/table/SpreadsheetRowActionCell.d.ts +0 -14
- package/dist/table/SpreadsheetRowActionCell.js +0 -51
- package/dist/table/TableExpandCell.d.ts +0 -11
- package/dist/table/TableExpandCell.js +0 -24
- package/dist/table/TableExpandedRow.d.ts +0 -16
- package/dist/table/TableExpandedRow.js +0 -77
- package/dist/table/TableHeaderCellContent.d.ts +0 -30
- package/dist/table/TableHeaderCellContent.js +0 -48
- package/dist/table/TablePrimitives.d.ts +0 -313
- package/dist/table/TablePrimitives.js +0 -302
- package/dist/table/TableSelectCell.d.ts +0 -18
- package/dist/table/TableSelectCell.js +0 -27
- package/dist/table/TableStatusRow.d.ts +0 -18
- package/dist/table/TableStatusRow.js +0 -50
- package/dist/table/useSpreadsheetEditing.d.ts +0 -13
- package/dist/table/useSpreadsheetEditing.js +0 -41
- package/dist/table/useTableColumnResize.d.ts +0 -38
- package/dist/table/useTableColumnResize.js +0 -155
- package/dist/table/useTableRowExpansion.d.ts +0 -24
- package/dist/table/useTableRowExpansion.js +0 -62
- package/dist/table/utils.d.ts +0 -50
- package/dist/table/utils.js +0 -78
- package/dist/text/HotKeys.d.ts +0 -30
- package/dist/text/HotKeys.js +0 -74
- package/dist/text/Paragraph.d.ts +0 -33
- package/dist/text/Paragraph.js +0 -83
- package/dist/text/TextShimmer.d.ts +0 -14
- package/dist/text/TextShimmer.js +0 -34
- package/dist/theme/GalaxyTheme.d.ts +0 -67
- package/dist/theme/GalaxyTheme.js +0 -119
- package/dist/theme/constants.d.ts +0 -8
- package/dist/theme/constants.js +0 -38
- package/dist/theme/index.d.ts +0 -6
- package/dist/theme/index.js +0 -7
- package/dist/theme/types.d.ts +0 -195
- package/dist/theme/types.js +0 -10
- package/dist/theme/typography.d.ts +0 -2
- package/dist/theme/typography.js +0 -73
- package/dist/theme/variants/dark.d.ts +0 -2
- package/dist/theme/variants/dark.js +0 -125
- package/dist/theme/variants/light.d.ts +0 -2
- package/dist/theme/variants/light.js +0 -125
- package/dist/toast/ToastContainer.d.ts +0 -10
- package/dist/toast/ToastContainer.js +0 -31
- package/dist/toast/ToastWrapper.d.ts +0 -6
- package/dist/toast/ToastWrapper.js +0 -27
- package/dist/transform/Flash.d.ts +0 -7
- package/dist/transform/Flash.js +0 -18
- package/dist/transform/Spin.d.ts +0 -14
- package/dist/transform/Spin.js +0 -25
- package/dist/utils/linaria.d.ts +0 -1
- package/dist/utils/linaria.js +0 -8
package/dist/inputs/Input.js
CHANGED
|
@@ -1,299 +1,379 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { getCssSizeValue } from "../utils/linaria.js";
|
|
1
|
+
import { FontFamily } from "../theme/enums.js";
|
|
3
2
|
import Text, { TextSize, TextVariant } from "../text/Text.js";
|
|
4
|
-
import
|
|
3
|
+
import { useControlledState } from "../hooks/useControlledState.js";
|
|
5
4
|
import Icon, { IconVariant } from "../icons/Icon.js";
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import
|
|
5
|
+
import Button, { ButtonSize, ButtonVariant } from "../buttons/Button.js";
|
|
6
|
+
import { useDevWarning } from "./internal/devWarn.js";
|
|
7
|
+
import { hasContent, isFilled } from "./internal/predicates.js";
|
|
8
|
+
import { useFieldWiring } from "./internal/fieldWiring.js";
|
|
9
|
+
import Field, { FieldSize } from "./Field.js";
|
|
10
|
+
import { rootStyle, useOwnField } from "./internal/ownField.js";
|
|
11
|
+
import { useIsBareField } from "./internal/bareField.js";
|
|
12
|
+
import "./internal/innerButton.js";
|
|
9
13
|
/* empty css */
|
|
10
14
|
import { styled } from "@linaria/react";
|
|
11
|
-
import {
|
|
12
|
-
import { forwardRef } from "react";
|
|
15
|
+
import { forwardRef, useRef } from "react";
|
|
13
16
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
14
|
-
import {
|
|
17
|
+
import { cx } from "@linaria/core";
|
|
18
|
+
import { useMergeRefs } from "@floating-ui/react";
|
|
19
|
+
import { XIcon } from "@phosphor-icons/react";
|
|
15
20
|
//#region src/inputs/Input.tsx
|
|
16
21
|
/**
|
|
17
|
-
* The
|
|
18
|
-
*
|
|
22
|
+
* The single-line text field every text-like input wraps (TextInput, PasswordInput, SearchInput,
|
|
23
|
+
* NumberInput, CopyInput). It draws the field frame: the resting fill (`variant`, surface set, or
|
|
24
|
+
* none with `isGhost`), the hairline, the size rung, and the focus, error, disabled and read-only looks. It holds a string
|
|
25
|
+
* with `value` / `defaultValue` / `onChange` and lays out the in-field parts in order: `leading`,
|
|
26
|
+
* `icon`, `prefix`, the `<input>`, `suffix`, the clear button (`isClearable`) and `trailing`. It
|
|
27
|
+
* reports Enter (`onEnter`, IME-safe).
|
|
28
|
+
*
|
|
29
|
+
* Labels and errors go through `Field`: a standalone Input with `label` or `error` renders a Field
|
|
30
|
+
* around its frame; an Input inside a Field reads the Field's wiring with `useField()` (id,
|
|
31
|
+
* `aria-describedby`, error and required) and never wraps itself again.
|
|
32
|
+
*
|
|
33
|
+
* Input never validates, parses, masks or counts: `error` / `isError` come from the app. `type` is
|
|
34
|
+
* required, because apps render a typed wrapper (usually `TextInput`) rather than Input itself.
|
|
35
|
+
* Replaces 1.x `Input` (no longer generic; `parse`, `min`/`max`/`step`, `width`, `labelTooltip`,
|
|
36
|
+
* `InputLabel` and the `getInput*` theme helpers are gone).
|
|
19
37
|
*/
|
|
20
|
-
|
|
21
|
-
return /* @__PURE__ */ jsxs(FlexWrapper, {
|
|
22
|
-
alignItems: AlignItems.CENTER,
|
|
23
|
-
gap: 1,
|
|
24
|
-
children: [
|
|
25
|
-
/* @__PURE__ */ jsx(Text, {
|
|
26
|
-
variant: TextVariant.SECONDARY,
|
|
27
|
-
children: label
|
|
28
|
-
}),
|
|
29
|
-
isRequired && /* @__PURE__ */ jsx(RequiredMarker, {}),
|
|
30
|
-
labelTooltip && /* @__PURE__ */ jsx(Spacing, {
|
|
31
|
-
left: 4,
|
|
32
|
-
children: /* @__PURE__ */ jsx(Tooltip, {
|
|
33
|
-
body: labelTooltip,
|
|
34
|
-
position: TooltipPosition.RIGHT,
|
|
35
|
-
children: /* @__PURE__ */ jsx(Icon, {
|
|
36
|
-
component: InfoIcon,
|
|
37
|
-
variant: IconVariant.SECONDARY,
|
|
38
|
-
size: 12
|
|
39
|
-
})
|
|
40
|
-
})
|
|
41
|
-
})
|
|
42
|
-
]
|
|
43
|
-
});
|
|
44
|
-
};
|
|
45
|
-
/** Field height — 24 / 28 / 32px, matching `ButtonSize` so they line up in a row. */
|
|
38
|
+
/** Canonical rungs; Input supports all five. Shared by the text-like inputs that wrap Input. */
|
|
46
39
|
var InputSize = /* @__PURE__ */ function(InputSize) {
|
|
40
|
+
/** 20px tall: caption text, 12px icon. */
|
|
41
|
+
InputSize["X_SMALL"] = "X_SMALL";
|
|
42
|
+
/** 24px tall: body_sm text, 12px icon. */
|
|
47
43
|
InputSize["SMALL"] = "SMALL";
|
|
44
|
+
/** 32px tall: body_md text, 14px icon. The default (1.x `MEDIUM` was 28px). */
|
|
48
45
|
InputSize["MEDIUM"] = "MEDIUM";
|
|
46
|
+
/** 36px tall: body_lg text, 14px icon. */
|
|
49
47
|
InputSize["LARGE"] = "LARGE";
|
|
48
|
+
/** 40px tall: body_lg text, 16px icon. */
|
|
49
|
+
InputSize["X_LARGE"] = "X_LARGE";
|
|
50
50
|
return InputSize;
|
|
51
51
|
}({});
|
|
52
52
|
/**
|
|
53
|
-
*
|
|
54
|
-
*
|
|
55
|
-
*
|
|
56
|
-
* ```
|
|
57
|
-
* height: ${({ $size }) => getInputHeight($size)};
|
|
58
|
-
* ```
|
|
59
|
-
*/
|
|
60
|
-
function getInputHeight(size) {
|
|
61
|
-
return `${getInputHeightValue(size)}px`;
|
|
62
|
-
}
|
|
63
|
-
/** `getInputHeight` unwrapped, for callers that need to do arithmetic on it. */
|
|
64
|
-
function getInputHeightValue(size) {
|
|
65
|
-
return match(size).returnType().with("SMALL", () => 24).with("MEDIUM", () => 28).with("LARGE", () => 32).exhaustive();
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* Horizontal inset for an `InputSize` — 6 / 8 / 12px. Returned as a number so
|
|
69
|
-
* `TextAreaInput` can fold it into its computed `min-height`; most callers want
|
|
70
|
-
* `getInputPadding` instead.
|
|
71
|
-
*/
|
|
72
|
-
function getInputPaddingValue(size) {
|
|
73
|
-
return match(size).returnType().with("SMALL", () => 6).with("MEDIUM", () => 8).with("LARGE", () => 12).exhaustive();
|
|
74
|
-
}
|
|
75
|
-
/** `getInputPaddingValue` as a CSS length. */
|
|
76
|
-
function getInputPadding(size) {
|
|
77
|
-
return `${getInputPaddingValue(size)}px`;
|
|
78
|
-
}
|
|
79
|
-
/** Type step for an `InputSize` — `body_sm` / `body_md` / `body_lg`. */
|
|
80
|
-
function getInputFontSize(theme, size) {
|
|
81
|
-
return match(size).returnType().with("SMALL", () => theme.font.sans.size.body_sm).with("MEDIUM", () => theme.font.sans.size.body_md).with("LARGE", () => theme.font.sans.size.body_lg).exhaustive();
|
|
82
|
-
}
|
|
83
|
-
/** The line height paired with `getInputFontSize`. */
|
|
84
|
-
function getInputLineHeight(theme, size) {
|
|
85
|
-
return match(size).returnType().with("SMALL", () => theme.font.sans.height.body_sm).with("MEDIUM", () => theme.font.sans.height.body_md).with("LARGE", () => theme.font.sans.height.body_lg).exhaustive();
|
|
86
|
-
}
|
|
87
|
-
/** Icon px for an `InputSize` — 12 / 14 / 16, for icons sitting inside a field. */
|
|
88
|
-
function getInputIconSize(size) {
|
|
89
|
-
return match(size).returnType().with("SMALL", () => 12).with("MEDIUM", () => 14).with("LARGE", () => 16).exhaustive();
|
|
90
|
-
}
|
|
91
|
-
/**
|
|
92
|
-
* `getInputFontSize` for copy that renders through `Text` rather than through a
|
|
93
|
-
* raw `<input>` — the trigger labels in `SelectInput`, `DateInput`, `ColorInput`.
|
|
94
|
-
*/
|
|
95
|
-
function getInputTextSize(size) {
|
|
96
|
-
return match(size).returnType().with("SMALL", () => TextSize.BODY_SM).with("MEDIUM", () => TextSize.BODY_MD).with("LARGE", () => TextSize.BODY_LG).exhaustive();
|
|
97
|
-
}
|
|
98
|
-
/**
|
|
99
|
-
* Hit-target box for the boolean controls — 12 / 16 / 20px. Shared by the
|
|
100
|
-
* `CheckboxInput` square and the `RadioInput` circle, which are sized as targets
|
|
101
|
-
* rather than off the type scale, so they do not follow `getInputHeight`.
|
|
102
|
-
*/
|
|
103
|
-
function getInputControlSize(size) {
|
|
104
|
-
return match(size).returnType().with("SMALL", () => "12px").with("MEDIUM", () => "16px").with("LARGE", () => "20px").exhaustive();
|
|
105
|
-
}
|
|
106
|
-
/**
|
|
107
|
-
* Surface color for any input. Mirrors `DropdownVariant` so a field and the
|
|
108
|
-
* panel it sits in can be tuned to the same step of the neutral stack.
|
|
109
|
-
*
|
|
110
|
-
* Paints the *resting* surface only — state colors (checked, selected, filled)
|
|
111
|
-
* are fixed tokens and are not affected by the variant.
|
|
112
|
-
*
|
|
113
|
-
* `TRANSPARENT` drops both the fill and the border. `CheckboxInput` and
|
|
114
|
-
* `RadioInput` keep their hairline under it, or they would be invisible.
|
|
53
|
+
* Resting fill of the field (Constitution V-A surface set). 1.x `TRANSPARENT` is `isGhost` (color
|
|
54
|
+
* 2.1).
|
|
115
55
|
*/
|
|
116
56
|
var InputVariant = /* @__PURE__ */ function(InputVariant) {
|
|
117
|
-
|
|
57
|
+
/** `background.base` fill. */
|
|
118
58
|
InputVariant["BASE"] = "BASE";
|
|
59
|
+
/** `background.primary` fill. The default. */
|
|
119
60
|
InputVariant["PRIMARY"] = "PRIMARY";
|
|
61
|
+
/** `background.secondary` fill. */
|
|
120
62
|
InputVariant["SECONDARY"] = "SECONDARY";
|
|
63
|
+
/** `background.tertiary` fill. */
|
|
121
64
|
InputVariant["TERTIARY"] = "TERTIARY";
|
|
122
65
|
return InputVariant;
|
|
123
66
|
}({});
|
|
124
67
|
/**
|
|
125
|
-
*
|
|
126
|
-
*
|
|
127
|
-
*
|
|
128
|
-
* ```
|
|
129
|
-
* background-color: ${({ theme, $variant }) => getInputSurfaceColor(theme, $variant)};
|
|
130
|
-
* ```
|
|
68
|
+
* The visual box. Focus is drawn here as `FIELD_FOCUS` (`border.focused` at 1px inside the frame), whenever the
|
|
69
|
+
* inner `<input>` has focus, from the mouse or the keyboard.
|
|
131
70
|
*/
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
71
|
+
var Frame = /*#__PURE__*/ styled("div")({
|
|
72
|
+
name: "Frame",
|
|
73
|
+
class: "gx-Input-Frame-f1bxp24n",
|
|
74
|
+
propsAsIs: false
|
|
75
|
+
});
|
|
76
|
+
/** Holds `leading` or `trailing`. */
|
|
77
|
+
var Slot = /*#__PURE__*/ styled("span")({
|
|
78
|
+
name: "Slot",
|
|
79
|
+
class: "gx-Input-Slot-sxmrsxd",
|
|
80
|
+
propsAsIs: false
|
|
81
|
+
});
|
|
82
|
+
/** Prefix, value and suffix, 2px apart, so `https://` reads as the start of the URL. */
|
|
83
|
+
var TextGroup = /*#__PURE__*/ styled("span")({
|
|
84
|
+
name: "TextGroup",
|
|
85
|
+
class: "gx-Input-TextGroup-t8jap54",
|
|
86
|
+
propsAsIs: false
|
|
87
|
+
});
|
|
88
|
+
/** The `<input>`: no chrome of its own; the frame draws the box and the focus. */
|
|
89
|
+
var Control = /*#__PURE__*/ styled("input")({
|
|
90
|
+
name: "Control",
|
|
91
|
+
class: "gx-Input-Control-c16cwjje",
|
|
92
|
+
propsAsIs: false
|
|
93
|
+
});
|
|
94
|
+
/** Wraps the clear button so its space is kept while it is hidden. */
|
|
95
|
+
var ClearSlot = /*#__PURE__*/ styled("span")({
|
|
96
|
+
name: "ClearSlot",
|
|
97
|
+
class: "gx-Input-ClearSlot-c1fr44wk",
|
|
98
|
+
propsAsIs: false
|
|
99
|
+
});
|
|
100
|
+
/** Prefix and suffix text: never wraps, never shrinks, not selectable. */
|
|
101
|
+
var AFFIX_CSS = "gx-Input-AFFIX_CSS-a5syjqa";
|
|
102
|
+
/** Hidden clear button: keeps its width, leaves the tab order and the accessibility tree. */
|
|
103
|
+
var CLEAR_HIDDEN_CSS = "gx-Input-CLEAR_HIDDEN_CSS-cbdp3fy";
|
|
104
|
+
/** Rest look per variant: fill and hairline color. */
|
|
105
|
+
var INPUT_VARIANT_TO_CSS_MAP = {
|
|
106
|
+
["BASE"]: "gx-Input-BASE-bkepvj0",
|
|
107
|
+
["PRIMARY"]: "gx-Input-PRIMARY-p1kqylml",
|
|
108
|
+
["SECONDARY"]: "gx-Input-SECONDARY-sni87mp",
|
|
109
|
+
["TERTIARY"]: "gx-Input-TERTIARY-t1f9js71"
|
|
110
|
+
};
|
|
111
|
+
/** `isGhost`: no fill and no hairline at rest. Declared after the variant map, which it replaces. */
|
|
112
|
+
var GHOST_CSS = "gx-Input-GHOST_CSS-g1tux5wq";
|
|
113
|
+
/** Height, horizontal padding and gap per rung (Constitution III-A.4). */
|
|
114
|
+
var INPUT_SIZE_TO_CSS_MAP = {
|
|
115
|
+
["X_SMALL"]: "gx-Input-X_SMALL-xv49y92",
|
|
116
|
+
["SMALL"]: "gx-Input-SMALL-s15pwf5n",
|
|
117
|
+
["MEDIUM"]: "gx-Input-MEDIUM-m11kseiu",
|
|
118
|
+
["LARGE"]: "gx-Input-LARGE-l3scmgs",
|
|
119
|
+
["X_LARGE"]: "gx-Input-X_LARGE-x18d50g2"
|
|
120
|
+
};
|
|
135
121
|
/**
|
|
136
|
-
*
|
|
137
|
-
*
|
|
138
|
-
*
|
|
139
|
-
* Returns `"transparent"` rather than `"none"` so the box model stays identical
|
|
140
|
-
* across variants.
|
|
122
|
+
* Start inset when `leading` is set: equal to the vertical gap around an in-field button. The
|
|
123
|
+
* `0.5px` hairline is subtracted, as on the end inset: the border adds to the start padding but the
|
|
124
|
+
* vertical gap already includes it.
|
|
141
125
|
*/
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
var _exp3 = () => ({ theme, $variant }) => getInputSurfaceColor(theme, $variant);
|
|
149
|
-
var _exp4 = () => ({ theme, $variant, $isError }) => {
|
|
150
|
-
if ($isError) return theme.color.border.error;
|
|
151
|
-
return getInputBorderColor(theme, $variant);
|
|
126
|
+
var INPUT_SIZE_TO_LEADING_INSET_CSS_MAP = {
|
|
127
|
+
["X_SMALL"]: "gx-Input-X_SMALL-xykym5i",
|
|
128
|
+
["SMALL"]: "gx-Input-SMALL-s14m5w1k",
|
|
129
|
+
["MEDIUM"]: "gx-Input-MEDIUM-m6tn9fi",
|
|
130
|
+
["LARGE"]: "gx-Input-LARGE-l7uvomj",
|
|
131
|
+
["X_LARGE"]: "gx-Input-X_LARGE-x1jl17jf"
|
|
152
132
|
};
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
var
|
|
159
|
-
|
|
160
|
-
|
|
133
|
+
/**
|
|
134
|
+
* End inset when `trailing` is set or `isClearable`: equal to the vertical gap around the clear
|
|
135
|
+
* button. The `0.5px` hairline is subtracted, because the frame's border adds to the end padding
|
|
136
|
+
* but the vertical gap already includes it (the button is centered inside the border).
|
|
137
|
+
*/
|
|
138
|
+
var INPUT_SIZE_TO_TRAILING_INSET_CSS_MAP = {
|
|
139
|
+
["X_SMALL"]: "gx-Input-X_SMALL-xxkw71w",
|
|
140
|
+
["SMALL"]: "gx-Input-SMALL-s17zpwrs",
|
|
141
|
+
["MEDIUM"]: "gx-Input-MEDIUM-m73yd93",
|
|
142
|
+
["LARGE"]: "gx-Input-LARGE-laix6ny",
|
|
143
|
+
["X_LARGE"]: "gx-Input-X_LARGE-x3ne53q"
|
|
161
144
|
};
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
var
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
var
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
var _exp15 = () => ({ $size }) => getInputPadding($size);
|
|
202
|
-
var _exp16 = () => ({ $isDisabled }) => $isDisabled ? "not-allowed" : "pointer";
|
|
203
|
-
var TrailingActionButton = /*#__PURE__*/ styled("button")({
|
|
204
|
-
name: "TrailingActionButton",
|
|
205
|
-
class: "t16cwjje",
|
|
206
|
-
propsAsIs: false,
|
|
207
|
-
vars: {
|
|
208
|
-
"t16cwjje-0": [_exp15()],
|
|
209
|
-
"t16cwjje-1": [_exp16()]
|
|
145
|
+
/**
|
|
146
|
+
* Hover on an editable field: `border.hovered` (stronger than `border.primary` in both themes,
|
|
147
|
+
* Constitution III.6).
|
|
148
|
+
*/
|
|
149
|
+
var INPUT_VARIANT_TO_HOVER_CSS_MAP = {
|
|
150
|
+
["BASE"]: "gx-Input-BASE-b16arvuc",
|
|
151
|
+
["PRIMARY"]: "gx-Input-PRIMARY-pr1g7kx",
|
|
152
|
+
["SECONDARY"]: "gx-Input-SECONDARY-s1pzdsn8",
|
|
153
|
+
["TERTIARY"]: "gx-Input-TERTIARY-t1xoy9v8"
|
|
154
|
+
};
|
|
155
|
+
/** Hover on an editable ghost field: the frame appears, `border.hovered` with no fill. */
|
|
156
|
+
var GHOST_HOVER_CSS = "gx-Input-GHOST_HOVER_CSS-g6g85zv";
|
|
157
|
+
/** Error border at rest, on hover and with focus (the 1px inset focus line is red too). */
|
|
158
|
+
var ERROR_CSS = "gx-Input-ERROR_CSS-e1e4v88v";
|
|
159
|
+
/**
|
|
160
|
+
* Disabled: the variant's resting fill and hairline are kept (`border.disabled` is not used on
|
|
161
|
+
* frames); the field reads as disabled through `text.disabled` / `text.disabled` and the cursor.
|
|
162
|
+
*/
|
|
163
|
+
var DISABLED_CSS = "gx-Input-DISABLED_CSS-d1d35fia";
|
|
164
|
+
/** Stretch to the parent's width (frame, and the `Field` wrapper when there is one). */
|
|
165
|
+
var FILL_WIDTH_CSS = "gx-Input-FILL_WIDTH_CSS-f1jgakl6";
|
|
166
|
+
/**
|
|
167
|
+
* The value's type per family and rung. `height` equals the line height, so the value centers on
|
|
168
|
+
* whole pixels in every rung; mono uses its ~0.92× sizes with the same line heights.
|
|
169
|
+
*/
|
|
170
|
+
var INPUT_FAMILY_TO_SIZE_CSS_MAP = {
|
|
171
|
+
[FontFamily.SANS]: {
|
|
172
|
+
["X_SMALL"]: "gx-Input-X_SMALL-x1iku50u",
|
|
173
|
+
["SMALL"]: "gx-Input-SMALL-s1gabvh6",
|
|
174
|
+
["MEDIUM"]: "gx-Input-MEDIUM-m1niie6",
|
|
175
|
+
["LARGE"]: "gx-Input-LARGE-l1x6769h",
|
|
176
|
+
["X_LARGE"]: "gx-Input-X_LARGE-x1jooqdg"
|
|
177
|
+
},
|
|
178
|
+
[FontFamily.MONO]: {
|
|
179
|
+
["X_SMALL"]: "gx-Input-X_SMALL-x1hsdcy6",
|
|
180
|
+
["SMALL"]: "gx-Input-SMALL-s1qh8eqy",
|
|
181
|
+
["MEDIUM"]: "gx-Input-MEDIUM-m1g40gnd",
|
|
182
|
+
["LARGE"]: "gx-Input-LARGE-l148eler",
|
|
183
|
+
["X_LARGE"]: "gx-Input-X_LARGE-x734zbi"
|
|
210
184
|
}
|
|
211
|
-
}
|
|
185
|
+
};
|
|
186
|
+
/** Leading icon px per rung: one step below the rung's III-A.4 icon (Mitch, 2026-10-04). */
|
|
187
|
+
var INPUT_SIZE_TO_ICON_PX_MAP = {
|
|
188
|
+
["X_SMALL"]: 12,
|
|
189
|
+
["SMALL"]: 12,
|
|
190
|
+
["MEDIUM"]: 14,
|
|
191
|
+
["LARGE"]: 14,
|
|
192
|
+
["X_LARGE"]: 16
|
|
193
|
+
};
|
|
194
|
+
/** Prefix and suffix step per rung (the canonical control text). */
|
|
195
|
+
var INPUT_SIZE_TO_TEXT_SIZE_MAP = {
|
|
196
|
+
["X_SMALL"]: TextSize.CAPTION,
|
|
197
|
+
["SMALL"]: TextSize.BODY_SM,
|
|
198
|
+
["MEDIUM"]: TextSize.BODY_MD,
|
|
199
|
+
["LARGE"]: TextSize.BODY_LG,
|
|
200
|
+
["X_LARGE"]: TextSize.BODY_LG
|
|
201
|
+
};
|
|
212
202
|
/**
|
|
213
|
-
*
|
|
214
|
-
*
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
203
|
+
* In-field button rung: 20px up to MEDIUM, 24px for LARGE and X_LARGE. Shared with the inputs that
|
|
204
|
+
* put a button inside Input's frame (PasswordInput, NumberInput, CopyInput).
|
|
205
|
+
*/
|
|
206
|
+
var INPUT_SIZE_TO_BUTTON_SIZE_MAP = {
|
|
207
|
+
["X_SMALL"]: ButtonSize.X_SMALL,
|
|
208
|
+
["SMALL"]: ButtonSize.X_SMALL,
|
|
209
|
+
["MEDIUM"]: ButtonSize.X_SMALL,
|
|
210
|
+
["LARGE"]: ButtonSize.SMALL,
|
|
211
|
+
["X_LARGE"]: ButtonSize.SMALL
|
|
212
|
+
};
|
|
213
|
+
/**
|
|
214
|
+
* The gap between the in-field parts per rung, as a `Space` (the value `INPUT_SIZE_TO_CSS_MAP`
|
|
215
|
+
* draws). For an input that lays out its own trailing parts beside the clear button (SearchInput).
|
|
219
216
|
*/
|
|
220
|
-
var
|
|
221
|
-
|
|
222
|
-
|
|
217
|
+
var INPUT_SIZE_TO_GAP_MAP = {
|
|
218
|
+
["X_SMALL"]: 4,
|
|
219
|
+
["SMALL"]: 4,
|
|
220
|
+
["MEDIUM"]: 8,
|
|
221
|
+
["LARGE"]: 8,
|
|
222
|
+
["X_LARGE"]: 8
|
|
223
|
+
};
|
|
224
|
+
/** The `Field` an Input renders for its own `label` / `error` uses the same rung. */
|
|
225
|
+
var INPUT_SIZE_TO_FIELD_SIZE_MAP = {
|
|
226
|
+
["X_SMALL"]: FieldSize.X_SMALL,
|
|
227
|
+
["SMALL"]: FieldSize.SMALL,
|
|
228
|
+
["MEDIUM"]: FieldSize.MEDIUM,
|
|
229
|
+
["LARGE"]: FieldSize.LARGE,
|
|
230
|
+
["X_LARGE"]: FieldSize.X_LARGE
|
|
231
|
+
};
|
|
232
|
+
/** The frame and the `<input>`, wired to the nearest Field (the Input's own or the app's). */
|
|
233
|
+
function InputFrame({ inputProps, forwardedRef, isRoot }) {
|
|
234
|
+
const { type, value, defaultValue = "", onChange, onEnter, size = "MEDIUM", variant = "PRIMARY", isGhost = false, label: _label, placeholder, error, isError = false, icon, leading, trailing, prefix, suffix, isClearable = false, isDisabled = false, isReadOnly = false, isRequired = false, family = FontFamily.SANS, fillWidth = false, ariaLabel, autoComplete = "off", onKeyDown, id, "aria-describedby": ariaDescribedBy, className, style, ...rest } = inputProps;
|
|
235
|
+
const isBare = useIsBareField();
|
|
236
|
+
const hasPrefix = isFilled(prefix);
|
|
237
|
+
const hasSuffix = isFilled(suffix);
|
|
238
|
+
const { controlId: inputId, describedBy, isInvalid, isRequired: isRequiredState, hasName } = useFieldWiring({
|
|
239
|
+
id,
|
|
240
|
+
ariaLabel,
|
|
241
|
+
ariaLabelAttribute: rest["aria-label"],
|
|
242
|
+
ariaLabelledBy: rest["aria-labelledby"],
|
|
243
|
+
ariaDescribedBy,
|
|
244
|
+
describedByIds: (controlId) => [hasPrefix && `${controlId}-prefix`, hasSuffix && `${controlId}-suffix`],
|
|
245
|
+
error,
|
|
246
|
+
isError,
|
|
247
|
+
isRequired
|
|
248
|
+
});
|
|
249
|
+
const prefixId = `${inputId}-prefix`;
|
|
250
|
+
const suffixId = `${inputId}-suffix`;
|
|
251
|
+
const innerRef = useRef(null);
|
|
252
|
+
const mergedRef = useMergeRefs([innerRef, forwardedRef]);
|
|
253
|
+
const [currentValue, setValue] = useControlledState({
|
|
254
|
+
value,
|
|
255
|
+
defaultValue,
|
|
256
|
+
onChange
|
|
257
|
+
});
|
|
258
|
+
const hasLeading = hasContent(leading);
|
|
259
|
+
const hasTrailing = hasContent(trailing);
|
|
260
|
+
const isEditable = !isDisabled && !isReadOnly;
|
|
261
|
+
const isClearHidden = currentValue === "" || !isEditable;
|
|
262
|
+
useDevWarning(!hasName, "[@galaxy-io/dls] Input has no accessible name. Pass `label`, wrap it in a labelled `Field`, or set `ariaLabel`. `placeholder` is not a name.");
|
|
263
|
+
/** Clicking the icon, prefix, suffix or padding focuses the field. */
|
|
264
|
+
const handleFrameMouseDown = (event) => {
|
|
265
|
+
const interactive = event.target.closest("input, button, a, [tabindex]");
|
|
266
|
+
if (interactive !== null && event.currentTarget.contains(interactive)) return;
|
|
267
|
+
event.preventDefault();
|
|
268
|
+
innerRef.current?.focus();
|
|
223
269
|
};
|
|
224
|
-
const
|
|
225
|
-
const
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
270
|
+
const handleChange = (event) => setValue(event.target.value);
|
|
271
|
+
const handleKeyDown = (event) => {
|
|
272
|
+
onKeyDown?.(event);
|
|
273
|
+
if (event.key === "Enter" && !event.nativeEvent.isComposing && !event.defaultPrevented) onEnter?.(event.currentTarget.value);
|
|
274
|
+
};
|
|
275
|
+
const clear = () => {
|
|
276
|
+
setValue("");
|
|
277
|
+
innerRef.current?.focus();
|
|
278
|
+
};
|
|
279
|
+
const textSize = INPUT_SIZE_TO_TEXT_SIZE_MAP[size];
|
|
280
|
+
const affixVariant = isDisabled ? TextVariant.DISABLED : TextVariant.TERTIARY;
|
|
281
|
+
return /* @__PURE__ */ jsxs(Frame, {
|
|
282
|
+
"data-gx-anchor": "",
|
|
283
|
+
onMouseDown: handleFrameMouseDown,
|
|
284
|
+
className: cx(isGhost ? GHOST_CSS : INPUT_VARIANT_TO_CSS_MAP[variant], INPUT_SIZE_TO_CSS_MAP[size], hasLeading && INPUT_SIZE_TO_LEADING_INSET_CSS_MAP[size], (hasTrailing || isClearable) && INPUT_SIZE_TO_TRAILING_INSET_CSS_MAP[size], isEditable && !isInvalid && (isGhost ? GHOST_HOVER_CSS : INPUT_VARIANT_TO_HOVER_CSS_MAP[variant]), isInvalid && !isDisabled && ERROR_CSS, isDisabled && DISABLED_CSS, fillWidth && FILL_WIDTH_CSS, isBare && "gx-bareField-BARE_FIELD_CSS-b1memido", isBare && "gx-bareField-BARE_INPUT_CSS-bq8fkxg", isRoot ? className : void 0),
|
|
285
|
+
...rootStyle(isRoot, style),
|
|
230
286
|
children: [
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
287
|
+
hasLeading && /* @__PURE__ */ jsx(Slot, { children: leading }),
|
|
288
|
+
icon !== void 0 && /* @__PURE__ */ jsx(Icon, {
|
|
289
|
+
component: icon,
|
|
290
|
+
size: INPUT_SIZE_TO_ICON_PX_MAP[size],
|
|
291
|
+
variant: isDisabled ? IconVariant.DISABLED : IconVariant.SECONDARY,
|
|
292
|
+
"aria-hidden": true
|
|
235
293
|
}),
|
|
236
|
-
/* @__PURE__ */ jsxs(
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
})
|
|
286
|
-
]
|
|
294
|
+
/* @__PURE__ */ jsxs(TextGroup, { children: [
|
|
295
|
+
hasPrefix && /* @__PURE__ */ jsx(Text, {
|
|
296
|
+
as: "span",
|
|
297
|
+
id: prefixId,
|
|
298
|
+
size: textSize,
|
|
299
|
+
family,
|
|
300
|
+
variant: affixVariant,
|
|
301
|
+
className: AFFIX_CSS,
|
|
302
|
+
children: prefix
|
|
303
|
+
}),
|
|
304
|
+
/* @__PURE__ */ jsx(Control, {
|
|
305
|
+
ref: mergedRef,
|
|
306
|
+
id: inputId,
|
|
307
|
+
type,
|
|
308
|
+
value: currentValue,
|
|
309
|
+
onChange: handleChange,
|
|
310
|
+
onKeyDown: handleKeyDown,
|
|
311
|
+
placeholder,
|
|
312
|
+
disabled: isDisabled,
|
|
313
|
+
readOnly: isReadOnly,
|
|
314
|
+
autoComplete,
|
|
315
|
+
autoCorrect: "off",
|
|
316
|
+
"aria-label": ariaLabel,
|
|
317
|
+
"aria-describedby": describedBy,
|
|
318
|
+
"aria-invalid": isInvalid ? true : void 0,
|
|
319
|
+
"aria-required": isRequiredState ? true : void 0,
|
|
320
|
+
className: INPUT_FAMILY_TO_SIZE_CSS_MAP[family][size],
|
|
321
|
+
...rest
|
|
322
|
+
}),
|
|
323
|
+
hasSuffix && /* @__PURE__ */ jsx(Text, {
|
|
324
|
+
as: "span",
|
|
325
|
+
id: suffixId,
|
|
326
|
+
size: textSize,
|
|
327
|
+
family,
|
|
328
|
+
variant: affixVariant,
|
|
329
|
+
className: AFFIX_CSS,
|
|
330
|
+
children: suffix
|
|
331
|
+
})
|
|
332
|
+
] }),
|
|
333
|
+
isClearable && /* @__PURE__ */ jsx(ClearSlot, {
|
|
334
|
+
className: cx(isClearHidden && CLEAR_HIDDEN_CSS),
|
|
335
|
+
children: /* @__PURE__ */ jsx(Button, {
|
|
336
|
+
variant: ButtonVariant.TERTIARY,
|
|
337
|
+
size: INPUT_SIZE_TO_BUTTON_SIZE_MAP[size],
|
|
338
|
+
icon: XIcon,
|
|
339
|
+
ariaLabel: "Clear",
|
|
340
|
+
onClick: clear,
|
|
341
|
+
className: cx(size === "X_SMALL" && "gx-innerButton-X_SMALL_INNER_BUTTON_CSS-x1ep0pcd")
|
|
342
|
+
})
|
|
287
343
|
}),
|
|
288
|
-
|
|
289
|
-
size: TextSize.BODY_SM,
|
|
290
|
-
variant: TextVariant.ERROR,
|
|
291
|
-
children: error
|
|
292
|
-
})
|
|
344
|
+
hasTrailing && /* @__PURE__ */ jsx(Slot, { children: trailing })
|
|
293
345
|
]
|
|
294
346
|
});
|
|
347
|
+
}
|
|
348
|
+
/** The single-line text field frame every text-like input wraps. Apps render `TextInput`. */
|
|
349
|
+
var Input = forwardRef(function Input(props, ref) {
|
|
350
|
+
const { label, error, isRequired = false, size = "MEDIUM", fillWidth = false } = props;
|
|
351
|
+
const { id, className, style } = props;
|
|
352
|
+
const ownField = useOwnField({
|
|
353
|
+
componentName: "Input",
|
|
354
|
+
label,
|
|
355
|
+
error,
|
|
356
|
+
isRequired,
|
|
357
|
+
size: INPUT_SIZE_TO_FIELD_SIZE_MAP[size],
|
|
358
|
+
id,
|
|
359
|
+
className,
|
|
360
|
+
style,
|
|
361
|
+
rootClassName: fillWidth && FILL_WIDTH_CSS
|
|
362
|
+
});
|
|
363
|
+
if (ownField !== null) return /* @__PURE__ */ jsx(Field, {
|
|
364
|
+
...ownField,
|
|
365
|
+
children: /* @__PURE__ */ jsx(InputFrame, {
|
|
366
|
+
inputProps: props,
|
|
367
|
+
forwardedRef: ref,
|
|
368
|
+
isRoot: false
|
|
369
|
+
})
|
|
370
|
+
});
|
|
371
|
+
return /* @__PURE__ */ jsx(InputFrame, {
|
|
372
|
+
inputProps: props,
|
|
373
|
+
forwardedRef: ref,
|
|
374
|
+
isRoot: true
|
|
375
|
+
});
|
|
295
376
|
});
|
|
296
|
-
|
|
297
|
-
InputWithDisplayName.displayName = "Input";
|
|
377
|
+
Input.displayName = "Input";
|
|
298
378
|
//#endregion
|
|
299
|
-
export {
|
|
379
|
+
export { INPUT_SIZE_TO_BUTTON_SIZE_MAP, INPUT_SIZE_TO_GAP_MAP, InputSize, InputVariant, Input as default };
|