@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
@@ -0,0 +1,387 @@
1
+ import Text, { TextVariant } from "../text/Text.js";
2
+ import { useControlledState } from "../hooks/useControlledState.js";
3
+ import Icon, { IconVariant } from "../icons/Icon.js";
4
+ import Rotate from "../transform/Rotate.js";
5
+ import Spinner from "../feedback/Spinner.js";
6
+ import CollapseMotion from "../transform/internal/CollapseMotion.js";
7
+ import { TREE_ROW_CSS, TREE_ROW_LABEL_CSS, TREE_ROW_LEVEL_VARIABLE, TREE_ROW_SIZE_TO_CARET_PX_MAP, TREE_ROW_SIZE_TO_CSS_MAP, TREE_ROW_SIZE_TO_ICON_PX_MAP, TREE_ROW_SIZE_TO_SPINNER_SIZE_MAP, TREE_ROW_SIZE_TO_TEXT_SIZE_MAP, TreeRowCaretSlot, TreeRowSize } from "./treeRow.js";
8
+ /* empty css */
9
+ import { styled } from "@linaria/react";
10
+ import { Fragment, forwardRef, useCallback, useEffect, useId, useMemo, useRef, useState } from "react";
11
+ import { jsx, jsxs } from "react/jsx-runtime";
12
+ import { cx } from "@linaria/core";
13
+ import { CaretRightIcon } from "@phosphor-icons/react";
14
+ //#region src/tree/Tree.tsx
15
+ /**
16
+ * Hierarchical rows that expand and collapse: a schema browser, a file or folder list, a
17
+ * pipeline's nested steps. The hierarchy is data (`items`); each row has a turning caret, an
18
+ * optional icon, a one-line label and an optional non-interactive `trailing` mark. Groups open and
19
+ * close with an animated height (reduced motion: instant), one row can be selected, a parent whose children are not loaded yet
20
+ * shows a loading row, and the WAI-ARIA tree keyboard pattern is built in.
21
+ *
22
+ * The accessibility tree is flat: every row is a `role="treeitem"` with `aria-level`,
23
+ * `aria-setsize` and `aria-posinset`, and the animated wrappers between rows are generic `div`s,
24
+ * so the focus ring outlines one row, never a whole subtree. One row is the tab stop (roving
25
+ * `tabIndex`); arrows move focus, and selection does not follow focus.
26
+ *
27
+ * It does not fetch, filter, sort, drag or edit. Lazy children are the app's: it learns about an
28
+ * expansion from `onExpandedIdsChange` and passes the children in. JSON is `JsonViewer`.
29
+ */
30
+ /** Row rung. Tree rows are dense: 24 and 28px, the same geometry as `JsonViewerSize`. */
31
+ var TreeSize = /* @__PURE__ */ function(TreeSize) {
32
+ /** 24px rows, `body_sm` labels, 12px icons, 10px carets, 14px indent per level. */
33
+ TreeSize["SMALL"] = "SMALL";
34
+ /** 28px rows, `body_md` labels, 14px icons, 12px carets, 16px indent per level. The default. */
35
+ TreeSize["MEDIUM"] = "MEDIUM";
36
+ return TreeSize;
37
+ }({});
38
+ /** Printable keys typed within this window build one type-ahead query (logic, not motion). */
39
+ var TYPEAHEAD_TIMEOUT_MS = 500;
40
+ /** The loading row's text (fixed English, spec Decision 13). */
41
+ var LOADING_LABEL = "Loading";
42
+ /** The tree: a column of rows on its container's surface (no fill, border or padding). */
43
+ var Root = /*#__PURE__*/ styled("div")({
44
+ name: "Root",
45
+ class: "gx-Tree-r1js5qnv",
46
+ propsAsIs: false
47
+ });
48
+ /** Hover and press fills; applied only to rows that are neither selected nor disabled. */
49
+ var ROW_INTERACTIVE_CSS = "gx-Tree-ROW_INTERACTIVE_CSS-r7rdijp";
50
+ /** Selection is `background.selected`: `text.primary` at 12% over the canvas, quiet and neutral. */
51
+ var SELECTED_CSS = "gx-Tree-SELECTED_CSS-s1b0wl0p";
52
+ /** Disabled and loading rows: no pointer affordance. */
53
+ var DISABLED_CSS = "gx-Tree-DISABLED_CSS-d1ir0aar";
54
+ /** The trailing mark, right-aligned by the label's growth. */
55
+ var Trailing = /*#__PURE__*/ styled("span")({
56
+ name: "Trailing",
57
+ class: "gx-Tree-Trailing-t14n6wjb",
58
+ propsAsIs: false
59
+ });
60
+ /** Identity: the Tree rungs are the shared row rungs (`treeRow.ts`, shared with JsonViewer). */
61
+ var TREE_SIZE_TO_ROW_SIZE_MAP = {
62
+ ["SMALL"]: TreeRowSize.SMALL,
63
+ ["MEDIUM"]: TreeRowSize.MEDIUM
64
+ };
65
+ /** A parent has children, or says it will (lazy). */
66
+ var isParentItem = (item) => item.hasChildren ?? (item.children !== void 0 && item.children.length > 0);
67
+ /** The loading row's key; never an item `id` (a NUL character cannot come from data by accident). */
68
+ var loadingKey = (parentId) => `\u0000loading:${parentId}`;
69
+ /** Depth-first walk of the rows that are showing (descends into expanded parents only). */
70
+ function getVisibleRows(items, expanded) {
71
+ const rows = [];
72
+ const walk = (list, level, parentKey) => {
73
+ for (const item of list) {
74
+ const isParent = isParentItem(item);
75
+ const isExpanded = isParent && expanded.has(item.id);
76
+ rows.push({
77
+ kind: "item",
78
+ key: item.id,
79
+ item,
80
+ level,
81
+ parentKey,
82
+ isParent,
83
+ isExpanded
84
+ });
85
+ if (!isExpanded) continue;
86
+ if (item.children === void 0) rows.push({
87
+ kind: "loading",
88
+ key: loadingKey(item.id),
89
+ level: level + 1,
90
+ parentKey: item.id
91
+ });
92
+ else walk(item.children, level + 1, item.id);
93
+ }
94
+ };
95
+ walk(items, 1, null);
96
+ return rows;
97
+ }
98
+ /** Every item's parent id, for finding the nearest visible ancestor of a hidden row. */
99
+ function getParentMap(items) {
100
+ const parents = /* @__PURE__ */ new Map();
101
+ const walk = (list, parentId) => {
102
+ for (const item of list) {
103
+ parents.set(item.id, parentId);
104
+ if (item.children !== void 0) walk(item.children, item.id);
105
+ }
106
+ };
107
+ walk(items, null);
108
+ return parents;
109
+ }
110
+ /** A row's depth as the `--gx-tree-level` custom property (0 at the top level). */
111
+ var levelStyle = (level) => ({ [TREE_ROW_LEVEL_VARIABLE]: String(level - 1) });
112
+ /** Turns a tree `id` into a DOM-id-safe suffix. */
113
+ var toDomId = (value) => encodeURIComponent(value).replace(/[%.']/g, "_");
114
+ /** Hierarchical rows with expand / collapse, single selection, lazy children and tree keyboard. */
115
+ var Tree = forwardRef(function Tree(props, ref) {
116
+ const { items, value, defaultValue = null, onChange, expandedIds, defaultExpandedIds = [], onExpandedIdsChange, size = "MEDIUM", ariaLabel, id, className, style, ...rest } = props;
117
+ const baseId = useId();
118
+ const rowSize = TREE_SIZE_TO_ROW_SIZE_MAP[size];
119
+ const textSize = TREE_ROW_SIZE_TO_TEXT_SIZE_MAP[rowSize];
120
+ const iconPx = TREE_ROW_SIZE_TO_ICON_PX_MAP[rowSize];
121
+ const [selectedId, setSelectedId] = useControlledState({
122
+ value,
123
+ defaultValue
124
+ });
125
+ const [expandedList, setExpandedList] = useControlledState({
126
+ value: expandedIds,
127
+ defaultValue: defaultExpandedIds,
128
+ onChange: onExpandedIdsChange
129
+ });
130
+ const expanded = useMemo(() => new Set(expandedList), [expandedList]);
131
+ const visible = useMemo(() => getVisibleRows(items, expanded), [items, expanded]);
132
+ const parents = useMemo(() => getParentMap(items), [items]);
133
+ const visibleIndex = useMemo(() => new Map(visible.map((row, index) => [row.key, index])), [visible]);
134
+ const [focusedKey, setFocusedKey] = useState(null);
135
+ const rowElements = useRef(/* @__PURE__ */ new Map());
136
+ const typeahead = useRef({
137
+ query: "",
138
+ timer: void 0
139
+ });
140
+ useEffect(() => {
141
+ const state = typeahead.current;
142
+ return () => clearTimeout(state.timer);
143
+ }, []);
144
+ /** The roving tab stop: the last focused row, its nearest visible ancestor, else selected / first. */
145
+ const tabStopKey = useMemo(() => {
146
+ const first = visible[0]?.key ?? null;
147
+ if (focusedKey === null) return selectedId !== null && visibleIndex.has(selectedId) ? selectedId : first;
148
+ if (visibleIndex.has(focusedKey)) return focusedKey;
149
+ let ancestor = focusedKey.startsWith("\0") ? focusedKey.slice(9) : parents.get(focusedKey) ?? null;
150
+ while (ancestor !== null) {
151
+ if (visibleIndex.has(ancestor)) return ancestor;
152
+ ancestor = parents.get(ancestor) ?? null;
153
+ }
154
+ return first;
155
+ }, [
156
+ focusedKey,
157
+ selectedId,
158
+ visible,
159
+ visibleIndex,
160
+ parents
161
+ ]);
162
+ const focusRow = useCallback((key) => {
163
+ if (key === void 0) return;
164
+ rowElements.current.get(key)?.focus();
165
+ }, []);
166
+ const toggle = useCallback((itemId) => {
167
+ setExpandedList(expanded.has(itemId) ? expandedList.filter((entry) => entry !== itemId) : [...expandedList, itemId]);
168
+ }, [
169
+ expanded,
170
+ expandedList,
171
+ setExpandedList
172
+ ]);
173
+ const select = useCallback((item) => {
174
+ if (item.isDisabled || item.id === selectedId) return;
175
+ setSelectedId(item.id);
176
+ onChange?.(item.id);
177
+ }, [
178
+ onChange,
179
+ selectedId,
180
+ setSelectedId
181
+ ]);
182
+ /** Moves focus to the next visible item row whose label starts with the typed query. */
183
+ const handleTypeahead = (fromIndex, character) => {
184
+ const state = typeahead.current;
185
+ clearTimeout(state.timer);
186
+ state.query += character.toLowerCase();
187
+ state.timer = setTimeout(() => {
188
+ state.query = "";
189
+ }, TYPEAHEAD_TIMEOUT_MS);
190
+ const isRepeat = [...state.query].every((entry) => entry === state.query[0]);
191
+ const query = isRepeat ? state.query.charAt(0) : state.query;
192
+ const start = isRepeat ? fromIndex + 1 : fromIndex;
193
+ for (let offset = 0; offset < visible.length; offset += 1) {
194
+ const row = visible[(start + offset) % visible.length];
195
+ if (row?.kind === "item" && row.item.label.toLowerCase().startsWith(query)) {
196
+ focusRow(row.key);
197
+ return;
198
+ }
199
+ }
200
+ };
201
+ const handleKeyDown = (event, row) => {
202
+ if (event.target !== event.currentTarget) return;
203
+ const index = visibleIndex.get(row.key) ?? 0;
204
+ const isItem = row.kind === "item";
205
+ let isHandled = true;
206
+ switch (event.key) {
207
+ case "ArrowDown":
208
+ focusRow(visible[index + 1]?.key);
209
+ break;
210
+ case "ArrowUp":
211
+ focusRow(visible[index - 1]?.key);
212
+ break;
213
+ case "Home":
214
+ focusRow(visible[0]?.key);
215
+ break;
216
+ case "End":
217
+ focusRow(visible[visible.length - 1]?.key);
218
+ break;
219
+ case "ArrowRight":
220
+ if (isItem && row.isParent) if (!row.isExpanded) toggle(row.item.id);
221
+ else {
222
+ const next = visible[index + 1];
223
+ if (next?.parentKey === row.key) focusRow(next.key);
224
+ }
225
+ break;
226
+ case "ArrowLeft":
227
+ if (isItem && row.isExpanded) toggle(row.item.id);
228
+ else if (row.parentKey !== null) focusRow(row.parentKey);
229
+ break;
230
+ case "Enter":
231
+ if (isItem) {
232
+ select(row.item);
233
+ if (row.isParent) toggle(row.item.id);
234
+ }
235
+ break;
236
+ case " ":
237
+ if (isItem) select(row.item);
238
+ break;
239
+ default: if (event.key.length === 1 && !event.ctrlKey && !event.metaKey && !event.altKey) handleTypeahead(index, event.key);
240
+ else isHandled = false;
241
+ }
242
+ if (isHandled) event.preventDefault();
243
+ };
244
+ const rowRefCallbacks = useRef(/* @__PURE__ */ new Map());
245
+ const shouldRestoreFocus = useRef(false);
246
+ const setRowElement = (key) => {
247
+ let callback = rowRefCallbacks.current.get(key);
248
+ if (callback === void 0) {
249
+ callback = (element) => {
250
+ if (element) {
251
+ rowElements.current.set(key, element);
252
+ return;
253
+ }
254
+ const previous = rowElements.current.get(key);
255
+ if (previous !== void 0 && previous === previous.ownerDocument.activeElement) shouldRestoreFocus.current = true;
256
+ rowElements.current.delete(key);
257
+ rowRefCallbacks.current.delete(key);
258
+ };
259
+ rowRefCallbacks.current.set(key, callback);
260
+ }
261
+ return callback;
262
+ };
263
+ useEffect(() => {
264
+ if (!shouldRestoreFocus.current) return;
265
+ shouldRestoreFocus.current = false;
266
+ if (tabStopKey !== null) rowElements.current.get(tabStopKey)?.focus();
267
+ });
268
+ /** The loading row of an expanded parent whose children are not loaded yet. */
269
+ const renderLoadingRow = (parentId, level) => {
270
+ const key = loadingKey(parentId);
271
+ return /* @__PURE__ */ jsxs("div", {
272
+ ref: setRowElement(key),
273
+ role: "treeitem",
274
+ id: `${baseId}-loading-${toDomId(parentId)}`,
275
+ "aria-level": level,
276
+ "aria-setsize": 1,
277
+ "aria-posinset": 1,
278
+ "aria-disabled": "true",
279
+ "aria-busy": "true",
280
+ tabIndex: tabStopKey === key ? 0 : -1,
281
+ className: cx(TREE_ROW_CSS, TREE_ROW_SIZE_TO_CSS_MAP[rowSize], DISABLED_CSS),
282
+ style: levelStyle(level),
283
+ onFocus: () => setFocusedKey(key),
284
+ onKeyDown: (event) => handleKeyDown(event, {
285
+ kind: "loading",
286
+ key,
287
+ level,
288
+ parentKey: parentId
289
+ }),
290
+ children: [/* @__PURE__ */ jsx(TreeRowCaretSlot, { "aria-hidden": true }), /* @__PURE__ */ jsx(Spinner, {
291
+ size: TREE_ROW_SIZE_TO_SPINNER_SIZE_MAP[rowSize],
292
+ label: LOADING_LABEL
293
+ })]
294
+ }, key);
295
+ };
296
+ /** One level of rows, each parent followed by its animated group. */
297
+ const renderItems = (list, level, parentKey) => list.map((item, position) => {
298
+ const isParent = isParentItem(item);
299
+ const isExpanded = isParent && expanded.has(item.id);
300
+ const isSelected = item.id === selectedId;
301
+ const isDisabled = item.isDisabled === true;
302
+ const row = {
303
+ kind: "item",
304
+ key: item.id,
305
+ item,
306
+ level,
307
+ parentKey,
308
+ isParent,
309
+ isExpanded
310
+ };
311
+ const handleClick = () => {
312
+ select(item);
313
+ if (isParent) toggle(item.id);
314
+ };
315
+ const handleCaretClick = (event) => {
316
+ event.stopPropagation();
317
+ rowElements.current.get(item.id)?.focus();
318
+ toggle(item.id);
319
+ };
320
+ return /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsxs("div", {
321
+ ref: setRowElement(item.id),
322
+ role: "treeitem",
323
+ id: `${baseId}-${toDomId(item.id)}`,
324
+ "aria-level": level,
325
+ "aria-setsize": list.length,
326
+ "aria-posinset": position + 1,
327
+ "aria-expanded": isParent ? isExpanded : void 0,
328
+ "aria-selected": isDisabled ? void 0 : isSelected,
329
+ "aria-disabled": isDisabled || void 0,
330
+ tabIndex: tabStopKey === item.id ? 0 : -1,
331
+ className: cx(TREE_ROW_CSS, TREE_ROW_SIZE_TO_CSS_MAP[rowSize], !isSelected && !isDisabled && ROW_INTERACTIVE_CSS, isSelected && SELECTED_CSS, isDisabled && DISABLED_CSS),
332
+ style: levelStyle(level),
333
+ onFocus: () => setFocusedKey(item.id),
334
+ onClick: handleClick,
335
+ onKeyDown: (event) => handleKeyDown(event, row),
336
+ children: [
337
+ /* @__PURE__ */ jsx(TreeRowCaretSlot, {
338
+ "aria-hidden": true,
339
+ onClick: isParent ? handleCaretClick : void 0,
340
+ children: isParent && /* @__PURE__ */ jsx(Rotate, {
341
+ isRotated: isExpanded,
342
+ deg: 90,
343
+ children: /* @__PURE__ */ jsx(Icon, {
344
+ component: CaretRightIcon,
345
+ size: TREE_ROW_SIZE_TO_CARET_PX_MAP[rowSize],
346
+ variant: IconVariant.TERTIARY
347
+ })
348
+ })
349
+ }),
350
+ item.icon && /* @__PURE__ */ jsx(Icon, {
351
+ component: item.icon,
352
+ size: iconPx,
353
+ variant: isDisabled ? IconVariant.DISABLED : IconVariant.SECONDARY
354
+ }),
355
+ /* @__PURE__ */ jsx(Text, {
356
+ as: "span",
357
+ size: textSize,
358
+ variant: isDisabled ? TextVariant.DISABLED : TextVariant.PRIMARY,
359
+ lineClamp: 1,
360
+ shouldTooltipOnOverflow: true,
361
+ className: TREE_ROW_LABEL_CSS,
362
+ children: item.label
363
+ }),
364
+ item.trailing !== void 0 && /* @__PURE__ */ jsx(Trailing, {
365
+ className: "gx-treeRow-TREE_ROW_TRAILING_CSS-tl2nei7",
366
+ children: item.trailing
367
+ })
368
+ ]
369
+ }), isParent && /* @__PURE__ */ jsx(CollapseMotion, {
370
+ isOpen: isExpanded,
371
+ children: isExpanded && (item.children === void 0 ? renderLoadingRow(item.id, level + 1) : renderItems(item.children, level + 1, item.id))
372
+ })] }, item.id);
373
+ });
374
+ return /* @__PURE__ */ jsx(Root, {
375
+ ...rest,
376
+ ref,
377
+ role: "tree",
378
+ "aria-label": ariaLabel ?? rest["aria-label"],
379
+ id,
380
+ className,
381
+ style,
382
+ children: renderItems(items, 1, null)
383
+ });
384
+ });
385
+ Tree.displayName = "Tree";
386
+ //#endregion
387
+ export { TreeSize, Tree as default };
@@ -0,0 +1,39 @@
1
+ import { SpinnerSize } from "../feedback/Spinner.js";
2
+ import { TextSize } from "../text/Text.js";
3
+ /** @internal The two dense row rungs; `TreeSize` and `JsonViewerSize` map onto it. */
4
+ export declare enum TreeRowSize {
5
+ /** 24px rows, 8px inline padding, `body_sm`, 12px icon and slot, 10px caret, 14px per level. */
6
+ SMALL = "SMALL",
7
+ /** 28px rows, 8px inline padding, `body_md`, 14px icon and slot, 12px caret, 16px per level. */
8
+ MEDIUM = "MEDIUM"
9
+ }
10
+ /** @internal The custom property carrying a row's depth (0 at the top level); a continuous value. */
11
+ export declare const TREE_ROW_LEVEL_VARIABLE = "--gx-tree-level";
12
+ /**
13
+ * @internal A row: caret slot, icon, label, trailing. Each level indents by the caret slot plus
14
+ * the caret gap.
15
+ */
16
+ export declare const TREE_ROW_CSS: import("@linaria/core").LinariaClassName;
17
+ /** @internal Height, inline padding and the caret slot width (the rung's icon px) per rung. */
18
+ export declare const TREE_ROW_SIZE_TO_CSS_MAP: Record<TreeRowSize, string>;
19
+ /**
20
+ * @internal The caret's slot, as wide as the rung's icon; leaf rows keep it empty so labels align.
21
+ * The press target stays a 16px square (centered on the slot through `::before`), larger than the
22
+ * glyph.
23
+ */
24
+ export declare const TreeRowCaretSlot: import("@linaria/react").StyledComponent<import("react").ClassAttributes<HTMLSpanElement> & import("react").HTMLAttributes<HTMLSpanElement> & Record<never, unknown>>;
25
+ /**
26
+ * @internal The label (or key / value text): takes the rest of the row and truncates; its 2px
27
+ * start padding makes the gap before it 4px.
28
+ */
29
+ export declare const TREE_ROW_LABEL_CSS: import("@linaria/core").LinariaClassName;
30
+ /** @internal A trailing mark after the label: 2px start padding makes the gap before it 4px. */
31
+ export declare const TREE_ROW_TRAILING_CSS: import("@linaria/core").LinariaClassName;
32
+ /** @internal The row's type step. */
33
+ export declare const TREE_ROW_SIZE_TO_TEXT_SIZE_MAP: Record<TreeRowSize, TextSize>;
34
+ /** @internal Row icon px per rung, which is also the caret slot's width. */
35
+ export declare const TREE_ROW_SIZE_TO_ICON_PX_MAP: Record<TreeRowSize, number>;
36
+ /** @internal The caret: 12px, 10px on the 24px rows (the collapsible Widget's caret). */
37
+ export declare const TREE_ROW_SIZE_TO_CARET_PX_MAP: Record<TreeRowSize, number>;
38
+ /** @internal The loading row's spinner. */
39
+ export declare const TREE_ROW_SIZE_TO_SPINNER_SIZE_MAP: Record<TreeRowSize, SpinnerSize>;
@@ -0,0 +1,75 @@
1
+ import { TextSize } from "../text/Text.js";
2
+ import { SpinnerSize } from "../feedback/Spinner.js";
3
+ /* empty css */
4
+ import { styled } from "@linaria/react";
5
+ //#region src/tree/treeRow.ts
6
+ /**
7
+ * @internal The row geometry `Tree` and `JsonViewer` share, so the two can never drift: row
8
+ * height, inline padding, per-level indent, caret slot and caret gap, caret / icon px and the type
9
+ * step, per rung.
10
+ *
11
+ * A row is `[caret slot] 2px [icon] 4px [label] 4px [trailing]`. The caret slot is as wide as the
12
+ * rung's icon and each level indents by the slot plus the 2px caret gap (14px at `SMALL`, 16px at
13
+ * `MEDIUM`), so a child's caret is centered under its parent's icon. The rest of the row keeps a
14
+ * 4px gap: the label and the trailing mark carry 2px of their own start padding on top of the row's
15
+ * 2px gap.
16
+ */
17
+ /** @internal The two dense row rungs; `TreeSize` and `JsonViewerSize` map onto it. */
18
+ var TreeRowSize = /* @__PURE__ */ function(TreeRowSize) {
19
+ /** 24px rows, 8px inline padding, `body_sm`, 12px icon and slot, 10px caret, 14px per level. */
20
+ TreeRowSize["SMALL"] = "SMALL";
21
+ /** 28px rows, 8px inline padding, `body_md`, 14px icon and slot, 12px caret, 16px per level. */
22
+ TreeRowSize["MEDIUM"] = "MEDIUM";
23
+ return TreeRowSize;
24
+ }({});
25
+ /** @internal The custom property carrying a row's depth (0 at the top level); a continuous value. */
26
+ var TREE_ROW_LEVEL_VARIABLE = "--gx-tree-level";
27
+ /**
28
+ * @internal A row: caret slot, icon, label, trailing. Each level indents by the caret slot plus
29
+ * the caret gap.
30
+ */
31
+ var TREE_ROW_CSS = "gx-treeRow-TREE_ROW_CSS-t1nodxwm";
32
+ /** @internal Height, inline padding and the caret slot width (the rung's icon px) per rung. */
33
+ var TREE_ROW_SIZE_TO_CSS_MAP = {
34
+ ["SMALL"]: "gx-treeRow-SMALL-sgp5lqg",
35
+ ["MEDIUM"]: "gx-treeRow-MEDIUM-mje6tqy"
36
+ };
37
+ /**
38
+ * @internal The caret's slot, as wide as the rung's icon; leaf rows keep it empty so labels align.
39
+ * The press target stays a 16px square (centered on the slot through `::before`), larger than the
40
+ * glyph.
41
+ */
42
+ var TreeRowCaretSlot = /*#__PURE__*/ styled("span")({
43
+ name: "TreeRowCaretSlot",
44
+ class: "gx-treeRow-TreeRowCaretSlot-t1kak285",
45
+ propsAsIs: false
46
+ });
47
+ /**
48
+ * @internal The label (or key / value text): takes the rest of the row and truncates; its 2px
49
+ * start padding makes the gap before it 4px.
50
+ */
51
+ var TREE_ROW_LABEL_CSS = "gx-treeRow-TREE_ROW_LABEL_CSS-t1xuussb";
52
+ /** @internal A trailing mark after the label: 2px start padding makes the gap before it 4px. */
53
+ var TREE_ROW_TRAILING_CSS = "gx-treeRow-TREE_ROW_TRAILING_CSS-tl2nei7";
54
+ /** @internal The row's type step. */
55
+ var TREE_ROW_SIZE_TO_TEXT_SIZE_MAP = {
56
+ ["SMALL"]: TextSize.BODY_SM,
57
+ ["MEDIUM"]: TextSize.BODY_MD
58
+ };
59
+ /** @internal Row icon px per rung, which is also the caret slot's width. */
60
+ var TREE_ROW_SIZE_TO_ICON_PX_MAP = {
61
+ ["SMALL"]: 12,
62
+ ["MEDIUM"]: 14
63
+ };
64
+ /** @internal The caret: 12px, 10px on the 24px rows (the collapsible Widget's caret). */
65
+ var TREE_ROW_SIZE_TO_CARET_PX_MAP = {
66
+ ["SMALL"]: 10,
67
+ ["MEDIUM"]: 12
68
+ };
69
+ /** @internal The loading row's spinner. */
70
+ var TREE_ROW_SIZE_TO_SPINNER_SIZE_MAP = {
71
+ ["SMALL"]: SpinnerSize.SMALL,
72
+ ["MEDIUM"]: SpinnerSize.MEDIUM
73
+ };
74
+ //#endregion
75
+ export { TREE_ROW_CSS, TREE_ROW_LABEL_CSS, TREE_ROW_LEVEL_VARIABLE, TREE_ROW_SIZE_TO_CARET_PX_MAP, TREE_ROW_SIZE_TO_CSS_MAP, TREE_ROW_SIZE_TO_ICON_PX_MAP, TREE_ROW_SIZE_TO_SPINNER_SIZE_MAP, TREE_ROW_SIZE_TO_TEXT_SIZE_MAP, TREE_ROW_TRAILING_CSS, TreeRowCaretSlot, TreeRowSize };
@@ -1,40 +1,60 @@
1
+ /**
2
+ * Color math for JS logic (charts, canvas, seeded colors, contrast checks). Kept from 1.x
3
+ * `utils/colors.ts`; 2.0 types every returned hex as `Hex` and adds `contrastRatio`, `meetsAA`
4
+ * and `mix`. Styling never uses this module: components read `t.color.*`.
5
+ */
6
+ import type { Hex } from "../theme/tokens/types.js";
7
+ /** A `#`-prefixed hex color string (`#rrggbb` or `#rgb`). */
8
+ export type { Hex };
9
+ /** An sRGB color with 0–255 channels. */
1
10
  export type RGB = {
2
11
  r: number;
3
12
  g: number;
4
13
  b: number;
5
14
  };
