@galaxy-io/dls 1.6.1 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (540) 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 +160 -124
  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 +33 -20
  46. package/dist/charts/ChartFrame.d.ts +71 -116
  47. package/dist/charts/ChartFrame.js +306 -97
  48. package/dist/charts/ChartGroupProvider.d.ts +30 -41
  49. package/dist/charts/ChartGroupProvider.js +20 -7
  50. package/dist/charts/ChartLegend.d.ts +37 -48
  51. package/dist/charts/ChartLegend.js +243 -125
  52. package/dist/charts/ChartMarkTargets.d.ts +12 -28
  53. package/dist/charts/ChartMarkTargets.js +34 -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 +307 -0
  60. package/dist/charts/LineChart.d.ts +54 -47
  61. package/dist/charts/LineChart.js +174 -121
  62. package/dist/charts/PieChart.d.ts +32 -53
  63. package/dist/charts/PieChart.js +159 -136
  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/chartSelection.d.ts +15 -0
  79. package/dist/charts/chartSelection.js +22 -0
  80. package/dist/charts/constants.d.ts +100 -256
  81. package/dist/charts/constants.js +109 -275
  82. package/dist/charts/heatmapGeometry.d.ts +95 -0
  83. package/dist/charts/heatmapGeometry.js +155 -0
  84. package/dist/charts/lineChartGeometry.d.ts +108 -58
  85. package/dist/charts/lineChartGeometry.js +120 -78
  86. package/dist/charts/pieChartGeometry.d.ts +66 -40
  87. package/dist/charts/pieChartGeometry.js +68 -38
  88. package/dist/charts/types.d.ts +206 -466
  89. package/dist/charts/types.js +55 -144
  90. package/dist/charts/useCartesianChartLayout.d.ts +28 -59
  91. package/dist/charts/useCartesianChartLayout.js +47 -32
  92. package/dist/charts/useChartDimensions.d.ts +19 -40
  93. package/dist/charts/useChartDimensions.js +40 -56
  94. package/dist/charts/useChartFormatters.d.ts +6 -15
  95. package/dist/charts/useChartFormatters.js +4 -9
  96. package/dist/charts/useChartInteraction.d.ts +69 -116
  97. package/dist/charts/useChartInteraction.js +148 -78
  98. package/dist/charts/useChartTooltipPosition.d.ts +29 -39
  99. package/dist/charts/useChartTooltipPosition.js +14 -5
  100. package/dist/charts/useSeriesColorResolver.d.ts +11 -33
  101. package/dist/charts/useSeriesColorResolver.js +19 -12
  102. package/dist/chips/Chip.d.ts +155 -44
  103. package/dist/chips/Chip.js +329 -155
  104. package/dist/chips/ChipGroup.d.ts +53 -0
  105. package/dist/chips/ChipGroup.js +98 -0
  106. package/dist/drawer/Drawer.d.ts +83 -17
  107. package/dist/drawer/Drawer.js +399 -65
  108. package/dist/dropdown/Dropdown.d.ts +80 -63
  109. package/dist/dropdown/Dropdown.js +127 -129
  110. package/dist/editor/CodeEditor.d.ts +119 -40
  111. package/dist/editor/CodeEditor.js +490 -400
  112. package/dist/editor/CodeEditorReactWidget.d.ts +20 -17
  113. package/dist/editor/CodeEditorReactWidget.js +28 -21
  114. package/dist/feedback/Alert.d.ts +49 -0
  115. package/dist/feedback/Alert.js +172 -0
  116. package/dist/feedback/EmptyState.d.ts +39 -0
  117. package/dist/feedback/EmptyState.js +109 -0
  118. package/dist/feedback/ProgressBar.d.ts +125 -0
  119. package/dist/feedback/ProgressBar.js +183 -0
  120. package/dist/feedback/ProgressCircle.d.ts +99 -0
  121. package/dist/feedback/ProgressCircle.js +187 -0
  122. package/dist/feedback/Skeleton.d.ts +69 -0
  123. package/dist/feedback/Skeleton.js +130 -0
  124. package/dist/feedback/Spinner.d.ts +63 -0
  125. package/dist/feedback/Spinner.js +141 -0
  126. package/dist/fonts.css +70 -0
  127. package/dist/hooks/internal/useIsClient.d.ts +2 -0
  128. package/dist/hooks/internal/useIsClient.js +14 -0
  129. package/dist/hooks/useClipboard.d.ts +19 -0
  130. package/dist/hooks/useClipboard.js +45 -0
  131. package/dist/hooks/useControlledOpenState.d.ts +21 -0
  132. package/dist/hooks/useControlledOpenState.js +19 -0
  133. package/dist/hooks/useControlledState.d.ts +19 -0
  134. package/dist/hooks/useControlledState.js +22 -0
  135. package/dist/hooks/useDebouncedValue.d.ts +14 -0
  136. package/dist/hooks/useDebouncedValue.js +33 -0
  137. package/dist/hooks/useDisclosure.d.ts +26 -0
  138. package/dist/hooks/useDisclosure.js +36 -0
  139. package/dist/hooks/useDismiss.d.ts +23 -27
  140. package/dist/hooks/useDismiss.js +39 -27
  141. package/dist/hooks/useElementClientSize.d.ts +10 -10
  142. package/dist/hooks/useElementClientSize.js +8 -11
  143. package/dist/hooks/useElementWidth.d.ts +6 -13
  144. package/dist/hooks/useElementWidth.js +6 -14
  145. package/dist/hooks/useField.d.ts +47 -0
  146. package/dist/hooks/useField.js +40 -0
  147. package/dist/hooks/useHotkey.d.ts +77 -0
  148. package/dist/hooks/useHotkey.js +246 -0
  149. package/dist/hooks/useIsMac.d.ts +12 -0
  150. package/dist/hooks/useIsMac.js +27 -0
  151. package/dist/hooks/useIsomorphicLayoutEffect.d.ts +17 -0
  152. package/dist/hooks/useIsomorphicLayoutEffect.js +20 -0
  153. package/dist/hooks/useLocalStorage.d.ts +28 -0
  154. package/dist/hooks/useLocalStorage.js +145 -0
  155. package/dist/hooks/useMediaQuery.d.ts +11 -0
  156. package/dist/hooks/useMediaQuery.js +23 -0
  157. package/dist/hooks/usePrefersReducedMotion.d.ts +12 -0
  158. package/dist/hooks/usePrefersReducedMotion.js +25 -0
  159. package/dist/hooks/useResize.d.ts +42 -62
  160. package/dist/hooks/useResize.js +43 -31
  161. package/dist/icons/Icon.d.ts +64 -37
  162. package/dist/icons/Icon.js +96 -37
  163. package/dist/icons/internal/IconSlot.d.ts +10 -0
  164. package/dist/icons/internal/IconSlot.js +32 -0
  165. package/dist/inputs/CheckboxGroup.d.ts +115 -0
  166. package/dist/inputs/CheckboxGroup.js +183 -0
  167. package/dist/inputs/CheckboxInput.d.ts +98 -28
  168. package/dist/inputs/CheckboxInput.js +218 -88
  169. package/dist/inputs/ColorInput.d.ts +115 -29
  170. package/dist/inputs/ColorInput.js +748 -326
  171. package/dist/inputs/CopyInput.d.ts +49 -20
  172. package/dist/inputs/CopyInput.js +57 -49
  173. package/dist/inputs/CronInput.d.ts +94 -0
  174. package/dist/inputs/CronInput.js +618 -0
  175. package/dist/inputs/DateInput.d.ts +175 -28
  176. package/dist/inputs/DateInput.js +1109 -451
  177. package/dist/inputs/DurationInput.d.ts +101 -0
  178. package/dist/inputs/DurationInput.js +441 -0
  179. package/dist/inputs/Field.d.ts +75 -0
  180. package/dist/inputs/Field.js +247 -0
  181. package/dist/inputs/Fieldset.d.ts +53 -0
  182. package/dist/inputs/Fieldset.js +149 -0
  183. package/dist/inputs/FileInput.d.ts +110 -0
  184. package/dist/inputs/FileInput.js +476 -0
  185. package/dist/inputs/Input.d.ts +148 -187
  186. package/dist/inputs/Input.js +339 -259
  187. package/dist/inputs/KeyValueInput.d.ts +120 -0
  188. package/dist/inputs/KeyValueInput.js +383 -0
  189. package/dist/inputs/MultiSelectInput.d.ts +165 -54
  190. package/dist/inputs/MultiSelectInput.js +175 -559
  191. package/dist/inputs/NumberInput.d.ts +65 -9
  192. package/dist/inputs/NumberInput.js +197 -40
  193. package/dist/inputs/PasswordInput.d.ts +17 -12
  194. package/dist/inputs/PasswordInput.js +33 -33
  195. package/dist/inputs/PinInput.d.ts +117 -0
  196. package/dist/inputs/PinInput.js +364 -0
  197. package/dist/inputs/RadioGroup.d.ts +115 -0
  198. package/dist/inputs/RadioGroup.js +179 -0
  199. package/dist/inputs/RadioInput.d.ts +87 -24
  200. package/dist/inputs/RadioInput.js +182 -95
  201. package/dist/inputs/SearchInput.d.ts +66 -0
  202. package/dist/inputs/SearchInput.js +156 -0
  203. package/dist/inputs/SelectInput.d.ts +195 -55
  204. package/dist/inputs/SelectInput.js +1308 -446
  205. package/dist/inputs/SliderInput.d.ts +150 -30
  206. package/dist/inputs/SliderInput.js +441 -186
  207. package/dist/inputs/SwitchInput.d.ts +109 -0
  208. package/dist/inputs/SwitchInput.js +248 -0
  209. package/dist/inputs/TagInput.d.ts +117 -0
  210. package/dist/inputs/TagInput.js +408 -0
  211. package/dist/inputs/TextAreaInput.d.ts +146 -44
  212. package/dist/inputs/TextAreaInput.js +298 -198
  213. package/dist/inputs/TextInput.d.ts +4 -13
  214. package/dist/inputs/TextInput.js +13 -48
  215. package/dist/inputs/ToggleInput.d.ts +120 -22
  216. package/dist/inputs/ToggleInput.js +262 -116
  217. package/dist/inputs/internal/bareField.d.ts +18 -0
  218. package/dist/inputs/internal/bareField.js +38 -0
  219. package/dist/inputs/internal/devWarn.d.ts +7 -0
  220. package/dist/inputs/internal/devWarn.js +30 -0
  221. package/dist/inputs/internal/fieldFrame.d.ts +34 -0
  222. package/dist/inputs/internal/fieldFrame.js +64 -0
  223. package/dist/inputs/internal/fieldWiring.d.ts +50 -0
  224. package/dist/inputs/internal/fieldWiring.js +38 -0
  225. package/dist/inputs/internal/innerButton.d.ts +2 -0
  226. package/dist/inputs/internal/innerButton.js +24 -0
  227. package/dist/inputs/internal/ownField.d.ts +45 -0
  228. package/dist/inputs/internal/ownField.js +58 -0
  229. package/dist/inputs/internal/predicates.d.ts +9 -0
  230. package/dist/inputs/internal/predicates.js +11 -0
  231. package/dist/inputs/internal/useComboboxPopover.d.ts +46 -0
  232. package/dist/inputs/internal/useComboboxPopover.js +92 -0
  233. package/dist/json/JsonViewer.d.ts +62 -0
  234. package/dist/json/JsonViewer.js +483 -0
  235. package/dist/layout/Box.d.ts +87 -0
  236. package/dist/layout/Box.js +109 -0
  237. package/dist/layout/Divider.d.ts +25 -0
  238. package/dist/layout/Divider.js +70 -0
  239. package/dist/layout/Flex.d.ts +139 -0
  240. package/dist/layout/Flex.js +165 -0
  241. package/dist/layout/FlexItem.d.ts +72 -0
  242. package/dist/layout/FlexItem.js +84 -0
  243. package/dist/layout/Grid.d.ts +140 -0
  244. package/dist/layout/Grid.js +178 -0
  245. package/dist/layout/Portal.d.ts +29 -0
  246. package/dist/layout/Portal.js +27 -0
  247. package/dist/layout/ResizablePanels.d.ts +88 -0
  248. package/dist/layout/ResizablePanels.js +198 -0
  249. package/dist/layout/ResizeHandle.d.ts +48 -0
  250. package/dist/layout/ResizeHandle.js +143 -0
  251. package/dist/layout/ScrollArea.d.ts +30 -0
  252. package/dist/layout/ScrollArea.js +138 -0
  253. package/dist/links/Link.d.ts +101 -1
  254. package/dist/links/Link.js +166 -4
  255. package/dist/lists/BulletedList.d.ts +25 -7
  256. package/dist/lists/BulletedList.js +72 -27
  257. package/dist/lists/DescriptionList.d.ts +91 -0
  258. package/dist/lists/DescriptionList.js +147 -0
  259. package/dist/menu/ContextMenu.d.ts +64 -0
  260. package/dist/menu/ContextMenu.js +34 -0
  261. package/dist/menu/Menu.d.ts +280 -0
  262. package/dist/menu/Menu.js +1003 -0
  263. package/dist/modal/ConfirmDialog.d.ts +55 -0
  264. package/dist/modal/ConfirmDialog.js +151 -0
  265. package/dist/modal/Modal.d.ts +64 -14
  266. package/dist/modal/Modal.js +189 -48
  267. package/dist/navigation/Breadcrumbs.d.ts +65 -0
  268. package/dist/navigation/Breadcrumbs.js +243 -0
  269. package/dist/navigation/CommandPalette.d.ts +83 -0
  270. package/dist/navigation/CommandPalette.js +509 -0
  271. package/dist/navigation/Pagination.d.ts +87 -0
  272. package/dist/navigation/Pagination.js +300 -0
  273. package/dist/navigation/SidebarNav.d.ts +107 -0
  274. package/dist/navigation/SidebarNav.js +341 -0
  275. package/dist/navigation/Stepper.d.ts +52 -0
  276. package/dist/navigation/Stepper.js +207 -0
  277. package/dist/navigation/Tabs.d.ts +113 -0
  278. package/dist/navigation/Tabs.js +543 -0
  279. package/dist/navigation/Topbar.d.ts +20 -0
  280. package/dist/navigation/Topbar.js +62 -0
  281. package/dist/overlay/OverlayProvider.d.ts +28 -32
  282. package/dist/overlay/OverlayProvider.js +42 -93
  283. package/dist/overlay/useOverlay.d.ts +88 -12
  284. package/dist/overlay/useOverlay.js +220 -43
  285. package/dist/overlays/Popover.d.ts +114 -0
  286. package/dist/overlays/Popover.js +389 -0
  287. package/dist/shapes/Circle.d.ts +84 -8
  288. package/dist/shapes/Circle.js +122 -20
  289. package/dist/shapes/Square.d.ts +84 -8
  290. package/dist/shapes/Square.js +123 -20
  291. package/dist/styles/mixins.d.ts +35 -0
  292. package/dist/styles/mixins.js +60 -0
  293. package/dist/styles.css +1 -202
  294. package/dist/table/InfiniteSpreadsheet.d.ts +140 -10
  295. package/dist/table/InfiniteSpreadsheet.js +762 -225
  296. package/dist/table/InfiniteTable.d.ts +116 -14
  297. package/dist/table/InfiniteTable.js +287 -429
  298. package/dist/table/SpreadsheetCellEditor.d.ts +54 -6
  299. package/dist/table/SpreadsheetCellEditor.js +163 -84
  300. package/dist/table/TableCore.d.ts +252 -0
  301. package/dist/table/TableCore.js +1082 -0
  302. package/dist/table/VirtualizedInfiniteTable.d.ts +104 -14
  303. package/dist/table/VirtualizedInfiniteTable.js +280 -219
  304. package/dist/table/types.d.ts +66 -244
  305. package/dist/table/types.js +0 -51
  306. package/dist/table/useInfiniteScrollSentinel.d.ts +25 -21
  307. package/dist/table/useInfiniteScrollSentinel.js +38 -30
  308. package/dist/table/useSpreadsheetCellNavigation.d.ts +44 -0
  309. package/dist/table/useSpreadsheetCellNavigation.js +141 -0
  310. package/dist/table/useTableColumnLayout.d.ts +90 -25
  311. package/dist/table/useTableColumnLayout.js +255 -50
  312. package/dist/table/useTableKeyboardNavigation.d.ts +32 -21
  313. package/dist/table/useTableKeyboardNavigation.js +95 -71
  314. package/dist/table/useTableRowSelection.d.ts +24 -25
  315. package/dist/table/useTableRowSelection.js +57 -84
  316. package/dist/table/useTableVirtualizer.d.ts +20 -0
  317. package/dist/table/useTableVirtualizer.js +48 -0
  318. package/dist/text/Bold.d.ts +5 -6
  319. package/dist/text/Bold.js +16 -15
  320. package/dist/text/Code.d.ts +5 -6
  321. package/dist/text/Code.js +16 -25
  322. package/dist/text/CodeBlock.d.ts +77 -0
  323. package/dist/text/CodeBlock.js +373 -0
  324. package/dist/text/EditableText.d.ts +55 -15
  325. package/dist/text/EditableText.js +153 -135
  326. package/dist/text/Ellipsis.d.ts +34 -8
  327. package/dist/text/Ellipsis.js +55 -23
  328. package/dist/text/Kbd.d.ts +72 -0
  329. package/dist/text/Kbd.js +284 -0
  330. package/dist/text/MarkdownText.d.ts +27 -10
  331. package/dist/text/MarkdownText.js +317 -300
  332. package/dist/text/RequiredMarker.d.ts +17 -5
  333. package/dist/text/RequiredMarker.js +34 -36
  334. package/dist/text/Selectable.d.ts +5 -6
  335. package/dist/text/Selectable.js +16 -13
  336. package/dist/text/Span.d.ts +82 -0
  337. package/dist/text/Span.js +115 -0
  338. package/dist/text/Text.d.ts +128 -41
  339. package/dist/text/Text.js +209 -76
  340. package/dist/theme/GalaxyProvider.d.ts +75 -0
  341. package/dist/theme/GalaxyProvider.js +223 -0
  342. package/dist/theme/ThemeSwitcher.d.ts +52 -0
  343. package/dist/theme/ThemeSwitcher.js +94 -0
  344. package/dist/theme/enums.d.ts +118 -0
  345. package/dist/theme/enums.js +144 -0
  346. package/dist/theme/tokens/dark.d.ts +2 -0
  347. package/dist/theme/tokens/dark.js +275 -0
  348. package/dist/theme/tokens/generate.d.ts +15 -0
  349. package/dist/theme/tokens/generate.js +47 -0
  350. package/dist/theme/tokens/light.d.ts +2 -0
  351. package/dist/theme/tokens/light.js +274 -0
  352. package/dist/theme/tokens/palette.d.ts +14 -0
  353. package/dist/theme/tokens/palette.js +153 -0
  354. package/dist/theme/tokens/scales.d.ts +26 -0
  355. package/dist/theme/tokens/scales.js +154 -0
  356. package/dist/theme/tokens/t.d.ts +3 -0
  357. package/dist/theme/tokens/t.js +25 -0
  358. package/dist/theme/tokens/types.d.ts +189 -0
  359. package/dist/theme/tokens/types.js +0 -0
  360. package/dist/theme/useGalaxyTheme.d.ts +46 -0
  361. package/dist/theme/useGalaxyTheme.js +36 -0
  362. package/dist/theme/useInverseScope.d.ts +18 -0
  363. package/dist/theme/useInverseScope.js +33 -0
  364. package/dist/three/GalaxyLogomark3D.d.ts +46 -0
  365. package/dist/three/GalaxyLogomark3D.js +134 -0
  366. package/dist/three/assets/galaxy-logomark.js +4 -0
  367. package/dist/three/galaxyLogomark3DScene.d.ts +27 -0
  368. package/dist/three/galaxyLogomark3DScene.js +165 -0
  369. package/dist/timeline/Timeline.d.ts +120 -0
  370. package/dist/timeline/Timeline.js +301 -0
  371. package/dist/toast/Toast.d.ts +43 -19
  372. package/dist/toast/Toast.js +130 -89
  373. package/dist/toast/ToastProvider.d.ts +23 -23
  374. package/dist/toast/ToastProvider.js +298 -101
  375. package/dist/toast/ToastViewport.d.ts +12 -0
  376. package/dist/toast/ToastViewport.js +210 -0
  377. package/dist/toast/useToast.d.ts +139 -5
  378. package/dist/toast/useToast.js +15 -13
  379. package/dist/tokens.css +654 -0
  380. package/dist/tooltip/Tooltip.d.ts +64 -44
  381. package/dist/tooltip/Tooltip.js +280 -73
  382. package/dist/tooltip/internal/LazyTooltip.d.ts +7 -0
  383. package/dist/tooltip/internal/LazyTooltip.js +53 -0
  384. package/dist/transform/Fade.d.ts +33 -11
  385. package/dist/transform/Fade.js +71 -19
  386. package/dist/transform/Flasher.d.ts +25 -0
  387. package/dist/transform/Flasher.js +39 -0
  388. package/dist/transform/Rotate.d.ts +24 -12
  389. package/dist/transform/Rotate.js +36 -22
  390. package/dist/transform/ScaleFade.d.ts +36 -11
  391. package/dist/transform/ScaleFade.js +86 -28
  392. package/dist/transform/internal/CollapseMotion.d.ts +10 -0
  393. package/dist/transform/internal/CollapseMotion.js +65 -0
  394. package/dist/tree/Tree.d.ts +85 -0
  395. package/dist/tree/Tree.js +387 -0
  396. package/dist/tree/treeRow.d.ts +39 -0
  397. package/dist/tree/treeRow.js +75 -0
  398. package/dist/utils/colors.d.ts +46 -13
  399. package/dist/utils/colors.js +92 -34
  400. package/dist/utils/css.d.ts +23 -0
  401. package/dist/utils/css.js +30 -0
  402. package/dist/utils/format.d.ts +58 -0
  403. package/dist/utils/format.js +220 -0
  404. package/dist/vite/index.d.ts +16 -0
  405. package/dist/vite/index.js +52 -0
  406. package/dist/widget/Widget.d.ts +164 -48
  407. package/dist/widget/Widget.js +335 -96
  408. package/dist/widget/WidgetGroup.d.ts +36 -0
  409. package/dist/widget/WidgetGroup.js +103 -0
  410. package/package.json +855 -157
  411. package/dist/accordion/Accordion.d.ts +0 -54
  412. package/dist/accordion/Accordion.js +0 -183
  413. package/dist/assets/components/GalaxyFilamentWordmarkDark.d.ts +0 -3
  414. package/dist/assets/components/GalaxyFilamentWordmarkDark.js +0 -14
  415. package/dist/assets/components/GalaxyFilamentWordmarkLight.d.ts +0 -3
  416. package/dist/assets/components/GalaxyFilamentWordmarkLight.js +0 -14
  417. package/dist/assets/components/GalaxyLogomarkDark.d.ts +0 -3
  418. package/dist/assets/components/GalaxyLogomarkDark.js +0 -11
  419. package/dist/assets/components/GalaxyLogomarkLight.d.ts +0 -3
  420. package/dist/assets/components/GalaxyLogomarkLight.js +0 -17
  421. package/dist/assets/components/GalaxyWordmarkDark.d.ts +0 -3
  422. package/dist/assets/components/GalaxyWordmarkDark.js +0 -15
  423. package/dist/assets/components/GalaxyWordmarkLight.d.ts +0 -3
  424. package/dist/assets/components/GalaxyWordmarkLight.js +0 -28
  425. package/dist/assets/models/galaxy-animation.js +0 -136666
  426. package/dist/assets/models/galaxy-logomark.js +0 -4
  427. package/dist/avatar/AvatarShimmer.d.ts +0 -30
  428. package/dist/avatar/AvatarShimmer.js +0 -22
  429. package/dist/backgrounds/CellGridBackground.d.ts +0 -24
  430. package/dist/backgrounds/CellGridBackground.js +0 -44
  431. package/dist/backgrounds/CrossGridBackground.d.ts +0 -26
  432. package/dist/backgrounds/CrossGridBackground.js +0 -49
  433. package/dist/backgrounds/DotGridBackground.d.ts +0 -24
  434. package/dist/backgrounds/DotGridBackground.js +0 -47
  435. package/dist/badge/Badge.d.ts +0 -42
  436. package/dist/badge/Badge.js +0 -99
  437. package/dist/charts/ChartEmptyState.d.ts +0 -17
  438. package/dist/charts/ChartEmptyState.js +0 -29
  439. package/dist/charts/ProgressBar.d.ts +0 -29
  440. package/dist/charts/ProgressBar.js +0 -65
  441. package/dist/charts/chartTheme.d.ts +0 -18
  442. package/dist/charts/chartTheme.js +0 -26
  443. package/dist/containers/FlexItem.d.ts +0 -50
  444. package/dist/containers/FlexItem.js +0 -91
  445. package/dist/containers/FlexWrapper.d.ts +0 -96
  446. package/dist/containers/FlexWrapper.js +0 -143
  447. package/dist/containers/GridWrapper.d.ts +0 -79
  448. package/dist/containers/GridWrapper.js +0 -125
  449. package/dist/containers/Spacing.d.ts +0 -23
  450. package/dist/containers/Spacing.js +0 -59
  451. package/dist/containers/Wrapper.d.ts +0 -26
  452. package/dist/containers/Wrapper.js +0 -54
  453. package/dist/dividers/HorizontalDivider.d.ts +0 -7
  454. package/dist/dividers/HorizontalDivider.js +0 -39
  455. package/dist/dividers/VerticalDivider.d.ts +0 -6
  456. package/dist/dividers/VerticalDivider.js +0 -21
  457. package/dist/icons/GalaxyFilamentWordmark.d.ts +0 -11
  458. package/dist/icons/GalaxyFilamentWordmark.js +0 -25
  459. package/dist/icons/GalaxyLogomark.d.ts +0 -13
  460. package/dist/icons/GalaxyLogomark.js +0 -27
  461. package/dist/icons/GalaxyLogomark3D.d.ts +0 -56
  462. package/dist/icons/GalaxyLogomark3D.js +0 -319
  463. package/dist/icons/GalaxyLogomarkAnimation.d.ts +0 -18
  464. package/dist/icons/GalaxyLogomarkAnimation.js +0 -48
  465. package/dist/icons/GalaxyWordmark.d.ts +0 -11
  466. package/dist/icons/GalaxyWordmark.js +0 -25
  467. package/dist/inputs/MultiTextInput.d.ts +0 -32
  468. package/dist/inputs/MultiTextInput.js +0 -180
  469. package/dist/inputs/SwitcherInput.d.ts +0 -30
  470. package/dist/inputs/SwitcherInput.js +0 -81
  471. package/dist/inputs/hooks.d.ts +0 -10
  472. package/dist/inputs/hooks.js +0 -22
  473. package/dist/overlay/constants.d.ts +0 -28
  474. package/dist/overlay/constants.js +0 -37
  475. package/dist/resizable/HorizontalResizeHandle.d.ts +0 -17
  476. package/dist/resizable/HorizontalResizeHandle.js +0 -38
  477. package/dist/resizable/VerticalResizeHandle.d.ts +0 -18
  478. package/dist/resizable/VerticalResizeHandle.js +0 -39
  479. package/dist/table/SpreadsheetCell.d.ts +0 -21
  480. package/dist/table/SpreadsheetCell.js +0 -71
  481. package/dist/table/SpreadsheetHeaderCell.d.ts +0 -23
  482. package/dist/table/SpreadsheetHeaderCell.js +0 -91
  483. package/dist/table/SpreadsheetMenuItem.d.ts +0 -14
  484. package/dist/table/SpreadsheetMenuItem.js +0 -33
  485. package/dist/table/SpreadsheetPrimitives.d.ts +0 -172
  486. package/dist/table/SpreadsheetPrimitives.js +0 -105
  487. package/dist/table/SpreadsheetRow.d.ts +0 -33
  488. package/dist/table/SpreadsheetRow.js +0 -73
  489. package/dist/table/SpreadsheetRowActionCell.d.ts +0 -14
  490. package/dist/table/SpreadsheetRowActionCell.js +0 -51
  491. package/dist/table/TableExpandCell.d.ts +0 -11
  492. package/dist/table/TableExpandCell.js +0 -24
  493. package/dist/table/TableExpandedRow.d.ts +0 -16
  494. package/dist/table/TableExpandedRow.js +0 -77
  495. package/dist/table/TableHeaderCellContent.d.ts +0 -30
  496. package/dist/table/TableHeaderCellContent.js +0 -48
  497. package/dist/table/TablePrimitives.d.ts +0 -313
  498. package/dist/table/TablePrimitives.js +0 -302
  499. package/dist/table/TableSelectCell.d.ts +0 -18
  500. package/dist/table/TableSelectCell.js +0 -27
  501. package/dist/table/TableStatusRow.d.ts +0 -18
  502. package/dist/table/TableStatusRow.js +0 -50
  503. package/dist/table/useSpreadsheetEditing.d.ts +0 -13
  504. package/dist/table/useSpreadsheetEditing.js +0 -41
  505. package/dist/table/useTableColumnResize.d.ts +0 -38
  506. package/dist/table/useTableColumnResize.js +0 -155
  507. package/dist/table/useTableRowExpansion.d.ts +0 -24
  508. package/dist/table/useTableRowExpansion.js +0 -62
  509. package/dist/table/utils.d.ts +0 -50
  510. package/dist/table/utils.js +0 -78
  511. package/dist/text/HotKeys.d.ts +0 -30
  512. package/dist/text/HotKeys.js +0 -74
  513. package/dist/text/Paragraph.d.ts +0 -33
  514. package/dist/text/Paragraph.js +0 -83
  515. package/dist/text/TextShimmer.d.ts +0 -14
  516. package/dist/text/TextShimmer.js +0 -34
  517. package/dist/theme/GalaxyTheme.d.ts +0 -67
  518. package/dist/theme/GalaxyTheme.js +0 -119
  519. package/dist/theme/constants.d.ts +0 -8
  520. package/dist/theme/constants.js +0 -38
  521. package/dist/theme/index.d.ts +0 -6
  522. package/dist/theme/index.js +0 -7
  523. package/dist/theme/types.d.ts +0 -195
  524. package/dist/theme/types.js +0 -10
  525. package/dist/theme/typography.d.ts +0 -2
  526. package/dist/theme/typography.js +0 -73
  527. package/dist/theme/variants/dark.d.ts +0 -2
  528. package/dist/theme/variants/dark.js +0 -125
  529. package/dist/theme/variants/light.d.ts +0 -2
  530. package/dist/theme/variants/light.js +0 -125
  531. package/dist/toast/ToastContainer.d.ts +0 -10
  532. package/dist/toast/ToastContainer.js +0 -31
  533. package/dist/toast/ToastWrapper.d.ts +0 -6
  534. package/dist/toast/ToastWrapper.js +0 -27
  535. package/dist/transform/Flash.d.ts +0 -7
  536. package/dist/transform/Flash.js +0 -18
  537. package/dist/transform/Spin.d.ts +0 -14
  538. package/dist/transform/Spin.js +0 -25
  539. package/dist/utils/linaria.d.ts +0 -1
  540. package/dist/utils/linaria.js +0 -8
