@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,299 +1,379 @@
1
- import { withTheme } from "../theme/GalaxyTheme.js";
2
- import { getCssSizeValue } from "../utils/linaria.js";
1
+ import { FontFamily } from "../theme/enums.js";
3
2
  import Text, { TextSize, TextVariant } from "../text/Text.js";
4
- import Tooltip, { TooltipPosition } from "../tooltip/Tooltip.js";
3
+ import { useControlledState } from "../hooks/useControlledState.js";
5
4
  import Icon, { IconVariant } from "../icons/Icon.js";
6
- import FlexWrapper, { AlignItems, FlexDirection } from "../containers/FlexWrapper.js";
7
- import RequiredMarker from "../text/RequiredMarker.js";
8
- import Spacing from "../containers/Spacing.js";
5
+ import Button, { ButtonSize, ButtonVariant } from "../buttons/Button.js";
6
+ import { useDevWarning } from "./internal/devWarn.js";
7
+ import { hasContent, isFilled } from "./internal/predicates.js";
8
+ import { useFieldWiring } from "./internal/fieldWiring.js";
9
+ import Field, { FieldSize } from "./Field.js";
10
+ import { rootStyle, useOwnField } from "./internal/ownField.js";
11
+ import { useIsBareField } from "./internal/bareField.js";
12
+ import "./internal/innerButton.js";
9
13
  /* empty css */
10
14
  import { styled } from "@linaria/react";
11
- import { match } from "ts-pattern";
12
- import { forwardRef } from "react";
15
+ import { forwardRef, useRef } from "react";
13
16
  import { jsx, jsxs } from "react/jsx-runtime";
14
- import { InfoIcon } from "@phosphor-icons/react";
17
+ import { cx } from "@linaria/core";
18
+ import { useMergeRefs } from "@floating-ui/react";
19
+ import { XIcon } from "@phosphor-icons/react";
15
20
  //#region src/inputs/Input.tsx
16
21
  /**
17
- * The label row every input renders above itself. Exported for building custom
18
- * inputs that should match — the stock inputs render it from their own props.
22
+ * The single-line text field every text-like input wraps (TextInput, PasswordInput, SearchInput,
23
+ * NumberInput, CopyInput). It draws the field frame: the resting fill (`variant`, surface set, or
24
+ * none with `isGhost`), the hairline, the size rung, and the focus, error, disabled and read-only looks. It holds a string
25
+ * with `value` / `defaultValue` / `onChange` and lays out the in-field parts in order: `leading`,
26
+ * `icon`, `prefix`, the `<input>`, `suffix`, the clear button (`isClearable`) and `trailing`. It
27
+ * reports Enter (`onEnter`, IME-safe).
28
+ *
29
+ * Labels and errors go through `Field`: a standalone Input with `label` or `error` renders a Field
30
+ * around its frame; an Input inside a Field reads the Field's wiring with `useField()` (id,
31
+ * `aria-describedby`, error and required) and never wraps itself again.
32
+ *
33
+ * Input never validates, parses, masks or counts: `error` / `isError` come from the app. `type` is
34
+ * required, because apps render a typed wrapper (usually `TextInput`) rather than Input itself.
35
+ * Replaces 1.x `Input` (no longer generic; `parse`, `min`/`max`/`step`, `width`, `labelTooltip`,
36
+ * `InputLabel` and the `getInput*` theme helpers are gone).
19
37
  */
20
- var InputLabel = ({ label, labelTooltip, isRequired }) => {
21
- return /* @__PURE__ */ jsxs(FlexWrapper, {
22
- alignItems: AlignItems.CENTER,
23
- gap: 1,
24
- children: [
25
- /* @__PURE__ */ jsx(Text, {
26
- variant: TextVariant.SECONDARY,
27
- children: label
28
- }),
29
- isRequired && /* @__PURE__ */ jsx(RequiredMarker, {}),
30
- labelTooltip && /* @__PURE__ */ jsx(Spacing, {
31
- left: 4,
32
- children: /* @__PURE__ */ jsx(Tooltip, {
33
- body: labelTooltip,
34
- position: TooltipPosition.RIGHT,
35
- children: /* @__PURE__ */ jsx(Icon, {
36
- component: InfoIcon,
37
- variant: IconVariant.SECONDARY,
38
- size: 12
39
- })
40
- })
41
- })
42
- ]
43
- });
44
- };
45
- /** Field height — 24 / 28 / 32px, matching `ButtonSize` so they line up in a row. */
38
+ /** Canonical rungs; Input supports all five. Shared by the text-like inputs that wrap Input. */
46
39
  var InputSize = /* @__PURE__ */ function(InputSize) {
40
+ /** 20px tall: caption text, 12px icon. */
41
+ InputSize["X_SMALL"] = "X_SMALL";
42
+ /** 24px tall: body_sm text, 12px icon. */
47
43
  InputSize["SMALL"] = "SMALL";
44
+ /** 32px tall: body_md text, 14px icon. The default (1.x `MEDIUM` was 28px). */
48
45
  InputSize["MEDIUM"] = "MEDIUM";
46
+ /** 36px tall: body_lg text, 14px icon. */
49
47
  InputSize["LARGE"] = "LARGE";
48
+ /** 40px tall: body_lg text, 16px icon. */
49
+ InputSize["X_LARGE"] = "X_LARGE";
50
50
  return InputSize;
51
51
  }({});