15
+ /** An sRGB color with 0–255 channels and a 0–1 alpha. */
6
16
  export type RGBA = RGB & {
7
17
  a: number;
8
18
  };
19
+ /** Hue (0–360), saturation (0–1), lightness (0–1). */
9
20
  export type HSL = {
10
21
  h: number;
11
22
  s: number;
12
23
  l: number;
13
24
  };
25
+ /** Hue (0–360), saturation (0–100), value (0–100), alpha (0–1), as `@uiw/react-color` expects. */
14
26
  export type HSVA = {
15
27
  h: number;
16
28
  s: number;
17
29
  v: number;
18
30
  a: number;
19
31
  };
32
+ /** Parses `#rrggbb` / `#rgb` (with or without `#`) into 0–255 channels. Throws on invalid input. */
20
33
  export declare const hexToRgb: (hex: string) => RGB;
34
+ /** `hexToRgb` plus an alpha channel. */
21
35
  export declare const hexToRgba: (hex: string, a?: number) => RGBA;
22
- export declare const rgbToHex: ({ r, g, b }: RGB) => string;
23
- export declare const rgbToHsl: ({ r, g, b }: RGB) => HSL;
24
- export declare const hslToRgb: ({ h, s, l }: HSL) => RGB;
25
- export declare const hslToHex: ({ h, s, l }: HSL) => string;
36
+ /** Formats 0–255 channels (rounded, clamped) as lowercase `#rrggbb`. */
37
+ export declare const rgbToHex: ({ r, g, b }: RGB) => Hex;
38
+ /** Converts 0–255 channels to HSL (`h` 0–360, `s` and `l` 0–1). */
39
+ export declare const rgbToHsl: (rgb: RGB) => HSL;
40
+ /** Converts HSL to unrounded 0–255 channels. Wraps `h`, clamps `s` and `l` to 0–1. */
41
+ export declare const hslToRgb: (hsl: HSL) => RGB;
42
+ /** Converts HSL to `#rrggbb`. */
43
+ export declare const hslToHex: ({ h, s, l }: HSL) => Hex;
44
+ /** Converts a hex color to HSVA (`s`, `v` 0–100; `a` always 1), as `@uiw/react-color` expects. */
26
45
  export declare const hexToHsva: (hex: string) => HSVA;