@@ -1,219 +1,319 @@
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
63
+ });
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
+ /**
69
+ * What the padding gives back for the transparent hairline border. Chrome draws a 0.5px border a
70
+ * whole pixel wide, so padding that subtracted only 0.5px left two rows a pixel taller than the
71
+ * box: the textarea scrolled that pixel and swallowed the wheel instead of the page. Subtracting
72
+ * the full pixel fits exactly in Chrome and leaves half a pixel spare where the border is 0.5px.
73
+ */
74
+ var Control = /*#__PURE__*/ styled("textarea")({
75
+ name: "Control",
76
+ class: "gx-TextAreaInput-Control-cu0hnok",
77
+ propsAsIs: false
84
78
  });
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";
79
+ /** The hidden measuring copy: same border and padding as `Control`, zero height, never seen or read. */
80
+ var Mirror = /*#__PURE__*/ styled("textarea")({
81
+ name: "Mirror",
82
+ class: "gx-TextAreaInput-Mirror-m48iv0n",
83
+ propsAsIs: false
84
+ });
85
+ /** Covers the first rows of text while `isLoading`. */
86
+ var LoadingOverlay = /*#__PURE__*/ styled("span")({
87
+ name: "LoadingOverlay",
88
+ class: "gx-TextAreaInput-LoadingOverlay-l18cdt5k",
89
+ propsAsIs: false
90
+ });
91
+ /** Line height, block inset and inline padding per rung; one row = line + 2 × inset = the rung (Constitution III-A.4). */
92
+ var TEXT_AREA_INPUT_SIZE_TO_CSS_MAP = {
93
+ ["X_SMALL"]: "gx-TextAreaInput-X_SMALL-xl6hrmj",
94
+ ["SMALL"]: "gx-TextAreaInput-SMALL-sayj2b7",
95
+ ["MEDIUM"]: "gx-TextAreaInput-MEDIUM-mxy7i6q",
96
+ ["LARGE"]: "gx-TextAreaInput-LARGE-l11gu90v",
97
+ ["X_LARGE"]: "gx-TextAreaInput-X_LARGE-x53s0j8"
90
98
  };