52
52
  /**
53
- * Field height for an `InputSize`. The single source of truth — every input in
54
- * the family routes through this. Call it from inside a Linaria interpolation:
55
- *
56
- * ```
57
- * height: ${({ $size }) => getInputHeight($size)};
58
- * ```
59
- */
60
- function getInputHeight(size) {
61
- return `${getInputHeightValue(size)}px`;
62
- }
63
- /** `getInputHeight` unwrapped, for callers that need to do arithmetic on it. */
64
- function getInputHeightValue(size) {
65
- return match(size).returnType().with("SMALL", () => 24).with("MEDIUM", () => 28).with("LARGE", () => 32).exhaustive();
66
- }
67
- /**
68
- * Horizontal inset for an `InputSize` — 6 / 8 / 12px. Returned as a number so
69
- * `TextAreaInput` can fold it into its computed `min-height`; most callers want
70
- * `getInputPadding` instead.
71
- */
72
- function getInputPaddingValue(size) {
73
- return match(size).returnType().with("SMALL", () => 6).with("MEDIUM", () => 8).with("LARGE", () => 12).exhaustive();
74
- }
75
- /** `getInputPaddingValue` as a CSS length. */
76
- function getInputPadding(size) {
77
- return `${getInputPaddingValue(size)}px`;
78
- }
79
- /** Type step for an `InputSize` — `body_sm` / `body_md` / `body_lg`. */
80
- function getInputFontSize(theme, size) {
81
- return match(size).returnType().with("SMALL", () => theme.font.sans.size.body_sm).with("MEDIUM", () => theme.font.sans.size.body_md).with("LARGE", () => theme.font.sans.size.body_lg).exhaustive();
82
- }
83
- /** The line height paired with `getInputFontSize`. */
84
- function getInputLineHeight(theme, size) {
85
- return match(size).returnType().with("SMALL", () => theme.font.sans.height.body_sm).with("MEDIUM", () => theme.font.sans.height.body_md).with("LARGE", () => theme.font.sans.height.body_lg).exhaustive();
86
- }
87
- /** Icon px for an `InputSize` — 12 / 14 / 16, for icons sitting inside a field. */
88
- function getInputIconSize(size) {
89
- return match(size).returnType().with("SMALL", () => 12).with("MEDIUM", () => 14).with("LARGE", () => 16).exhaustive();
90
- }
91
- /**
92
- * `getInputFontSize` for copy that renders through `Text` rather than through a
93
- * raw `<input>` — the trigger labels in `SelectInput`, `DateInput`, `ColorInput`.
94
- */
95
- function getInputTextSize(size) {
96
- return match(size).returnType().with("SMALL", () => TextSize.BODY_SM).with("MEDIUM", () => TextSize.BODY_MD).with("LARGE", () => TextSize.BODY_LG).exhaustive();
97
- }
98
- /**
99
- * Hit-target box for the boolean controls — 12 / 16 / 20px. Shared by the
100
- * `CheckboxInput` square and the `RadioInput` circle, which are sized as targets
101
- * rather than off the type scale, so they do not follow `getInputHeight`.
102
- */
103
- function getInputControlSize(size) {
104
- return match(size).returnType().with("SMALL", () => "12px").with("MEDIUM", () => "16px").with("LARGE", () => "20px").exhaustive();
105
- }
106
- /**
107
- * Surface color for any input. Mirrors `DropdownVariant` so a field and the
108
- * panel it sits in can be tuned to the same step of the neutral stack.
109
- *
110
- * Paints the *resting* surface only — state colors (checked, selected, filled)
111
- * are fixed tokens and are not affected by the variant.
112
- *
113
- * `TRANSPARENT` drops both the fill and the border. `CheckboxInput` and
114
- * `RadioInput` keep their hairline under it, or they would be invisible.
53
+ * Resting fill of the field (Constitution V-A surface set). 1.x `TRANSPARENT` is `isGhost` (color
54
+ * 2.1).
115
55
  */
