@galaxy-io/dls 1.6.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (538) hide show
  1. package/README.md +47 -50
  2. package/biome/index.json +74 -0
  3. package/biome/plugins/no-hex-literal.grit +20 -0
  4. package/biome/plugins/no-inline-style.grit +13 -0
  5. package/biome/plugins/no-margin.grit +9 -0
  6. package/biome/plugins/warn/no-hex-literal.grit +23 -0
  7. package/biome/plugins/warn/no-inline-style.grit +13 -0
  8. package/biome/plugins/warn/no-margin.grit +9 -0
  9. package/dist/a11y/FocusScope.d.ts +44 -0
  10. package/dist/a11y/FocusScope.js +229 -0
  11. package/dist/a11y/VisuallyHidden.d.ts +21 -0
  12. package/dist/a11y/VisuallyHidden.js +30 -0
  13. package/dist/avatar/Avatar.d.ts +56 -14
  14. package/dist/avatar/Avatar.js +250 -96
  15. package/dist/avatar/AvatarGroup.d.ts +43 -0
  16. package/dist/avatar/AvatarGroup.js +153 -0
  17. package/dist/backgrounds/GridBackground.d.ts +48 -0
  18. package/dist/backgrounds/GridBackground.js +146 -0
  19. package/dist/beacons/Beacon.d.ts +86 -22
  20. package/dist/beacons/Beacon.js +170 -47
  21. package/dist/brand/GalaxyFilamentWordmark.d.ts +30 -0
  22. package/dist/brand/GalaxyFilamentWordmark.js +39 -0
  23. package/dist/brand/GalaxyLogomark.d.ts +26 -0
  24. package/dist/brand/GalaxyLogomark.js +41 -0
  25. package/dist/brand/GalaxyLogomarkAnimation.d.ts +36 -0
  26. package/dist/brand/GalaxyLogomarkAnimation.js +107 -0
  27. package/dist/brand/GalaxyWordmark.d.ts +30 -0
  28. package/dist/brand/GalaxyWordmark.js +63 -0
  29. package/dist/brand/assets/galaxy-logomark-animation.js +136678 -0
  30. package/dist/brand/brandMark.d.ts +26 -0
  31. package/dist/brand/brandMark.js +35 -0
  32. package/dist/buttons/Button.d.ts +148 -59
  33. package/dist/buttons/Button.js +437 -227
  34. package/dist/buttons/ButtonGroup.d.ts +38 -0
  35. package/dist/buttons/ButtonGroup.js +68 -0
  36. package/dist/buttons/CopyButton.d.ts +77 -0
  37. package/dist/buttons/CopyButton.js +65 -0
  38. package/dist/charts/AreaChart.d.ts +49 -0
  39. package/dist/charts/AreaChart.js +31 -0
  40. package/dist/charts/BarChart.d.ts +54 -67
  41. package/dist/charts/BarChart.js +136 -116
  42. package/dist/charts/ChartAxis.d.ts +35 -40
  43. package/dist/charts/ChartAxis.js +114 -90
  44. package/dist/charts/ChartCategoryTargets.d.ts +12 -26
  45. package/dist/charts/ChartCategoryTargets.js +32 -20
  46. package/dist/charts/ChartFrame.d.ts +69 -116
  47. package/dist/charts/ChartFrame.js +253 -119
  48. package/dist/charts/ChartGroupProvider.d.ts +30 -41
  49. package/dist/charts/ChartGroupProvider.js +20 -7
  50. package/dist/charts/ChartLegend.d.ts +27 -48
  51. package/dist/charts/ChartLegend.js +206 -125
  52. package/dist/charts/ChartMarkTargets.d.ts +12 -28
  53. package/dist/charts/ChartMarkTargets.js +33 -20
  54. package/dist/charts/ChartPrimitives.d.ts +50 -305
  55. package/dist/charts/ChartPrimitives.js +65 -413
  56. package/dist/charts/ChartTooltip.d.ts +20 -26
  57. package/dist/charts/ChartTooltip.js +77 -40
  58. package/dist/charts/Heatmap.d.ts +35 -0
  59. package/dist/charts/Heatmap.js +295 -0
  60. package/dist/charts/LineChart.d.ts +54 -47
  61. package/dist/charts/LineChart.js +159 -117
  62. package/dist/charts/PieChart.d.ts +32 -53
  63. package/dist/charts/PieChart.js +149 -135
  64. package/dist/charts/Sparkline.d.ts +107 -0
  65. package/dist/charts/Sparkline.js +244 -0
  66. package/dist/charts/StatChart.d.ts +37 -13
  67. package/dist/charts/StatChart.js +82 -35
  68. package/dist/charts/barChartGeometry.d.ts +138 -86
  69. package/dist/charts/barChartGeometry.js +122 -101
  70. package/dist/charts/barChartLegend.d.ts +14 -18
  71. package/dist/charts/barChartLegend.js +18 -13
  72. package/dist/charts/chartFormat.d.ts +12 -18
  73. package/dist/charts/chartFormat.js +20 -52
  74. package/dist/charts/chartPalette.d.ts +33 -0
  75. package/dist/charts/chartPalette.js +68 -0
  76. package/dist/charts/chartScales.d.ts +41 -108
  77. package/dist/charts/chartScales.js +62 -128
  78. package/dist/charts/constants.d.ts +96 -256
  79. package/dist/charts/constants.js +105 -275
  80. package/dist/charts/heatmapGeometry.d.ts +95 -0
  81. package/dist/charts/heatmapGeometry.js +155 -0
  82. package/dist/charts/lineChartGeometry.d.ts +108 -58
  83. package/dist/charts/lineChartGeometry.js +120 -78
  84. package/dist/charts/pieChartGeometry.d.ts +66 -40
  85. package/dist/charts/pieChartGeometry.js +68 -38
  86. package/dist/charts/types.d.ts +197 -466
  87. package/dist/charts/types.js +55 -144
  88. package/dist/charts/useCartesianChartLayout.d.ts +28 -59
  89. package/dist/charts/useCartesianChartLayout.js +47 -32
  90. package/dist/charts/useChartDimensions.d.ts +19 -40
  91. package/dist/charts/useChartDimensions.js +40 -56
  92. package/dist/charts/useChartFormatters.d.ts +6 -15
  93. package/dist/charts/useChartFormatters.js +4 -9
  94. package/dist/charts/useChartInteraction.d.ts +47 -116
  95. package/dist/charts/useChartInteraction.js +95 -71
  96. package/dist/charts/useChartTooltipPosition.d.ts +29 -39
  97. package/dist/charts/useChartTooltipPosition.js +14 -5
  98. package/dist/charts/useSeriesColorResolver.d.ts +11 -33
  99. package/dist/charts/useSeriesColorResolver.js +19 -12
  100. package/dist/chips/Chip.d.ts +155 -44
  101. package/dist/chips/Chip.js +329 -155
  102. package/dist/chips/ChipGroup.d.ts +53 -0
  103. package/dist/chips/ChipGroup.js +98 -0
  104. package/dist/drawer/Drawer.d.ts +81 -17
  105. package/dist/drawer/Drawer.js +370 -65
  106. package/dist/dropdown/Dropdown.d.ts +80 -63
  107. package/dist/dropdown/Dropdown.js +127 -129
  108. package/dist/editor/CodeEditor.d.ts +119 -40
  109. package/dist/editor/CodeEditor.js +490 -400
  110. package/dist/editor/CodeEditorReactWidget.d.ts +20 -17
  111. package/dist/editor/CodeEditorReactWidget.js +28 -21
  112. package/dist/feedback/Alert.d.ts +49 -0
  113. package/dist/feedback/Alert.js +172 -0
  114. package/dist/feedback/EmptyState.d.ts +39 -0
  115. package/dist/feedback/EmptyState.js +109 -0
  116. package/dist/feedback/ProgressBar.d.ts +125 -0
  117. package/dist/feedback/ProgressBar.js +183 -0
  118. package/dist/feedback/ProgressCircle.d.ts +99 -0
  119. package/dist/feedback/ProgressCircle.js +187 -0
  120. package/dist/feedback/Skeleton.d.ts +69 -0
  121. package/dist/feedback/Skeleton.js +130 -0
  122. package/dist/feedback/Spinner.d.ts +63 -0
  123. package/dist/feedback/Spinner.js +141 -0
  124. package/dist/fonts.css +70 -0
  125. package/dist/hooks/internal/useIsClient.d.ts +2 -0
  126. package/dist/hooks/internal/useIsClient.js +14 -0
  127. package/dist/hooks/useClipboard.d.ts +19 -0
  128. package/dist/hooks/useClipboard.js +45 -0
  129. package/dist/hooks/useControlledOpenState.d.ts +21 -0
  130. package/dist/hooks/useControlledOpenState.js +19 -0
  131. package/dist/hooks/useControlledState.d.ts +19 -0
  132. package/dist/hooks/useControlledState.js +22 -0
  133. package/dist/hooks/useDebouncedValue.d.ts +14 -0
  134. package/dist/hooks/useDebouncedValue.js +33 -0
  135. package/dist/hooks/useDisclosure.d.ts +26 -0
  136. package/dist/hooks/useDisclosure.js +36 -0
  137. package/dist/hooks/useDismiss.d.ts +23 -27
  138. package/dist/hooks/useDismiss.js +39 -27
  139. package/dist/hooks/useElementClientSize.d.ts +10 -10
  140. package/dist/hooks/useElementClientSize.js +8 -11
  141. package/dist/hooks/useElementWidth.d.ts +6 -13
  142. package/dist/hooks/useElementWidth.js +6 -14
  143. package/dist/hooks/useField.d.ts +47 -0
  144. package/dist/hooks/useField.js +40 -0
  145. package/dist/hooks/useHotkey.d.ts +77 -0
  146. package/dist/hooks/useHotkey.js +246 -0
  147. package/dist/hooks/useIsMac.d.ts +12 -0
  148. package/dist/hooks/useIsMac.js +27 -0
  149. package/dist/hooks/useIsomorphicLayoutEffect.d.ts +17 -0
  150. package/dist/hooks/useIsomorphicLayoutEffect.js +20 -0
  151. package/dist/hooks/useLocalStorage.d.ts +28 -0
  152. package/dist/hooks/useLocalStorage.js +145 -0
  153. package/dist/hooks/useMediaQuery.d.ts +11 -0
  154. package/dist/hooks/useMediaQuery.js +23 -0
  155. package/dist/hooks/usePrefersReducedMotion.d.ts +12 -0
  156. package/dist/hooks/usePrefersReducedMotion.js +25 -0
  157. package/dist/hooks/useResize.d.ts +42 -62
  158. package/dist/hooks/useResize.js +43 -31
  159. package/dist/icons/Icon.d.ts +64 -37
  160. package/dist/icons/Icon.js +96 -37
  161. package/dist/icons/internal/IconSlot.d.ts +10 -0
  162. package/dist/icons/internal/IconSlot.js +32 -0
  163. package/dist/inputs/CheckboxGroup.d.ts +115 -0
  164. package/dist/inputs/CheckboxGroup.js +183 -0
  165. package/dist/inputs/CheckboxInput.d.ts +98 -28
  166. package/dist/inputs/CheckboxInput.js +218 -88
  167. package/dist/inputs/ColorInput.d.ts +115 -29
  168. package/dist/inputs/ColorInput.js +748 -326
  169. package/dist/inputs/CopyInput.d.ts +49 -20
  170. package/dist/inputs/CopyInput.js +57 -49
  171. package/dist/inputs/CronInput.d.ts +94 -0
  172. package/dist/inputs/CronInput.js +618 -0
  173. package/dist/inputs/DateInput.d.ts +175 -28
  174. package/dist/inputs/DateInput.js +1109 -451
  175. package/dist/inputs/DurationInput.d.ts +101 -0
  176. package/dist/inputs/DurationInput.js +441 -0
  177. package/dist/inputs/Field.d.ts +75 -0
  178. package/dist/inputs/Field.js +247 -0
  179. package/dist/inputs/Fieldset.d.ts +53 -0
  180. package/dist/inputs/Fieldset.js +149 -0
  181. package/dist/inputs/FileInput.d.ts +110 -0
  182. package/dist/inputs/FileInput.js +476 -0
  183. package/dist/inputs/Input.d.ts +148 -187
  184. package/dist/inputs/Input.js +339 -259
  185. package/dist/inputs/KeyValueInput.d.ts +120 -0
  186. package/dist/inputs/KeyValueInput.js +383 -0
  187. package/dist/inputs/MultiSelectInput.d.ts +165 -54
  188. package/dist/inputs/MultiSelectInput.js +175 -559
  189. package/dist/inputs/NumberInput.d.ts +65 -9
  190. package/dist/inputs/NumberInput.js +197 -40
  191. package/dist/inputs/PasswordInput.d.ts +17 -12
  192. package/dist/inputs/PasswordInput.js +33 -33
  193. package/dist/inputs/PinInput.d.ts +117 -0
  194. package/dist/inputs/PinInput.js +364 -0
  195. package/dist/inputs/RadioGroup.d.ts +115 -0
  196. package/dist/inputs/RadioGroup.js +179 -0
  197. package/dist/inputs/RadioInput.d.ts +87 -24
  198. package/dist/inputs/RadioInput.js +182 -95
  199. package/dist/inputs/SearchInput.d.ts +66 -0
  200. package/dist/inputs/SearchInput.js +156 -0
  201. package/dist/inputs/SelectInput.d.ts +195 -55
  202. package/dist/inputs/SelectInput.js +1308 -446
  203. package/dist/inputs/SliderInput.d.ts +150 -30
  204. package/dist/inputs/SliderInput.js +441 -186
  205. package/dist/inputs/SwitchInput.d.ts +109 -0
  206. package/dist/inputs/SwitchInput.js +248 -0
  207. package/dist/inputs/TagInput.d.ts +117 -0
  208. package/dist/inputs/TagInput.js +408 -0
  209. package/dist/inputs/TextAreaInput.d.ts +146 -44
  210. package/dist/inputs/TextAreaInput.js +292 -198
  211. package/dist/inputs/TextInput.d.ts +4 -13
  212. package/dist/inputs/TextInput.js +13 -48
  213. package/dist/inputs/ToggleInput.d.ts +120 -22
  214. package/dist/inputs/ToggleInput.js +262 -116
  215. package/dist/inputs/internal/bareField.d.ts +18 -0
  216. package/dist/inputs/internal/bareField.js +38 -0
  217. package/dist/inputs/internal/devWarn.d.ts +7 -0
  218. package/dist/inputs/internal/devWarn.js +30 -0
  219. package/dist/inputs/internal/fieldFrame.d.ts +34 -0
  220. package/dist/inputs/internal/fieldFrame.js +64 -0
  221. package/dist/inputs/internal/fieldWiring.d.ts +50 -0
  222. package/dist/inputs/internal/fieldWiring.js +38 -0
  223. package/dist/inputs/internal/innerButton.d.ts +2 -0
  224. package/dist/inputs/internal/innerButton.js +24 -0
  225. package/dist/inputs/internal/ownField.d.ts +45 -0
  226. package/dist/inputs/internal/ownField.js +58 -0
  227. package/dist/inputs/internal/predicates.d.ts +9 -0
  228. package/dist/inputs/internal/predicates.js +11 -0
  229. package/dist/inputs/internal/useComboboxPopover.d.ts +46 -0
  230. package/dist/inputs/internal/useComboboxPopover.js +92 -0
  231. package/dist/json/JsonViewer.d.ts +62 -0
  232. package/dist/json/JsonViewer.js +483 -0
  233. package/dist/layout/Box.d.ts +87 -0
  234. package/dist/layout/Box.js +109 -0
  235. package/dist/layout/Divider.d.ts +25 -0
  236. package/dist/layout/Divider.js +70 -0
  237. package/dist/layout/Flex.d.ts +139 -0
  238. package/dist/layout/Flex.js +165 -0
  239. package/dist/layout/FlexItem.d.ts +72 -0
  240. package/dist/layout/FlexItem.js +84 -0
  241. package/dist/layout/Grid.d.ts +140 -0
  242. package/dist/layout/Grid.js +178 -0
  243. package/dist/layout/Portal.d.ts +29 -0
  244. package/dist/layout/Portal.js +27 -0
  245. package/dist/layout/ResizablePanels.d.ts +88 -0
  246. package/dist/layout/ResizablePanels.js +198 -0
  247. package/dist/layout/ResizeHandle.d.ts +48 -0
  248. package/dist/layout/ResizeHandle.js +143 -0
  249. package/dist/layout/ScrollArea.d.ts +30 -0
  250. package/dist/layout/ScrollArea.js +138 -0
  251. package/dist/links/Link.d.ts +101 -1
  252. package/dist/links/Link.js +166 -4
  253. package/dist/lists/BulletedList.d.ts +25 -7
  254. package/dist/lists/BulletedList.js +72 -27
  255. package/dist/lists/DescriptionList.d.ts +91 -0
  256. package/dist/lists/DescriptionList.js +147 -0
  257. package/dist/menu/ContextMenu.d.ts +64 -0
  258. package/dist/menu/ContextMenu.js +34 -0
  259. package/dist/menu/Menu.d.ts +280 -0
  260. package/dist/menu/Menu.js +1003 -0
  261. package/dist/modal/ConfirmDialog.d.ts +55 -0
  262. package/dist/modal/ConfirmDialog.js +151 -0
  263. package/dist/modal/Modal.d.ts +64 -14
  264. package/dist/modal/Modal.js +189 -48
  265. package/dist/navigation/Breadcrumbs.d.ts +65 -0
  266. package/dist/navigation/Breadcrumbs.js +243 -0
  267. package/dist/navigation/CommandPalette.d.ts +83 -0
  268. package/dist/navigation/CommandPalette.js +509 -0
  269. package/dist/navigation/Pagination.d.ts +87 -0
  270. package/dist/navigation/Pagination.js +300 -0
  271. package/dist/navigation/SidebarNav.d.ts +107 -0
  272. package/dist/navigation/SidebarNav.js +341 -0
  273. package/dist/navigation/Stepper.d.ts +52 -0
  274. package/dist/navigation/Stepper.js +207 -0
  275. package/dist/navigation/Tabs.d.ts +113 -0
  276. package/dist/navigation/Tabs.js +543 -0
  277. package/dist/navigation/Topbar.d.ts +20 -0
  278. package/dist/navigation/Topbar.js +62 -0
  279. package/dist/overlay/OverlayProvider.d.ts +28 -32
  280. package/dist/overlay/OverlayProvider.js +42 -93
  281. package/dist/overlay/useOverlay.d.ts +88 -12
  282. package/dist/overlay/useOverlay.js +220 -43
  283. package/dist/overlays/Popover.d.ts +114 -0
  284. package/dist/overlays/Popover.js +389 -0
  285. package/dist/shapes/Circle.d.ts +84 -8
  286. package/dist/shapes/Circle.js +122 -20
  287. package/dist/shapes/Square.d.ts +84 -8
  288. package/dist/shapes/Square.js +123 -20
  289. package/dist/styles/mixins.d.ts +35 -0
  290. package/dist/styles/mixins.js +60 -0
  291. package/dist/styles.css +1 -202
  292. package/dist/table/InfiniteSpreadsheet.d.ts +140 -10
  293. package/dist/table/InfiniteSpreadsheet.js +762 -225
  294. package/dist/table/InfiniteTable.d.ts +116 -14
  295. package/dist/table/InfiniteTable.js +287 -429
  296. package/dist/table/SpreadsheetCellEditor.d.ts +54 -6
  297. package/dist/table/SpreadsheetCellEditor.js +163 -84
  298. package/dist/table/TableCore.d.ts +252 -0
  299. package/dist/table/TableCore.js +1077 -0
  300. package/dist/table/VirtualizedInfiniteTable.d.ts +104 -14
  301. package/dist/table/VirtualizedInfiniteTable.js +280 -219
  302. package/dist/table/types.d.ts +66 -244
  303. package/dist/table/types.js +0 -51
  304. package/dist/table/useInfiniteScrollSentinel.d.ts +25 -21
  305. package/dist/table/useInfiniteScrollSentinel.js +38 -30
  306. package/dist/table/useSpreadsheetCellNavigation.d.ts +44 -0
  307. package/dist/table/useSpreadsheetCellNavigation.js +141 -0
  308. package/dist/table/useTableColumnLayout.d.ts +90 -25
  309. package/dist/table/useTableColumnLayout.js +255 -50
  310. package/dist/table/useTableKeyboardNavigation.d.ts +32 -21
  311. package/dist/table/useTableKeyboardNavigation.js +95 -71
  312. package/dist/table/useTableRowSelection.d.ts +24 -25
  313. package/dist/table/useTableRowSelection.js +57 -84
  314. package/dist/table/useTableVirtualizer.d.ts +20 -0
  315. package/dist/table/useTableVirtualizer.js +48 -0
  316. package/dist/text/Bold.d.ts +5 -6
  317. package/dist/text/Bold.js +16 -15
  318. package/dist/text/Code.d.ts +5 -6
  319. package/dist/text/Code.js +16 -25
  320. package/dist/text/CodeBlock.d.ts +77 -0
  321. package/dist/text/CodeBlock.js +373 -0
  322. package/dist/text/EditableText.d.ts +55 -15
  323. package/dist/text/EditableText.js +153 -135
  324. package/dist/text/Ellipsis.d.ts +34 -8
  325. package/dist/text/Ellipsis.js +55 -23
  326. package/dist/text/Kbd.d.ts +72 -0
  327. package/dist/text/Kbd.js +284 -0
  328. package/dist/text/MarkdownText.d.ts +27 -10
  329. package/dist/text/MarkdownText.js +317 -300
  330. package/dist/text/RequiredMarker.d.ts +17 -5
  331. package/dist/text/RequiredMarker.js +34 -36
  332. package/dist/text/Selectable.d.ts +5 -6
  333. package/dist/text/Selectable.js +16 -13
  334. package/dist/text/Span.d.ts +82 -0
  335. package/dist/text/Span.js +115 -0
  336. package/dist/text/Text.d.ts +128 -41
  337. package/dist/text/Text.js +209 -76
  338. package/dist/theme/GalaxyProvider.d.ts +75 -0
  339. package/dist/theme/GalaxyProvider.js +223 -0
  340. package/dist/theme/ThemeSwitcher.d.ts +52 -0
  341. package/dist/theme/ThemeSwitcher.js +94 -0
  342. package/dist/theme/enums.d.ts +118 -0
  343. package/dist/theme/enums.js +144 -0
  344. package/dist/theme/tokens/dark.d.ts +2 -0
  345. package/dist/theme/tokens/dark.js +275 -0
  346. package/dist/theme/tokens/generate.d.ts +15 -0
  347. package/dist/theme/tokens/generate.js +47 -0
  348. package/dist/theme/tokens/light.d.ts +2 -0
  349. package/dist/theme/tokens/light.js +274 -0
  350. package/dist/theme/tokens/palette.d.ts +14 -0
  351. package/dist/theme/tokens/palette.js +153 -0
  352. package/dist/theme/tokens/scales.d.ts +26 -0
  353. package/dist/theme/tokens/scales.js +154 -0
  354. package/dist/theme/tokens/t.d.ts +3 -0
  355. package/dist/theme/tokens/t.js +25 -0
  356. package/dist/theme/tokens/types.d.ts +189 -0
  357. package/dist/theme/tokens/types.js +0 -0
  358. package/dist/theme/useGalaxyTheme.d.ts +46 -0
  359. package/dist/theme/useGalaxyTheme.js +36 -0
  360. package/dist/theme/useInverseScope.d.ts +18 -0
  361. package/dist/theme/useInverseScope.js +33 -0
  362. package/dist/three/GalaxyLogomark3D.d.ts +46 -0
  363. package/dist/three/GalaxyLogomark3D.js +134 -0
  364. package/dist/three/assets/galaxy-logomark.js +4 -0
  365. package/dist/three/galaxyLogomark3DScene.d.ts +27 -0
  366. package/dist/three/galaxyLogomark3DScene.js +165 -0
  367. package/dist/timeline/Timeline.d.ts +99 -0
  368. package/dist/timeline/Timeline.js +269 -0
  369. package/dist/toast/Toast.d.ts +43 -19
  370. package/dist/toast/Toast.js +130 -89
  371. package/dist/toast/ToastProvider.d.ts +23 -23
  372. package/dist/toast/ToastProvider.js +298 -101
  373. package/dist/toast/ToastViewport.d.ts +12 -0
  374. package/dist/toast/ToastViewport.js +210 -0
  375. package/dist/toast/useToast.d.ts +139 -5
  376. package/dist/toast/useToast.js +15 -13
  377. package/dist/tokens.css +654 -0
  378. package/dist/tooltip/Tooltip.d.ts +64 -44
  379. package/dist/tooltip/Tooltip.js +280 -73
  380. package/dist/tooltip/internal/LazyTooltip.d.ts +7 -0
  381. package/dist/tooltip/internal/LazyTooltip.js +53 -0
  382. package/dist/transform/Fade.d.ts +33 -11
  383. package/dist/transform/Fade.js +71 -19
  384. package/dist/transform/Flasher.d.ts +25 -0
  385. package/dist/transform/Flasher.js +39 -0
  386. package/dist/transform/Rotate.d.ts +24 -12
  387. package/dist/transform/Rotate.js +36 -22
  388. package/dist/transform/ScaleFade.d.ts +36 -11
  389. package/dist/transform/ScaleFade.js +86 -28
  390. package/dist/transform/internal/CollapseMotion.d.ts +10 -0
  391. package/dist/transform/internal/CollapseMotion.js +65 -0
  392. package/dist/tree/Tree.d.ts +85 -0
  393. package/dist/tree/Tree.js +387 -0
  394. package/dist/tree/treeRow.d.ts +39 -0
  395. package/dist/tree/treeRow.js +75 -0
  396. package/dist/utils/colors.d.ts +46 -13
  397. package/dist/utils/colors.js +92 -34
  398. package/dist/utils/css.d.ts +23 -0
  399. package/dist/utils/css.js +30 -0
  400. package/dist/utils/format.d.ts +58 -0
  401. package/dist/utils/format.js +220 -0
  402. package/dist/vite/index.d.ts +16 -0
  403. package/dist/vite/index.js +52 -0
  404. package/dist/widget/Widget.d.ts +164 -48
  405. package/dist/widget/Widget.js +335 -96
  406. package/dist/widget/WidgetGroup.d.ts +36 -0
  407. package/dist/widget/WidgetGroup.js +103 -0
  408. package/package.json +851 -157
  409. package/dist/accordion/Accordion.d.ts +0 -54
  410. package/dist/accordion/Accordion.js +0 -183
  411. package/dist/assets/components/GalaxyFilamentWordmarkDark.d.ts +0 -3
  412. package/dist/assets/components/GalaxyFilamentWordmarkDark.js +0 -14
  413. package/dist/assets/components/GalaxyFilamentWordmarkLight.d.ts +0 -3
  414. package/dist/assets/components/GalaxyFilamentWordmarkLight.js +0 -14
  415. package/dist/assets/components/GalaxyLogomarkDark.d.ts +0 -3
  416. package/dist/assets/components/GalaxyLogomarkDark.js +0 -11
  417. package/dist/assets/components/GalaxyLogomarkLight.d.ts +0 -3
  418. package/dist/assets/components/GalaxyLogomarkLight.js +0 -17
  419. package/dist/assets/components/GalaxyWordmarkDark.d.ts +0 -3
  420. package/dist/assets/components/GalaxyWordmarkDark.js +0 -15
  421. package/dist/assets/components/GalaxyWordmarkLight.d.ts +0 -3
  422. package/dist/assets/components/GalaxyWordmarkLight.js +0 -28
  423. package/dist/assets/models/galaxy-animation.js +0 -136666
  424. package/dist/assets/models/galaxy-logomark.js +0 -4
  425. package/dist/avatar/AvatarShimmer.d.ts +0 -30
  426. package/dist/avatar/AvatarShimmer.js +0 -22
  427. package/dist/backgrounds/CellGridBackground.d.ts +0 -24
  428. package/dist/backgrounds/CellGridBackground.js +0 -44
  429. package/dist/backgrounds/CrossGridBackground.d.ts +0 -26
  430. package/dist/backgrounds/CrossGridBackground.js +0 -49
  431. package/dist/backgrounds/DotGridBackground.d.ts +0 -24
  432. package/dist/backgrounds/DotGridBackground.js +0 -47
  433. package/dist/badge/Badge.d.ts +0 -42
  434. package/dist/badge/Badge.js +0 -99
  435. package/dist/charts/ChartEmptyState.d.ts +0 -17
  436. package/dist/charts/ChartEmptyState.js +0 -29
  437. package/dist/charts/ProgressBar.d.ts +0 -29
  438. package/dist/charts/ProgressBar.js +0 -65
  439. package/dist/charts/chartTheme.d.ts +0 -18
  440. package/dist/charts/chartTheme.js +0 -26
  441. package/dist/containers/FlexItem.d.ts +0 -50
  442. package/dist/containers/FlexItem.js +0 -91
  443. package/dist/containers/FlexWrapper.d.ts +0 -96
  444. package/dist/containers/FlexWrapper.js +0 -143
  445. package/dist/containers/GridWrapper.d.ts +0 -79
  446. package/dist/containers/GridWrapper.js +0 -125
  447. package/dist/containers/Spacing.d.ts +0 -23
  448. package/dist/containers/Spacing.js +0 -59
  449. package/dist/containers/Wrapper.d.ts +0 -26
  450. package/dist/containers/Wrapper.js +0 -54
  451. package/dist/dividers/HorizontalDivider.d.ts +0 -7
  452. package/dist/dividers/HorizontalDivider.js +0 -39
  453. package/dist/dividers/VerticalDivider.d.ts +0 -6
  454. package/dist/dividers/VerticalDivider.js +0 -21
  455. package/dist/icons/GalaxyFilamentWordmark.d.ts +0 -11
  456. package/dist/icons/GalaxyFilamentWordmark.js +0 -25
  457. package/dist/icons/GalaxyLogomark.d.ts +0 -13
  458. package/dist/icons/GalaxyLogomark.js +0 -27
  459. package/dist/icons/GalaxyLogomark3D.d.ts +0 -56
  460. package/dist/icons/GalaxyLogomark3D.js +0 -319
  461. package/dist/icons/GalaxyLogomarkAnimation.d.ts +0 -18
  462. package/dist/icons/GalaxyLogomarkAnimation.js +0 -48
  463. package/dist/icons/GalaxyWordmark.d.ts +0 -11
  464. package/dist/icons/GalaxyWordmark.js +0 -25
  465. package/dist/inputs/MultiTextInput.d.ts +0 -32
  466. package/dist/inputs/MultiTextInput.js +0 -180
  467. package/dist/inputs/SwitcherInput.d.ts +0 -27
  468. package/dist/inputs/SwitcherInput.js +0 -64
  469. package/dist/inputs/hooks.d.ts +0 -10
  470. package/dist/inputs/hooks.js +0 -22
  471. package/dist/overlay/constants.d.ts +0 -28
  472. package/dist/overlay/constants.js +0 -37
  473. package/dist/resizable/HorizontalResizeHandle.d.ts +0 -17
  474. package/dist/resizable/HorizontalResizeHandle.js +0 -38
  475. package/dist/resizable/VerticalResizeHandle.d.ts +0 -18
  476. package/dist/resizable/VerticalResizeHandle.js +0 -39
  477. package/dist/table/SpreadsheetCell.d.ts +0 -21
  478. package/dist/table/SpreadsheetCell.js +0 -71
  479. package/dist/table/SpreadsheetHeaderCell.d.ts +0 -23
  480. package/dist/table/SpreadsheetHeaderCell.js +0 -91
  481. package/dist/table/SpreadsheetMenuItem.d.ts +0 -14
  482. package/dist/table/SpreadsheetMenuItem.js +0 -33
  483. package/dist/table/SpreadsheetPrimitives.d.ts +0 -172
  484. package/dist/table/SpreadsheetPrimitives.js +0 -105
  485. package/dist/table/SpreadsheetRow.d.ts +0 -33
  486. package/dist/table/SpreadsheetRow.js +0 -73
  487. package/dist/table/SpreadsheetRowActionCell.d.ts +0 -14
  488. package/dist/table/SpreadsheetRowActionCell.js +0 -51
  489. package/dist/table/TableExpandCell.d.ts +0 -11
  490. package/dist/table/TableExpandCell.js +0 -24
  491. package/dist/table/TableExpandedRow.d.ts +0 -16
  492. package/dist/table/TableExpandedRow.js +0 -77
  493. package/dist/table/TableHeaderCellContent.d.ts +0 -30
  494. package/dist/table/TableHeaderCellContent.js +0 -48
  495. package/dist/table/TablePrimitives.d.ts +0 -313
  496. package/dist/table/TablePrimitives.js +0 -302
  497. package/dist/table/TableSelectCell.d.ts +0 -18
  498. package/dist/table/TableSelectCell.js +0 -27
  499. package/dist/table/TableStatusRow.d.ts +0 -18
  500. package/dist/table/TableStatusRow.js +0 -50
  501. package/dist/table/useSpreadsheetEditing.d.ts +0 -13
  502. package/dist/table/useSpreadsheetEditing.js +0 -41
  503. package/dist/table/useTableColumnResize.d.ts +0 -38
  504. package/dist/table/useTableColumnResize.js +0 -155
  505. package/dist/table/useTableRowExpansion.d.ts +0 -24
  506. package/dist/table/useTableRowExpansion.js +0 -62
  507. package/dist/table/utils.d.ts +0 -50
  508. package/dist/table/utils.js +0 -78
  509. package/dist/text/HotKeys.d.ts +0 -30
  510. package/dist/text/HotKeys.js +0 -74
  511. package/dist/text/Paragraph.d.ts +0 -33
  512. package/dist/text/Paragraph.js +0 -83
  513. package/dist/text/TextShimmer.d.ts +0 -14
  514. package/dist/text/TextShimmer.js +0 -34
  515. package/dist/theme/GalaxyTheme.d.ts +0 -67
  516. package/dist/theme/GalaxyTheme.js +0 -119
  517. package/dist/theme/constants.d.ts +0 -8
  518. package/dist/theme/constants.js +0 -38
  519. package/dist/theme/index.d.ts +0 -6
  520. package/dist/theme/index.js +0 -7
  521. package/dist/theme/types.d.ts +0 -195
  522. package/dist/theme/types.js +0 -10
  523. package/dist/theme/typography.d.ts +0 -2
  524. package/dist/theme/typography.js +0 -73
  525. package/dist/theme/variants/dark.d.ts +0 -2
  526. package/dist/theme/variants/dark.js +0 -125
  527. package/dist/theme/variants/light.d.ts +0 -2
  528. package/dist/theme/variants/light.js +0 -125
  529. package/dist/toast/ToastContainer.d.ts +0 -10
  530. package/dist/toast/ToastContainer.js +0 -31
  531. package/dist/toast/ToastWrapper.d.ts +0 -6
  532. package/dist/toast/ToastWrapper.js +0 -27
  533. package/dist/transform/Flash.d.ts +0 -7
  534. package/dist/transform/Flash.js +0 -18
  535. package/dist/transform/Spin.d.ts +0 -14
  536. package/dist/transform/Spin.js +0 -25
  537. package/dist/utils/linaria.d.ts +0 -1
  538. package/dist/utils/linaria.js +0 -8