91
- var _exp19 = () => ({ $height, $fillHeight }) => {
92
- if ($fillHeight) return "100%";
93
- if ($height) return getCssSizeValue($height);
94
- return "auto";
99
+ /** The value's type per family and rung (Input's family map without its fixed height; mono shares the line heights). */
100
+ var TEXT_AREA_INPUT_FAMILY_TO_SIZE_CSS_MAP = {
101
+ [FontFamily.SANS]: {
102
+ ["X_SMALL"]: "gx-TextAreaInput-X_SMALL-xcocpoc",
103
+ ["SMALL"]: "gx-TextAreaInput-SMALL-smg30fv",
104
+ ["MEDIUM"]: "gx-TextAreaInput-MEDIUM-m17yu174",
105
+ ["LARGE"]: "gx-TextAreaInput-LARGE-l1lhy1ch",
106
+ ["X_LARGE"]: "gx-TextAreaInput-X_LARGE-xt05y9q"
107
+ },
108
+ [FontFamily.MONO]: {
109
+ ["X_SMALL"]: "gx-TextAreaInput-X_SMALL-x4gku9c",
110
+ ["SMALL"]: "gx-TextAreaInput-SMALL-s1havzor",
111
+ ["MEDIUM"]: "gx-TextAreaInput-MEDIUM-m1ie5pnb",
112
+ ["LARGE"]: "gx-TextAreaInput-LARGE-l1bu2eyp",
113
+ ["X_LARGE"]: "gx-TextAreaInput-X_LARGE-xx79smc"
114
+ }
95
115
  };
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);
116
+ /** Rest look per variant: fill and hairline color (the shared `FIELD_SURFACE_TO_REST_MAP` fragments). */
117
+ var TEXT_AREA_INPUT_VARIANT_TO_CSS_MAP = {
118
+ ["BASE"]: "gx-TextAreaInput-BASE-bb0gkbj",
119
+ ["PRIMARY"]: "gx-TextAreaInput-PRIMARY-p1ow5tvt",
120
+ ["SECONDARY"]: "gx-TextAreaInput-SECONDARY-s1iv3xcr",
121
+ ["TERTIARY"]: "gx-TextAreaInput-TERTIARY-t1bpq8oq"
101
122
  };
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
123
+ /** `isGhost`: no fill and no hairline at rest. Declared after the variant map, which it replaces. */
124
+ var GHOST_CSS = "gx-TextAreaInput-GHOST_CSS-gotwbad";
125
+ /**
126
+ * Hover on an editable field (2026-10-03 field-frame resolution): `border.hovered`. Not while
127
+ * focused, so focus keeps `border.focused` on every variant.
128
+ */
129
+ var TEXT_AREA_INPUT_VARIANT_TO_HOVER_CSS_MAP = {
130
+ ["BASE"]: "gx-TextAreaInput-BASE-b9n23p6",
131
+ ["PRIMARY"]: "gx-TextAreaInput-PRIMARY-p190b34w",
132
+ ["SECONDARY"]: "gx-TextAreaInput-SECONDARY-s1qhok5h",
133
+ ["TERTIARY"]: "gx-TextAreaInput-TERTIARY-tlw3g4y"
122
134
  };