27
- export declare const hsvaToHex: (hsva: HSVA) => string;
46
+ /** Converts HSVA (`s`, `v` 0–100) to `#rrggbb`; alpha is ignored. */
47
+ export declare const hsvaToHex: (hsva: HSVA) => Hex;
28
48
  /**
29
49
  * Generates a random hex color
30
50
  * @returns A random hex color in the format #RRGGBB
31
51
  */
32
- export declare const generateRandomHexColor: () => string;
52
+ export declare const generateRandomHexColor: () => Hex;
33
53
  /**
34
54
  * Gets an opaque hex color
35
55
  * @param hex - The hex color to add opacity to
36
56
  * @param opacity - The opacity to add (0-1)
37
- * @returns A hex color with the added opacity
57
+ * @returns An `rgba(r, g, b, opacity)` string (not a hex)
38
58
  */
39
59
  export declare const getOpaqueHexColor: (hex: string, opacity?: number) => string;
40
60
  /**
@@ -42,13 +62,13 @@ export declare const getOpaqueHexColor: (hex: string, opacity?: number) => strin
42
62
  * @param hex - The hex color to darken
43
63
  * @param amount - Amount to subtract from each channel (0..255-ish)
44
64
  */
45
- export declare const getDarkerHexColor: (hex: string, amount?: number) => string;
65
+ export declare const getDarkerHexColor: (hex: string, amount?: number) => Hex;
46
66
  /**
47
67
  * Generates a lighter hex color by adding to each RGB channel (clamped)
48
68
  * @param hex - The hex color to lighten
49
69
  * @param amount - Amount to add to each channel (0..255-ish)
50
70
  */