@@ -0,0 +1,48 @@
1
+ import { type AriaAttributes, type CSSProperties } from "react";
2
+ import { Orientation } from "../theme/enums.js";
3
+ export interface ResizeHandleProps extends AriaAttributes {
4
+ /**
5
+ * Axis of the bar. `VERTICAL` is a vertical bar between side-by-side panes, dragged left and
6
+ * right; `HORIZONTAL` is a horizontal bar between stacked panes, dragged up and down.
7
+ * @default Orientation.HORIZONTAL
8
+ */
9
+ orientation?: Orientation;
10
+ /** The current size, in pixels, of the pane this handle resizes. */
11
+ value: number;
12
+ /** Called with the new size while dragging and on each key step; clamped and whole pixels. */
13
+ onChange: (value: number) => void;
14
+ /**
15
+ * Smallest size, in pixels.
16
+ * @default 0
17
+ */
18
+ min?: number;
19
+ /**
20
+ * Largest size, in pixels.
21
+ * @default Infinity
22
+ */
23
+ max?: number;
24
+ /**
25
+ * The resized pane is after the handle (right of a vertical bar, below a horizontal one), so
26
+ * dragging toward the start grows it.
27
+ * @default false
28
+ */
29
+ isReversed?: boolean;
30
+ /**
31
+ * Not draggable and not focusable; the grip dims.
32
+ * @default false
33
+ */
34
+ isDisabled?: boolean;
35
+ /** Accessible name naming the pane ("Resize sidebar"). Pass `aria-controls` with its `id`. */
36
+ ariaLabel: string;
37
+ /** DOM id on the root element. */
38
+ id?: string;
39
+ /** Any `data-*` attribute, forwarded to the root element. */
40
+ [dataAttribute: `data-${string}`]: string | number | boolean | undefined;
41
+ /** Extra class on the root element. */
42
+ className?: string;
43
+ /** Inline style on the root element; only for setting CSS custom properties. */
44
+ style?: CSSProperties;
45
+ }
46
+ /** A draggable, keyboard-adjustable bar that resizes the pane beside it. */
47
+ declare const ResizeHandle: import("react").ForwardRefExoticComponent<ResizeHandleProps & import("react").RefAttributes<HTMLDivElement>>;
48
+ export default ResizeHandle;
@@ -0,0 +1,143 @@
1
+ import { Orientation } from "../theme/enums.js";
2
+ import { SPACE } from "../theme/tokens/scales.js";
3
+ /* empty css */
4
+ import { styled } from "@linaria/react";
5
+ import { forwardRef, useRef, useState } from "react";
6
+ import { jsx } from "react/jsx-runtime";
7
+ import { cx } from "@linaria/core";
8
+ //#region src/layout/ResizeHandle.tsx
9
+ /**
10
+ * The grab bar between two panes. The user drags it (mouse, touch or pen) or moves it with the
11
+ * arrow keys to change the size of one pane. Replaces 1.x `HorizontalResizeHandle` and
12
+ * `VerticalResizeHandle` (Constitution XII.4 pattern): `orientation` picks the axis.
13
+ *
14
+ * The handle owns the interaction (pointer capture, key steps, clamping to `min` / `max`, the
15
+ * WAI-ARIA window-splitter semantics); the host owns the size. Pass the pane's size in pixels as
16
+ * `value` and apply what `onChange` returns. ResizeHandle takes no `size` or `variant`
17
+ * (Constitution V-A).
18
+ */
19
+ /** One arrow-key step: the `space[16]` token, in pixels. */
20
+ var KEY_STEP_PX = Number.parseFloat(SPACE[16]);
21
+ /** Stable keys for the dots. */
22
+ var GRIP_DOTS = Array.from({ length: 4 }, (_, index) => `dot-${index}`);
23
+ /** One dot of the grip: a small round mark in the quiet icon colour. */
24
+ var GripDot = /*#__PURE__*/ styled("span")({
25
+ name: "GripDot",
26
+ class: "gx-ResizeHandle-GripDot-gqgj99q",
27
+ propsAsIs: false
28
+ });
29
+ /** The mark inside the strip: a short line of dots. Declared first so `Root`'s state rules can target it. */
30
+ var Grip = /*#__PURE__*/ styled("span")({
31
+ name: "Grip",
32
+ class: "gx-ResizeHandle-Grip-g1y5kmmy",
33
+ propsAsIs: false
34
+ });
35
+ /** The hit area: an in-flow strip with no fill of its own; the grip is the mark. */
36
+ var Root = /*#__PURE__*/ styled("div")({
37
+ name: "Root",
38
+ class: "gx-ResizeHandle-rpp11vs",
39
+ propsAsIs: false
40
+ });
41
+ /** Strip thickness, stretch and cursor per axis (the 1.x cursors). */
42
+ var RESIZE_HANDLE_ORIENTATION_TO_CSS_MAP = {
43
+ [Orientation.VERTICAL]: "gx-ResizeHandle-Orientation_VERTICAL-o1ynbf1o",
44
+ [Orientation.HORIZONTAL]: "gx-ResizeHandle-Orientation_HORIZONTAL-o1mpu2dj"
45
+ };
46
+ /**
47
+ * The dots' box along the axis: 4 × 2px dots + 3 × 3px gaps = 17px, rounded up to an even 18px
48
+ * so the line centres on whole pixels in an even-length strip; the dots sit at its start.
49
+ */
50
+ /** The dots run along the handle's axis. */
51
+ var GRIP_ORIENTATION_TO_CSS_MAP = {
52
+ [Orientation.VERTICAL]: "gx-ResizeHandle-Orientation_VERTICAL-orsl86p",
53
+ [Orientation.HORIZONTAL]: "gx-ResizeHandle-Orientation_HORIZONTAL-o1pusn5p"
54
+ };
55
+ /** Hover and keyboard focus darken the dots. */
56
+ var ENABLED_CSS = "gx-ResizeHandle-ENABLED_CSS-e419x02";
57
+ /** While a pointer drag is in progress, the dots stay dark even when the pointer leaves. */
58
+ var DRAGGING_CSS = "gx-ResizeHandle-DRAGGING_CSS-d1bnqfss";
59
+ /** Disabled: no resize cursor, dimmed dots. */
60
+ var DISABLED_CSS = "gx-ResizeHandle-DISABLED_CSS-dn28y1d";
61
+ /** Keeps `value` within `[min, max]` as a whole pixel. */
62
+ function clamp(value, min, max) {
63
+ return Math.min(Math.max(Math.round(value), min), max);
64
+ }
65
+ /** A draggable, keyboard-adjustable bar that resizes the pane beside it. */
66
+ var ResizeHandle = forwardRef(function ResizeHandle({ orientation = Orientation.HORIZONTAL, value, onChange, min = 0, max = Number.POSITIVE_INFINITY, isReversed = false, isDisabled = false, ariaLabel, id, className, style, ...rest }, ref) {
67
+ const dragRef = useRef(null);
68
+ const [isDragging, setIsDragging] = useState(false);
69
+ const isVertical = orientation === Orientation.VERTICAL;
70
+ const endDrag = () => {
71
+ dragRef.current = null;
72
+ setIsDragging(false);
73
+ };
74
+ const handlePointerDown = (event) => {
75
+ if (isDisabled) return;
76
+ if (event.pointerType === "mouse" && event.button !== 0) return;
77
+ event.preventDefault();
78
+ event.currentTarget.setPointerCapture(event.pointerId);
79
+ dragRef.current = {
80
+ pointerId: event.pointerId,
81
+ start: isVertical ? event.clientX : event.clientY,
82
+ startValue: value,
83
+ lastSent: value
84
+ };
85
+ setIsDragging(true);
86
+ };
87
+ const handlePointerMove = (event) => {
88
+ const drag = dragRef.current;
89
+ if (!drag || drag.pointerId !== event.pointerId) return;
90
+ const delta = (isVertical ? event.clientX : event.clientY) - drag.start;
91
+ const next = clamp(drag.startValue + (isReversed ? -delta : delta), min, max);
92
+ if (next !== drag.lastSent) {
93
+ drag.lastSent = next;
94
+ onChange(next);
95
+ }
96
+ };
97
+ const handlePointerEnd = (event) => {
98
+ if (dragRef.current?.pointerId === event.pointerId) endDrag();
99
+ };
100
+ const handleKeyDown = (event) => {
101
+ if (isDisabled) return;
102
+ const towardEnd = isVertical ? "ArrowRight" : "ArrowDown";
103
+ const towardStart = isVertical ? "ArrowLeft" : "ArrowUp";
104
+ const growth = isReversed ? -KEY_STEP_PX : KEY_STEP_PX;
105
+ let next;
106
+ if (event.key === towardEnd) next = value + growth;
107
+ else if (event.key === towardStart) next = value - growth;
108
+ else if (event.key === "Home") next = min;
109
+ else if (event.key === "End" && Number.isFinite(max)) next = max;
110
+ if (next === void 0) return;
111
+ event.preventDefault();
112
+ onChange(clamp(next, min, max));
113
+ };
114
+ return /* @__PURE__ */ jsx(Root, {
115
+ ...rest,
116
+ ref,
117
+ id,
118
+ role: "separator",
119
+ tabIndex: isDisabled ? void 0 : 0,
120
+ "aria-orientation": isVertical ? "vertical" : "horizontal",
121
+ "aria-valuenow": value,
122
+ "aria-valuemin": min,
123
+ "aria-valuemax": Number.isFinite(max) ? max : void 0,
124
+ "aria-label": ariaLabel ?? rest["aria-label"],
125
+ "aria-disabled": isDisabled || void 0,
126
+ onPointerDown: handlePointerDown,
127
+ onPointerMove: handlePointerMove,
128
+ onPointerUp: handlePointerEnd,
129
+ onPointerCancel: handlePointerEnd,
130
+ onLostPointerCapture: handlePointerEnd,
131
+ onKeyDown: handleKeyDown,
132
+ className: cx(RESIZE_HANDLE_ORIENTATION_TO_CSS_MAP[orientation], isDisabled ? DISABLED_CSS : ENABLED_CSS, isDragging && DRAGGING_CSS, className),
133
+ style,
134
+ children: /* @__PURE__ */ jsx(Grip, {
135
+ "aria-hidden": true,
136
+ className: GRIP_ORIENTATION_TO_CSS_MAP[orientation],
137
+ children: GRIP_DOTS.map((dot) => /* @__PURE__ */ jsx(GripDot, {}, dot))
138
+ })
139
+ });
140
+ });
141
+ ResizeHandle.displayName = "ResizeHandle";
142
+ //#endregion
143
+ export { ResizeHandle as default };
@@ -0,0 +1,30 @@
1
+ import { type AriaAttributes, type CSSProperties, type ReactNode, type UIEvent } from "react";
2
+ export interface ScrollAreaProps extends AriaAttributes {
3
+ /** The scrolling content. Put padding on a `Box` inside, not on ScrollArea. */
4
+ children?: ReactNode;
5
+ /**
6
+ * Also scroll sideways when the content is wider than the area. When `false`, content wraps and truncates to the area's width.
7
+ * @default false
8
+ */
9
+ canScrollHorizontally?: boolean;
10
+ /**
11
+ * Fade the content out toward each edge that has more content beyond it.
12
+ * @default false
13
+ */
14
+ hasFadeEdges?: boolean;
15
+ /** Names the region. When set, the scrolling element gets `role="region"` and this `aria-label`. */
16
+ ariaLabel?: string;
17
+ /** Scroll handler on the scrolling element. */
18
+ onScroll?: (event: UIEvent<HTMLDivElement>) => void;
19
+ /** DOM id of the scrolling element. */
20
+ id?: string;
21
+ /** Any `data-*` attribute, forwarded to the scrolling element. */
22
+ [dataAttribute: `data-${string}`]: string | number | boolean | undefined;
23
+ /** Extra class on the root (the box the parent sizes). */
24
+ className?: string;
25
+ /** Inline style on the root; only for setting CSS custom properties. */
26
+ style?: CSSProperties;
27
+ }
28
+ /** A scrolling region with thin, consistent overlay scrollbars and optional fade edges. */
29
+ declare const ScrollArea: import("react").ForwardRefExoticComponent<ScrollAreaProps & import("react").RefAttributes<HTMLDivElement>>;
30
+ export default ScrollArea;
@@ -0,0 +1,138 @@
1
+ import { useIsomorphicLayoutEffect } from "../hooks/useIsomorphicLayoutEffect.js";
2
+ import { Orientation } from "../theme/enums.js";
3
+ import { t } from "../theme/tokens/t.js";
4
+ /* empty css */
5
+ import { forwardRef, useRef, useState } from "react";
6
+ import { jsx, jsxs } from "react/jsx-runtime";
7
+ import { cx } from "@linaria/core";
8
+ import { useMergeRefs } from "@floating-ui/react";
9
+ import * as ScrollAreaPrimitive from "@radix-ui/react-scroll-area";
10
+ //#region src/layout/ScrollArea.tsx
11
+ /**
12
+ * A scrolling region with thin overlay scrollbars that look the same in every browser and OS. The
13
+ * DLS reset hides native scrollbars, so a scrollable sidebar, list, panel or code block uses
14
+ * ScrollArea to show one: a 4px thumb that appears while the pointer is over the region. It fills
15
+ * the height its parent gives it (`Box height`, `Box maxHeight`, a growing `FlexItem`), scrolls
16
+ * vertically and, with `canScrollHorizontally`, sideways; `hasFadeEdges` fades the content toward
17
+ * each edge that has more beyond it. Scrolling stays native, and the forwarded ref is the
18
+ * scrolling element (`ref.current.scrollTo(…)`).
19
+ *
20
+ * No size, padding or fill of its own: the parent sizes it and a `Box padding` inside pads the
21
+ * content. Not a virtualized list. Built on `@radix-ui/react-scroll-area` (the GX app's direct
22
+ * usage maps onto `<ScrollArea>`).
23
+ */
24
+ /** Nothing measured yet (the server and the first client render). */
25
+ var NO_EDGES = {
26
+ top: false,
27
+ bottom: false,
28
+ left: false,
29
+ right: false,
30
+ isOverflowing: false
31
+ };
32
+ /** Sub-pixel scroll positions within this many px of an edge count as at the edge. */
33
+ var EDGE_TOLERANCE_PX = 1;
34
+ /** Fills a parent with a definite height; under a parent that only caps it, grows and then scrolls. */
35
+ var ROOT_CSS = "gx-ScrollArea-ROOT_CSS-rtuxgfs";
36
+ /** The scrolling element. `isolation` keeps content `z-index` below the scrollbars. */
37
+ var VIEWPORT_CSS = "gx-ScrollArea-VIEWPORT_CSS-v10v341q";
38
+ /** Vertical-only: override radix's inline `display: table` wrapper so content wraps and truncates. */
39
+ var VERTICAL_ONLY_CSS = "gx-ScrollArea-VERTICAL_ONLY_CSS-vnp9bey";
40
+ /** Alpha mask toward each edge with hidden content; lengths come from `--gx-scroll-area-fade-*` on the root. */
41
+ var FADE_EDGES_CSS = "gx-ScrollArea-FADE_EDGES_CSS-f19cis7a";
42
+ /**
43
+ * With `hasFadeEdges`, the viewport's mask also clips its own outline, so the root (same box, not
44
+ * masked) draws the `FOCUS_RING` outline while the viewport has keyboard focus.
45
+ */
46
+ var FADE_EDGES_ROOT_CSS = "gx-ScrollArea-FADE_EDGES_ROOT_CSS-fjjojif";
47
+ /** The track: 8px thick and transparent; the 2px padding leaves a 4px thumb. */
48
+ var SCROLL_AREA_ORIENTATION_TO_SCROLLBAR_CSS_MAP = {
49
+ [Orientation.VERTICAL]: "gx-ScrollArea-Orientation_VERTICAL-o174c7co",
50
+ [Orientation.HORIZONTAL]: "gx-ScrollArea-Orientation_HORIZONTAL-okpbxfy"
51
+ };
52
+ /** The 4px thumb, a quiet neutral on every surface; `::before` gives it a 24px pointer target. */
53
+ var THUMB_CSS = "gx-ScrollArea-THUMB_CSS-tzpebzb";
54
+ /** Where the two scrollbars meet. */
55
+ var CORNER_CSS = "gx-ScrollArea-CORNER_CSS-c1otan2y";
56
+ /** Reads the viewport's scroll geometry into edge flags. */
57
+ function measureEdges(viewport, canScrollHorizontally) {
58
+ const { scrollTop, scrollHeight, clientHeight, scrollWidth, clientWidth } = viewport;
59
+ const scrollLeft = Math.abs(viewport.scrollLeft);
60
+ return {
61
+ top: scrollTop > EDGE_TOLERANCE_PX,
62
+ bottom: scrollTop + clientHeight < scrollHeight - EDGE_TOLERANCE_PX,
63
+ left: canScrollHorizontally && scrollLeft > EDGE_TOLERANCE_PX,
64
+ right: canScrollHorizontally && scrollLeft + clientWidth < scrollWidth - EDGE_TOLERANCE_PX,
65
+ isOverflowing: scrollHeight - clientHeight > EDGE_TOLERANCE_PX || canScrollHorizontally && scrollWidth - clientWidth > EDGE_TOLERANCE_PX
66
+ };
67
+ }
68
+ /** True when two edge readings are the same. */
69
+ function isSameEdges(a, b) {
70
+ return a.top === b.top && a.bottom === b.bottom && a.left === b.left && a.right === b.right && a.isOverflowing === b.isOverflowing;
71
+ }
72
+ /** A scrolling region with thin, consistent overlay scrollbars and optional fade edges. */
73
+ var ScrollArea = forwardRef(function ScrollArea({ children, canScrollHorizontally = false, hasFadeEdges = false, ariaLabel, onScroll, className, style, ...rest }, ref) {
74
+ const viewportRef = useRef(null);
75
+ const mergedRef = useMergeRefs([viewportRef, ref]);
76
+ const [edges, setEdges] = useState(NO_EDGES);
77
+ useIsomorphicLayoutEffect(() => {
78
+ const viewport = viewportRef.current;
79
+ if (viewport === null) return;
80
+ let isCancelled = false;
81
+ const update = () => {
82
+ if (isCancelled) return;
83
+ const next = measureEdges(viewport, canScrollHorizontally);
84
+ setEdges((current) => isSameEdges(current, next) ? current : next);
85
+ };
86
+ update();
87
+ viewport.addEventListener("scroll", update, { passive: true });
88
+ const observer = typeof ResizeObserver === "undefined" ? void 0 : new ResizeObserver(update);
89
+ observer?.observe(viewport);
90
+ if (viewport.firstElementChild !== null) observer?.observe(viewport.firstElementChild);
91
+ document.fonts?.ready.then(update);
92
+ return () => {
93
+ isCancelled = true;
94
+ viewport.removeEventListener("scroll", update);
95
+ observer?.disconnect();
96
+ };
97
+ }, [canScrollHorizontally]);
98
+ const fadeVariables = {
99
+ "--gx-scroll-area-fade-top": edges.top ? t.space[16] : "0px",
100
+ "--gx-scroll-area-fade-bottom": edges.bottom ? t.space[16] : "0px",
101
+ "--gx-scroll-area-fade-left": edges.left ? t.space[16] : "0px",
102
+ "--gx-scroll-area-fade-right": edges.right ? t.space[16] : "0px"
103
+ };
104
+ return /* @__PURE__ */ jsxs(ScrollAreaPrimitive.Root, {
105
+ type: "hover",
106
+ className: cx(ROOT_CSS, hasFadeEdges && FADE_EDGES_ROOT_CSS, className),
107
+ style: {
108
+ ...fadeVariables,
109
+ ...style
110
+ },
111
+ children: [
112
+ /* @__PURE__ */ jsx(ScrollAreaPrimitive.Viewport, {
113
+ ref: mergedRef,
114
+ className: cx(VIEWPORT_CSS, !canScrollHorizontally && VERTICAL_ONLY_CSS, hasFadeEdges && FADE_EDGES_CSS),
115
+ role: ariaLabel === void 0 ? void 0 : "region",
116
+ "aria-label": ariaLabel,
117
+ tabIndex: edges.isOverflowing ? 0 : void 0,
118
+ onScroll,
119
+ ...rest,
120
+ children
121
+ }),
122
+ /* @__PURE__ */ jsx(ScrollAreaPrimitive.Scrollbar, {
123
+ orientation: "vertical",
124
+ className: SCROLL_AREA_ORIENTATION_TO_SCROLLBAR_CSS_MAP[Orientation.VERTICAL],
125
+ children: /* @__PURE__ */ jsx(ScrollAreaPrimitive.Thumb, { className: THUMB_CSS })
126
+ }),
127
+ canScrollHorizontally && /* @__PURE__ */ jsx(ScrollAreaPrimitive.Scrollbar, {
128
+ orientation: "horizontal",
129
+ className: SCROLL_AREA_ORIENTATION_TO_SCROLLBAR_CSS_MAP[Orientation.HORIZONTAL],
130
+ children: /* @__PURE__ */ jsx(ScrollAreaPrimitive.Thumb, { className: THUMB_CSS })
131
+ }),
132
+ canScrollHorizontally && /* @__PURE__ */ jsx(ScrollAreaPrimitive.Corner, { className: CORNER_CSS })
133
+ ]
134
+ });
135
+ });
136
+ ScrollArea.displayName = "ScrollArea";
137
+ //#endregion
138
+ export { ScrollArea as default };
@@ -1,2 +1,102 @@
1
- declare const Link: import("@linaria/react").StyledComponent<import("react").ClassAttributes<HTMLDivElement> & import("react").HTMLAttributes<HTMLDivElement> & Record<never, unknown>>;
1
+ import { type AriaAttributes, type CSSProperties, type ElementType, type FocusEventHandler, type MouseEvent, type MouseEventHandler, type ReactNode } from "react";
2
+ import { TextSize } from "../text/Text.js";
3
+ /** Color (Constitution V-A: Link NEUTRAL / INHERIT; declared in `scripts/lint-dls.ts` `MODE_SETS`). */
4
+ export declare enum LinkVariant {
5
+ /** `text.primary` with a `text.tertiary` underline (the 1.x `MarkdownText` anchor). The default. */
6
+ NEUTRAL = "NEUTRAL",
7
+ /** `currentColor`: the link takes the surrounding text's color. */
8
+ INHERIT = "INHERIT"
9
+ }
10
+ /** When the underline is drawn (Constitution V-A: `Link underline`). */
11
+ export declare enum LinkUnderline {
12
+ /** Soft underline at rest, full color on hover. The default. */
13
+ ALWAYS = "ALWAYS",
14
+ /** No underline at rest, full color on hover. */
15
+ HOVER = "HOVER",
16
+ /** Never underlined (nav lists, titles); `isActive` still underlines. */
17
+ NONE = "NONE"
18
+ }
19
+ /** Canonical rungs; only the text step applies (a link has no control height). */
20
+ export declare enum LinkSize {
21
+ /** `caption` (10px on a 12px line). */
22
+ X_SMALL = "X_SMALL",
23
+ /** `body_sm` (12px on a 16px line). */
24
+ SMALL = "SMALL",
25
+ /** `body_md` (13px on a 16px line). */
26
+ MEDIUM = "MEDIUM",
27
+ /** `body_lg` (14px on a 20px line). */
28
+ LARGE = "LARGE",
29
+ /** `body_lg` (14px on a 20px line); kept so composites can map their own size 1:1. */
30
+ X_LARGE = "X_LARGE"
31
+ }
32
+ /** Text step per rung (Constitution III-A.4). */
33
+ export declare const LINK_SIZE_TO_TEXT_SIZE_MAP: Record<LinkSize, TextSize>;
34
+ export interface LinkProps extends AriaAttributes {
35
+ /** The link text. Must not contain links, buttons or inputs. */
36
+ children?: ReactNode;
37
+ /** Destination. Without it, Link renders a non-interactive `<span>` with the link look (for use inside a clickable parent). */
38
+ href?: string;
39
+ /**
40
+ * Router link component that renders the anchor when `href` is set. It receives `href` and must
41
+ * forward its `ref`. Ignored without `href`.
42
+ * @default "a"
43
+ */
44
+ as?: ElementType;
45
+ /**
46
+ * Opens in a new tab (`target="_blank"`, `rel="noopener noreferrer"`) and adds a trailing arrow
47
+ * plus visually hidden "(opens in a new tab)".
48
+ * @default false
49
+ */
50
+ isExternal?: boolean;
51
+ /**
52
+ * Color: primary text, or the parent's color.
53
+ * @default LinkVariant.NEUTRAL
54
+ */
55
+ variant?: LinkVariant;
56
+ /**
57
+ * When the underline shows: always (soft at rest, full on hover), on hover only, or never.
58
+ * @default LinkUnderline.ALWAYS
59
+ */
60
+ underline?: LinkUnderline;
61
+ /**
62
+ * Text step for a standalone link (`caption` / `body_sm` / `body_md` / `body_lg` / `body_lg`).
63
+ * Inherits from the parent when unset: leave it unset inside `Text` so the link matches the sentence.
64
+ */
65
+ size?: LinkSize;
66
+ /**
67
+ * Marks the current page: `aria-current="page"` and the hover look, held.
68
+ * @default false
69
+ */
70
+ isActive?: boolean;
71
+ /**
72
+ * Not followable: no `href`, disabled color, `aria-disabled`, `onClick` not called.
73
+ * @default false
74
+ */
75
+ isDisabled?: boolean;
76
+ /** Called when the link is followed (analytics, closing a menu). Not called while disabled or without `href`. */
77
+ onClick?: (event: MouseEvent<HTMLAnchorElement>) => void;
78
+ /**
79
+ * Accessible name when the visible text is not enough. Must start with the visible text
80
+ * (WCAG 2.5.3). With `isExternal`, " (opens in a new tab)" is appended.
81
+ */
82
+ ariaLabel?: string;
83
+ /** Focus passthrough to the root (Tooltip triggers). */
84
+ onFocus?: FocusEventHandler<HTMLAnchorElement | HTMLSpanElement>;
85
+ /** Blur passthrough to the root (Tooltip triggers). */
86
+ onBlur?: FocusEventHandler<HTMLAnchorElement | HTMLSpanElement>;
87
+ /** Pointer-enter passthrough to the root (Tooltip triggers, router prefetch on hover). */
88
+ onMouseEnter?: MouseEventHandler<HTMLAnchorElement | HTMLSpanElement>;
89
+ /** Pointer-leave passthrough to the root (Tooltip triggers). */
90
+ onMouseLeave?: MouseEventHandler<HTMLAnchorElement | HTMLSpanElement>;
91
+ /** DOM id on the root. */
92
+ id?: string;
93
+ /** Any `data-*` attribute, forwarded to the root. */
94
+ [dataAttribute: `data-${string}`]: string | number | boolean | undefined;
95
+ /** Extra class on the root. */
96
+ className?: string;
97
+ /** Inline style on the root; only for setting CSS custom properties. */
98
+ style?: CSSProperties;
99
+ }
100
+ /** Inline navigation styled as text: primary or inherited color, with a soft underline. */
101
+ declare const Link: import("react").ForwardRefExoticComponent<LinkProps & import("react").RefAttributes<HTMLAnchorElement | HTMLSpanElement>>;
2
102
  export default Link;