135
+ /** Hover on an editable ghost field: the frame appears, `border.hovered` with no fill. Not while focused. */
136
+ var GHOST_HOVER_CSS = "gx-TextAreaInput-GHOST_HOVER_CSS-gbqdkqd";
137
+ /** Error border at rest, on hover and with focus (the 1px inset focus line is red too). */
138
+ var ERROR_CSS = "gx-TextAreaInput-ERROR_CSS-ed54239";
123
139
  /**
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.
140
+ * Disabled: the variant's resting fill and hairline are kept (`border.disabled` is not used on
141
+ * frames); the field reads as disabled through `text.disabled` and the cursor.
129
142
  */
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);
143
+ var DISABLED_CSS = "gx-TextAreaInput-DISABLED_CSS-dydj1qz";
144
+ /** Loading: the rest look is kept (waiting, not off); the text and placeholder are hidden under the skeleton. */
145
+ var LOADING_CSS = "gx-TextAreaInput-LOADING_CSS-lnj2bsw";
146
+ /** Caps auto-grow and the resize drag at `maxRows`; past it the field scrolls. */
147
+ var MAX_ROWS_CSS = "gx-TextAreaInput-MAX_ROWS_CSS-m6uahg3";
148
+ /** The native vertical resize handle, bounded by `min-height` / `max-height`. */
149
+ var RESIZABLE_CSS = "gx-TextAreaInput-RESIZABLE_CSS-rq3dee4";
150
+ /** Stretch the textarea to its root's width. */
151
+ var FILL_WIDTH_CSS = "gx-TextAreaInput-FILL_WIDTH_CSS-f1xdzkm1";
152
+ /** Stretch the root (and a `Field` wrapper) to the parent's width. */
153
+ var ROOT_FILL_WIDTH_CSS = "gx-TextAreaInput-ROOT_FILL_WIDTH_CSS-rtpol1z";
154
+ /** The `Field` a TextAreaInput renders for its own `label` / `error` uses the same rung. */
155
+ var TEXT_AREA_INPUT_SIZE_TO_FIELD_SIZE_MAP = {
156
+ ["X_SMALL"]: FieldSize.X_SMALL,
157
+ ["SMALL"]: FieldSize.SMALL,
158
+ ["MEDIUM"]: FieldSize.MEDIUM,
159
+ ["LARGE"]: FieldSize.LARGE,
160
+ ["X_LARGE"]: FieldSize.X_LARGE
161
+ };
162
+ /** The loading skeleton's lines are the rung's text line height (skeleton.md host contract). */
163
+ var TEXT_AREA_INPUT_SIZE_TO_SKELETON_SIZE_MAP = {
164
+ ["X_SMALL"]: SkeletonSize.X_SMALL,
165
+ ["SMALL"]: SkeletonSize.SMALL,
166
+ ["MEDIUM"]: SkeletonSize.MEDIUM,
167
+ ["LARGE"]: SkeletonSize.LARGE,
168
+ ["X_LARGE"]: SkeletonSize.X_LARGE
169
+ };
170
+ /** A row count floored to a whole number, at least 1 (a non-finite value gives 1). */
171
+ function toRows(rows) {
172
+ return Number.isFinite(rows) ? Math.max(1, Math.floor(rows)) : 1;
173
+ }
174
+ /** `Root`, the textarea, the mirror and the loading overlay, wired to the nearest Field. */
175
+ function TextAreaFrame({ textAreaProps, forwardedRef, isRoot }) {
176
+ 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;
177
+ const { controlId: textAreaId, describedBy, isInvalid, isRequired: isRequiredState, hasName } = useFieldWiring({
178
+ id,
179
+ ariaLabel,
180
+ ariaLabelAttribute: rest["aria-label"],
181
+ ariaLabelledBy: rest["aria-labelledby"],
182
+ ariaDescribedBy,
183
+ error,
184
+ isError,
185
+ isRequired
186
+ });
187
+ const rootRef = useRef(null);
188
+ const innerRef = useRef(null);
189
+ const mirrorRef = useRef(null);
190
+ const mergedRef = useMergeRefs([innerRef, forwardedRef]);
191
+ const [currentValue, setValue] = useControlledState({
192
+ value,
193
+ defaultValue,
194
+ onChange
195
+ });
196
+ const [measuredHeight, setMeasuredHeight] = useState(void 0);
197
+ const rows = toRows(minRows);
198
+ const resolvedMaxRows = maxRows === void 0 ? void 0 : Math.max(toRows(maxRows), rows);
199
+ const isEditable = !isDisabled && !isReadOnly && !isLoading;
200
+ const typeClassName = TEXT_AREA_INPUT_FAMILY_TO_SIZE_CSS_MAP[family][size];
201
+ const mirrorText = currentValue === "" ? placeholder ?? "" : currentValue;
202
+ 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.");
203
+ useDevWarning(isAutoGrow && isResizable, "[@galaxy-io/dls] TextAreaInput ignores `isResizable` with `isAutoGrow`: the height follows the content.");
204
+ /** Reads the content height from the mirror: its scroll height plus the control's borders. */
205
+ const measure = () => {
206
+ const control = innerRef.current;
207
+ const mirror = mirrorRef.current;
208
+ if (control === null || mirror === null) return;
209
+ const computed = window.getComputedStyle(control);
210
+ const next = mirror.scrollHeight + Number.parseFloat(computed.borderTopWidth) + Number.parseFloat(computed.borderBottomWidth);
211
+ setMeasuredHeight((previous) => previous === next ? previous : next);
138
212
  };
139
- const handleBlur = (e) => {
140
- if (value?.length && min && value.length < min) setState({
141
- ...state,
142
- error: `Must be at least ${min} characters`
213
+ const measureRef = useRef(measure);
214
+ measureRef.current = measure;
215
+ useIsomorphicLayoutEffect(() => {
216
+ const mirror = mirrorRef.current;
217
+ if (!isAutoGrow || mirror === null) return;
218
+ if (mirror.value !== mirrorText || !mirror.classList.contains(typeClassName)) return;
219
+ measureRef.current();
220
+ }, [
221
+ isAutoGrow,
222
+ mirrorText,
223
+ typeClassName
224
+ ]);
225
+ useEffect(() => {
226
+ const root = rootRef.current;
227
+ if (!isAutoGrow || root === null) return;
228
+ let isActive = true;
229
+ let lastWidth = root.getBoundingClientRect().width;
230
+ const observer = typeof ResizeObserver === "undefined" ? void 0 : new ResizeObserver((entries) => {
231
+ const width = entries[0]?.contentRect.width;
232
+ if (width === void 0 || width === lastWidth) return;
233
+ lastWidth = width;
234
+ measureRef.current();
143
235
  });
144
- if (value?.length && max && value.length > max) setState({
145
- ...state,
146
- error: `Must be less than ${max} characters`
236
+ observer?.observe(root);
237
+ document.fonts?.ready.then(() => {
238
+ if (isActive) measureRef.current();
147
239
  });
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
- ]
240
+ return () => {
241
+ isActive = false;
242
+ observer?.disconnect();
243
+ };
244
+ }, [isAutoGrow]);
245
+ const handleChange = (event) => setValue(event.target.value);
246
+ const controlVariables = { "--gx-textarea-min-rows": String(rows) };
247
+ if (resolvedMaxRows !== void 0) controlVariables["--gx-textarea-max-rows"] = String(resolvedMaxRows);
248
+ if (isAutoGrow && measuredHeight !== void 0) controlVariables["--gx-textarea-height"] = `${measuredHeight}px`;
249
+ return /* @__PURE__ */ jsxs(Root, {
250
+ ref: rootRef,
251
+ className: cx(TEXT_AREA_INPUT_SIZE_TO_CSS_MAP[size], fillWidth && ROOT_FILL_WIDTH_CSS, isRoot ? className : void 0),
252
+ ...rootStyle(isRoot, style),
253
+ children: [
254
+ /* @__PURE__ */ jsx(Control, {
255
+ ref: mergedRef,
256
+ id: textAreaId,
257
+ rows,
258
+ value: currentValue,
259
+ onChange: handleChange,
260
+ placeholder,
261
+ disabled: isDisabled || isLoading,
262
+ readOnly: isReadOnly,
263
+ autoComplete,
264
+ autoCorrect: "off",
265
+ "aria-label": ariaLabel,
266
+ "aria-describedby": describedBy,
267
+ "aria-invalid": isInvalid ? true : void 0,
268
+ "aria-required": isRequiredState ? true : void 0,
269
+ "aria-busy": isLoading ? true : void 0,
270
+ 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),
271
+ style: controlVariables,
272
+ ...rest
273
+ }),
274
+ isAutoGrow && /* @__PURE__ */ jsx(Mirror, {
275
+ ref: mirrorRef,
276
+ value: mirrorText,
277
+ readOnly: true,
278
+ tabIndex: -1,
279
+ "aria-hidden": true,
280
+ className: typeClassName
281
+ }),
282
+ isLoading && /* @__PURE__ */ jsx(LoadingOverlay, { children: /* @__PURE__ */ jsx(Skeleton, {
283
+ lines: Math.min(2, rows),
284
+ size: TEXT_AREA_INPUT_SIZE_TO_SKELETON_SIZE_MAP[size]
285
+ }) })
286
+ ]
287
+ });
288
+ }
289
+ /** The multi-line text field, sized in rows, with optional auto-grow and a vertical resize handle. */
290
+ var TextAreaInput = forwardRef(function TextAreaInput(props, ref) {
291
+ const { label, error, isRequired = false, size = "MEDIUM", fillWidth = false, id, className, style } = props;
292
+ const ownField = useOwnField({
293
+ componentName: "TextAreaInput",
294
+ label,
295
+ error,
296
+ isRequired,
297
+ size: TEXT_AREA_INPUT_SIZE_TO_FIELD_SIZE_MAP[size],
298
+ id,
299
+ className,
300
+ style,
301
+ rootClassName: fillWidth && ROOT_FILL_WIDTH_CSS
302
+ });
303
+ if (ownField !== null) return /* @__PURE__ */ jsx(Field, {
304
+ ...ownField,
305
+ children: /* @__PURE__ */ jsx(TextAreaFrame, {
306
+ textAreaProps: props,
307
+ forwardedRef: ref,
308
+ isRoot: false
214
309
  })
215
310
  });
311
+ return /* @__PURE__ */ jsx(TextAreaFrame, {
312
+ textAreaProps: props,
313
+ forwardedRef: ref,
314
+ isRoot: true
315
+ });
216
316
  });
217
317
  TextAreaInput.displayName = "TextAreaInput";
218
318
  //#endregion
219
- export { TextAreaInput as default };
319
+ 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";