51
- export declare const getLighterHexColor: (hex: string, amount?: number) => string;
71
+ export declare const getLighterHexColor: (hex: string, amount?: number) => Hex;
52
72
  /**
53
73
  * Creates a brighter, more neon/vibrant version of a color.
54
74
  * Lightens the color while increasing saturation to create a neon effect.
@@ -60,7 +80,7 @@ export declare const getLighterHexColor: (hex: string, amount?: number) => strin
60
80
  * @param saturationTarget - Target saturation (0-1, default 0.75 = 75% saturation for vibrant look)
61
81
  * @returns A brighter, more saturated hex color
62
82
  */
63
- export declare const getBrighterPronouncedHexColor: (hex: string, lightnessTarget?: number, saturationTarget?: number) => string;
83
+ export declare const getBrighterPronouncedHexColor: (hex: string, lightnessTarget?: number, saturationTarget?: number) => Hex;
64
84
  /**
65
85
  * Creates a darker but more pronounced/vibrant version of a color.
66
86
  * Darkens the color while increasing saturation to maintain vibrancy.
@@ -72,13 +92,26 @@ export declare const getBrighterPronouncedHexColor: (hex: string, lightnessTarge
72
92
  * @param saturationTarget - Target saturation (0-1, default 0.35 = 35% saturation for pronounced dark colors)
73
93
  * @returns A darker, more saturated hex color
74
94
  */