@@ -1,10 +1,172 @@
1
+ import VisuallyHidden from "../a11y/VisuallyHidden.js";
2
+ import { TextSize } from "../text/Text.js";
3
+ import Icon, { IconVariant } from "../icons/Icon.js";
1
4
  /* empty css */
2
5
  import { styled } from "@linaria/react";
6
+ import { forwardRef } from "react";
7
+ import { jsx, jsxs } from "react/jsx-runtime";
8
+ import { cx } from "@linaria/core";
9
+ import { ArrowUpRightIcon } from "@phosphor-icons/react";
3
10
  //#region src/links/Link.tsx
4
- var Link = /*#__PURE__*/ styled("div")({
5
- name: "Link",
6
- class: "l1o22m4p",
11
+ /**
12
+ * Inline navigation. Renders an `<a href>` (or a router link through `as`) styled as text: it takes
13
+ * its size, family and line height from the surrounding `Text` unless `size` is set, colors itself
14
+ * by `variant` (`text.primary` by default) and draws an underline per `underline`. `isExternal` opens
15
+ * the target in a new tab and adds a trailing arrow; `isActive` marks the current page.
16
+ *
17
+ * Without `href`, Link renders a non-interactive `<span>` with the link look, for use inside a
18
+ * parent that is itself the click target (a link never sits inside a `<button>`).
19
+ *
20
+ * Color is CSS: the variant map sets `color` and two custom properties (`--gx-link-underline-rest`,
21
+ * `--gx-link-hover-color`) that the underline map reads, so a theme switch needs no re-render.
22
+ *
23
+ * Every prop Link does not consume (`aria-*`, `data-*`, native anchor attributes, and any handler a
24
+ * wrapping `Tooltip` injects with `cloneElement`) is spread onto the root, so Link is a valid
25
+ * trigger.
26
+ *
27
+ * Not an action (a text-styled action is `Button` `TERTIARY`) and not a button-styled link
28
+ * (`Button href`).
29
+ */
30
+ /** Color (Constitution V-A: Link NEUTRAL / INHERIT; declared in `scripts/lint-dls.ts` `MODE_SETS`). */
31
+ var LinkVariant = /* @__PURE__ */ function(LinkVariant) {
32
+ /** `text.primary` with a `text.tertiary` underline (the 1.x `MarkdownText` anchor). The default. */
33
+ LinkVariant["NEUTRAL"] = "NEUTRAL";
34
+ /** `currentColor`: the link takes the surrounding text's color. */
35
+ LinkVariant["INHERIT"] = "INHERIT";
36
+ return LinkVariant;
37
+ }({});
38
+ /** When the underline is drawn (Constitution V-A: `Link underline`). */
39
+ var LinkUnderline = /* @__PURE__ */ function(LinkUnderline) {
40
+ /** Soft underline at rest, full color on hover. The default. */
41
+ LinkUnderline["ALWAYS"] = "ALWAYS";
42
+ /** No underline at rest, full color on hover. */
43
+ LinkUnderline["HOVER"] = "HOVER";
44
+ /** Never underlined (nav lists, titles); `isActive` still underlines. */
45
+ LinkUnderline["NONE"] = "NONE";
46
+ return LinkUnderline;
47
+ }({});
48
+ /** Canonical rungs; only the text step applies (a link has no control height). */
49
+ var LinkSize = /* @__PURE__ */ function(LinkSize) {
50
+ /** `caption` (10px on a 12px line). */
51
+ LinkSize["X_SMALL"] = "X_SMALL";
52
+ /** `body_sm` (12px on a 16px line). */
53
+ LinkSize["SMALL"] = "SMALL";
54
+ /** `body_md` (13px on a 16px line). */
55
+ LinkSize["MEDIUM"] = "MEDIUM";
56
+ /** `body_lg` (14px on a 20px line). */
57
+ LinkSize["LARGE"] = "LARGE";
58
+ /** `body_lg` (14px on a 20px line); kept so composites can map their own size 1:1. */
59
+ LinkSize["X_LARGE"] = "X_LARGE";
60
+ return LinkSize;
61
+ }({});
62
+ /** Text step per rung (Constitution III-A.4). */
63
+ var LINK_SIZE_TO_TEXT_SIZE_MAP = {
64
+ ["X_SMALL"]: TextSize.CAPTION,
65
+ ["SMALL"]: TextSize.BODY_SM,
66
+ ["MEDIUM"]: TextSize.BODY_MD,
67
+ ["LARGE"]: TextSize.BODY_LG,
68
+ ["X_LARGE"]: TextSize.BODY_LG
69
+ };
70
+ /**
71
+ * Static rules. The underline is always drawn and only its color changes, so it fades with the
72
+ * `duration.fast` color transition. `INTERACTIVE_RESET` comes first so the rules after it win.
73
+ */
74
+ var Root = /*#__PURE__*/ styled("a")({
75
+ name: "Root",
76
+ class: "gx-Link-r1o22m4p",
7
77
  propsAsIs: false
8
78
  });
79
+ /**
80
+ * The trailing arrow and its hidden text. `inline-block` keeps the underline from running under
81
+ * the arrow; `nowrap` keeps the arrow on the last word's line.
82
+ */
83
+ var ExternalMark = /*#__PURE__*/ styled("span")({
84
+ name: "ExternalMark",
85
+ class: "gx-Link-ExternalMark-e1mxegpw",
86
+ propsAsIs: false
87
+ });
88
+ /** Scales the arrow with the inherited text at every step (CSS overrides the svg's size attributes). */
89
+ var EXTERNAL_ICON_CSS = "gx-Link-EXTERNAL_ICON_CSS-eltkyaq";
90
+ /**
91
+ * Text color plus the two custom properties the underline map reads. `INHERIT` uses
92
+ * `currentColor`, which in `color` is the parent's color.
93
+ */
94
+ var LINK_VARIANT_TO_CSS_MAP = {
95
+ ["NEUTRAL"]: "gx-Link-NEUTRAL-nbrz8uy",
96
+ ["INHERIT"]: "gx-Link-INHERIT-i6kk7ps"
97
+ };
98
+ /** Underline color at rest and on hover. Hover skips a disabled link (the `aria-disabled` state). */
99
+ var LINK_UNDERLINE_TO_CSS_MAP = {
100
+ ["ALWAYS"]: "gx-Link-ALWAYS-anrkllv",
101
+ ["HOVER"]: "gx-Link-HOVER-h1f96o6j",
102
+ ["NONE"]: "gx-Link-NONE-n1puz08l"
103
+ };
104
+ /**
105
+ * A sized link owns its line box: the root carries the rung's text step (`LINK_SIZE_TO_TEXT_SIZE_MAP`),
106
+ * so the underline, focus ring and hit area sit on whole pixels at the rung's line height. The family
107
+ * still inherits. Unset `size` adds none of this and inherits everything from the parent.
108
+ */
109
+ var LINK_SIZE_TO_CSS_MAP = {
110
+ ["X_SMALL"]: "gx-Link-X_SMALL-xga6iwl",
111
+ ["SMALL"]: "gx-Link-SMALL-s9s8qhv",
112
+ ["MEDIUM"]: "gx-Link-MEDIUM-m114yiay",
113
+ ["LARGE"]: "gx-Link-LARGE-l1cvl03b",
114
+ ["X_LARGE"]: "gx-Link-X_LARGE-xh0xcxb"
115
+ };
116
+ /** The span form: its clickable parent owns the cursor. */
117
+ var SPAN_CSS = "gx-Link-SPAN_CSS-spz2g6s";
118
+ /**
119
+ * `isActive`: the hover look held, always underlined (every `underline`, hover included).
120
+ * Declared after the underline map so it wins at equal specificity.
121
+ */
122
+ var ACTIVE_CSS = "gx-Link-ACTIVE_CSS-a5ih1ib";
123
+ /** `isDisabled`, rest and hover. Declared last so it wins over the active look. */
124
+ var DISABLED_CSS = "gx-Link-DISABLED_CSS-d1czu3ov";
125
+ var EXTERNAL_TEXT = " (opens in a new tab)";
126
+ /** Inline navigation styled as text: primary or inherited color, with a soft underline. */
127
+ var Link = forwardRef(function Link({ children, href, as, isExternal = false, variant = "NEUTRAL", underline = "ALWAYS", size, isActive = false, isDisabled = false, onClick, ariaLabel, id, className, style, ...rest }, ref) {
128
+ const isLink = href !== void 0;
129
+ const handleClick = (event) => {
130
+ if (isDisabled) {
131
+ event.preventDefault();
132
+ return;
133
+ }
134
+ onClick?.(event);
135
+ };
136
+ const computedAria = {};
137
+ if (ariaLabel !== void 0) computedAria["aria-label"] = isExternal ? `${ariaLabel}${EXTERNAL_TEXT}` : ariaLabel;
138
+ if (isLink && isDisabled) computedAria["aria-disabled"] = true;
139
+ if (isLink && isActive) computedAria["aria-current"] = "page";
140
+ const elementProps = {};
141
+ if (!isLink) elementProps.as = "span";
142
+ else if (isDisabled) {
143
+ elementProps.as = "a";
144
+ elementProps.role = "link";
145
+ elementProps.onClick = handleClick;
146
+ } else {
147
+ elementProps.as = as ?? "a";
148
+ elementProps.href = href;
149
+ elementProps.onClick = handleClick;
150
+ if (isExternal) {
151
+ elementProps.target = "_blank";
152
+ elementProps.rel = "noopener noreferrer";
153
+ }
154
+ }
155
+ return /* @__PURE__ */ jsxs(Root, {
156
+ ...computedAria,
157
+ ...rest,
158
+ ...elementProps,
159
+ ref,
160
+ id,
161
+ className: cx(size !== void 0 && LINK_SIZE_TO_CSS_MAP[size], LINK_VARIANT_TO_CSS_MAP[variant], LINK_UNDERLINE_TO_CSS_MAP[underline], !isLink && SPAN_CSS, isActive && ACTIVE_CSS, isDisabled && DISABLED_CSS, className),
162
+ style,
163
+ children: [children, isExternal && /* @__PURE__ */ jsxs(ExternalMark, { children: [/* @__PURE__ */ jsx(Icon, {
164
+ component: ArrowUpRightIcon,
165
+ variant: IconVariant.INHERIT,
166
+ className: EXTERNAL_ICON_CSS
167
+ }), /* @__PURE__ */ jsx(VisuallyHidden, { children: EXTERNAL_TEXT })] })]
168
+ });
169
+ });
170
+ Link.displayName = "Link";
9
171
  //#endregion
10
- export { Link as default };
172
+ export { LINK_SIZE_TO_TEXT_SIZE_MAP, LinkSize, LinkUnderline, LinkVariant, Link as default };