116
56
  var InputVariant = /* @__PURE__ */ function(InputVariant) {
117
- InputVariant["TRANSPARENT"] = "TRANSPARENT";
57
+ /** `background.base` fill. */
118
58
  InputVariant["BASE"] = "BASE";
59
+ /** `background.primary` fill. The default. */
119
60
  InputVariant["PRIMARY"] = "PRIMARY";
61
+ /** `background.secondary` fill. */
120
62
  InputVariant["SECONDARY"] = "SECONDARY";
63
+ /** `background.tertiary` fill. */
121
64
  InputVariant["TERTIARY"] = "TERTIARY";
122
65
  return InputVariant;
123
66
  }({});
124
67
  /**
125
- * Surface fill for an `InputVariant`. The single source of truth — every input
126
- * routes through this. Call it from inside a Linaria interpolation:
127
- *
128
- * ```
129
- * background-color: ${({ theme, $variant }) => getInputSurfaceColor(theme, $variant)};
130
- * ```
68
+ * The visual box. Focus is drawn here as `FIELD_FOCUS` (`border.focused` at 1px inside the frame), whenever the
69
+ * inner `<input>` has focus, from the mouse or the keyboard.
131
70
  */
132
- function getInputSurfaceColor(theme, variant) {
133
- return match(variant).returnType().with("TRANSPARENT", () => "transparent").with("BASE", () => theme.color.background.base).with("PRIMARY", () => theme.color.background.primary).with("SECONDARY", () => theme.color.background.secondary).with("TERTIARY", () => theme.color.background.tertiary).with(void 0, () => theme.color.background.primary).exhaustive();
134
- }
71
+ var Frame = /*#__PURE__*/ styled("div")({
72
+ name: "Frame",
73
+ class: "gx-Input-Frame-f1bxp24n",
74
+ propsAsIs: false
75
+ });
76
+ /** Holds `leading` or `trailing`. */
77
+ var Slot = /*#__PURE__*/ styled("span")({
78
+ name: "Slot",
79
+ class: "gx-Input-Slot-sxmrsxd",
80
+ propsAsIs: false
81
+ });
82
+ /** Prefix, value and suffix, 2px apart, so `https://` reads as the start of the URL. */
83
+ var TextGroup = /*#__PURE__*/ styled("span")({
84
+ name: "TextGroup",
85
+ class: "gx-Input-TextGroup-t8jap54",
86
+ propsAsIs: false
87
+ });
88
+ /** The `<input>`: no chrome of its own; the frame draws the box and the focus. */
89
+ var Control = /*#__PURE__*/ styled("input")({
90
+ name: "Control",
91
+ class: "gx-Input-Control-c16cwjje",
92
+ propsAsIs: false
93
+ });
94
+ /** Wraps the clear button so its space is kept while it is hidden. */
95
+ var ClearSlot = /*#__PURE__*/ styled("span")({
96
+ name: "ClearSlot",
97
+ class: "gx-Input-ClearSlot-c1fr44wk",
98
+ propsAsIs: false
99
+ });
100
+ /** Prefix and suffix text: never wraps, never shrinks, not selectable. */
101
+ var AFFIX_CSS = "gx-Input-AFFIX_CSS-a5syjqa";
102
+ /** Hidden clear button: keeps its width, leaves the tab order and the accessibility tree. */
103
+ var CLEAR_HIDDEN_CSS = "gx-Input-CLEAR_HIDDEN_CSS-cbdp3fy";
104
+ /** Rest look per variant: fill and hairline color. */
105
+ var INPUT_VARIANT_TO_CSS_MAP = {
106
+ ["BASE"]: "gx-Input-BASE-bkepvj0",
107
+ ["PRIMARY"]: "gx-Input-PRIMARY-p1kqylml",
108
+ ["SECONDARY"]: "gx-Input-SECONDARY-sni87mp",
109
+ ["TERTIARY"]: "gx-Input-TERTIARY-t1f9js71"
110
+ };
111
+ /** `isGhost`: no fill and no hairline at rest. Declared after the variant map, which it replaces. */
112
+ var GHOST_CSS = "gx-Input-GHOST_CSS-g1tux5wq";
113
+ /** Height, horizontal padding and gap per rung (Constitution III-A.4). */
114
+ var INPUT_SIZE_TO_CSS_MAP = {
115
+ ["X_SMALL"]: "gx-Input-X_SMALL-xv49y92",
116
+ ["SMALL"]: "gx-Input-SMALL-s15pwf5n",
117
+ ["MEDIUM"]: "gx-Input-MEDIUM-m11kseiu",
118
+ ["LARGE"]: "gx-Input-LARGE-l3scmgs",
119
+ ["X_LARGE"]: "gx-Input-X_LARGE-x18d50g2"
120
+ };
135
121
  /**
136
- * Resting border for an `InputVariant`. Callers short-circuit their own error,
137
- * focus and active colors before falling back to this.
138
- *
139
- * Returns `"transparent"` rather than `"none"` so the box model stays identical
140
- * across variants.
122
+ * Start inset when `leading` is set: equal to the vertical gap around an in-field button. The
123
+ * `0.5px` hairline is subtracted, as on the end inset: the border adds to the start padding but the
124
+ * vertical gap already includes it.
141
125
  */
