@galaxy-io/dls 1.6.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +47 -50
- package/biome/index.json +74 -0
- package/biome/plugins/no-hex-literal.grit +20 -0
- package/biome/plugins/no-inline-style.grit +13 -0
- package/biome/plugins/no-margin.grit +9 -0
- package/biome/plugins/warn/no-hex-literal.grit +23 -0
- package/biome/plugins/warn/no-inline-style.grit +13 -0
- package/biome/plugins/warn/no-margin.grit +9 -0
- package/dist/a11y/FocusScope.d.ts +44 -0
- package/dist/a11y/FocusScope.js +229 -0
- package/dist/a11y/VisuallyHidden.d.ts +21 -0
- package/dist/a11y/VisuallyHidden.js +30 -0
- package/dist/avatar/Avatar.d.ts +56 -14
- package/dist/avatar/Avatar.js +250 -96
- package/dist/avatar/AvatarGroup.d.ts +43 -0
- package/dist/avatar/AvatarGroup.js +153 -0
- package/dist/backgrounds/GridBackground.d.ts +48 -0
- package/dist/backgrounds/GridBackground.js +146 -0
- package/dist/beacons/Beacon.d.ts +86 -22
- package/dist/beacons/Beacon.js +170 -47
- package/dist/brand/GalaxyFilamentWordmark.d.ts +30 -0
- package/dist/brand/GalaxyFilamentWordmark.js +39 -0
- package/dist/brand/GalaxyLogomark.d.ts +26 -0
- package/dist/brand/GalaxyLogomark.js +41 -0
- package/dist/brand/GalaxyLogomarkAnimation.d.ts +36 -0
- package/dist/brand/GalaxyLogomarkAnimation.js +107 -0
- package/dist/brand/GalaxyWordmark.d.ts +30 -0
- package/dist/brand/GalaxyWordmark.js +63 -0
- package/dist/brand/assets/galaxy-logomark-animation.js +136678 -0
- package/dist/brand/brandMark.d.ts +26 -0
- package/dist/brand/brandMark.js +35 -0
- package/dist/buttons/Button.d.ts +148 -59
- package/dist/buttons/Button.js +437 -227
- package/dist/buttons/ButtonGroup.d.ts +38 -0
- package/dist/buttons/ButtonGroup.js +68 -0
- package/dist/buttons/CopyButton.d.ts +77 -0
- package/dist/buttons/CopyButton.js +65 -0
- package/dist/charts/AreaChart.d.ts +49 -0
- package/dist/charts/AreaChart.js +31 -0
- package/dist/charts/BarChart.d.ts +54 -67
- package/dist/charts/BarChart.js +136 -116
- package/dist/charts/ChartAxis.d.ts +35 -40
- package/dist/charts/ChartAxis.js +114 -90
- package/dist/charts/ChartCategoryTargets.d.ts +12 -26
- package/dist/charts/ChartCategoryTargets.js +32 -20
- package/dist/charts/ChartFrame.d.ts +69 -116
- package/dist/charts/ChartFrame.js +253 -119
- package/dist/charts/ChartGroupProvider.d.ts +30 -41
- package/dist/charts/ChartGroupProvider.js +20 -7
- package/dist/charts/ChartLegend.d.ts +27 -48
- package/dist/charts/ChartLegend.js +206 -125
- package/dist/charts/ChartMarkTargets.d.ts +12 -28
- package/dist/charts/ChartMarkTargets.js +33 -20
- package/dist/charts/ChartPrimitives.d.ts +50 -305
- package/dist/charts/ChartPrimitives.js +65 -413
- package/dist/charts/ChartTooltip.d.ts +20 -26
- package/dist/charts/ChartTooltip.js +77 -40
- package/dist/charts/Heatmap.d.ts +35 -0
- package/dist/charts/Heatmap.js +295 -0
- package/dist/charts/LineChart.d.ts +54 -47
- package/dist/charts/LineChart.js +159 -117
- package/dist/charts/PieChart.d.ts +32 -53
- package/dist/charts/PieChart.js +149 -135
- package/dist/charts/Sparkline.d.ts +107 -0
- package/dist/charts/Sparkline.js +244 -0
- package/dist/charts/StatChart.d.ts +37 -13
- package/dist/charts/StatChart.js +82 -35
- package/dist/charts/barChartGeometry.d.ts +138 -86
- package/dist/charts/barChartGeometry.js +122 -101
- package/dist/charts/barChartLegend.d.ts +14 -18
- package/dist/charts/barChartLegend.js +18 -13
- package/dist/charts/chartFormat.d.ts +12 -18
- package/dist/charts/chartFormat.js +20 -52
- package/dist/charts/chartPalette.d.ts +33 -0
- package/dist/charts/chartPalette.js +68 -0
- package/dist/charts/chartScales.d.ts +41 -108
- package/dist/charts/chartScales.js +62 -128
- package/dist/charts/constants.d.ts +96 -256
- package/dist/charts/constants.js +105 -275
- package/dist/charts/heatmapGeometry.d.ts +95 -0
- package/dist/charts/heatmapGeometry.js +155 -0
- package/dist/charts/lineChartGeometry.d.ts +108 -58
- package/dist/charts/lineChartGeometry.js +120 -78
- package/dist/charts/pieChartGeometry.d.ts +66 -40
- package/dist/charts/pieChartGeometry.js +68 -38
- package/dist/charts/types.d.ts +197 -466
- package/dist/charts/types.js +55 -144
- package/dist/charts/useCartesianChartLayout.d.ts +28 -59
- package/dist/charts/useCartesianChartLayout.js +47 -32
- package/dist/charts/useChartDimensions.d.ts +19 -40
- package/dist/charts/useChartDimensions.js +40 -56
- package/dist/charts/useChartFormatters.d.ts +6 -15
- package/dist/charts/useChartFormatters.js +4 -9
- package/dist/charts/useChartInteraction.d.ts +47 -116
- package/dist/charts/useChartInteraction.js +95 -71
- package/dist/charts/useChartTooltipPosition.d.ts +29 -39
- package/dist/charts/useChartTooltipPosition.js +14 -5
- package/dist/charts/useSeriesColorResolver.d.ts +11 -33
- package/dist/charts/useSeriesColorResolver.js +19 -12
- package/dist/chips/Chip.d.ts +155 -44
- package/dist/chips/Chip.js +329 -155
- package/dist/chips/ChipGroup.d.ts +53 -0
- package/dist/chips/ChipGroup.js +98 -0
- package/dist/drawer/Drawer.d.ts +81 -17
- package/dist/drawer/Drawer.js +370 -65
- package/dist/dropdown/Dropdown.d.ts +80 -63
- package/dist/dropdown/Dropdown.js +127 -129
- package/dist/editor/CodeEditor.d.ts +119 -40
- package/dist/editor/CodeEditor.js +490 -400
- package/dist/editor/CodeEditorReactWidget.d.ts +20 -17
- package/dist/editor/CodeEditorReactWidget.js +28 -21
- package/dist/feedback/Alert.d.ts +49 -0
- package/dist/feedback/Alert.js +172 -0
- package/dist/feedback/EmptyState.d.ts +39 -0
- package/dist/feedback/EmptyState.js +109 -0
- package/dist/feedback/ProgressBar.d.ts +125 -0
- package/dist/feedback/ProgressBar.js +183 -0
- package/dist/feedback/ProgressCircle.d.ts +99 -0
- package/dist/feedback/ProgressCircle.js +187 -0
- package/dist/feedback/Skeleton.d.ts +69 -0
- package/dist/feedback/Skeleton.js +130 -0
- package/dist/feedback/Spinner.d.ts +63 -0
- package/dist/feedback/Spinner.js +141 -0
- package/dist/fonts.css +70 -0
- package/dist/hooks/internal/useIsClient.d.ts +2 -0
- package/dist/hooks/internal/useIsClient.js +14 -0
- package/dist/hooks/useClipboard.d.ts +19 -0
- package/dist/hooks/useClipboard.js +45 -0
- package/dist/hooks/useControlledOpenState.d.ts +21 -0
- package/dist/hooks/useControlledOpenState.js +19 -0
- package/dist/hooks/useControlledState.d.ts +19 -0
- package/dist/hooks/useControlledState.js +22 -0
- package/dist/hooks/useDebouncedValue.d.ts +14 -0
- package/dist/hooks/useDebouncedValue.js +33 -0
- package/dist/hooks/useDisclosure.d.ts +26 -0
- package/dist/hooks/useDisclosure.js +36 -0
- package/dist/hooks/useDismiss.d.ts +23 -27
- package/dist/hooks/useDismiss.js +39 -27
- package/dist/hooks/useElementClientSize.d.ts +10 -10
- package/dist/hooks/useElementClientSize.js +8 -11
- package/dist/hooks/useElementWidth.d.ts +6 -13
- package/dist/hooks/useElementWidth.js +6 -14
- package/dist/hooks/useField.d.ts +47 -0
- package/dist/hooks/useField.js +40 -0
- package/dist/hooks/useHotkey.d.ts +77 -0
- package/dist/hooks/useHotkey.js +246 -0
- package/dist/hooks/useIsMac.d.ts +12 -0
- package/dist/hooks/useIsMac.js +27 -0
- package/dist/hooks/useIsomorphicLayoutEffect.d.ts +17 -0
- package/dist/hooks/useIsomorphicLayoutEffect.js +20 -0
- package/dist/hooks/useLocalStorage.d.ts +28 -0
- package/dist/hooks/useLocalStorage.js +145 -0
- package/dist/hooks/useMediaQuery.d.ts +11 -0
- package/dist/hooks/useMediaQuery.js +23 -0
- package/dist/hooks/usePrefersReducedMotion.d.ts +12 -0
- package/dist/hooks/usePrefersReducedMotion.js +25 -0
- package/dist/hooks/useResize.d.ts +42 -62
- package/dist/hooks/useResize.js +43 -31
- package/dist/icons/Icon.d.ts +64 -37
- package/dist/icons/Icon.js +96 -37
- package/dist/icons/internal/IconSlot.d.ts +10 -0
- package/dist/icons/internal/IconSlot.js +32 -0
- package/dist/inputs/CheckboxGroup.d.ts +115 -0
- package/dist/inputs/CheckboxGroup.js +183 -0
- package/dist/inputs/CheckboxInput.d.ts +98 -28
- package/dist/inputs/CheckboxInput.js +218 -88
- package/dist/inputs/ColorInput.d.ts +115 -29
- package/dist/inputs/ColorInput.js +748 -326
- package/dist/inputs/CopyInput.d.ts +49 -20
- package/dist/inputs/CopyInput.js +57 -49
- package/dist/inputs/CronInput.d.ts +94 -0
- package/dist/inputs/CronInput.js +618 -0
- package/dist/inputs/DateInput.d.ts +175 -28
- package/dist/inputs/DateInput.js +1109 -451
- package/dist/inputs/DurationInput.d.ts +101 -0
- package/dist/inputs/DurationInput.js +441 -0
- package/dist/inputs/Field.d.ts +75 -0
- package/dist/inputs/Field.js +247 -0
- package/dist/inputs/Fieldset.d.ts +53 -0
- package/dist/inputs/Fieldset.js +149 -0
- package/dist/inputs/FileInput.d.ts +110 -0
- package/dist/inputs/FileInput.js +476 -0
- package/dist/inputs/Input.d.ts +148 -187
- package/dist/inputs/Input.js +339 -259
- package/dist/inputs/KeyValueInput.d.ts +120 -0
- package/dist/inputs/KeyValueInput.js +383 -0
- package/dist/inputs/MultiSelectInput.d.ts +165 -54
- package/dist/inputs/MultiSelectInput.js +175 -559
- package/dist/inputs/NumberInput.d.ts +65 -9
- package/dist/inputs/NumberInput.js +197 -40
- package/dist/inputs/PasswordInput.d.ts +17 -12
- package/dist/inputs/PasswordInput.js +33 -33
- package/dist/inputs/PinInput.d.ts +117 -0
- package/dist/inputs/PinInput.js +364 -0
- package/dist/inputs/RadioGroup.d.ts +115 -0
- package/dist/inputs/RadioGroup.js +179 -0
- package/dist/inputs/RadioInput.d.ts +87 -24
- package/dist/inputs/RadioInput.js +182 -95
- package/dist/inputs/SearchInput.d.ts +66 -0
- package/dist/inputs/SearchInput.js +156 -0
- package/dist/inputs/SelectInput.d.ts +195 -55
- package/dist/inputs/SelectInput.js +1308 -446
- package/dist/inputs/SliderInput.d.ts +150 -30
- package/dist/inputs/SliderInput.js +441 -186
- package/dist/inputs/SwitchInput.d.ts +109 -0
- package/dist/inputs/SwitchInput.js +248 -0
- package/dist/inputs/TagInput.d.ts +117 -0
- package/dist/inputs/TagInput.js +408 -0
- package/dist/inputs/TextAreaInput.d.ts +146 -44
- package/dist/inputs/TextAreaInput.js +292 -198
- package/dist/inputs/TextInput.d.ts +4 -13
- package/dist/inputs/TextInput.js +13 -48
- package/dist/inputs/ToggleInput.d.ts +120 -22
- package/dist/inputs/ToggleInput.js +262 -116
- package/dist/inputs/internal/bareField.d.ts +18 -0
- package/dist/inputs/internal/bareField.js +38 -0
- package/dist/inputs/internal/devWarn.d.ts +7 -0
- package/dist/inputs/internal/devWarn.js +30 -0
- package/dist/inputs/internal/fieldFrame.d.ts +34 -0
- package/dist/inputs/internal/fieldFrame.js +64 -0
- package/dist/inputs/internal/fieldWiring.d.ts +50 -0
- package/dist/inputs/internal/fieldWiring.js +38 -0
- package/dist/inputs/internal/innerButton.d.ts +2 -0
- package/dist/inputs/internal/innerButton.js +24 -0
- package/dist/inputs/internal/ownField.d.ts +45 -0
- package/dist/inputs/internal/ownField.js +58 -0
- package/dist/inputs/internal/predicates.d.ts +9 -0
- package/dist/inputs/internal/predicates.js +11 -0
- package/dist/inputs/internal/useComboboxPopover.d.ts +46 -0
- package/dist/inputs/internal/useComboboxPopover.js +92 -0
- package/dist/json/JsonViewer.d.ts +62 -0
- package/dist/json/JsonViewer.js +483 -0
- package/dist/layout/Box.d.ts +87 -0
- package/dist/layout/Box.js +109 -0
- package/dist/layout/Divider.d.ts +25 -0
- package/dist/layout/Divider.js +70 -0
- package/dist/layout/Flex.d.ts +139 -0
- package/dist/layout/Flex.js +165 -0
- package/dist/layout/FlexItem.d.ts +72 -0
- package/dist/layout/FlexItem.js +84 -0
- package/dist/layout/Grid.d.ts +140 -0
- package/dist/layout/Grid.js +178 -0
- package/dist/layout/Portal.d.ts +29 -0
- package/dist/layout/Portal.js +27 -0
- package/dist/layout/ResizablePanels.d.ts +88 -0
- package/dist/layout/ResizablePanels.js +198 -0
- package/dist/layout/ResizeHandle.d.ts +48 -0
- package/dist/layout/ResizeHandle.js +143 -0
- package/dist/layout/ScrollArea.d.ts +30 -0
- package/dist/layout/ScrollArea.js +138 -0
- package/dist/links/Link.d.ts +101 -1
- package/dist/links/Link.js +166 -4
- package/dist/lists/BulletedList.d.ts +25 -7
- package/dist/lists/BulletedList.js +72 -27
- package/dist/lists/DescriptionList.d.ts +91 -0
- package/dist/lists/DescriptionList.js +147 -0
- package/dist/menu/ContextMenu.d.ts +64 -0
- package/dist/menu/ContextMenu.js +34 -0
- package/dist/menu/Menu.d.ts +280 -0
- package/dist/menu/Menu.js +1003 -0
- package/dist/modal/ConfirmDialog.d.ts +55 -0
- package/dist/modal/ConfirmDialog.js +151 -0
- package/dist/modal/Modal.d.ts +64 -14
- package/dist/modal/Modal.js +189 -48
- package/dist/navigation/Breadcrumbs.d.ts +65 -0
- package/dist/navigation/Breadcrumbs.js +243 -0
- package/dist/navigation/CommandPalette.d.ts +83 -0
- package/dist/navigation/CommandPalette.js +509 -0
- package/dist/navigation/Pagination.d.ts +87 -0
- package/dist/navigation/Pagination.js +300 -0
- package/dist/navigation/SidebarNav.d.ts +107 -0
- package/dist/navigation/SidebarNav.js +341 -0
- package/dist/navigation/Stepper.d.ts +52 -0
- package/dist/navigation/Stepper.js +207 -0
- package/dist/navigation/Tabs.d.ts +113 -0
- package/dist/navigation/Tabs.js +543 -0
- package/dist/navigation/Topbar.d.ts +20 -0
- package/dist/navigation/Topbar.js +62 -0
- package/dist/overlay/OverlayProvider.d.ts +28 -32
- package/dist/overlay/OverlayProvider.js +42 -93
- package/dist/overlay/useOverlay.d.ts +88 -12
- package/dist/overlay/useOverlay.js +220 -43
- package/dist/overlays/Popover.d.ts +114 -0
- package/dist/overlays/Popover.js +389 -0
- package/dist/shapes/Circle.d.ts +84 -8
- package/dist/shapes/Circle.js +122 -20
- package/dist/shapes/Square.d.ts +84 -8
- package/dist/shapes/Square.js +123 -20
- package/dist/styles/mixins.d.ts +35 -0
- package/dist/styles/mixins.js +60 -0
- package/dist/styles.css +1 -202
- package/dist/table/InfiniteSpreadsheet.d.ts +140 -10
- package/dist/table/InfiniteSpreadsheet.js +762 -225
- package/dist/table/InfiniteTable.d.ts +116 -14
- package/dist/table/InfiniteTable.js +287 -429
- package/dist/table/SpreadsheetCellEditor.d.ts +54 -6
- package/dist/table/SpreadsheetCellEditor.js +163 -84
- package/dist/table/TableCore.d.ts +252 -0
- package/dist/table/TableCore.js +1077 -0
- package/dist/table/VirtualizedInfiniteTable.d.ts +104 -14
- package/dist/table/VirtualizedInfiniteTable.js +280 -219
- package/dist/table/types.d.ts +66 -244
- package/dist/table/types.js +0 -51
- package/dist/table/useInfiniteScrollSentinel.d.ts +25 -21
- package/dist/table/useInfiniteScrollSentinel.js +38 -30
- package/dist/table/useSpreadsheetCellNavigation.d.ts +44 -0
- package/dist/table/useSpreadsheetCellNavigation.js +141 -0
- package/dist/table/useTableColumnLayout.d.ts +90 -25
- package/dist/table/useTableColumnLayout.js +255 -50
- package/dist/table/useTableKeyboardNavigation.d.ts +32 -21
- package/dist/table/useTableKeyboardNavigation.js +95 -71
- package/dist/table/useTableRowSelection.d.ts +24 -25
- package/dist/table/useTableRowSelection.js +57 -84
- package/dist/table/useTableVirtualizer.d.ts +20 -0
- package/dist/table/useTableVirtualizer.js +48 -0
- package/dist/text/Bold.d.ts +5 -6
- package/dist/text/Bold.js +16 -15
- package/dist/text/Code.d.ts +5 -6
- package/dist/text/Code.js +16 -25
- package/dist/text/CodeBlock.d.ts +77 -0
- package/dist/text/CodeBlock.js +373 -0
- package/dist/text/EditableText.d.ts +55 -15
- package/dist/text/EditableText.js +153 -135
- package/dist/text/Ellipsis.d.ts +34 -8
- package/dist/text/Ellipsis.js +55 -23
- package/dist/text/Kbd.d.ts +72 -0
- package/dist/text/Kbd.js +284 -0
- package/dist/text/MarkdownText.d.ts +27 -10
- package/dist/text/MarkdownText.js +317 -300
- package/dist/text/RequiredMarker.d.ts +17 -5
- package/dist/text/RequiredMarker.js +34 -36
- package/dist/text/Selectable.d.ts +5 -6
- package/dist/text/Selectable.js +16 -13
- package/dist/text/Span.d.ts +82 -0
- package/dist/text/Span.js +115 -0
- package/dist/text/Text.d.ts +128 -41
- package/dist/text/Text.js +209 -76
- package/dist/theme/GalaxyProvider.d.ts +75 -0
- package/dist/theme/GalaxyProvider.js +223 -0
- package/dist/theme/ThemeSwitcher.d.ts +52 -0
- package/dist/theme/ThemeSwitcher.js +94 -0
- package/dist/theme/enums.d.ts +118 -0
- package/dist/theme/enums.js +144 -0
- package/dist/theme/tokens/dark.d.ts +2 -0
- package/dist/theme/tokens/dark.js +275 -0
- package/dist/theme/tokens/generate.d.ts +15 -0
- package/dist/theme/tokens/generate.js +47 -0
- package/dist/theme/tokens/light.d.ts +2 -0
- package/dist/theme/tokens/light.js +274 -0
- package/dist/theme/tokens/palette.d.ts +14 -0
- package/dist/theme/tokens/palette.js +153 -0
- package/dist/theme/tokens/scales.d.ts +26 -0
- package/dist/theme/tokens/scales.js +154 -0
- package/dist/theme/tokens/t.d.ts +3 -0
- package/dist/theme/tokens/t.js +25 -0
- package/dist/theme/tokens/types.d.ts +189 -0
- package/dist/theme/tokens/types.js +0 -0
- package/dist/theme/useGalaxyTheme.d.ts +46 -0
- package/dist/theme/useGalaxyTheme.js +36 -0
- package/dist/theme/useInverseScope.d.ts +18 -0
- package/dist/theme/useInverseScope.js +33 -0
- package/dist/three/GalaxyLogomark3D.d.ts +46 -0
- package/dist/three/GalaxyLogomark3D.js +134 -0
- package/dist/three/assets/galaxy-logomark.js +4 -0
- package/dist/three/galaxyLogomark3DScene.d.ts +27 -0
- package/dist/three/galaxyLogomark3DScene.js +165 -0
- package/dist/timeline/Timeline.d.ts +99 -0
- package/dist/timeline/Timeline.js +269 -0
- package/dist/toast/Toast.d.ts +43 -19
- package/dist/toast/Toast.js +130 -89
- package/dist/toast/ToastProvider.d.ts +23 -23
- package/dist/toast/ToastProvider.js +298 -101
- package/dist/toast/ToastViewport.d.ts +12 -0
- package/dist/toast/ToastViewport.js +210 -0
- package/dist/toast/useToast.d.ts +139 -5
- package/dist/toast/useToast.js +15 -13
- package/dist/tokens.css +654 -0
- package/dist/tooltip/Tooltip.d.ts +64 -44
- package/dist/tooltip/Tooltip.js +280 -73
- package/dist/tooltip/internal/LazyTooltip.d.ts +7 -0
- package/dist/tooltip/internal/LazyTooltip.js +53 -0
- package/dist/transform/Fade.d.ts +33 -11
- package/dist/transform/Fade.js +71 -19
- package/dist/transform/Flasher.d.ts +25 -0
- package/dist/transform/Flasher.js +39 -0
- package/dist/transform/Rotate.d.ts +24 -12
- package/dist/transform/Rotate.js +36 -22
- package/dist/transform/ScaleFade.d.ts +36 -11
- package/dist/transform/ScaleFade.js +86 -28
- package/dist/transform/internal/CollapseMotion.d.ts +10 -0
- package/dist/transform/internal/CollapseMotion.js +65 -0
- package/dist/tree/Tree.d.ts +85 -0
- package/dist/tree/Tree.js +387 -0
- package/dist/tree/treeRow.d.ts +39 -0
- package/dist/tree/treeRow.js +75 -0
- package/dist/utils/colors.d.ts +46 -13
- package/dist/utils/colors.js +92 -34
- package/dist/utils/css.d.ts +23 -0
- package/dist/utils/css.js +30 -0
- package/dist/utils/format.d.ts +58 -0
- package/dist/utils/format.js +220 -0
- package/dist/vite/index.d.ts +16 -0
- package/dist/vite/index.js +52 -0
- package/dist/widget/Widget.d.ts +164 -48
- package/dist/widget/Widget.js +335 -96
- package/dist/widget/WidgetGroup.d.ts +36 -0
- package/dist/widget/WidgetGroup.js +103 -0
- package/package.json +851 -157
- package/dist/accordion/Accordion.d.ts +0 -54
- package/dist/accordion/Accordion.js +0 -183
- package/dist/assets/components/GalaxyFilamentWordmarkDark.d.ts +0 -3
- package/dist/assets/components/GalaxyFilamentWordmarkDark.js +0 -14
- package/dist/assets/components/GalaxyFilamentWordmarkLight.d.ts +0 -3
- package/dist/assets/components/GalaxyFilamentWordmarkLight.js +0 -14
- package/dist/assets/components/GalaxyLogomarkDark.d.ts +0 -3
- package/dist/assets/components/GalaxyLogomarkDark.js +0 -11
- package/dist/assets/components/GalaxyLogomarkLight.d.ts +0 -3
- package/dist/assets/components/GalaxyLogomarkLight.js +0 -17
- package/dist/assets/components/GalaxyWordmarkDark.d.ts +0 -3
- package/dist/assets/components/GalaxyWordmarkDark.js +0 -15
- package/dist/assets/components/GalaxyWordmarkLight.d.ts +0 -3
- package/dist/assets/components/GalaxyWordmarkLight.js +0 -28
- package/dist/assets/models/galaxy-animation.js +0 -136666
- package/dist/assets/models/galaxy-logomark.js +0 -4
- package/dist/avatar/AvatarShimmer.d.ts +0 -30
- package/dist/avatar/AvatarShimmer.js +0 -22
- package/dist/backgrounds/CellGridBackground.d.ts +0 -24
- package/dist/backgrounds/CellGridBackground.js +0 -44
- package/dist/backgrounds/CrossGridBackground.d.ts +0 -26
- package/dist/backgrounds/CrossGridBackground.js +0 -49
- package/dist/backgrounds/DotGridBackground.d.ts +0 -24
- package/dist/backgrounds/DotGridBackground.js +0 -47
- package/dist/badge/Badge.d.ts +0 -42
- package/dist/badge/Badge.js +0 -99
- package/dist/charts/ChartEmptyState.d.ts +0 -17
- package/dist/charts/ChartEmptyState.js +0 -29
- package/dist/charts/ProgressBar.d.ts +0 -29
- package/dist/charts/ProgressBar.js +0 -65
- package/dist/charts/chartTheme.d.ts +0 -18
- package/dist/charts/chartTheme.js +0 -26
- package/dist/containers/FlexItem.d.ts +0 -50
- package/dist/containers/FlexItem.js +0 -91
- package/dist/containers/FlexWrapper.d.ts +0 -96
- package/dist/containers/FlexWrapper.js +0 -143
- package/dist/containers/GridWrapper.d.ts +0 -79
- package/dist/containers/GridWrapper.js +0 -125
- package/dist/containers/Spacing.d.ts +0 -23
- package/dist/containers/Spacing.js +0 -59
- package/dist/containers/Wrapper.d.ts +0 -26
- package/dist/containers/Wrapper.js +0 -54
- package/dist/dividers/HorizontalDivider.d.ts +0 -7
- package/dist/dividers/HorizontalDivider.js +0 -39
- package/dist/dividers/VerticalDivider.d.ts +0 -6
- package/dist/dividers/VerticalDivider.js +0 -21
- package/dist/icons/GalaxyFilamentWordmark.d.ts +0 -11
- package/dist/icons/GalaxyFilamentWordmark.js +0 -25
- package/dist/icons/GalaxyLogomark.d.ts +0 -13
- package/dist/icons/GalaxyLogomark.js +0 -27
- package/dist/icons/GalaxyLogomark3D.d.ts +0 -56
- package/dist/icons/GalaxyLogomark3D.js +0 -319
- package/dist/icons/GalaxyLogomarkAnimation.d.ts +0 -18
- package/dist/icons/GalaxyLogomarkAnimation.js +0 -48
- package/dist/icons/GalaxyWordmark.d.ts +0 -11
- package/dist/icons/GalaxyWordmark.js +0 -25
- package/dist/inputs/MultiTextInput.d.ts +0 -32
- package/dist/inputs/MultiTextInput.js +0 -180
- package/dist/inputs/SwitcherInput.d.ts +0 -27
- package/dist/inputs/SwitcherInput.js +0 -64
- package/dist/inputs/hooks.d.ts +0 -10
- package/dist/inputs/hooks.js +0 -22
- package/dist/overlay/constants.d.ts +0 -28
- package/dist/overlay/constants.js +0 -37
- package/dist/resizable/HorizontalResizeHandle.d.ts +0 -17
- package/dist/resizable/HorizontalResizeHandle.js +0 -38
- package/dist/resizable/VerticalResizeHandle.d.ts +0 -18
- package/dist/resizable/VerticalResizeHandle.js +0 -39
- package/dist/table/SpreadsheetCell.d.ts +0 -21
- package/dist/table/SpreadsheetCell.js +0 -71
- package/dist/table/SpreadsheetHeaderCell.d.ts +0 -23
- package/dist/table/SpreadsheetHeaderCell.js +0 -91
- package/dist/table/SpreadsheetMenuItem.d.ts +0 -14
- package/dist/table/SpreadsheetMenuItem.js +0 -33
- package/dist/table/SpreadsheetPrimitives.d.ts +0 -172
- package/dist/table/SpreadsheetPrimitives.js +0 -105
- package/dist/table/SpreadsheetRow.d.ts +0 -33
- package/dist/table/SpreadsheetRow.js +0 -73
- package/dist/table/SpreadsheetRowActionCell.d.ts +0 -14
- package/dist/table/SpreadsheetRowActionCell.js +0 -51
- package/dist/table/TableExpandCell.d.ts +0 -11
- package/dist/table/TableExpandCell.js +0 -24
- package/dist/table/TableExpandedRow.d.ts +0 -16
- package/dist/table/TableExpandedRow.js +0 -77
- package/dist/table/TableHeaderCellContent.d.ts +0 -30
- package/dist/table/TableHeaderCellContent.js +0 -48
- package/dist/table/TablePrimitives.d.ts +0 -313
- package/dist/table/TablePrimitives.js +0 -302
- package/dist/table/TableSelectCell.d.ts +0 -18
- package/dist/table/TableSelectCell.js +0 -27
- package/dist/table/TableStatusRow.d.ts +0 -18
- package/dist/table/TableStatusRow.js +0 -50
- package/dist/table/useSpreadsheetEditing.d.ts +0 -13
- package/dist/table/useSpreadsheetEditing.js +0 -41
- package/dist/table/useTableColumnResize.d.ts +0 -38
- package/dist/table/useTableColumnResize.js +0 -155
- package/dist/table/useTableRowExpansion.d.ts +0 -24
- package/dist/table/useTableRowExpansion.js +0 -62
- package/dist/table/utils.d.ts +0 -50
- package/dist/table/utils.js +0 -78
- package/dist/text/HotKeys.d.ts +0 -30
- package/dist/text/HotKeys.js +0 -74
- package/dist/text/Paragraph.d.ts +0 -33
- package/dist/text/Paragraph.js +0 -83
- package/dist/text/TextShimmer.d.ts +0 -14
- package/dist/text/TextShimmer.js +0 -34
- package/dist/theme/GalaxyTheme.d.ts +0 -67
- package/dist/theme/GalaxyTheme.js +0 -119
- package/dist/theme/constants.d.ts +0 -8
- package/dist/theme/constants.js +0 -38
- package/dist/theme/index.d.ts +0 -6
- package/dist/theme/index.js +0 -7
- package/dist/theme/types.d.ts +0 -195
- package/dist/theme/types.js +0 -10
- package/dist/theme/typography.d.ts +0 -2
- package/dist/theme/typography.js +0 -73
- package/dist/theme/variants/dark.d.ts +0 -2
- package/dist/theme/variants/dark.js +0 -125
- package/dist/theme/variants/light.d.ts +0 -2
- package/dist/theme/variants/light.js +0 -125
- package/dist/toast/ToastContainer.d.ts +0 -10
- package/dist/toast/ToastContainer.js +0 -31
- package/dist/toast/ToastWrapper.d.ts +0 -6
- package/dist/toast/ToastWrapper.js +0 -27
- package/dist/transform/Flash.d.ts +0 -7
- package/dist/transform/Flash.js +0 -18
- package/dist/transform/Spin.d.ts +0 -14
- package/dist/transform/Spin.js +0 -25
- package/dist/utils/linaria.d.ts +0 -1
- package/dist/utils/linaria.js +0 -8
|
@@ -1,219 +1,313 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import {
|
|
1
|
+
import { useIsomorphicLayoutEffect } from "../hooks/useIsomorphicLayoutEffect.js";
|
|
2
|
+
import Skeleton, { SkeletonSize } from "../feedback/Skeleton.js";
|
|
3
|
+
import { FontFamily } from "../theme/enums.js";
|
|
4
|
+
import { useControlledState } from "../hooks/useControlledState.js";
|
|
5
|
+
import { useDevWarning } from "./internal/devWarn.js";
|
|
6
|
+
import { useFieldWiring } from "./internal/fieldWiring.js";
|
|
7
|
+
import Field, { FieldSize } from "./Field.js";
|
|
8
|
+
import { rootStyle, useOwnField } from "./internal/ownField.js";
|
|
7
9
|
/* empty css */
|
|
8
10
|
import { styled } from "@linaria/react";
|
|
9
|
-
import { forwardRef, useState } from "react";
|
|
11
|
+
import { forwardRef, useEffect, useRef, useState } from "react";
|
|
10
12
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
13
|
+
import { cx } from "@linaria/core";
|
|
14
|
+
import { useMergeRefs } from "@floating-ui/react";
|
|
11
15
|
//#region src/inputs/TextAreaInput.tsx
|
|
12
16
|
/**
|
|
13
|
-
*
|
|
14
|
-
* `
|
|
15
|
-
*
|
|
17
|
+
* The multi-line text field: descriptions, notes, comments, pasted JSON credentials. It holds a
|
|
18
|
+
* string with `value` / `defaultValue` / `onChange` and draws the same frame as the single-line
|
|
19
|
+
* inputs (surface `variant`, hairline, rung, focus, error, disabled and read-only looks), so a form
|
|
20
|
+
* of TextInputs and a TextAreaInput reads as one set. Height is in rows: `minRows` sets the resting
|
|
21
|
+
* height, `isAutoGrow` follows the content up to `maxRows`, and `isResizable` lets the user drag it
|
|
22
|
+
* taller. `isLoading` keeps the field in place and covers its text with a two-line `Skeleton`.
|
|
23
|
+
*
|
|
24
|
+
* A standalone TextAreaInput with `label` or `error` renders a `Field` around itself; inside a
|
|
25
|
+
* Field it reads the Field's wiring with `useField()`. It never validates: a visible counter is
|
|
26
|
+
* `Field`'s `maxLength` + `count`, and the message is the app's `error`. Replaces 1.x
|
|
27
|
+
* `TextAreaInput` (`InputSize` / `InputVariant` → `TextAreaInputSize` / `TextAreaInputVariant`,
|
|
28
|
+
* `lines` → `minRows`, `required` / `disabled` → `isRequired` / `isDisabled`; `min` / `max`,
|
|
29
|
+
* `width`, `height`, `fillHeight`, `noBorder`, `noPadding` and `labelTooltip` are gone).
|
|
16
30
|
*/
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
var
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
var _exp13 = () => ({ theme }) => theme.color.text.disabled;
|
|
50
|
-
var StyledTextArea = withTheme(/*#__PURE__*/ styled("textarea")({
|
|
51
|
-
name: "StyledTextArea",
|
|
52
|
-
class: "s1jhbbpd",
|
|
53
|
-
propsAsIs: false,
|
|
54
|
-
vars: {
|
|
55
|
-
"s1jhbbpd-0": [_exp()],
|
|
56
|
-
"s1jhbbpd-1": [_exp2()],
|
|
57
|
-
"s1jhbbpd-2": [_exp3()],
|
|
58
|
-
"s1jhbbpd-3": [_exp4()],
|
|
59
|
-
"s1jhbbpd-4": [_exp5()],
|
|
60
|
-
"s1jhbbpd-5": [_exp6()],
|
|
61
|
-
"s1jhbbpd-6": [_exp7()],
|
|
62
|
-
"s1jhbbpd-7": [_exp8()],
|
|
63
|
-
"s1jhbbpd-8": [_exp9()],
|
|
64
|
-
"s1jhbbpd-9": [_exp0()],
|
|
65
|
-
"s1jhbbpd-10": [_exp1()],
|
|
66
|
-
"s1jhbbpd-11": [_exp10()],
|
|
67
|
-
"s1jhbbpd-12": [_exp11()],
|
|
68
|
-
"s1jhbbpd-13": [_exp12()],
|
|
69
|
-
"s1jhbbpd-14": [_exp13()]
|
|
70
|
-
}
|
|
71
|
-
}));
|
|
72
|
-
var _exp14 = () => ({ $fillWidth }) => $fillWidth ? "100%" : "auto";
|
|
73
|
-
var _exp15 = () => ({ $fillHeight }) => $fillHeight ? "100%" : "auto";
|
|
74
|
-
var _exp16 = () => ({ $fillHeight }) => $fillHeight ? "flex: 1;" : "";
|
|
75
|
-
var TextAreaWrapper = /*#__PURE__*/ styled("div")({
|
|
76
|
-
name: "TextAreaWrapper",
|
|
77
|
-
class: "tu0hnok",
|
|
78
|
-
propsAsIs: false,
|
|
79
|
-
vars: {
|
|
80
|
-
"tu0hnok-0": [_exp14()],
|
|
81
|
-
"tu0hnok-1": [_exp15()],
|
|
82
|
-
"tu0hnok-2": [_exp16()]
|
|
83
|
-
}
|
|
31
|
+
/** Canonical rungs; TextAreaInput supports all five. The rung sets the text step, the padding and the height of one row. */
|
|
32
|
+
var TextAreaInputSize = /* @__PURE__ */ function(TextAreaInputSize) {
|
|
33
|
+
/** Caption text, 12px rows, 20px one-row field. */
|
|
34
|
+
TextAreaInputSize["X_SMALL"] = "X_SMALL";
|
|
35
|
+
/** body_sm text, 16px rows, 24px one-row field. */
|
|
36
|
+
TextAreaInputSize["SMALL"] = "SMALL";
|
|
37
|
+
/** body_md text, 16px rows, 32px one-row field. The default. */
|
|
38
|
+
TextAreaInputSize["MEDIUM"] = "MEDIUM";
|
|
39
|
+
/** body_lg text, 20px rows, 36px one-row field. */
|
|
40
|
+
TextAreaInputSize["LARGE"] = "LARGE";
|
|
41
|
+
/** body_lg text, 20px rows, 40px one-row field. */
|
|
42
|
+
TextAreaInputSize["X_LARGE"] = "X_LARGE";
|
|
43
|
+
return TextAreaInputSize;
|
|
44
|
+
}({});
|
|
45
|
+
/** Resting fill of the field (Constitution V-A surface set; the 1.x `InputVariant` members, unchanged). */
|
|
46
|
+
var TextAreaInputVariant = /* @__PURE__ */ function(TextAreaInputVariant) {
|
|
47
|
+
/** `background.base` fill. */
|
|
48
|
+
TextAreaInputVariant["BASE"] = "BASE";
|
|
49
|
+
/** `background.primary` fill. The default. */
|
|
50
|
+
TextAreaInputVariant["PRIMARY"] = "PRIMARY";
|
|
51
|
+
/** `background.secondary` fill. */
|
|
52
|
+
TextAreaInputVariant["SECONDARY"] = "SECONDARY";
|
|
53
|
+
/** `background.tertiary` fill. */
|
|
54
|
+
TextAreaInputVariant["TERTIARY"] = "TERTIARY";
|
|
55
|
+
return TextAreaInputVariant;
|
|
56
|
+
}({});
|
|
57
|
+
/** One row-height calc: `rows × line height + 2 × inset` (border-box, so it is the outer height). */
|
|
58
|
+
/** Positions the measuring mirror and the loading overlay; the textarea draws the frame. */
|
|
59
|
+
var Root = /*#__PURE__*/ styled("div")({
|
|
60
|
+
name: "Root",
|
|
61
|
+
class: "gx-TextAreaInput-r1jhbbpd",
|
|
62
|
+
propsAsIs: false
|
|
84
63
|
});
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
64
|
+
/**
|
|
65
|
+
* The field itself: the bordered element, so focus (`FIELD_FOCUS` on any focus: `border.focused` at 1px inside) and
|
|
66
|
+
* the resize handle sit on the frame.
|
|
67
|
+
*/
|
|
68
|
+
var Control = /*#__PURE__*/ styled("textarea")({
|
|
69
|
+
name: "Control",
|
|
70
|
+
class: "gx-TextAreaInput-Control-cu0hnok",
|
|
71
|
+
propsAsIs: false
|
|
72
|
+
});
|
|
73
|
+
/** The hidden measuring copy: same border and padding as `Control`, zero height, never seen or read. */
|
|
74
|
+
var Mirror = /*#__PURE__*/ styled("textarea")({
|
|
75
|
+
name: "Mirror",
|
|
76
|
+
class: "gx-TextAreaInput-Mirror-m48iv0n",
|
|
77
|
+
propsAsIs: false
|
|
78
|
+
});
|
|
79
|
+
/** Covers the first rows of text while `isLoading`. */
|
|
80
|
+
var LoadingOverlay = /*#__PURE__*/ styled("span")({
|
|
81
|
+
name: "LoadingOverlay",
|
|
82
|
+
class: "gx-TextAreaInput-LoadingOverlay-l18cdt5k",
|
|
83
|
+
propsAsIs: false
|
|
84
|
+
});
|
|
85
|
+
/** Line height, block inset and inline padding per rung; one row = line + 2 × inset = the rung (Constitution III-A.4). */
|
|
86
|
+
var TEXT_AREA_INPUT_SIZE_TO_CSS_MAP = {
|
|
87
|
+
["X_SMALL"]: "gx-TextAreaInput-X_SMALL-xl6hrmj",
|
|
88
|
+
["SMALL"]: "gx-TextAreaInput-SMALL-sayj2b7",
|
|
89
|
+
["MEDIUM"]: "gx-TextAreaInput-MEDIUM-mxy7i6q",
|
|
90
|
+
["LARGE"]: "gx-TextAreaInput-LARGE-l11gu90v",
|
|
91
|
+
["X_LARGE"]: "gx-TextAreaInput-X_LARGE-x53s0j8"
|
|
90
92
|
};
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
93
|
+
/** The value's type per family and rung (Input's family map without its fixed height; mono shares the line heights). */
|
|
94
|
+
var TEXT_AREA_INPUT_FAMILY_TO_SIZE_CSS_MAP = {
|
|
95
|
+
[FontFamily.SANS]: {
|
|
96
|
+
["X_SMALL"]: "gx-TextAreaInput-X_SMALL-xcocpoc",
|
|
97
|
+
["SMALL"]: "gx-TextAreaInput-SMALL-smg30fv",
|
|
98
|
+
["MEDIUM"]: "gx-TextAreaInput-MEDIUM-m17yu174",
|
|
99
|
+
["LARGE"]: "gx-TextAreaInput-LARGE-l1lhy1ch",
|
|
100
|
+
["X_LARGE"]: "gx-TextAreaInput-X_LARGE-xt05y9q"
|
|
101
|
+
},
|
|
102
|
+
[FontFamily.MONO]: {
|
|
103
|
+
["X_SMALL"]: "gx-TextAreaInput-X_SMALL-x4gku9c",
|
|
104
|
+
["SMALL"]: "gx-TextAreaInput-SMALL-s1havzor",
|
|
105
|
+
["MEDIUM"]: "gx-TextAreaInput-MEDIUM-m1ie5pnb",
|
|
106
|
+
["LARGE"]: "gx-TextAreaInput-LARGE-l1bu2eyp",
|
|
107
|
+
["X_LARGE"]: "gx-TextAreaInput-X_LARGE-xx79smc"
|
|
108
|
+
}
|
|
95
109
|
};
|
|
96
|
-
|
|
97
|
-
var
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
110
|
+
/** Rest look per variant: fill and hairline color (the shared `FIELD_SURFACE_TO_REST_MAP` fragments). */
|
|
111
|
+
var TEXT_AREA_INPUT_VARIANT_TO_CSS_MAP = {
|
|
112
|
+
["BASE"]: "gx-TextAreaInput-BASE-bb0gkbj",
|
|
113
|
+
["PRIMARY"]: "gx-TextAreaInput-PRIMARY-p1ow5tvt",
|
|
114
|
+
["SECONDARY"]: "gx-TextAreaInput-SECONDARY-s1iv3xcr",
|
|
115
|
+
["TERTIARY"]: "gx-TextAreaInput-TERTIARY-t1bpq8oq"
|
|
101
116
|
};
|
|
102
|
-
|
|
103
|
-
var
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
"l48iv0n-5": [_exp22()],
|
|
114
|
-
"l48iv0n-6": [_exp23()]
|
|
115
|
-
}
|
|
116
|
-
}));
|
|
117
|
-
var DEFAULT_STATE = { error: void 0 };
|
|
118
|
-
var TEXTAREA_SIZE_TO_SHIMMER_HEIGHT_MAP = {
|
|
119
|
-
[InputSize.SMALL]: 12,
|
|
120
|
-
[InputSize.MEDIUM]: 14,
|
|
121
|
-
[InputSize.LARGE]: 16
|
|
117
|
+
/** `isGhost`: no fill and no hairline at rest. Declared after the variant map, which it replaces. */
|
|
118
|
+
var GHOST_CSS = "gx-TextAreaInput-GHOST_CSS-gotwbad";
|
|
119
|
+
/**
|
|
120
|
+
* Hover on an editable field (2026-10-03 field-frame resolution): `border.hovered`. Not while
|
|
121
|
+
* focused, so focus keeps `border.focused` on every variant.
|
|
122
|
+
*/
|
|
123
|
+
var TEXT_AREA_INPUT_VARIANT_TO_HOVER_CSS_MAP = {
|
|
124
|
+
["BASE"]: "gx-TextAreaInput-BASE-b9n23p6",
|
|
125
|
+
["PRIMARY"]: "gx-TextAreaInput-PRIMARY-p190b34w",
|
|
126
|
+
["SECONDARY"]: "gx-TextAreaInput-SECONDARY-s1qhok5h",
|
|
127
|
+
["TERTIARY"]: "gx-TextAreaInput-TERTIARY-tlw3g4y"
|
|
122
128
|
};
|
|
129
|
+
/** Hover on an editable ghost field: the frame appears, `border.hovered` with no fill. Not while focused. */
|
|
130
|
+
var GHOST_HOVER_CSS = "gx-TextAreaInput-GHOST_HOVER_CSS-gbqdkqd";
|
|
131
|
+
/** Error border at rest, on hover and with focus (the 1px inset focus line is red too). */
|
|
132
|
+
var ERROR_CSS = "gx-TextAreaInput-ERROR_CSS-ed54239";
|
|
123
133
|
/**
|
|
124
|
-
*
|
|
125
|
-
* `
|
|
126
|
-
*
|
|
127
|
-
* Note this one takes `required`/`disabled` rather than the `isRequired`/
|
|
128
|
-
* `isDisabled` the other inputs use.
|
|
134
|
+
* Disabled: the variant's resting fill and hairline are kept (`border.disabled` is not used on
|
|
135
|
+
* frames); the field reads as disabled through `text.disabled` and the cursor.
|
|
129
136
|
*/
|
|
130
|
-
var
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
137
|
+
var DISABLED_CSS = "gx-TextAreaInput-DISABLED_CSS-dydj1qz";
|
|
138
|
+
/** Loading: the rest look is kept (waiting, not off); the text and placeholder are hidden under the skeleton. */
|
|
139
|
+
var LOADING_CSS = "gx-TextAreaInput-LOADING_CSS-lnj2bsw";
|
|
140
|
+
/** Caps auto-grow and the resize drag at `maxRows`; past it the field scrolls. */
|
|
141
|
+
var MAX_ROWS_CSS = "gx-TextAreaInput-MAX_ROWS_CSS-m6uahg3";
|
|
142
|
+
/** The native vertical resize handle, bounded by `min-height` / `max-height`. */
|
|
143
|
+
var RESIZABLE_CSS = "gx-TextAreaInput-RESIZABLE_CSS-rq3dee4";
|
|
144
|
+
/** Stretch the textarea to its root's width. */
|
|
145
|
+
var FILL_WIDTH_CSS = "gx-TextAreaInput-FILL_WIDTH_CSS-f1xdzkm1";
|
|
146
|
+
/** Stretch the root (and a `Field` wrapper) to the parent's width. */
|
|
147
|
+
var ROOT_FILL_WIDTH_CSS = "gx-TextAreaInput-ROOT_FILL_WIDTH_CSS-rtpol1z";
|
|
148
|
+
/** The `Field` a TextAreaInput renders for its own `label` / `error` uses the same rung. */
|
|
149
|
+
var TEXT_AREA_INPUT_SIZE_TO_FIELD_SIZE_MAP = {
|
|
150
|
+
["X_SMALL"]: FieldSize.X_SMALL,
|
|
151
|
+
["SMALL"]: FieldSize.SMALL,
|
|
152
|
+
["MEDIUM"]: FieldSize.MEDIUM,
|
|
153
|
+
["LARGE"]: FieldSize.LARGE,
|
|
154
|
+
["X_LARGE"]: FieldSize.X_LARGE
|
|
155
|
+
};
|
|
156
|
+
/** The loading skeleton's lines are the rung's text line height (skeleton.md host contract). */
|
|
157
|
+
var TEXT_AREA_INPUT_SIZE_TO_SKELETON_SIZE_MAP = {
|
|
158
|
+
["X_SMALL"]: SkeletonSize.X_SMALL,
|
|
159
|
+
["SMALL"]: SkeletonSize.SMALL,
|
|
160
|
+
["MEDIUM"]: SkeletonSize.MEDIUM,
|
|
161
|
+
["LARGE"]: SkeletonSize.LARGE,
|
|
162
|
+
["X_LARGE"]: SkeletonSize.X_LARGE
|
|
163
|
+
};
|
|
164
|
+
/** A row count floored to a whole number, at least 1 (a non-finite value gives 1). */
|
|
165
|
+
function toRows(rows) {
|
|
166
|
+
return Number.isFinite(rows) ? Math.max(1, Math.floor(rows)) : 1;
|
|
167
|
+
}
|
|
168
|
+
/** `Root`, the textarea, the mirror and the loading overlay, wired to the nearest Field. */
|
|
169
|
+
function TextAreaFrame({ textAreaProps, forwardedRef, isRoot }) {
|
|
170
|
+
const { value, defaultValue = "", onChange, size = "MEDIUM", variant = "PRIMARY", isGhost = false, label: _label, placeholder, error, isError = false, minRows = 3, maxRows, isAutoGrow = false, isResizable = false, isLoading = false, isDisabled = false, isReadOnly = false, isRequired = false, family = FontFamily.SANS, fillWidth = false, ariaLabel, autoComplete = "off", id, "aria-describedby": ariaDescribedBy, className, style, ...rest } = textAreaProps;
|
|
171
|
+
const { controlId: textAreaId, describedBy, isInvalid, isRequired: isRequiredState, hasName } = useFieldWiring({
|
|
172
|
+
id,
|
|
173
|
+
ariaLabel,
|
|
174
|
+
ariaLabelAttribute: rest["aria-label"],
|
|
175
|
+
ariaLabelledBy: rest["aria-labelledby"],
|
|
176
|
+
ariaDescribedBy,
|
|
177
|
+
error,
|
|
178
|
+
isError,
|
|
179
|
+
isRequired
|
|
180
|
+
});
|
|
181
|
+
const rootRef = useRef(null);
|
|
182
|
+
const innerRef = useRef(null);
|
|
183
|
+
const mirrorRef = useRef(null);
|
|
184
|
+
const mergedRef = useMergeRefs([innerRef, forwardedRef]);
|
|
185
|
+
const [currentValue, setValue] = useControlledState({
|
|
186
|
+
value,
|
|
187
|
+
defaultValue,
|
|
188
|
+
onChange
|
|
189
|
+
});
|
|
190
|
+
const [measuredHeight, setMeasuredHeight] = useState(void 0);
|
|
191
|
+
const rows = toRows(minRows);
|
|
192
|
+
const resolvedMaxRows = maxRows === void 0 ? void 0 : Math.max(toRows(maxRows), rows);
|
|
193
|
+
const isEditable = !isDisabled && !isReadOnly && !isLoading;
|
|
194
|
+
const typeClassName = TEXT_AREA_INPUT_FAMILY_TO_SIZE_CSS_MAP[family][size];
|
|
195
|
+
const mirrorText = currentValue === "" ? placeholder ?? "" : currentValue;
|
|
196
|
+
useDevWarning(!hasName, "[@galaxy-io/dls] TextAreaInput has no accessible name. Pass `label`, wrap it in a labelled `Field`, or set `ariaLabel`. `placeholder` is not a name.");
|
|
197
|
+
useDevWarning(isAutoGrow && isResizable, "[@galaxy-io/dls] TextAreaInput ignores `isResizable` with `isAutoGrow`: the height follows the content.");
|
|
198
|
+
/** Reads the content height from the mirror: its scroll height plus the control's borders. */
|
|
199
|
+
const measure = () => {
|
|
200
|
+
const control = innerRef.current;
|
|
201
|
+
const mirror = mirrorRef.current;
|
|
202
|
+
if (control === null || mirror === null) return;
|
|
203
|
+
const computed = window.getComputedStyle(control);
|
|
204
|
+
const next = mirror.scrollHeight + Number.parseFloat(computed.borderTopWidth) + Number.parseFloat(computed.borderBottomWidth);
|
|
205
|
+
setMeasuredHeight((previous) => previous === next ? previous : next);
|
|
138
206
|
};
|
|
139
|
-
const
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
207
|
+
const measureRef = useRef(measure);
|
|
208
|
+
measureRef.current = measure;
|
|
209
|
+
useIsomorphicLayoutEffect(() => {
|
|
210
|
+
const mirror = mirrorRef.current;
|
|
211
|
+
if (!isAutoGrow || mirror === null) return;
|
|
212
|
+
if (mirror.value !== mirrorText || !mirror.classList.contains(typeClassName)) return;
|
|
213
|
+
measureRef.current();
|
|
214
|
+
}, [
|
|
215
|
+
isAutoGrow,
|
|
216
|
+
mirrorText,
|
|
217
|
+
typeClassName
|
|
218
|
+
]);
|
|
219
|
+
useEffect(() => {
|
|
220
|
+
const root = rootRef.current;
|
|
221
|
+
if (!isAutoGrow || root === null) return;
|
|
222
|
+
let isActive = true;
|
|
223
|
+
let lastWidth = root.getBoundingClientRect().width;
|
|
224
|
+
const observer = typeof ResizeObserver === "undefined" ? void 0 : new ResizeObserver((entries) => {
|
|
225
|
+
const width = entries[0]?.contentRect.width;
|
|
226
|
+
if (width === void 0 || width === lastWidth) return;
|
|
227
|
+
lastWidth = width;
|
|
228
|
+
measureRef.current();
|
|
143
229
|
});
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
230
|
+
observer?.observe(root);
|
|
231
|
+
document.fonts?.ready.then(() => {
|
|
232
|
+
if (isActive) measureRef.current();
|
|
147
233
|
});
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
};
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
234
|
+
return () => {
|
|
235
|
+
isActive = false;
|
|
236
|
+
observer?.disconnect();
|
|
237
|
+
};
|
|
238
|
+
}, [isAutoGrow]);
|
|
239
|
+
const handleChange = (event) => setValue(event.target.value);
|
|
240
|
+
const controlVariables = { "--gx-textarea-min-rows": String(rows) };
|
|
241
|
+
if (resolvedMaxRows !== void 0) controlVariables["--gx-textarea-max-rows"] = String(resolvedMaxRows);
|
|
242
|
+
if (isAutoGrow && measuredHeight !== void 0) controlVariables["--gx-textarea-height"] = `${measuredHeight}px`;
|
|
243
|
+
return /* @__PURE__ */ jsxs(Root, {
|
|
244
|
+
ref: rootRef,
|
|
245
|
+
className: cx(TEXT_AREA_INPUT_SIZE_TO_CSS_MAP[size], fillWidth && ROOT_FILL_WIDTH_CSS, isRoot ? className : void 0),
|
|
246
|
+
...rootStyle(isRoot, style),
|
|
247
|
+
children: [
|
|
248
|
+
/* @__PURE__ */ jsx(Control, {
|
|
249
|
+
ref: mergedRef,
|
|
250
|
+
id: textAreaId,
|
|
251
|
+
rows,
|
|
252
|
+
value: currentValue,
|
|
253
|
+
onChange: handleChange,
|
|
254
|
+
placeholder,
|
|
255
|
+
disabled: isDisabled || isLoading,
|
|
256
|
+
readOnly: isReadOnly,
|
|
257
|
+
autoComplete,
|
|
258
|
+
autoCorrect: "off",
|
|
259
|
+
"aria-label": ariaLabel,
|
|
260
|
+
"aria-describedby": describedBy,
|
|
261
|
+
"aria-invalid": isInvalid ? true : void 0,
|
|
262
|
+
"aria-required": isRequiredState ? true : void 0,
|
|
263
|
+
"aria-busy": isLoading ? true : void 0,
|
|
264
|
+
className: cx(typeClassName, isGhost ? GHOST_CSS : TEXT_AREA_INPUT_VARIANT_TO_CSS_MAP[variant], isEditable && !isInvalid && (isGhost ? GHOST_HOVER_CSS : TEXT_AREA_INPUT_VARIANT_TO_HOVER_CSS_MAP[variant]), isInvalid && !isDisabled && !isLoading && ERROR_CSS, isDisabled && !isLoading && DISABLED_CSS, isLoading && LOADING_CSS, resolvedMaxRows !== void 0 && MAX_ROWS_CSS, isResizable && !isAutoGrow && isEditable && RESIZABLE_CSS, fillWidth && FILL_WIDTH_CSS),
|
|
265
|
+
style: controlVariables,
|
|
266
|
+
...rest
|
|
267
|
+
}),
|
|
268
|
+
isAutoGrow && /* @__PURE__ */ jsx(Mirror, {
|
|
269
|
+
ref: mirrorRef,
|
|
270
|
+
value: mirrorText,
|
|
271
|
+
readOnly: true,
|
|
272
|
+
tabIndex: -1,
|
|
273
|
+
"aria-hidden": true,
|
|
274
|
+
className: typeClassName
|
|
275
|
+
}),
|
|
276
|
+
isLoading && /* @__PURE__ */ jsx(LoadingOverlay, { children: /* @__PURE__ */ jsx(Skeleton, {
|
|
277
|
+
lines: Math.min(2, rows),
|
|
278
|
+
size: TEXT_AREA_INPUT_SIZE_TO_SKELETON_SIZE_MAP[size]
|
|
279
|
+
}) })
|
|
280
|
+
]
|
|
281
|
+
});
|
|
282
|
+
}
|
|
283
|
+
/** The multi-line text field, sized in rows, with optional auto-grow and a vertical resize handle. */
|
|
284
|
+
var TextAreaInput = forwardRef(function TextAreaInput(props, ref) {
|
|
285
|
+
const { label, error, isRequired = false, size = "MEDIUM", fillWidth = false, id, className, style } = props;
|
|
286
|
+
const ownField = useOwnField({
|
|
287
|
+
componentName: "TextAreaInput",
|
|
288
|
+
label,
|
|
289
|
+
error,
|
|
290
|
+
isRequired,
|
|
291
|
+
size: TEXT_AREA_INPUT_SIZE_TO_FIELD_SIZE_MAP[size],
|
|
292
|
+
id,
|
|
293
|
+
className,
|
|
294
|
+
style,
|
|
295
|
+
rootClassName: fillWidth && ROOT_FILL_WIDTH_CSS
|
|
296
|
+
});
|
|
297
|
+
if (ownField !== null) return /* @__PURE__ */ jsx(Field, {
|
|
298
|
+
...ownField,
|
|
299
|
+
children: /* @__PURE__ */ jsx(TextAreaFrame, {
|
|
300
|
+
textAreaProps: props,
|
|
301
|
+
forwardedRef: ref,
|
|
302
|
+
isRoot: false
|
|
214
303
|
})
|
|
215
304
|
});
|
|
305
|
+
return /* @__PURE__ */ jsx(TextAreaFrame, {
|
|
306
|
+
textAreaProps: props,
|
|
307
|
+
forwardedRef: ref,
|
|
308
|
+
isRoot: true
|
|
309
|
+
});
|
|
216
310
|
});
|
|
217
311
|
TextAreaInput.displayName = "TextAreaInput";
|
|
218
312
|
//#endregion
|
|
219
|
-
export { TextAreaInput as default };
|
|
313
|
+
export { TextAreaInputSize, TextAreaInputVariant, TextAreaInput as default };
|
|
@@ -1,15 +1,6 @@
|
|
|
1
|
-
import { type InputProps } from "./Input";
|
|
2
|
-
/**
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
* and `step` is numeric-only.
|
|
6
|
-
*/
|
|
7
|
-
export type TextInputProps = Omit<InputProps<string>, "type" | "parse" | "onFocus" | "step">;
|
|
8
|
-
/**
|
|
9
|
-
* A single-line text field. The default input.
|
|
10
|
-
*
|
|
11
|
-
* `min`/`max` bound the *character count*, not a numeric range — the field
|
|
12
|
-
* validates length on blur and shows its own error. A `error` you pass wins.
|
|
13
|
-
*/
|
|
1
|
+
import { type InputProps } from "./Input.js";
|
|
2
|
+
/** Every `Input` prop except `type`, which is fixed to `"text"`. */
|
|
3
|
+
export type TextInputProps = Omit<InputProps, "type">;
|
|
4
|
+
/** The default single-line text field: `Input` with `type="text"`. */
|
|
14
5
|
declare const TextInput: import("react").ForwardRefExoticComponent<TextInputProps & import("react").RefAttributes<HTMLInputElement>>;
|
|
15
6
|
export default TextInput;
|
package/dist/inputs/TextInput.js
CHANGED
|
@@ -1,59 +1,24 @@
|
|
|
1
1
|
import Input from "./Input.js";
|
|
2
|
-
import { forwardRef
|
|
2
|
+
import { forwardRef } from "react";
|
|
3
3
|
import { jsx } from "react/jsx-runtime";
|
|
4
4
|
//#region src/inputs/TextInput.tsx
|
|
5
|
-
var DEFAULT_STATE = { error: "" };
|
|
6
5
|
/**
|
|
7
|
-
*
|
|
6
|
+
* The default single-line text field: names, hosts, titles, filters, inline renames. A thin preset
|
|
7
|
+
* over `Input` with `type="text"`; every prop, look, state and accessibility rule is Input's
|
|
8
|
+
* (`prefix` / `suffix`, `isClearable`, `onEnter`, `family`, the five `InputSize` rungs and the
|
|
9
|
+
* surface-set `InputVariant`s, imported from `inputs/Input`).
|
|
8
10
|
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
+
* TextInput never validates: the 1.x character-count checks (`min` / `max`) are gone. Validate in
|
|
12
|
+
* the app and pass `error`; use the native `maxLength` for a hard cap and `<Field maxLength>` for a
|
|
13
|
+
* visible counter. Passwords, search, numbers and copy-only values are PasswordInput, SearchInput,
|
|
14
|
+
* NumberInput and CopyInput; multi-line text is TextAreaInput.
|
|
11
15
|
*/
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
const handleFocus = () => {
|
|
15
|
-
setState({
|
|
16
|
-
...state,
|
|
17
|
-
error: void 0
|
|
18
|
-
});
|
|
19
|
-
};
|
|
20
|
-
const handleBlur = (e) => {
|
|
21
|
-
if (value?.length && min && value.length < min) setState({
|
|
22
|
-
...state,
|
|
23
|
-
error: `Must be at least ${min} characters`
|
|
24
|
-
});
|
|
25
|
-
if (value?.length && max && value.length > max) setState({
|
|
26
|
-
...state,
|
|
27
|
-
error: `Must be less than ${max} characters`
|
|
28
|
-
});
|
|
29
|
-
onBlur?.(e);
|
|
30
|
-
};
|
|
16
|
+
/** The default single-line text field: `Input` with `type="text"`. */
|
|
17
|
+
var TextInput = forwardRef(function TextInput(props, ref) {
|
|
31
18
|
return /* @__PURE__ */ jsx(Input, {
|
|
32
|
-
|
|
33
|
-
onChange,
|
|
34
|
-
variant,
|
|
35
|
-
size,
|
|
19
|
+
...props,
|
|
36
20
|
ref,
|
|
37
|
-
type: "text"
|
|
38
|
-
value,
|
|
39
|
-
min,
|
|
40
|
-
max,
|
|
41
|
-
placeholder,
|
|
42
|
-
label,
|
|
43
|
-
labelTooltip,
|
|
44
|
-
leading,
|
|
45
|
-
trailing,
|
|
46
|
-
autoFocus,
|
|
47
|
-
error: state.error || error,
|
|
48
|
-
isError,
|
|
49
|
-
isRequired,
|
|
50
|
-
isDisabled,
|
|
51
|
-
onKeyDown,
|
|
52
|
-
onFocus: handleFocus,
|
|
53
|
-
onBlur: handleBlur,
|
|
54
|
-
fillWidth,
|
|
55
|
-
width,
|
|
56
|
-
isMonospace
|
|
21
|
+
type: "text"
|
|
57
22
|
});
|
|
58
23
|
});
|
|
59
24
|
TextInput.displayName = "TextInput";
|