@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.
Files changed (538) hide show
  1. package/README.md +47 -50
  2. package/biome/index.json +74 -0
  3. package/biome/plugins/no-hex-literal.grit +20 -0
  4. package/biome/plugins/no-inline-style.grit +13 -0
  5. package/biome/plugins/no-margin.grit +9 -0
  6. package/biome/plugins/warn/no-hex-literal.grit +23 -0
  7. package/biome/plugins/warn/no-inline-style.grit +13 -0
  8. package/biome/plugins/warn/no-margin.grit +9 -0
  9. package/dist/a11y/FocusScope.d.ts +44 -0
  10. package/dist/a11y/FocusScope.js +229 -0
  11. package/dist/a11y/VisuallyHidden.d.ts +21 -0
  12. package/dist/a11y/VisuallyHidden.js +30 -0
  13. package/dist/avatar/Avatar.d.ts +56 -14
  14. package/dist/avatar/Avatar.js +250 -96
  15. package/dist/avatar/AvatarGroup.d.ts +43 -0
  16. package/dist/avatar/AvatarGroup.js +153 -0
  17. package/dist/backgrounds/GridBackground.d.ts +48 -0
  18. package/dist/backgrounds/GridBackground.js +146 -0
  19. package/dist/beacons/Beacon.d.ts +86 -22
  20. package/dist/beacons/Beacon.js +170 -47
  21. package/dist/brand/GalaxyFilamentWordmark.d.ts +30 -0
  22. package/dist/brand/GalaxyFilamentWordmark.js +39 -0
  23. package/dist/brand/GalaxyLogomark.d.ts +26 -0
  24. package/dist/brand/GalaxyLogomark.js +41 -0
  25. package/dist/brand/GalaxyLogomarkAnimation.d.ts +36 -0
  26. package/dist/brand/GalaxyLogomarkAnimation.js +107 -0
  27. package/dist/brand/GalaxyWordmark.d.ts +30 -0
  28. package/dist/brand/GalaxyWordmark.js +63 -0
  29. package/dist/brand/assets/galaxy-logomark-animation.js +136678 -0
  30. package/dist/brand/brandMark.d.ts +26 -0
  31. package/dist/brand/brandMark.js +35 -0
  32. package/dist/buttons/Button.d.ts +148 -59
  33. package/dist/buttons/Button.js +437 -227
  34. package/dist/buttons/ButtonGroup.d.ts +38 -0
  35. package/dist/buttons/ButtonGroup.js +68 -0
  36. package/dist/buttons/CopyButton.d.ts +77 -0
  37. package/dist/buttons/CopyButton.js +65 -0
  38. package/dist/charts/AreaChart.d.ts +49 -0
  39. package/dist/charts/AreaChart.js +31 -0
  40. package/dist/charts/BarChart.d.ts +54 -67
  41. package/dist/charts/BarChart.js +136 -116
  42. package/dist/charts/ChartAxis.d.ts +35 -40
  43. package/dist/charts/ChartAxis.js +114 -90
  44. package/dist/charts/ChartCategoryTargets.d.ts +12 -26
  45. package/dist/charts/ChartCategoryTargets.js +32 -20
  46. package/dist/charts/ChartFrame.d.ts +69 -116
  47. package/dist/charts/ChartFrame.js +253 -119
  48. package/dist/charts/ChartGroupProvider.d.ts +30 -41
  49. package/dist/charts/ChartGroupProvider.js +20 -7
  50. package/dist/charts/ChartLegend.d.ts +27 -48
  51. package/dist/charts/ChartLegend.js +206 -125
  52. package/dist/charts/ChartMarkTargets.d.ts +12 -28
  53. package/dist/charts/ChartMarkTargets.js +33 -20
  54. package/dist/charts/ChartPrimitives.d.ts +50 -305
  55. package/dist/charts/ChartPrimitives.js +65 -413
  56. package/dist/charts/ChartTooltip.d.ts +20 -26
  57. package/dist/charts/ChartTooltip.js +77 -40
  58. package/dist/charts/Heatmap.d.ts +35 -0
  59. package/dist/charts/Heatmap.js +295 -0
  60. package/dist/charts/LineChart.d.ts +54 -47
  61. package/dist/charts/LineChart.js +159 -117
  62. package/dist/charts/PieChart.d.ts +32 -53
  63. package/dist/charts/PieChart.js +149 -135
  64. package/dist/charts/Sparkline.d.ts +107 -0
  65. package/dist/charts/Sparkline.js +244 -0
  66. package/dist/charts/StatChart.d.ts +37 -13
  67. package/dist/charts/StatChart.js +82 -35
  68. package/dist/charts/barChartGeometry.d.ts +138 -86
  69. package/dist/charts/barChartGeometry.js +122 -101
  70. package/dist/charts/barChartLegend.d.ts +14 -18
  71. package/dist/charts/barChartLegend.js +18 -13
  72. package/dist/charts/chartFormat.d.ts +12 -18
  73. package/dist/charts/chartFormat.js +20 -52
  74. package/dist/charts/chartPalette.d.ts +33 -0
  75. package/dist/charts/chartPalette.js +68 -0
  76. package/dist/charts/chartScales.d.ts +41 -108
  77. package/dist/charts/chartScales.js +62 -128
  78. package/dist/charts/constants.d.ts +96 -256
  79. package/dist/charts/constants.js +105 -275
  80. package/dist/charts/heatmapGeometry.d.ts +95 -0
  81. package/dist/charts/heatmapGeometry.js +155 -0
  82. package/dist/charts/lineChartGeometry.d.ts +108 -58
  83. package/dist/charts/lineChartGeometry.js +120 -78
  84. package/dist/charts/pieChartGeometry.d.ts +66 -40
  85. package/dist/charts/pieChartGeometry.js +68 -38
  86. package/dist/charts/types.d.ts +197 -466
  87. package/dist/charts/types.js +55 -144
  88. package/dist/charts/useCartesianChartLayout.d.ts +28 -59
  89. package/dist/charts/useCartesianChartLayout.js +47 -32
  90. package/dist/charts/useChartDimensions.d.ts +19 -40
  91. package/dist/charts/useChartDimensions.js +40 -56
  92. package/dist/charts/useChartFormatters.d.ts +6 -15
  93. package/dist/charts/useChartFormatters.js +4 -9
  94. package/dist/charts/useChartInteraction.d.ts +47 -116
  95. package/dist/charts/useChartInteraction.js +95 -71
  96. package/dist/charts/useChartTooltipPosition.d.ts +29 -39
  97. package/dist/charts/useChartTooltipPosition.js +14 -5
  98. package/dist/charts/useSeriesColorResolver.d.ts +11 -33
  99. package/dist/charts/useSeriesColorResolver.js +19 -12
  100. package/dist/chips/Chip.d.ts +155 -44
  101. package/dist/chips/Chip.js +329 -155
  102. package/dist/chips/ChipGroup.d.ts +53 -0
  103. package/dist/chips/ChipGroup.js +98 -0
  104. package/dist/drawer/Drawer.d.ts +81 -17
  105. package/dist/drawer/Drawer.js +370 -65
  106. package/dist/dropdown/Dropdown.d.ts +80 -63
  107. package/dist/dropdown/Dropdown.js +127 -129
  108. package/dist/editor/CodeEditor.d.ts +119 -40
  109. package/dist/editor/CodeEditor.js +490 -400
  110. package/dist/editor/CodeEditorReactWidget.d.ts +20 -17
  111. package/dist/editor/CodeEditorReactWidget.js +28 -21
  112. package/dist/feedback/Alert.d.ts +49 -0
  113. package/dist/feedback/Alert.js +172 -0
  114. package/dist/feedback/EmptyState.d.ts +39 -0
  115. package/dist/feedback/EmptyState.js +109 -0
  116. package/dist/feedback/ProgressBar.d.ts +125 -0
  117. package/dist/feedback/ProgressBar.js +183 -0
  118. package/dist/feedback/ProgressCircle.d.ts +99 -0
  119. package/dist/feedback/ProgressCircle.js +187 -0
  120. package/dist/feedback/Skeleton.d.ts +69 -0
  121. package/dist/feedback/Skeleton.js +130 -0
  122. package/dist/feedback/Spinner.d.ts +63 -0
  123. package/dist/feedback/Spinner.js +141 -0
  124. package/dist/fonts.css +70 -0
  125. package/dist/hooks/internal/useIsClient.d.ts +2 -0
  126. package/dist/hooks/internal/useIsClient.js +14 -0
  127. package/dist/hooks/useClipboard.d.ts +19 -0
  128. package/dist/hooks/useClipboard.js +45 -0
  129. package/dist/hooks/useControlledOpenState.d.ts +21 -0
  130. package/dist/hooks/useControlledOpenState.js +19 -0
  131. package/dist/hooks/useControlledState.d.ts +19 -0
  132. package/dist/hooks/useControlledState.js +22 -0
  133. package/dist/hooks/useDebouncedValue.d.ts +14 -0
  134. package/dist/hooks/useDebouncedValue.js +33 -0
  135. package/dist/hooks/useDisclosure.d.ts +26 -0
  136. package/dist/hooks/useDisclosure.js +36 -0
  137. package/dist/hooks/useDismiss.d.ts +23 -27
  138. package/dist/hooks/useDismiss.js +39 -27
  139. package/dist/hooks/useElementClientSize.d.ts +10 -10
  140. package/dist/hooks/useElementClientSize.js +8 -11
  141. package/dist/hooks/useElementWidth.d.ts +6 -13
  142. package/dist/hooks/useElementWidth.js +6 -14
  143. package/dist/hooks/useField.d.ts +47 -0
  144. package/dist/hooks/useField.js +40 -0
  145. package/dist/hooks/useHotkey.d.ts +77 -0
  146. package/dist/hooks/useHotkey.js +246 -0
  147. package/dist/hooks/useIsMac.d.ts +12 -0
  148. package/dist/hooks/useIsMac.js +27 -0
  149. package/dist/hooks/useIsomorphicLayoutEffect.d.ts +17 -0
  150. package/dist/hooks/useIsomorphicLayoutEffect.js +20 -0
  151. package/dist/hooks/useLocalStorage.d.ts +28 -0
  152. package/dist/hooks/useLocalStorage.js +145 -0
  153. package/dist/hooks/useMediaQuery.d.ts +11 -0
  154. package/dist/hooks/useMediaQuery.js +23 -0
  155. package/dist/hooks/usePrefersReducedMotion.d.ts +12 -0
  156. package/dist/hooks/usePrefersReducedMotion.js +25 -0
  157. package/dist/hooks/useResize.d.ts +42 -62
  158. package/dist/hooks/useResize.js +43 -31
  159. package/dist/icons/Icon.d.ts +64 -37
  160. package/dist/icons/Icon.js +96 -37
  161. package/dist/icons/internal/IconSlot.d.ts +10 -0
  162. package/dist/icons/internal/IconSlot.js +32 -0
  163. package/dist/inputs/CheckboxGroup.d.ts +115 -0
  164. package/dist/inputs/CheckboxGroup.js +183 -0
  165. package/dist/inputs/CheckboxInput.d.ts +98 -28
  166. package/dist/inputs/CheckboxInput.js +218 -88
  167. package/dist/inputs/ColorInput.d.ts +115 -29
  168. package/dist/inputs/ColorInput.js +748 -326
  169. package/dist/inputs/CopyInput.d.ts +49 -20
  170. package/dist/inputs/CopyInput.js +57 -49
  171. package/dist/inputs/CronInput.d.ts +94 -0
  172. package/dist/inputs/CronInput.js +618 -0
  173. package/dist/inputs/DateInput.d.ts +175 -28
  174. package/dist/inputs/DateInput.js +1109 -451
  175. package/dist/inputs/DurationInput.d.ts +101 -0
  176. package/dist/inputs/DurationInput.js +441 -0
  177. package/dist/inputs/Field.d.ts +75 -0
  178. package/dist/inputs/Field.js +247 -0
  179. package/dist/inputs/Fieldset.d.ts +53 -0
  180. package/dist/inputs/Fieldset.js +149 -0
  181. package/dist/inputs/FileInput.d.ts +110 -0
  182. package/dist/inputs/FileInput.js +476 -0
  183. package/dist/inputs/Input.d.ts +148 -187
  184. package/dist/inputs/Input.js +339 -259
  185. package/dist/inputs/KeyValueInput.d.ts +120 -0
  186. package/dist/inputs/KeyValueInput.js +383 -0
  187. package/dist/inputs/MultiSelectInput.d.ts +165 -54
  188. package/dist/inputs/MultiSelectInput.js +175 -559
  189. package/dist/inputs/NumberInput.d.ts +65 -9
  190. package/dist/inputs/NumberInput.js +197 -40
  191. package/dist/inputs/PasswordInput.d.ts +17 -12
  192. package/dist/inputs/PasswordInput.js +33 -33
  193. package/dist/inputs/PinInput.d.ts +117 -0
  194. package/dist/inputs/PinInput.js +364 -0
  195. package/dist/inputs/RadioGroup.d.ts +115 -0
  196. package/dist/inputs/RadioGroup.js +179 -0
  197. package/dist/inputs/RadioInput.d.ts +87 -24
  198. package/dist/inputs/RadioInput.js +182 -95
  199. package/dist/inputs/SearchInput.d.ts +66 -0
  200. package/dist/inputs/SearchInput.js +156 -0
  201. package/dist/inputs/SelectInput.d.ts +195 -55
  202. package/dist/inputs/SelectInput.js +1308 -446
  203. package/dist/inputs/SliderInput.d.ts +150 -30
  204. package/dist/inputs/SliderInput.js +441 -186
  205. package/dist/inputs/SwitchInput.d.ts +109 -0
  206. package/dist/inputs/SwitchInput.js +248 -0
  207. package/dist/inputs/TagInput.d.ts +117 -0
  208. package/dist/inputs/TagInput.js +408 -0
  209. package/dist/inputs/TextAreaInput.d.ts +146 -44
  210. package/dist/inputs/TextAreaInput.js +292 -198
  211. package/dist/inputs/TextInput.d.ts +4 -13
  212. package/dist/inputs/TextInput.js +13 -48
  213. package/dist/inputs/ToggleInput.d.ts +120 -22
  214. package/dist/inputs/ToggleInput.js +262 -116
  215. package/dist/inputs/internal/bareField.d.ts +18 -0
  216. package/dist/inputs/internal/bareField.js +38 -0
  217. package/dist/inputs/internal/devWarn.d.ts +7 -0
  218. package/dist/inputs/internal/devWarn.js +30 -0
  219. package/dist/inputs/internal/fieldFrame.d.ts +34 -0
  220. package/dist/inputs/internal/fieldFrame.js +64 -0
  221. package/dist/inputs/internal/fieldWiring.d.ts +50 -0
  222. package/dist/inputs/internal/fieldWiring.js +38 -0
  223. package/dist/inputs/internal/innerButton.d.ts +2 -0
  224. package/dist/inputs/internal/innerButton.js +24 -0
  225. package/dist/inputs/internal/ownField.d.ts +45 -0
  226. package/dist/inputs/internal/ownField.js +58 -0
  227. package/dist/inputs/internal/predicates.d.ts +9 -0
  228. package/dist/inputs/internal/predicates.js +11 -0
  229. package/dist/inputs/internal/useComboboxPopover.d.ts +46 -0
  230. package/dist/inputs/internal/useComboboxPopover.js +92 -0
  231. package/dist/json/JsonViewer.d.ts +62 -0
  232. package/dist/json/JsonViewer.js +483 -0
  233. package/dist/layout/Box.d.ts +87 -0
  234. package/dist/layout/Box.js +109 -0
  235. package/dist/layout/Divider.d.ts +25 -0
  236. package/dist/layout/Divider.js +70 -0
  237. package/dist/layout/Flex.d.ts +139 -0
  238. package/dist/layout/Flex.js +165 -0
  239. package/dist/layout/FlexItem.d.ts +72 -0
  240. package/dist/layout/FlexItem.js +84 -0
  241. package/dist/layout/Grid.d.ts +140 -0
  242. package/dist/layout/Grid.js +178 -0
  243. package/dist/layout/Portal.d.ts +29 -0
  244. package/dist/layout/Portal.js +27 -0
  245. package/dist/layout/ResizablePanels.d.ts +88 -0
  246. package/dist/layout/ResizablePanels.js +198 -0
  247. package/dist/layout/ResizeHandle.d.ts +48 -0
  248. package/dist/layout/ResizeHandle.js +143 -0
  249. package/dist/layout/ScrollArea.d.ts +30 -0
  250. package/dist/layout/ScrollArea.js +138 -0
  251. package/dist/links/Link.d.ts +101 -1
  252. package/dist/links/Link.js +166 -4
  253. package/dist/lists/BulletedList.d.ts +25 -7
  254. package/dist/lists/BulletedList.js +72 -27
  255. package/dist/lists/DescriptionList.d.ts +91 -0
  256. package/dist/lists/DescriptionList.js +147 -0
  257. package/dist/menu/ContextMenu.d.ts +64 -0
  258. package/dist/menu/ContextMenu.js +34 -0
  259. package/dist/menu/Menu.d.ts +280 -0
  260. package/dist/menu/Menu.js +1003 -0
  261. package/dist/modal/ConfirmDialog.d.ts +55 -0
  262. package/dist/modal/ConfirmDialog.js +151 -0
  263. package/dist/modal/Modal.d.ts +64 -14
  264. package/dist/modal/Modal.js +189 -48
  265. package/dist/navigation/Breadcrumbs.d.ts +65 -0
  266. package/dist/navigation/Breadcrumbs.js +243 -0
  267. package/dist/navigation/CommandPalette.d.ts +83 -0
  268. package/dist/navigation/CommandPalette.js +509 -0
  269. package/dist/navigation/Pagination.d.ts +87 -0
  270. package/dist/navigation/Pagination.js +300 -0
  271. package/dist/navigation/SidebarNav.d.ts +107 -0
  272. package/dist/navigation/SidebarNav.js +341 -0
  273. package/dist/navigation/Stepper.d.ts +52 -0
  274. package/dist/navigation/Stepper.js +207 -0
  275. package/dist/navigation/Tabs.d.ts +113 -0
  276. package/dist/navigation/Tabs.js +543 -0
  277. package/dist/navigation/Topbar.d.ts +20 -0
  278. package/dist/navigation/Topbar.js +62 -0
  279. package/dist/overlay/OverlayProvider.d.ts +28 -32
  280. package/dist/overlay/OverlayProvider.js +42 -93
  281. package/dist/overlay/useOverlay.d.ts +88 -12
  282. package/dist/overlay/useOverlay.js +220 -43
  283. package/dist/overlays/Popover.d.ts +114 -0
  284. package/dist/overlays/Popover.js +389 -0
  285. package/dist/shapes/Circle.d.ts +84 -8
  286. package/dist/shapes/Circle.js +122 -20
  287. package/dist/shapes/Square.d.ts +84 -8
  288. package/dist/shapes/Square.js +123 -20
  289. package/dist/styles/mixins.d.ts +35 -0
  290. package/dist/styles/mixins.js +60 -0
  291. package/dist/styles.css +1 -202
  292. package/dist/table/InfiniteSpreadsheet.d.ts +140 -10
  293. package/dist/table/InfiniteSpreadsheet.js +762 -225
  294. package/dist/table/InfiniteTable.d.ts +116 -14
  295. package/dist/table/InfiniteTable.js +287 -429
  296. package/dist/table/SpreadsheetCellEditor.d.ts +54 -6
  297. package/dist/table/SpreadsheetCellEditor.js +163 -84
  298. package/dist/table/TableCore.d.ts +252 -0
  299. package/dist/table/TableCore.js +1077 -0
  300. package/dist/table/VirtualizedInfiniteTable.d.ts +104 -14
  301. package/dist/table/VirtualizedInfiniteTable.js +280 -219
  302. package/dist/table/types.d.ts +66 -244
  303. package/dist/table/types.js +0 -51
  304. package/dist/table/useInfiniteScrollSentinel.d.ts +25 -21
  305. package/dist/table/useInfiniteScrollSentinel.js +38 -30
  306. package/dist/table/useSpreadsheetCellNavigation.d.ts +44 -0
  307. package/dist/table/useSpreadsheetCellNavigation.js +141 -0
  308. package/dist/table/useTableColumnLayout.d.ts +90 -25
  309. package/dist/table/useTableColumnLayout.js +255 -50
  310. package/dist/table/useTableKeyboardNavigation.d.ts +32 -21
  311. package/dist/table/useTableKeyboardNavigation.js +95 -71
  312. package/dist/table/useTableRowSelection.d.ts +24 -25
  313. package/dist/table/useTableRowSelection.js +57 -84
  314. package/dist/table/useTableVirtualizer.d.ts +20 -0
  315. package/dist/table/useTableVirtualizer.js +48 -0
  316. package/dist/text/Bold.d.ts +5 -6
  317. package/dist/text/Bold.js +16 -15
  318. package/dist/text/Code.d.ts +5 -6
  319. package/dist/text/Code.js +16 -25
  320. package/dist/text/CodeBlock.d.ts +77 -0
  321. package/dist/text/CodeBlock.js +373 -0
  322. package/dist/text/EditableText.d.ts +55 -15
  323. package/dist/text/EditableText.js +153 -135
  324. package/dist/text/Ellipsis.d.ts +34 -8
  325. package/dist/text/Ellipsis.js +55 -23
  326. package/dist/text/Kbd.d.ts +72 -0
  327. package/dist/text/Kbd.js +284 -0
  328. package/dist/text/MarkdownText.d.ts +27 -10
  329. package/dist/text/MarkdownText.js +317 -300
  330. package/dist/text/RequiredMarker.d.ts +17 -5
  331. package/dist/text/RequiredMarker.js +34 -36
  332. package/dist/text/Selectable.d.ts +5 -6
  333. package/dist/text/Selectable.js +16 -13
  334. package/dist/text/Span.d.ts +82 -0
  335. package/dist/text/Span.js +115 -0
  336. package/dist/text/Text.d.ts +128 -41
  337. package/dist/text/Text.js +209 -76
  338. package/dist/theme/GalaxyProvider.d.ts +75 -0
  339. package/dist/theme/GalaxyProvider.js +223 -0
  340. package/dist/theme/ThemeSwitcher.d.ts +52 -0
  341. package/dist/theme/ThemeSwitcher.js +94 -0
  342. package/dist/theme/enums.d.ts +118 -0
  343. package/dist/theme/enums.js +144 -0
  344. package/dist/theme/tokens/dark.d.ts +2 -0
  345. package/dist/theme/tokens/dark.js +275 -0
  346. package/dist/theme/tokens/generate.d.ts +15 -0
  347. package/dist/theme/tokens/generate.js +47 -0
  348. package/dist/theme/tokens/light.d.ts +2 -0
  349. package/dist/theme/tokens/light.js +274 -0
  350. package/dist/theme/tokens/palette.d.ts +14 -0
  351. package/dist/theme/tokens/palette.js +153 -0
  352. package/dist/theme/tokens/scales.d.ts +26 -0
  353. package/dist/theme/tokens/scales.js +154 -0
  354. package/dist/theme/tokens/t.d.ts +3 -0
  355. package/dist/theme/tokens/t.js +25 -0
  356. package/dist/theme/tokens/types.d.ts +189 -0
  357. package/dist/theme/tokens/types.js +0 -0
  358. package/dist/theme/useGalaxyTheme.d.ts +46 -0
  359. package/dist/theme/useGalaxyTheme.js +36 -0
  360. package/dist/theme/useInverseScope.d.ts +18 -0
  361. package/dist/theme/useInverseScope.js +33 -0
  362. package/dist/three/GalaxyLogomark3D.d.ts +46 -0
  363. package/dist/three/GalaxyLogomark3D.js +134 -0
  364. package/dist/three/assets/galaxy-logomark.js +4 -0
  365. package/dist/three/galaxyLogomark3DScene.d.ts +27 -0
  366. package/dist/three/galaxyLogomark3DScene.js +165 -0
  367. package/dist/timeline/Timeline.d.ts +99 -0
  368. package/dist/timeline/Timeline.js +269 -0
  369. package/dist/toast/Toast.d.ts +43 -19
  370. package/dist/toast/Toast.js +130 -89
  371. package/dist/toast/ToastProvider.d.ts +23 -23
  372. package/dist/toast/ToastProvider.js +298 -101
  373. package/dist/toast/ToastViewport.d.ts +12 -0
  374. package/dist/toast/ToastViewport.js +210 -0
  375. package/dist/toast/useToast.d.ts +139 -5
  376. package/dist/toast/useToast.js +15 -13
  377. package/dist/tokens.css +654 -0
  378. package/dist/tooltip/Tooltip.d.ts +64 -44
  379. package/dist/tooltip/Tooltip.js +280 -73
  380. package/dist/tooltip/internal/LazyTooltip.d.ts +7 -0
  381. package/dist/tooltip/internal/LazyTooltip.js +53 -0
  382. package/dist/transform/Fade.d.ts +33 -11
  383. package/dist/transform/Fade.js +71 -19
  384. package/dist/transform/Flasher.d.ts +25 -0
  385. package/dist/transform/Flasher.js +39 -0
  386. package/dist/transform/Rotate.d.ts +24 -12
  387. package/dist/transform/Rotate.js +36 -22
  388. package/dist/transform/ScaleFade.d.ts +36 -11
  389. package/dist/transform/ScaleFade.js +86 -28
  390. package/dist/transform/internal/CollapseMotion.d.ts +10 -0
  391. package/dist/transform/internal/CollapseMotion.js +65 -0
  392. package/dist/tree/Tree.d.ts +85 -0
  393. package/dist/tree/Tree.js +387 -0
  394. package/dist/tree/treeRow.d.ts +39 -0
  395. package/dist/tree/treeRow.js +75 -0
  396. package/dist/utils/colors.d.ts +46 -13
  397. package/dist/utils/colors.js +92 -34
  398. package/dist/utils/css.d.ts +23 -0
  399. package/dist/utils/css.js +30 -0
  400. package/dist/utils/format.d.ts +58 -0
  401. package/dist/utils/format.js +220 -0
  402. package/dist/vite/index.d.ts +16 -0
  403. package/dist/vite/index.js +52 -0
  404. package/dist/widget/Widget.d.ts +164 -48
  405. package/dist/widget/Widget.js +335 -96
  406. package/dist/widget/WidgetGroup.d.ts +36 -0
  407. package/dist/widget/WidgetGroup.js +103 -0
  408. package/package.json +851 -157
  409. package/dist/accordion/Accordion.d.ts +0 -54
  410. package/dist/accordion/Accordion.js +0 -183
  411. package/dist/assets/components/GalaxyFilamentWordmarkDark.d.ts +0 -3
  412. package/dist/assets/components/GalaxyFilamentWordmarkDark.js +0 -14
  413. package/dist/assets/components/GalaxyFilamentWordmarkLight.d.ts +0 -3
  414. package/dist/assets/components/GalaxyFilamentWordmarkLight.js +0 -14
  415. package/dist/assets/components/GalaxyLogomarkDark.d.ts +0 -3
  416. package/dist/assets/components/GalaxyLogomarkDark.js +0 -11
  417. package/dist/assets/components/GalaxyLogomarkLight.d.ts +0 -3
  418. package/dist/assets/components/GalaxyLogomarkLight.js +0 -17
  419. package/dist/assets/components/GalaxyWordmarkDark.d.ts +0 -3
  420. package/dist/assets/components/GalaxyWordmarkDark.js +0 -15
  421. package/dist/assets/components/GalaxyWordmarkLight.d.ts +0 -3
  422. package/dist/assets/components/GalaxyWordmarkLight.js +0 -28
  423. package/dist/assets/models/galaxy-animation.js +0 -136666
  424. package/dist/assets/models/galaxy-logomark.js +0 -4
  425. package/dist/avatar/AvatarShimmer.d.ts +0 -30
  426. package/dist/avatar/AvatarShimmer.js +0 -22
  427. package/dist/backgrounds/CellGridBackground.d.ts +0 -24
  428. package/dist/backgrounds/CellGridBackground.js +0 -44
  429. package/dist/backgrounds/CrossGridBackground.d.ts +0 -26
  430. package/dist/backgrounds/CrossGridBackground.js +0 -49
  431. package/dist/backgrounds/DotGridBackground.d.ts +0 -24
  432. package/dist/backgrounds/DotGridBackground.js +0 -47
  433. package/dist/badge/Badge.d.ts +0 -42
  434. package/dist/badge/Badge.js +0 -99
  435. package/dist/charts/ChartEmptyState.d.ts +0 -17
  436. package/dist/charts/ChartEmptyState.js +0 -29
  437. package/dist/charts/ProgressBar.d.ts +0 -29
  438. package/dist/charts/ProgressBar.js +0 -65
  439. package/dist/charts/chartTheme.d.ts +0 -18
  440. package/dist/charts/chartTheme.js +0 -26
  441. package/dist/containers/FlexItem.d.ts +0 -50
  442. package/dist/containers/FlexItem.js +0 -91
  443. package/dist/containers/FlexWrapper.d.ts +0 -96
  444. package/dist/containers/FlexWrapper.js +0 -143
  445. package/dist/containers/GridWrapper.d.ts +0 -79
  446. package/dist/containers/GridWrapper.js +0 -125
  447. package/dist/containers/Spacing.d.ts +0 -23
  448. package/dist/containers/Spacing.js +0 -59
  449. package/dist/containers/Wrapper.d.ts +0 -26
  450. package/dist/containers/Wrapper.js +0 -54
  451. package/dist/dividers/HorizontalDivider.d.ts +0 -7
  452. package/dist/dividers/HorizontalDivider.js +0 -39
  453. package/dist/dividers/VerticalDivider.d.ts +0 -6
  454. package/dist/dividers/VerticalDivider.js +0 -21
  455. package/dist/icons/GalaxyFilamentWordmark.d.ts +0 -11
  456. package/dist/icons/GalaxyFilamentWordmark.js +0 -25
  457. package/dist/icons/GalaxyLogomark.d.ts +0 -13
  458. package/dist/icons/GalaxyLogomark.js +0 -27
  459. package/dist/icons/GalaxyLogomark3D.d.ts +0 -56
  460. package/dist/icons/GalaxyLogomark3D.js +0 -319
  461. package/dist/icons/GalaxyLogomarkAnimation.d.ts +0 -18
  462. package/dist/icons/GalaxyLogomarkAnimation.js +0 -48
  463. package/dist/icons/GalaxyWordmark.d.ts +0 -11
  464. package/dist/icons/GalaxyWordmark.js +0 -25
  465. package/dist/inputs/MultiTextInput.d.ts +0 -32
  466. package/dist/inputs/MultiTextInput.js +0 -180
  467. package/dist/inputs/SwitcherInput.d.ts +0 -30
  468. package/dist/inputs/SwitcherInput.js +0 -81
  469. package/dist/inputs/hooks.d.ts +0 -10
  470. package/dist/inputs/hooks.js +0 -22
  471. package/dist/overlay/constants.d.ts +0 -28
  472. package/dist/overlay/constants.js +0 -37
  473. package/dist/resizable/HorizontalResizeHandle.d.ts +0 -17
  474. package/dist/resizable/HorizontalResizeHandle.js +0 -38
  475. package/dist/resizable/VerticalResizeHandle.d.ts +0 -18
  476. package/dist/resizable/VerticalResizeHandle.js +0 -39
  477. package/dist/table/SpreadsheetCell.d.ts +0 -21
  478. package/dist/table/SpreadsheetCell.js +0 -71
  479. package/dist/table/SpreadsheetHeaderCell.d.ts +0 -23
  480. package/dist/table/SpreadsheetHeaderCell.js +0 -91
  481. package/dist/table/SpreadsheetMenuItem.d.ts +0 -14
  482. package/dist/table/SpreadsheetMenuItem.js +0 -33
  483. package/dist/table/SpreadsheetPrimitives.d.ts +0 -172
  484. package/dist/table/SpreadsheetPrimitives.js +0 -105
  485. package/dist/table/SpreadsheetRow.d.ts +0 -33
  486. package/dist/table/SpreadsheetRow.js +0 -73
  487. package/dist/table/SpreadsheetRowActionCell.d.ts +0 -14
  488. package/dist/table/SpreadsheetRowActionCell.js +0 -51
  489. package/dist/table/TableExpandCell.d.ts +0 -11
  490. package/dist/table/TableExpandCell.js +0 -24
  491. package/dist/table/TableExpandedRow.d.ts +0 -16
  492. package/dist/table/TableExpandedRow.js +0 -77
  493. package/dist/table/TableHeaderCellContent.d.ts +0 -30
  494. package/dist/table/TableHeaderCellContent.js +0 -48
  495. package/dist/table/TablePrimitives.d.ts +0 -313
  496. package/dist/table/TablePrimitives.js +0 -302
  497. package/dist/table/TableSelectCell.d.ts +0 -18
  498. package/dist/table/TableSelectCell.js +0 -27
  499. package/dist/table/TableStatusRow.d.ts +0 -18
  500. package/dist/table/TableStatusRow.js +0 -50
  501. package/dist/table/useSpreadsheetEditing.d.ts +0 -13
  502. package/dist/table/useSpreadsheetEditing.js +0 -41
  503. package/dist/table/useTableColumnResize.d.ts +0 -38
  504. package/dist/table/useTableColumnResize.js +0 -155
  505. package/dist/table/useTableRowExpansion.d.ts +0 -24
  506. package/dist/table/useTableRowExpansion.js +0 -62
  507. package/dist/table/utils.d.ts +0 -50
  508. package/dist/table/utils.js +0 -78
  509. package/dist/text/HotKeys.d.ts +0 -30
  510. package/dist/text/HotKeys.js +0 -74
  511. package/dist/text/Paragraph.d.ts +0 -33
  512. package/dist/text/Paragraph.js +0 -83
  513. package/dist/text/TextShimmer.d.ts +0 -14
  514. package/dist/text/TextShimmer.js +0 -34
  515. package/dist/theme/GalaxyTheme.d.ts +0 -67
  516. package/dist/theme/GalaxyTheme.js +0 -119
  517. package/dist/theme/constants.d.ts +0 -8
  518. package/dist/theme/constants.js +0 -38
  519. package/dist/theme/index.d.ts +0 -6
  520. package/dist/theme/index.js +0 -7
  521. package/dist/theme/types.d.ts +0 -195
  522. package/dist/theme/types.js +0 -10
  523. package/dist/theme/typography.d.ts +0 -2
  524. package/dist/theme/typography.js +0 -73
  525. package/dist/theme/variants/dark.d.ts +0 -2
  526. package/dist/theme/variants/dark.js +0 -125
  527. package/dist/theme/variants/light.d.ts +0 -2
  528. package/dist/theme/variants/light.js +0 -125
  529. package/dist/toast/ToastContainer.d.ts +0 -10
  530. package/dist/toast/ToastContainer.js +0 -31
  531. package/dist/toast/ToastWrapper.d.ts +0 -6
  532. package/dist/toast/ToastWrapper.js +0 -27
  533. package/dist/transform/Flash.d.ts +0 -7
  534. package/dist/transform/Flash.js +0 -18
  535. package/dist/transform/Spin.d.ts +0 -14
  536. package/dist/transform/Spin.js +0 -25
  537. package/dist/utils/linaria.d.ts +0 -1
  538. package/dist/utils/linaria.js +0 -8