75
- export declare const getDarkerPronouncedHexColor: (hex: string, lightnessTarget?: number, saturationTarget?: number) => string;
95
+ export declare const getDarkerPronouncedHexColor: (hex: string, lightnessTarget?: number, saturationTarget?: number) => Hex;
76
96
  /**
77
97
  * Random pastel color (soft, light, UI-friendly)
78
98
  */
79
- export declare const generateRandomPastelHexColor: () => string;
99
+ export declare const generateRandomPastelHexColor: () => Hex;
80
100
  /**
81
101
  * Random vibrant color (saturated, bold, UI-friendly)
82
102
  * Generates colors similar to: #5D9CEC, #4FC1E9, #48CFAD, #A0D468, #FFCE54, #FC6E51, #ED5565, #AC92EC, #EC87C0
83
103
  */
84
- export declare const generateRandomVibrantHexColor: () => string;
104
+ export declare const generateRandomVibrantHexColor: () => Hex;
105
+ /** WCAG 2.x contrast ratio between two hex colors, from 1 (same) to 21 (black on white). Order-independent. */
106
+ export declare const contrastRatio: (a: Hex, b: Hex) => number;
107
+ /**
108
+ * Whether `fg` on `bg` meets WCAG AA: ≥ 4.5:1, or ≥ 3:1 when `isLargeText`.
109
+ * @param isLargeText - Text is ≥ 18pt, or ≥ 14pt bold. @default false
110
+ */
111
+ export declare const meetsAA: (fg: Hex, bg: Hex, isLargeText?: boolean) => boolean;
112
+ /**
113
+ * Per-channel sRGB interpolation `a·(1−t) + b·t`, rounded: `t = 0` is `a`, `t = 1` is `b`.
114
+ * The formula the token `subtle`/`strong` steps are derived with (Tokens Q3).
115
+ * @param t - Weight of `b`, clamped to 0–1.
116
+ */
117
+ export declare const mix: (a: Hex, b: Hex, t: number) => Hex;