142
- function getInputBorderColor(theme, variant) {
143
- return variant === "TRANSPARENT" ? "transparent" : theme.color.border.primary;
144
- }
145
- /** Space between a trailing action button and the text it must not overlap. */
146
- var _exp = () => ({ $size }) => getInputHeight($size);
147
- var _exp2 = () => ({ $fillWidth, $width }) => $fillWidth ? "100%" : $width ? getCssSizeValue($width) : "auto";
148
- var _exp3 = () => ({ theme, $variant }) => getInputSurfaceColor(theme, $variant);
149
- var _exp4 = () => ({ theme, $variant, $isError }) => {
150
- if ($isError) return theme.color.border.error;
151
- return getInputBorderColor(theme, $variant);
126
+ var INPUT_SIZE_TO_LEADING_INSET_CSS_MAP = {
127
+ ["X_SMALL"]: "gx-Input-X_SMALL-xykym5i",
128
+ ["SMALL"]: "gx-Input-SMALL-s14m5w1k",
129
+ ["MEDIUM"]: "gx-Input-MEDIUM-m6tn9fi",
130
+ ["LARGE"]: "gx-Input-LARGE-l7uvomj",
131
+ ["X_LARGE"]: "gx-Input-X_LARGE-x1jl17jf"
152
132
  };
153
- var _exp5 = () => ({ theme }) => theme.color.text.primary;
154
- var _exp6 = () => ({ theme, $size }) => getInputFontSize(theme, $size);
155
- var _exp7 = () => ({ theme, $size }) => getInputLineHeight(theme, $size);
156
- var _exp8 = () => ({ theme }) => theme.font.sans.weight.regular;
157
- var _exp9 = () => ({ theme, $isMonospace }) => $isMonospace ? theme.font.mono.family : theme.font.sans.family;
158
- var _exp0 = () => ({ $size, $hasLeadingIcon, $hasTrailingAction }) => {
159
- const leftPadding = $hasLeadingIcon ? getInputHeight($size) : getInputPadding($size);
160
- return `0 ${$hasTrailingAction ? `${getInputPaddingValue($size) + getInputIconSize($size) + 10}px` : getInputPadding($size)} 0 ${leftPadding}`;
133
+ /**
134
+ * End inset when `trailing` is set or `isClearable`: equal to the vertical gap around the clear
135
+ * button. The `0.5px` hairline is subtracted, because the frame's border adds to the end padding
136
+ * but the vertical gap already includes it (the button is centered inside the border).
137
+ */
138
+ var INPUT_SIZE_TO_TRAILING_INSET_CSS_MAP = {
139
+ ["X_SMALL"]: "gx-Input-X_SMALL-xxkw71w",
140
+ ["SMALL"]: "gx-Input-SMALL-s17zpwrs",
141
+ ["MEDIUM"]: "gx-Input-MEDIUM-m73yd93",
142
+ ["LARGE"]: "gx-Input-LARGE-laix6ny",
143
+ ["X_LARGE"]: "gx-Input-X_LARGE-x3ne53q"
161
144
  };
162
- var _exp1 = () => ({ $isDisabled }) => $isDisabled ? .5 : 1;
163
- var _exp10 = () => ({ theme, $variant }) => getInputBorderColor(theme, $variant);
164
- var _exp11 = () => ({ theme }) => theme.color.border.selected;
165
- var _exp12 = () => ({ theme }) => theme.color.text.tertiary;
166
- var StyledInput = withTheme(/*#__PURE__*/ styled("input")({
167
- name: "StyledInput",
168
- class: "s1bxp24n",
169
- propsAsIs: false,
170
- vars: {
171
- "s1bxp24n-0": [_exp()],
172
- "s1bxp24n-1": [_exp2()],
173
- "s1bxp24n-2": [_exp3()],
174
- "s1bxp24n-3": [_exp4()],
175
- "s1bxp24n-4": [_exp5()],
176
- "s1bxp24n-5": [_exp6()],
177
- "s1bxp24n-6": [_exp7()],
178
- "s1bxp24n-7": [_exp8()],
179
- "s1bxp24n-8": [_exp9()],
180
- "s1bxp24n-9": [_exp0()],
181
- "s1bxp24n-10": [_exp1()],
182
- "s1bxp24n-11": [_exp10()],
183
- "s1bxp24n-12": [_exp11()],
184
- "s1bxp24n-13": [_exp12()]
185
- }
186
- }));
187
- var _exp13 = () => ({ $fillWidth, $width }) => $fillWidth ? "100%" : $width ? getCssSizeValue($width) : "auto";
188
- var InputContainer = /*#__PURE__*/ styled("div")({
189
- name: "InputContainer",
190
- class: "ixmrsxd",
191
- propsAsIs: false,
192
- vars: { "ixmrsxd-0": [_exp13()] }
193
- });
194
- var _exp14 = () => ({ $size }) => getInputPadding($size);
195
- var LeadingIconWrapper = withTheme(/*#__PURE__*/ styled("div")({
196
- name: "LeadingIconWrapper",
197
- class: "l8jap54",
198
- propsAsIs: false,
199
- vars: { "l8jap54-0": [_exp14()] }
200
- }));
201
- var _exp15 = () => ({ $size }) => getInputPadding($size);
202
- var _exp16 = () => ({ $isDisabled }) => $isDisabled ? "not-allowed" : "pointer";
203
- var TrailingActionButton = /*#__PURE__*/ styled("button")({
204
- name: "TrailingActionButton",
205
- class: "t16cwjje",
206
- propsAsIs: false,
207
- vars: {
208
- "t16cwjje-0": [_exp15()],
209
- "t16cwjje-1": [_exp16()]
145
+ /**
146
+ * Hover on an editable field: `border.hovered` (stronger than `border.primary` in both themes,
147
+ * Constitution III.6).
148
+ */
149
+ var INPUT_VARIANT_TO_HOVER_CSS_MAP = {
150
+ ["BASE"]: "gx-Input-BASE-b16arvuc",
151
+ ["PRIMARY"]: "gx-Input-PRIMARY-pr1g7kx",
152
+ ["SECONDARY"]: "gx-Input-SECONDARY-s1pzdsn8",
153
+ ["TERTIARY"]: "gx-Input-TERTIARY-t1xoy9v8"
154
+ };
155
+ /** Hover on an editable ghost field: the frame appears, `border.hovered` with no fill. */
156
+ var GHOST_HOVER_CSS = "gx-Input-GHOST_HOVER_CSS-g6g85zv";
157
+ /** Error border at rest, on hover and with focus (the 1px inset focus line is red too). */
158
+ var ERROR_CSS = "gx-Input-ERROR_CSS-e1e4v88v";
159
+ /**
160
+ * Disabled: the variant's resting fill and hairline are kept (`border.disabled` is not used on
161
+ * frames); the field reads as disabled through `text.disabled` / `text.disabled` and the cursor.
162
+ */
163
+ var DISABLED_CSS = "gx-Input-DISABLED_CSS-d1d35fia";
164
+ /** Stretch to the parent's width (frame, and the `Field` wrapper when there is one). */
165
+ var FILL_WIDTH_CSS = "gx-Input-FILL_WIDTH_CSS-f1jgakl6";
166
+ /**
167
+ * The value's type per family and rung. `height` equals the line height, so the value centers on
168
+ * whole pixels in every rung; mono uses its ~0.92× sizes with the same line heights.
169
+ */
170
+ var INPUT_FAMILY_TO_SIZE_CSS_MAP = {
171
+ [FontFamily.SANS]: {
172
+ ["X_SMALL"]: "gx-Input-X_SMALL-x1iku50u",
173
+ ["SMALL"]: "gx-Input-SMALL-s1gabvh6",
174
+ ["MEDIUM"]: "gx-Input-MEDIUM-m1niie6",
175
+ ["LARGE"]: "gx-Input-LARGE-l1x6769h",
176
+ ["X_LARGE"]: "gx-Input-X_LARGE-x1jooqdg"
177
+ },
178
+ [FontFamily.MONO]: {
179
+ ["X_SMALL"]: "gx-Input-X_SMALL-x1hsdcy6",
180
+ ["SMALL"]: "gx-Input-SMALL-s1qh8eqy",
181
+ ["MEDIUM"]: "gx-Input-MEDIUM-m1g40gnd",
182
+ ["LARGE"]: "gx-Input-LARGE-l148eler",
183
+ ["X_LARGE"]: "gx-Input-X_LARGE-x734zbi"
210
184
  }
211
- });
185
+ };
186
+ /** Leading icon px per rung: one step below the rung's III-A.4 icon (Mitch, 2026-10-04). */
187
+ var INPUT_SIZE_TO_ICON_PX_MAP = {
188
+ ["X_SMALL"]: 12,
189
+ ["SMALL"]: 12,
190
+ ["MEDIUM"]: 14,
191
+ ["LARGE"]: 14,
192
+ ["X_LARGE"]: 16
193
+ };
194
+ /** Prefix and suffix step per rung (the canonical control text). */
195
+ var INPUT_SIZE_TO_TEXT_SIZE_MAP = {
196
+ ["X_SMALL"]: TextSize.CAPTION,
197
+ ["SMALL"]: TextSize.BODY_SM,
198
+ ["MEDIUM"]: TextSize.BODY_MD,
199
+ ["LARGE"]: TextSize.BODY_LG,
200
+ ["X_LARGE"]: TextSize.BODY_LG
201
+ };
212
202
  /**
213
- * The generic text field every typed input wraps. Renders the label, the field,
214
- * the leading/trailing affordances and the error line.
215
- *
216
- * Prefer a concrete wrapper — `TextInput`, `PasswordInput`, `NumberInput` — which
217
- * pin `type` and `parse` for you. Use this directly only for a value type none of
218
- * them cover.
203
+ * In-field button rung: 20px up to MEDIUM, 24px for LARGE and X_LARGE. Shared with the inputs that
204
+ * put a button inside Input's frame (PasswordInput, NumberInput, CopyInput).
205
+ */
206
+ var INPUT_SIZE_TO_BUTTON_SIZE_MAP = {
207
+ ["X_SMALL"]: ButtonSize.X_SMALL,
208
+ ["SMALL"]: ButtonSize.X_SMALL,
209
+ ["MEDIUM"]: ButtonSize.X_SMALL,
210
+ ["LARGE"]: ButtonSize.SMALL,
211
+ ["X_LARGE"]: ButtonSize.SMALL
212
+ };
213
+ /**
214
+ * The gap between the in-field parts per rung, as a `Space` (the value `INPUT_SIZE_TO_CSS_MAP`
215
+ * draws). For an input that lays out its own trailing parts beside the clear button (SearchInput).
219
216
  */
220
- var Input = forwardRef(({ parse, onChange, variant = "PRIMARY", size = "MEDIUM", type, value, label, labelTooltip, error, isError, placeholder, leading, trailing, isRequired, isDisabled, autoFocus, min, max, step, onFocus, onBlur, onKeyDown, width, fillWidth, isMonospace }, ref) => {
221
- const handleChange = (e) => {
222
- onChange(parse(e.target.value));
217
+ var INPUT_SIZE_TO_GAP_MAP = {
218
+ ["X_SMALL"]: 4,
219
+ ["SMALL"]: 4,
220
+ ["MEDIUM"]: 8,
221
+ ["LARGE"]: 8,
222
+ ["X_LARGE"]: 8
223
+ };
224
+ /** The `Field` an Input renders for its own `label` / `error` uses the same rung. */
225
+ var INPUT_SIZE_TO_FIELD_SIZE_MAP = {
226
+ ["X_SMALL"]: FieldSize.X_SMALL,
227
+ ["SMALL"]: FieldSize.SMALL,
228
+ ["MEDIUM"]: FieldSize.MEDIUM,
229
+ ["LARGE"]: FieldSize.LARGE,
230
+ ["X_LARGE"]: FieldSize.X_LARGE
231
+ };
232
+ /** The frame and the `<input>`, wired to the nearest Field (the Input's own or the app's). */
233
+ function InputFrame({ inputProps, forwardedRef, isRoot }) {
234
+ const { type, value, defaultValue = "", onChange, onEnter, size = "MEDIUM", variant = "PRIMARY", isGhost = false, label: _label, placeholder, error, isError = false, icon, leading, trailing, prefix, suffix, isClearable = false, isDisabled = false, isReadOnly = false, isRequired = false, family = FontFamily.SANS, fillWidth = false, ariaLabel, autoComplete = "off", onKeyDown, id, "aria-describedby": ariaDescribedBy, className, style, ...rest } = inputProps;
235
+ const isBare = useIsBareField();
236
+ const hasPrefix = isFilled(prefix);
237
+ const hasSuffix = isFilled(suffix);
238
+ const { controlId: inputId, describedBy, isInvalid, isRequired: isRequiredState, hasName } = useFieldWiring({
239
+ id,
240
+ ariaLabel,
241
+ ariaLabelAttribute: rest["aria-label"],
242
+ ariaLabelledBy: rest["aria-labelledby"],
243
+ ariaDescribedBy,
244
+ describedByIds: (controlId) => [hasPrefix && `${controlId}-prefix`, hasSuffix && `${controlId}-suffix`],
245
+ error,
246
+ isError,
247
+ isRequired
248
+ });
249
+ const prefixId = `${inputId}-prefix`;
250
+ const suffixId = `${inputId}-suffix`;
251
+ const innerRef = useRef(null);
252
+ const mergedRef = useMergeRefs([innerRef, forwardedRef]);
253
+ const [currentValue, setValue] = useControlledState({
254
+ value,
255
+ defaultValue,
256
+ onChange
257
+ });
258
+ const hasLeading = hasContent(leading);
259
+ const hasTrailing = hasContent(trailing);
260
+ const isEditable = !isDisabled && !isReadOnly;
261
+ const isClearHidden = currentValue === "" || !isEditable;
262
+ useDevWarning(!hasName, "[@galaxy-io/dls] Input has no accessible name. Pass `label`, wrap it in a labelled `Field`, or set `ariaLabel`. `placeholder` is not a name.");
263
+ /** Clicking the icon, prefix, suffix or padding focuses the field. */
264
+ const handleFrameMouseDown = (event) => {
265
+ const interactive = event.target.closest("input, button, a, [tabindex]");
266
+ if (interactive !== null && event.currentTarget.contains(interactive)) return;
267
+ event.preventDefault();
268
+ innerRef.current?.focus();
223
269
  };
224
- const hasLeading = !!leading?.icon;
225
- const hasTrailing = !!trailing?.icon;
226
- return /* @__PURE__ */ jsxs(FlexWrapper, {
227
- direction: FlexDirection.COLUMN,
228
- gap: 4,
229
- fillWidth,
270
+ const handleChange = (event) => setValue(event.target.value);
271
+ const handleKeyDown = (event) => {
272
+ onKeyDown?.(event);
273
+ if (event.key === "Enter" && !event.nativeEvent.isComposing && !event.defaultPrevented) onEnter?.(event.currentTarget.value);
274
+ };
275
+ const clear = () => {
276
+ setValue("");
277
+ innerRef.current?.focus();
278
+ };
279
+ const textSize = INPUT_SIZE_TO_TEXT_SIZE_MAP[size];
280
+ const affixVariant = isDisabled ? TextVariant.DISABLED : TextVariant.TERTIARY;
281
+ return /* @__PURE__ */ jsxs(Frame, {
282
+ "data-gx-anchor": "",
283
+ onMouseDown: handleFrameMouseDown,
284
+ className: cx(isGhost ? GHOST_CSS : INPUT_VARIANT_TO_CSS_MAP[variant], INPUT_SIZE_TO_CSS_MAP[size], hasLeading && INPUT_SIZE_TO_LEADING_INSET_CSS_MAP[size], (hasTrailing || isClearable) && INPUT_SIZE_TO_TRAILING_INSET_CSS_MAP[size], isEditable && !isInvalid && (isGhost ? GHOST_HOVER_CSS : INPUT_VARIANT_TO_HOVER_CSS_MAP[variant]), isInvalid && !isDisabled && ERROR_CSS, isDisabled && DISABLED_CSS, fillWidth && FILL_WIDTH_CSS, isBare && "gx-bareField-BARE_FIELD_CSS-b1memido", isBare && "gx-bareField-BARE_INPUT_CSS-bq8fkxg", isRoot ? className : void 0),
285
+ ...rootStyle(isRoot, style),
230
286
  children: [
231
- label && /* @__PURE__ */ jsx(InputLabel, {
232
- label,
233
- labelTooltip,
234
- isRequired
287
+ hasLeading && /* @__PURE__ */ jsx(Slot, { children: leading }),
288
+ icon !== void 0 && /* @__PURE__ */ jsx(Icon, {
289
+ component: icon,
290
+ size: INPUT_SIZE_TO_ICON_PX_MAP[size],
291
+ variant: isDisabled ? IconVariant.DISABLED : IconVariant.SECONDARY,
292
+ "aria-hidden": true
235
293
  }),
236
- /* @__PURE__ */ jsxs(InputContainer, {
237
- $width: width,
238
- $fillWidth: fillWidth,
239
- children: [
240
- hasLeading && /* @__PURE__ */ jsx(LeadingIconWrapper, {
241
- $size: size,
242
- children: /* @__PURE__ */ jsx(Icon, {
243
- component: leading.icon,
244
- variant: isDisabled ? IconVariant.DISABLED : IconVariant.SECONDARY,
245
- size: getInputIconSize(size)
246
- })
247
- }),
248
- /* @__PURE__ */ jsx(StyledInput, {
249
- $size: size,
250
- $variant: variant,
251
- $width: width,
252
- $fillWidth: fillWidth || hasLeading || hasTrailing,
253
- $isError: isError || !!error,
254
- $hasLeadingIcon: hasLeading,
255
- $hasTrailingAction: hasTrailing,
256
- $isMonospace: isMonospace,
257
- ref,
258
- type,
259
- placeholder,
260
- value: value?.toString() ?? "",
261
- required: isRequired,
262
- $isDisabled: isDisabled,
263
- disabled: isDisabled,
264
- onChange: handleChange,
265
- autoComplete: "off",
266
- autoCorrect: "off",
267
- min,
268
- max,
269
- step,
270
- autoFocus,
271
- onFocus,
272
- onBlur,
273
- onKeyDown
274
- }),
275
- hasTrailing && /* @__PURE__ */ jsx(TrailingActionButton, {
276
- onClick: trailing.onClick,
277
- $size: size,
278
- $isDisabled: isDisabled || trailing.isDisabled,
279
- disabled: isDisabled || trailing.isDisabled,
280
- children: /* @__PURE__ */ jsx(Icon, {
281
- component: trailing.icon,
282
- variant: IconVariant.SECONDARY,
283
- size: getInputIconSize(size)
284
- })
285
- })
286
- ]
294
+ /* @__PURE__ */ jsxs(TextGroup, { children: [
295
+ hasPrefix && /* @__PURE__ */ jsx(Text, {
296
+ as: "span",
297
+ id: prefixId,
298
+ size: textSize,
299
+ family,
300
+ variant: affixVariant,
301
+ className: AFFIX_CSS,
302
+ children: prefix
303
+ }),
304
+ /* @__PURE__ */ jsx(Control, {
305
+ ref: mergedRef,
306
+ id: inputId,
307
+ type,
308
+ value: currentValue,
309
+ onChange: handleChange,
310
+ onKeyDown: handleKeyDown,
311
+ placeholder,
312
+ disabled: isDisabled,
313
+ readOnly: isReadOnly,
314
+ autoComplete,
315
+ autoCorrect: "off",
316
+ "aria-label": ariaLabel,
317
+ "aria-describedby": describedBy,
318
+ "aria-invalid": isInvalid ? true : void 0,
319
+ "aria-required": isRequiredState ? true : void 0,
320
+ className: INPUT_FAMILY_TO_SIZE_CSS_MAP[family][size],
321
+ ...rest
322
+ }),
323
+ hasSuffix && /* @__PURE__ */ jsx(Text, {
324
+ as: "span",
325
+ id: suffixId,
326
+ size: textSize,
327
+ family,
328
+ variant: affixVariant,
329
+ className: AFFIX_CSS,
330
+ children: suffix
331
+ })
332
+ ] }),
333
+ isClearable && /* @__PURE__ */ jsx(ClearSlot, {
334
+ className: cx(isClearHidden && CLEAR_HIDDEN_CSS),
335
+ children: /* @__PURE__ */ jsx(Button, {
336
+ variant: ButtonVariant.TERTIARY,
337
+ size: INPUT_SIZE_TO_BUTTON_SIZE_MAP[size],
338
+ icon: XIcon,
339
+ ariaLabel: "Clear",
340
+ onClick: clear,
341
+ className: cx(size === "X_SMALL" && "gx-innerButton-X_SMALL_INNER_BUTTON_CSS-x1ep0pcd")
342
+ })
287
343
  }),
288
- error && /* @__PURE__ */ jsx(Text, {
289
- size: TextSize.BODY_SM,
290
- variant: TextVariant.ERROR,
291
- children: error
292
- })
344
+ hasTrailing && /* @__PURE__ */ jsx(Slot, { children: trailing })
293
345
  ]
294
346
  });
347
+ }
348
+ /** The single-line text field frame every text-like input wraps. Apps render `TextInput`. */
349
+ var Input = forwardRef(function Input(props, ref) {
350
+ const { label, error, isRequired = false, size = "MEDIUM", fillWidth = false } = props;
351
+ const { id, className, style } = props;
352
+ const ownField = useOwnField({
353
+ componentName: "Input",
354
+ label,
355
+ error,
356
+ isRequired,
357
+ size: INPUT_SIZE_TO_FIELD_SIZE_MAP[size],
358
+ id,
359
+ className,
360
+ style,
361
+ rootClassName: fillWidth && FILL_WIDTH_CSS
362
+ });
363
+ if (ownField !== null) return /* @__PURE__ */ jsx(Field, {
364
+ ...ownField,
365
+ children: /* @__PURE__ */ jsx(InputFrame, {
366
+ inputProps: props,
367
+ forwardedRef: ref,
368
+ isRoot: false
369
+ })
370
+ });
371
+ return /* @__PURE__ */ jsx(InputFrame, {
372
+ inputProps: props,
373
+ forwardedRef: ref,
374
+ isRoot: true
375
+ });
295
376
  });
296
- var InputWithDisplayName = Input;
297
- InputWithDisplayName.displayName = "Input";
377
+ Input.displayName = "Input";
298
378
  //#endregion
299
- export { InputLabel, InputSize, InputVariant, StyledInput, Input as default, getInputBorderColor, getInputControlSize, getInputFontSize, getInputHeight, getInputHeightValue, getInputIconSize, getInputLineHeight, getInputPadding, getInputPaddingValue, getInputSurfaceColor, getInputTextSize };
379
+ export { INPUT_SIZE_TO_BUTTON_SIZE_MAP, INPUT_SIZE_TO_GAP_MAP, InputSize, InputVariant, Input as default };