@@ -1,219 +1,313 @@
1
- import { withTheme } from "../theme/GalaxyTheme.js";
2
- import { getCssSizeValue } from "../utils/linaria.js";
3
- import Text, { TextSize, TextVariant } from "../text/Text.js";
4
- import FlexWrapper, { FlexDirection } from "../containers/FlexWrapper.js";
5
- import TextShimmer from "../text/TextShimmer.js";
6
- import { InputLabel, InputSize, InputVariant, getInputBorderColor, getInputFontSize, getInputLineHeight, getInputPadding, getInputPaddingValue, getInputSurfaceColor } from "./Input.js";
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
- * Row count drives the height, so the box is measured rather than stepped:
14
- * `lines` line-boxes plus the inset above and below. Shared by the field and by
15
- * the loading placeholder that has to match it exactly.
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
- function getTextAreaMinHeight(theme, size, lines, height, noPadding) {
18
- if (height) return "auto";
19
- const lineHeight = Number(getInputLineHeight(theme, size).replace("px", ""));
20
- if (noPadding) return `${lineHeight * lines}px`;
21
- return `${lineHeight * lines + 2 * getInputPaddingValue(size)}px`;
22
- }
23
- var _exp = () => ({ $lines, $size, theme, $height, $noPadding }) => getTextAreaMinHeight(theme, $size, $lines, $height, $noPadding);
24
- var _exp2 = () => ({ $fillWidth, $width }) => {
25
- if ($fillWidth) return "100%";
26
- if ($width) return getCssSizeValue($width, "0");
27
- return "auto";
28
- };
29
- var _exp3 = () => ({ $height, $fillHeight }) => {
30
- if ($fillHeight) return "100%";
31
- if ($height) return getCssSizeValue($height);
32
- return "auto";
33
- };
34
- var _exp4 = () => ({ $fillHeight }) => $fillHeight ? "1" : "none";
35
- var _exp5 = () => ({ theme, $variant }) => getInputSurfaceColor(theme, $variant);
36
- var _exp6 = () => ({ theme, $variant, $error, $noBorder }) => {
37
- if ($noBorder) return "transparent";
38
- if ($error) return theme.color.border.error;
39
- return getInputBorderColor(theme, $variant);
40
- };
41
- var _exp7 = () => ({ theme }) => theme.color.text.primary;
42
- var _exp8 = () => ({ theme, $size }) => getInputFontSize(theme, $size);
43
- var _exp9 = () => ({ theme, $size }) => getInputLineHeight(theme, $size);
44
- var _exp0 = () => ({ theme }) => theme.font.sans.weight.regular;
45
- var _exp1 = () => ({ theme }) => theme.font.sans.family;
46
- var _exp10 = () => ({ $size, $noPadding }) => $noPadding ? "0" : getInputPadding($size);
47
- var _exp11 = () => ({ theme, $variant }) => getInputBorderColor(theme, $variant);
48
- var _exp12 = () => ({ theme }) => theme.color.border.selected;
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
- var _exp17 = () => ({ $lines, $size, theme, $height, $noPadding }) => getTextAreaMinHeight(theme, $size, $lines, $height, $noPadding);
86
- var _exp18 = () => ({ $fillWidth, $width }) => {
87
- if ($fillWidth) return "100%";
88
- if ($width) return getCssSizeValue($width, "0");
89
- return "auto";
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
- var _exp19 = () => ({ $height, $fillHeight }) => {
92
- if ($fillHeight) return "100%";
93
- if ($height) return getCssSizeValue($height);
94
- return "auto";
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
- var _exp20 = () => ({ $fillHeight }) => $fillHeight ? "1" : "none";
97
- var _exp21 = () => ({ theme, $variant }) => getInputSurfaceColor(theme, $variant);
98
- var _exp22 = () => ({ theme, $variant, $noBorder }) => {
99
- if ($noBorder) return "transparent";
100
- return getInputBorderColor(theme, $variant);
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
- var _exp23 = () => ({ $size, $noPadding }) => $noPadding ? "0" : getInputPadding($size);
103
- var LoadingContainer = withTheme(/*#__PURE__*/ styled("div")({
104
- name: "LoadingContainer",
105
- class: "l48iv0n",
106
- propsAsIs: false,
107
- vars: {
108
- "l48iv0n-0": [_exp17()],
109
- "l48iv0n-1": [_exp18()],
110
- "l48iv0n-2": [_exp19()],
111
- "l48iv0n-3": [_exp20()],
112
- "l48iv0n-4": [_exp21()],
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
- * A multi-line text field. Not resizable by the user — size it with `lines`,
125
- * `height`, or `fillHeight`.
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 TextAreaInput = forwardRef(({ variant = InputVariant.PRIMARY, size = InputSize.MEDIUM, lines = 3, value, min, max, placeholder, label, labelTooltip, error, required, disabled, autoFocus, onChange, onKeyDown, onBlur, onFocus, width, height, fillWidth, fillHeight, noBorder, noPadding, isLoading }, ref) => {
131
- const [state, setState] = useState(DEFAULT_STATE);
132
- const handleFocus = (e) => {
133
- setState({
134
- ...state,
135
- error: void 0
136
- });
137
- onFocus?.(e);
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 handleBlur = (e) => {
140
- if (value?.length && min && value.length < min) setState({
141
- ...state,
142
- error: `Must be at least ${min} characters`
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
- if (value?.length && max && value.length > max) setState({
145
- ...state,
146
- error: `Must be less than ${max} characters`
230
+ observer?.observe(root);
231
+ document.fonts?.ready.then(() => {
232
+ if (isActive) measureRef.current();
147
233
  });
148
- onBlur?.(e);
149
- };
150
- const handleChange = (e) => {
151
- onChange(e.target.value);
152
- };
153
- return /* @__PURE__ */ jsx(TextAreaWrapper, {
154
- $fillHeight: fillHeight,
155
- $fillWidth: fillWidth,
156
- children: /* @__PURE__ */ jsxs(FlexWrapper, {
157
- direction: FlexDirection.COLUMN,
158
- gap: 4,
159
- fillWidth,
160
- fillHeight,
161
- children: [
162
- label && /* @__PURE__ */ jsx(InputLabel, {
163
- label,
164
- labelTooltip,
165
- isRequired: required
166
- }),
167
- isLoading ? /* @__PURE__ */ jsxs(LoadingContainer, {
168
- $variant: variant,
169
- $size: size,
170
- $lines: lines,
171
- $width: width,
172
- $height: height,
173
- $fillWidth: fillWidth,
174
- $fillHeight: fillHeight,
175
- $noBorder: noBorder,
176
- $noPadding: noPadding,
177
- children: [/* @__PURE__ */ jsx(TextShimmer, {
178
- height: TEXTAREA_SIZE_TO_SHIMMER_HEIGHT_MAP[size],
179
- width: "100%"
180
- }), /* @__PURE__ */ jsx(TextShimmer, {
181
- height: TEXTAREA_SIZE_TO_SHIMMER_HEIGHT_MAP[size],
182
- width: "80%"
183
- })]
184
- }) : /* @__PURE__ */ jsx(StyledTextArea, {
185
- ref,
186
- placeholder,
187
- value: value ?? "",
188
- required,
189
- disabled,
190
- onChange: handleChange,
191
- autoComplete: "off",
192
- autoCorrect: "off",
193
- autoFocus,
194
- onFocus: handleFocus,
195
- onBlur: handleBlur,
196
- onKeyDown,
197
- $variant: variant,
198
- $size: size,
199
- $width: width,
200
- $height: height,
201
- $fillWidth: fillWidth,
202
- $fillHeight: fillHeight,
203
- $error: !!(state.error || error),
204
- $lines: lines,
205
- $noBorder: noBorder,
206
- $noPadding: noPadding
207
- }),
208
- (state.error || error) && /* @__PURE__ */ jsx(Text, {
209
- variant: TextVariant.ERROR,
210
- size: TextSize.BODY_SM,
211
- children: state.error || error
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
- * Every `InputProps` field except `type` and `parse`, which are fixed to text.
4
- * `onFocus` is omitted because the field owns focus to clear its length error,
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;
@@ -1,59 +1,24 @@
1
1
  import Input from "./Input.js";
2
- import { forwardRef, useState } from "react";
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
- * A single-line text field. The default input.
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
- * `min`/`max` bound the *character count*, not a numeric range — the field
10
- * validates length on blur and shows its own error. A `error` you pass wins.
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
- var TextInput = forwardRef(({ variant, size, value, min, max, placeholder, label, labelTooltip, leading, trailing, error, isError, isRequired, isDisabled, autoFocus, onChange, onKeyDown, onBlur, fillWidth, width, isMonospace }, ref) => {
13
- const [state, setState] = useState(DEFAULT_STATE);
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
- parse: String,
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";