@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,341 @@
1
+ import VisuallyHidden from "../a11y/VisuallyHidden.js";
2
+ import { Placement } from "../theme/enums.js";
3
+ import Text, { TextSize, TextTransform, TextVariant, TextWeight } from "../text/Text.js";
4
+ import { useControlledOpenState } from "../hooks/useControlledOpenState.js";
5
+ import Tooltip from "../tooltip/Tooltip.js";
6
+ import Divider from "../layout/Divider.js";
7
+ import ScrollArea from "../layout/ScrollArea.js";
8
+ import Icon, { IconVariant } from "../icons/Icon.js";
9
+ import Rotate from "../transform/Rotate.js";
10
+ import Chip, { ChipSize } from "../chips/Chip.js";
11
+ import CollapseMotion from "../transform/internal/CollapseMotion.js";
12
+ /* empty css */
13
+ import { styled } from "@linaria/react";
14
+ import { createContext, forwardRef, useContext, useId, useMemo } from "react";
15
+ import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
16
+ import { cx } from "@linaria/core";
17
+ import { ArrowUpRightIcon, CaretRightIcon } from "@phosphor-icons/react";
18
+ //#region src/navigation/SidebarNav.tsx
19
+ /**
20
+ * The app's primary navigation column: a `<nav>` of `NavItem` destinations, optionally sorted into
21
+ * labelled `NavGroup` sections that can fold, with a `header` row above (brand mark, workspace
22
+ * switcher) and a `footer` pinned below (account, settings, the collapse toggle). Each `NavItem`
23
+ * is a link (`href`, rendered through a router `as`) or a button, with an icon, a label, an
24
+ * optional count `Chip` and an active state for the current page. `isCollapsed` turns the column
25
+ * into an icon rail whose labels move into tooltips.
26
+ *
27
+ * SidebarNav fills the box its parent gives it (the app's frame sizes, resizes and collapses that box)
28
+ * and never routes: the app passes `href` and derives `isActive` from the current route. Sibling
29
+ * views inside a page are `Tabs`; a hierarchy of records is a `Tree`.
30
+ *
31
+ * SSR: nothing touches `window` or `document` at module scope; ids come from `useId`.
32
+ */
33
+ var SidebarNavContext = createContext({
34
+ isCollapsed: false,
35
+ isInList: false
36
+ });
37
+ /** The default landmark name. */
38
+ var DEFAULT_ARIA_LABEL = "Main";
39
+ /** Item icon size: the `MEDIUM` rung's icon, one step below III-A.4 (Mitch, 2026-10-04). */
40
+ var ITEM_ICON_PX = 14;
41
+ /** The external-link arrow. */
42
+ var SMALL_ICON_PX = 12;
43
+ /** The section caret: 10px on the 24px group heading (the collapsible Widget's caret, small rung). */
44
+ var CARET_PX = 10;
45
+ var Root = /*#__PURE__*/ styled("nav")({
46
+ name: "Root",
47
+ class: "gx-SidebarNav-r1igp7em",
48
+ propsAsIs: false
49
+ });
50
+ /** The 48px top row: the Topbar height, so the two bottom hairlines meet in an app frame. */
51
+ var Header = /*#__PURE__*/ styled("div")({
52
+ name: "Header",
53
+ class: "gx-SidebarNav-Header-h7sesvp",
54
+ propsAsIs: false
55
+ });
56
+ var List = /*#__PURE__*/ styled("ul")({
57
+ name: "List",
58
+ class: "gx-SidebarNav-List-lxg8t2f",
59
+ propsAsIs: false
60
+ });
61
+ var Footer = /*#__PURE__*/ styled("div")({
62
+ name: "Footer",
63
+ class: "gx-SidebarNav-Footer-f1bmww1o",
64
+ propsAsIs: false
65
+ });
66
+ /** A list item holding one `NavItem`. */
67
+ var ItemLi = /*#__PURE__*/ styled("li")({
68
+ name: "ItemLi",
69
+ class: "gx-SidebarNav-ItemLi-iwiy54t",
70
+ propsAsIs: false
71
+ });
72
+ /** The shared item box: a link or a button on the `MEDIUM` rung (a plain string, like the mixins). */
73
+ var ItemLink = /*#__PURE__*/ styled("a")({
74
+ name: "ItemLink",
75
+ class: "gx-SidebarNav-ItemLink-i1otz5la",
76
+ propsAsIs: false
77
+ });
78
+ var ItemButton = /*#__PURE__*/ styled("button")({
79
+ name: "ItemButton",
80
+ class: "gx-SidebarNav-ItemButton-ijewkq1",
81
+ propsAsIs: false
82
+ });
83
+ var LetterBox = /*#__PURE__*/ styled("span")({
84
+ name: "LetterBox",
85
+ class: "gx-SidebarNav-LetterBox-l12h7i8o",
86
+ propsAsIs: false
87
+ });
88
+ var Trailing = /*#__PURE__*/ styled("span")({
89
+ name: "Trailing",
90
+ class: "gx-SidebarNav-Trailing-t156g88p",
91
+ propsAsIs: false
92
+ });
93
+ /** A section: its heading (or the rail divider) and its own list. */
94
+ var GroupRoot = /*#__PURE__*/ styled("li")({
95
+ name: "GroupRoot",
96
+ class: "gx-SidebarNav-GroupRoot-g1ka7is",
97
+ propsAsIs: false
98
+ });
99
+ var GroupList = /*#__PURE__*/ styled("ul")({
100
+ name: "GroupList",
101
+ class: "gx-SidebarNav-GroupList-gls5awu",
102
+ propsAsIs: false
103
+ });
104
+ var GroupLabel = /*#__PURE__*/ styled("div")({
105
+ name: "GroupLabel",
106
+ class: "gx-SidebarNav-GroupLabel-g4ix9y9",
107
+ propsAsIs: false
108
+ });
109
+ var GroupToggle = /*#__PURE__*/ styled("button")({
110
+ name: "GroupToggle",
111
+ class: "gx-SidebarNav-GroupToggle-gqfe40h",
112
+ propsAsIs: false
113
+ });
114
+ /** The rail's stand-in for a section heading; the first section has none. */
115
+ var GroupDivider = /*#__PURE__*/ styled("div")({
116
+ name: "GroupDivider",
117
+ class: "gx-SidebarNav-GroupDivider-g9ff0oz",
118
+ propsAsIs: false
119
+ });
120
+ /** Rail mode: the header content and the footer content center in the 48px column. */
121
+ var ROOT_COLLAPSED_CSS = "gx-SidebarNav-ROOT_COLLAPSED_CSS-r6f6h0i";
122
+ /** The scrolling list takes the height between header and footer. */
123
+ var LIST_SCROLL_CSS = "gx-SidebarNav-LIST_SCROLL_CSS-lyqt4ix";
124
+ var ITEM_LI_COLLAPSED_CSS = "gx-SidebarNav-ITEM_LI_COLLAPSED_CSS-iieaizt";
125
+ /** Hover and press on an enabled item that is not the current page. */
126
+ var ITEM_INTERACTIVE_CSS = "gx-SidebarNav-ITEM_INTERACTIVE_CSS-io6ca5i";
127
+ /** The current page: the selection fill (`background.selected`) and primary text (hover keeps it). */
128
+ var ITEM_ACTIVE_CSS = "gx-SidebarNav-ITEM_ACTIVE_CSS-iuopbgu";
129
+ var ITEM_DISABLED_CSS = "gx-SidebarNav-ITEM_DISABLED_CSS-i6m4lrh";
130
+ /** Rail mode: a 32px square (the 8px list padding makes the rail 48px). */
131
+ var ITEM_COLLAPSED_CSS = "gx-SidebarNav-ITEM_COLLAPSED_CSS-i1qgyulv";
132
+ var LABEL_CSS = "gx-SidebarNav-LABEL_CSS-l189383r";
133
+ var VISUALLY_HIDDEN_CSS = "gx-SidebarNav-VISUALLY_HIDDEN_CSS-v1ietnnw";
134
+ /** The primary navigation column: header, scrolling list of items and sections, footer. */
135
+ var SidebarNav = forwardRef(function SidebarNav({ children, header, footer, isCollapsed = false, ariaLabel, id, className, style, ...rest }, ref) {
136
+ const name = ariaLabel || rest["aria-label"] || (rest["aria-labelledby"] ? void 0 : DEFAULT_ARIA_LABEL);
137
+ const listContext = useMemo(() => ({
138
+ isCollapsed,
139
+ isInList: true
140
+ }), [isCollapsed]);
141
+ const footerContext = useMemo(() => ({
142
+ isCollapsed,
143
+ isInList: false
144
+ }), [isCollapsed]);
145
+ return /* @__PURE__ */ jsxs(Root, {
146
+ ...rest,
147
+ ref,
148
+ id,
149
+ "aria-label": name,
150
+ className: cx(isCollapsed && ROOT_COLLAPSED_CSS, className),
151
+ style,
152
+ children: [
153
+ header !== void 0 && header !== null && header !== false && /* @__PURE__ */ jsx(Header, { children: header }),
154
+ /* @__PURE__ */ jsx(ScrollArea, {
155
+ className: LIST_SCROLL_CSS,
156
+ children: /* @__PURE__ */ jsx(SidebarNavContext.Provider, {
157
+ value: listContext,
158
+ children: /* @__PURE__ */ jsx(List, {
159
+ role: "list",
160
+ children
161
+ })
162
+ })
163
+ }),
164
+ footer !== void 0 && footer !== null && footer !== false && /* @__PURE__ */ jsx(SidebarNavContext.Provider, {
165
+ value: footerContext,
166
+ children: /* @__PURE__ */ jsx(Footer, { children: footer })
167
+ })
168
+ ]
169
+ });
170
+ });
171
+ SidebarNav.displayName = "SidebarNav";
172
+ /** One destination: a link (`href`) or a button, with an icon, a label, a count and an active state. */
173
+ var NavItem = forwardRef(function NavItem({ label, icon, href, as, isExternal = false, onClick, isActive = false, isDisabled = false, count, trailing, tooltip, id, className, style, ...rest }, ref) {
174
+ const { isCollapsed, isInList } = useContext(SidebarNavContext);
175
+ const isLink = href !== void 0;
176
+ const hasCount = count !== void 0 && count > 0;
177
+ const hasTooltip = tooltip !== void 0 && tooltip !== null && tooltip !== "";
178
+ const defaultBody = isCollapsed && !hasTooltip ? `${label}${hasCount ? ` · ${Math.floor(count)}` : ""}` : "";
179
+ const isDefaultBody = defaultBody !== "";
180
+ const tooltipBody = hasTooltip ? tooltip : defaultBody;
181
+ const handleClick = (event) => {
182
+ if (isDisabled) {
183
+ event.preventDefault();
184
+ return;
185
+ }
186
+ onClick?.(event);
187
+ };
188
+ const computedAria = {};
189
+ if (isActive) computedAria["aria-current"] = "page";
190
+ if (isDisabled) computedAria["aria-disabled"] = true;
191
+ const controlled = {
192
+ id,
193
+ onClick: handleClick,
194
+ style,
195
+ className: cx(!isActive && !isDisabled && ITEM_INTERACTIVE_CSS, isActive && ITEM_ACTIVE_CSS, isDisabled && ITEM_DISABLED_CSS, isCollapsed && ITEM_COLLAPSED_CSS, className)
196
+ };
197
+ if (isLink) if (isDisabled) {
198
+ controlled.role = "link";
199
+ controlled.tabIndex = 0;
200
+ } else {
201
+ if (as !== void 0) controlled.as = as;
202
+ controlled.href = href;
203
+ if (isExternal) {
204
+ controlled.target = "_blank";
205
+ controlled.rel = "noopener noreferrer";
206
+ }
207
+ }
208
+ else controlled.type = "button";
209
+ const content = /* @__PURE__ */ jsxs(Fragment$1, { children: [
210
+ icon !== void 0 ? /* @__PURE__ */ jsx(Icon, {
211
+ component: icon,
212
+ size: ITEM_ICON_PX,
213
+ variant: isActive && !isDisabled ? IconVariant.PRIMARY : IconVariant.INHERIT
214
+ }) : isCollapsed && /* @__PURE__ */ jsx(LetterBox, {
215
+ "aria-hidden": true,
216
+ children: /* @__PURE__ */ jsx(Text, {
217
+ as: "span",
218
+ size: TextSize.CAPTION,
219
+ weight: TextWeight.MEDIUM,
220
+ variant: TextVariant.INHERIT,
221
+ children: label.charAt(0)
222
+ })
223
+ }),
224
+ /* @__PURE__ */ jsx(Text, {
225
+ as: "span",
226
+ size: TextSize.BODY_MD,
227
+ weight: isActive ? TextWeight.MEDIUM : TextWeight.REGULAR,
228
+ variant: TextVariant.INHERIT,
229
+ lineClamp: 1,
230
+ shouldTooltipOnOverflow: !hasTooltip && !isCollapsed,
231
+ className: cx(LABEL_CSS, isCollapsed && VISUALLY_HIDDEN_CSS),
232
+ children: label
233
+ }),
234
+ hasCount && (isCollapsed ? /* @__PURE__ */ jsx(VisuallyHidden, { children: /* @__PURE__ */ jsx(Chip, {
235
+ count,
236
+ size: ChipSize.SMALL
237
+ }) }) : /* @__PURE__ */ jsx(Chip, {
238
+ count,
239
+ size: ChipSize.SMALL
240
+ })),
241
+ !isCollapsed && trailing !== void 0 && trailing !== null && /* @__PURE__ */ jsx(Trailing, { children: trailing }),
242
+ isLink && isExternal && !isCollapsed && /* @__PURE__ */ jsx(Icon, {
243
+ component: ArrowUpRightIcon,
244
+ size: SMALL_ICON_PX,
245
+ variant: IconVariant.TERTIARY
246
+ }),
247
+ isLink && isExternal && /* @__PURE__ */ jsx(VisuallyHidden, { children: " (opens in a new tab)" })
248
+ ] });
249
+ const control = isLink ? /* @__PURE__ */ jsx(ItemLink, {
250
+ ...computedAria,
251
+ ...rest,
252
+ ...controlled,
253
+ ref,
254
+ children: content
255
+ }) : /* @__PURE__ */ jsx(ItemButton, {
256
+ ...computedAria,
257
+ ...rest,
258
+ ...controlled,
259
+ ref,
260
+ children: content
261
+ });
262
+ const item = /* @__PURE__ */ jsx(Tooltip, {
263
+ body: tooltipBody,
264
+ placement: Placement.RIGHT,
265
+ isDisabled: tooltipBody === "",
266
+ ...isDefaultBody ? { "aria-hidden": true } : {},
267
+ children: control
268
+ });
269
+ if (!isInList) return item;
270
+ return /* @__PURE__ */ jsx(ItemLi, {
271
+ className: cx(isCollapsed && ITEM_LI_COLLAPSED_CSS),
272
+ children: item
273
+ });
274
+ });
275
+ NavItem.displayName = "NavItem";
276
+ /** A labelled section of items; with `isCollapsible` its heading folds it. */
277
+ var NavGroup = forwardRef(function NavGroup({ label, children, isCollapsible = false, isOpen: isOpenProp, defaultIsOpen = false, onOpenChange, id, className, style, ...rest }, ref) {
278
+ const { isCollapsed } = useContext(SidebarNavContext);
279
+ const baseId = useId();
280
+ const labelId = `${baseId}-label`;
281
+ const listId = `${baseId}-list`;
282
+ const { isOpen: openState, setOpen } = useControlledOpenState({
283
+ isOpen: isOpenProp,
284
+ defaultIsOpen,
285
+ onOpenChange
286
+ });
287
+ const isOpen = isCollapsed || !isCollapsible || openState;
288
+ const listContext = useMemo(() => ({
289
+ isCollapsed,
290
+ isInList: true
291
+ }), [isCollapsed]);
292
+ const labelText = /* @__PURE__ */ jsx(Text, {
293
+ as: "span",
294
+ id: labelId,
295
+ size: TextSize.CAPTION,
296
+ weight: TextWeight.MEDIUM,
297
+ variant: TextVariant.TERTIARY,
298
+ transform: TextTransform.UPPERCASE,
299
+ lineClamp: 1,
300
+ className: cx(isCollapsed && VISUALLY_HIDDEN_CSS),
301
+ children: label
302
+ });
303
+ const heading = isCollapsed ? /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(GroupDivider, { children: /* @__PURE__ */ jsx(Divider, {}) }), labelText] }) : isCollapsible ? /* @__PURE__ */ jsxs(GroupToggle, {
304
+ type: "button",
305
+ "aria-expanded": isOpen,
306
+ "aria-controls": isOpen ? listId : void 0,
307
+ onClick: () => setOpen(!openState),
308
+ children: [labelText, /* @__PURE__ */ jsx(Rotate, {
309
+ isRotated: isOpen,
310
+ deg: 90,
311
+ children: /* @__PURE__ */ jsx(Icon, {
312
+ component: CaretRightIcon,
313
+ size: CARET_PX,
314
+ variant: IconVariant.TERTIARY
315
+ })
316
+ })]
317
+ }) : /* @__PURE__ */ jsx(GroupLabel, { children: labelText });
318
+ const list = /* @__PURE__ */ jsx(SidebarNavContext.Provider, {
319
+ value: listContext,
320
+ children: /* @__PURE__ */ jsx(GroupList, {
321
+ role: "list",
322
+ id: listId,
323
+ "aria-labelledby": labelId,
324
+ children
325
+ })
326
+ });
327
+ return /* @__PURE__ */ jsxs(GroupRoot, {
328
+ ...rest,
329
+ ref,
330
+ id,
331
+ className,
332
+ style,
333
+ children: [heading, isCollapsible ? /* @__PURE__ */ jsx(CollapseMotion, {
334
+ isOpen,
335
+ children: list
336
+ }) : list]
337
+ });
338
+ });
339
+ NavGroup.displayName = "NavGroup";
340
+ //#endregion
341
+ export { NavGroup, NavItem, SidebarNav as default };
@@ -0,0 +1,52 @@
1
+ import { type AriaAttributes, type CSSProperties } from "react";
2
+ import { Orientation } from "../theme/enums.js";
3
+ /** Canonical rungs, subset: the step row height. */
4
+ export declare enum StepperSize {
5
+ /** 24px step rows, 16px markers, body_sm labels. */
6
+ SMALL = "SMALL",
7
+ /** 32px step rows, 20px markers, body_md labels. The default. */
8
+ MEDIUM = "MEDIUM"
9
+ }
10
+ /** One step of a Stepper. */
11
+ export interface StepperStep {
12
+ /** Step name, one short line ("Source", "Schema", "Schedule"). */
13
+ label: string;
14
+ /** Second line under the label: a summary of a done step or a hint for an upcoming one. */
15
+ description?: string;
16
+ /** The step failed (validation, a connection test). Shows the error marker whatever its position. */
17
+ isError?: boolean;
18
+ }
19
+ export interface StepperProps extends AriaAttributes {
20
+ /** The steps, in order. Two to seven is the useful range. */
21
+ steps: StepperStep[];
22
+ /** Zero-based index of the current step. Steps before it are done; `steps.length` marks every step done. */
23
+ value: number;
24
+ /** When set, done steps become buttons, and pressing one calls this with its index (to go back). Current and upcoming steps are never pressable. */
25
+ onChange?: (value: number) => void;
26
+ /**
27
+ * `HORIZONTAL`: one row, connectors stretch between steps. `VERTICAL`: one column, connectors run down between markers, descriptions sit under labels.
28
+ * @default Orientation.HORIZONTAL
29
+ */
30
+ orientation?: Orientation;
31
+ /**
32
+ * `SMALL` for dense surfaces (a modal header, a side panel); `MEDIUM` for a page.
33
+ * @default StepperSize.MEDIUM
34
+ */
35
+ size?: StepperSize;
36
+ /**
37
+ * Accessible name of the step list. An explicit `aria-label` or `aria-labelledby` wins over it.
38
+ * @default "Progress"
39
+ */
40
+ ariaLabel?: string;
41
+ /** DOM id on the root `<ol>`. */
42
+ id?: string;
43
+ /** Any `data-*` attribute, forwarded to the root `<ol>`. */
44
+ [dataAttribute: `data-${string}`]: string | number | boolean | undefined;
45
+ /** Extra class on the root `<ol>`. */
46
+ className?: string;
47
+ /** Inline style on the root `<ol>`; only for setting CSS custom properties. */
48
+ style?: CSSProperties;
49
+ }
50
+ /** An ordered list of steps with done / current / upcoming / error markers. */
51
+ declare const Stepper: import("react").ForwardRefExoticComponent<StepperProps & import("react").RefAttributes<HTMLOListElement>>;
52
+ export default Stepper;
@@ -0,0 +1,207 @@
1
+ import VisuallyHidden from "../a11y/VisuallyHidden.js";
2
+ import { Orientation } from "../theme/enums.js";
3
+ import Text, { TextSize, TextVariant, TextWeight } from "../text/Text.js";
4
+ import Icon, { IconVariant } from "../icons/Icon.js";
5
+ /* empty css */
6
+ import { styled } from "@linaria/react";
7
+ import { forwardRef, useId } from "react";
8
+ import { jsx, jsxs } from "react/jsx-runtime";
9
+ import { cx } from "@linaria/core";
10
+ import { match } from "ts-pattern";
11
+ import { CheckIcon, ExclamationMarkIcon } from "@phosphor-icons/react";
12
+ //#region src/navigation/Stepper.tsx
13
+ /**
14
+ * Progress through a known, ordered sequence of steps: a setup wizard, a connector onboarding, a
15
+ * multi-page form. Each step is a numbered marker with a label (and an optional description),
16
+ * joined by hairline connectors, in one of four states derived from `value` and the step's
17
+ * `isError`: done (before `value`, a check), current (a `solid.primary` marker), upcoming (a hairline
18
+ * marker) and error (an error marker, whatever its position).
19
+ *
20
+ * The app owns the wizard: Stepper never advances itself. With `onChange`, done steps become
21
+ * buttons that go back. Not `Tabs` (free movement between peer views), not `Breadcrumbs`, not a
22
+ * `ProgressBar`.
23
+ */
24
+ /** Canonical rungs, subset: the step row height. */
25
+ var StepperSize = /* @__PURE__ */ function(StepperSize) {
26
+ /** 24px step rows, 16px markers, body_sm labels. */
27
+ StepperSize["SMALL"] = "SMALL";
28
+ /** 32px step rows, 20px markers, body_md labels. The default. */
29
+ StepperSize["MEDIUM"] = "MEDIUM";
30
+ return StepperSize;
31
+ }({});
32
+ var Root = /*#__PURE__*/ styled("ol")({
33
+ name: "Root",
34
+ class: "gx-Stepper-r12f0za8",
35
+ propsAsIs: false
36
+ });
37
+ var Item = /*#__PURE__*/ styled("li")({
38
+ name: "Item",
39
+ class: "gx-Stepper-Item-i19a96w9",
40
+ propsAsIs: false
41
+ });
42
+ var StepBody = /*#__PURE__*/ styled("div")({
43
+ name: "StepBody",
44
+ class: "gx-Stepper-StepBody-s1ykcpbe",
45
+ propsAsIs: false
46
+ });
47
+ var Marker = /*#__PURE__*/ styled("span")({
48
+ name: "Marker",
49
+ class: "gx-Stepper-Marker-m1o1000g",
50
+ propsAsIs: false
51
+ });
52
+ /** The label's first line sits on the marker's center line on whole pixels. */
53
+ var Labels = /*#__PURE__*/ styled("span")({
54
+ name: "Labels",
55
+ class: "gx-Stepper-Labels-l1mc7icv",
56
+ propsAsIs: false
57
+ });
58
+ /** A hairline drawn as a box, not a border on the step. */
59
+ var Connector = /*#__PURE__*/ styled("span")({
60
+ name: "Connector",
61
+ class: "gx-Stepper-Connector-c1dui4jh",
62
+ propsAsIs: false
63
+ });
64
+ /** Horizontally, the root gap spaces each connector from the next marker as the item gap does from its own body. */
65
+ var STEPPER_ORIENTATION_TO_CSS_MAP = {
66
+ [Orientation.HORIZONTAL]: "gx-Stepper-Orientation_HORIZONTAL-o16d5g79",
67
+ [Orientation.VERTICAL]: "gx-Stepper-Orientation_VERTICAL-o1049ro5"
68
+ };
69
+ /** Horizontal items share the row (the last hugs its label); vertical items stack 12px apart. */
70
+ var STEPPER_ORIENTATION_TO_ITEM_CSS_MAP = {
71
+ [Orientation.HORIZONTAL]: "gx-Stepper-Orientation_HORIZONTAL-oql4yxv",
72
+ [Orientation.VERTICAL]: "gx-Stepper-Orientation_VERTICAL-o1w24kam"
73
+ };
74
+ /** On the markers' center line horizontally; from this marker to the next one vertically. */
75
+ var STEPPER_ORIENTATION_TO_CONNECTOR_CSS_MAP = {
76
+ [Orientation.HORIZONTAL]: "gx-Stepper-Orientation_HORIZONTAL-o18ilulu",
77
+ [Orientation.VERTICAL]: "gx-Stepper-Orientation_VERTICAL-o10rn855"
78
+ };
79
+ /** Marker box, the body gap and the label inset per size. */
80
+ var STEPPER_SIZE_TO_CSS_MAP = {
81
+ ["SMALL"]: "gx-Stepper-SMALL-s1yz4n12",
82
+ ["MEDIUM"]: "gx-Stepper-MEDIUM-m183g7q0"
83
+ };
84
+ /** Composed after the static rules, so the reset does not undo the layout. */
85
+ var PRESSABLE_CSS = "gx-Stepper-PRESSABLE_CSS-p1efnnpp";
86
+ var STEP_STATE_TO_MARKER_CSS_MAP = {
87
+ ["DONE"]: "gx-Stepper-DONE-d1qppj3j",
88
+ ["CURRENT"]: "gx-Stepper-CURRENT-c1tzddsu",
89
+ ["UPCOMING"]: "gx-Stepper-UPCOMING-u161l825",
90
+ ["ERROR"]: "gx-Stepper-ERROR-e12l09wj"
91
+ };
92
+ var STEPPER_SIZE_TO_TEXT_SIZE_MAP = {
93
+ ["SMALL"]: TextSize.BODY_SM,
94
+ ["MEDIUM"]: TextSize.BODY_MD
95
+ };
96
+ var STEPPER_SIZE_TO_DESCRIPTION_SIZE_MAP = {
97
+ ["SMALL"]: TextSize.CAPTION,
98
+ ["MEDIUM"]: TextSize.BODY_SM
99
+ };
100
+ var STEPPER_SIZE_TO_ICON_PX_MAP = {
101
+ ["SMALL"]: 10,
102
+ ["MEDIUM"]: 12
103
+ };
104
+ var STEP_STATE_TO_LABEL_VARIANT_MAP = {
105
+ ["DONE"]: TextVariant.SECONDARY,
106
+ ["CURRENT"]: TextVariant.PRIMARY,
107
+ ["UPCOMING"]: TextVariant.TERTIARY
108
+ };
109
+ /** The state in words, so it is not conveyed by color or glyph alone (WCAG 1.4.1). */
110
+ var STEP_STATE_TO_A11Y_TEXT_MAP = {
111
+ ["DONE"]: "Completed",
112
+ ["CURRENT"]: "Current step",
113
+ ["UPCOMING"]: "Not started",
114
+ ["ERROR"]: "Error"
115
+ };
116
+ /** Done, current or upcoming, from the step's index and the clamped `value`. */
117
+ function positionOf(index, value) {
118
+ if (index < value) return "DONE";
119
+ if (index === value) return "CURRENT";
120
+ return "UPCOMING";
121
+ }
122
+ /** The marker's content: a check, an exclamation mark, or the step number. */
123
+ function markerContent(state, index, size) {
124
+ return match(state).with("DONE", () => /* @__PURE__ */ jsx(Icon, {
125
+ component: CheckIcon,
126
+ size: STEPPER_SIZE_TO_ICON_PX_MAP[size],
127
+ variant: IconVariant.PRIMARY
128
+ })).with("ERROR", () => /* @__PURE__ */ jsx(Icon, {
129
+ component: ExclamationMarkIcon,
130
+ size: STEPPER_SIZE_TO_ICON_PX_MAP[size],
131
+ variant: IconVariant.ERROR
132
+ })).with("CURRENT", "UPCOMING", () => /* @__PURE__ */ jsx(Text, {
133
+ as: "span",
134
+ size: TextSize.CAPTION,
135
+ weight: TextWeight.MEDIUM,
136
+ variant: TextVariant.INHERIT,
137
+ isTabular: true,
138
+ children: index + 1
139
+ })).exhaustive();
140
+ }
141
+ /** An ordered list of steps with done / current / upcoming / error markers. */
142
+ var Stepper = forwardRef(function Stepper({ steps, value, onChange, orientation = Orientation.HORIZONTAL, size = "MEDIUM", ariaLabel = "Progress", className, ...rest }, ref) {
143
+ const current = Math.min(steps.length, Math.max(0, Number.isNaN(value) ? 0 : Math.floor(value)));
144
+ const hasExplicitName = rest["aria-label"] !== void 0 || rest["aria-labelledby"] !== void 0;
145
+ const baseId = useId();
146
+ return /* @__PURE__ */ jsx(Root, {
147
+ ...rest,
148
+ ref,
149
+ "aria-label": hasExplicitName ? rest["aria-label"] : ariaLabel,
150
+ className: cx(STEPPER_ORIENTATION_TO_CSS_MAP[orientation], STEPPER_SIZE_TO_CSS_MAP[size], className),
151
+ children: steps.map((step, index) => {
152
+ const position = positionOf(index, current);
153
+ const state = step.isError === true ? "ERROR" : position;
154
+ const isPressable = onChange !== void 0 && position === "DONE";
155
+ const labelId = `${baseId}-${String(index)}-label`;
156
+ const stateId = `${baseId}-${String(index)}-state`;
157
+ const descriptionId = `${baseId}-${String(index)}-description`;
158
+ const hasDescription = step.description !== void 0 && step.description !== "";
159
+ return /* @__PURE__ */ jsxs(Item, {
160
+ "aria-current": position === "CURRENT" ? "step" : void 0,
161
+ className: STEPPER_ORIENTATION_TO_ITEM_CSS_MAP[orientation],
162
+ children: [/* @__PURE__ */ jsxs(StepBody, {
163
+ as: isPressable ? "button" : "div",
164
+ ...isPressable ? {
165
+ type: "button",
166
+ onClick: () => onChange(index),
167
+ "aria-labelledby": `${labelId} ${stateId}`,
168
+ ...hasDescription ? { "aria-describedby": descriptionId } : {}
169
+ } : {},
170
+ className: cx(isPressable && PRESSABLE_CSS),
171
+ children: [/* @__PURE__ */ jsx(Marker, {
172
+ className: STEP_STATE_TO_MARKER_CSS_MAP[state],
173
+ "aria-hidden": true,
174
+ children: markerContent(state, index, size)
175
+ }), /* @__PURE__ */ jsxs(Labels, { children: [
176
+ /* @__PURE__ */ jsx(Text, {
177
+ as: "span",
178
+ id: labelId,
179
+ size: STEPPER_SIZE_TO_TEXT_SIZE_MAP[size],
180
+ weight: position === "CURRENT" ? TextWeight.MEDIUM : TextWeight.REGULAR,
181
+ variant: isPressable ? TextVariant.INHERIT : STEP_STATE_TO_LABEL_VARIANT_MAP[position],
182
+ lineClamp: 1,
183
+ children: step.label
184
+ }),
185
+ hasDescription && /* @__PURE__ */ jsx(Text, {
186
+ as: "span",
187
+ id: descriptionId,
188
+ size: STEPPER_SIZE_TO_DESCRIPTION_SIZE_MAP[size],
189
+ variant: TextVariant.TERTIARY,
190
+ children: step.description
191
+ }),
192
+ /* @__PURE__ */ jsx(VisuallyHidden, {
193
+ id: stateId,
194
+ children: STEP_STATE_TO_A11Y_TEXT_MAP[state]
195
+ })
196
+ ] })]
197
+ }), index < steps.length - 1 && /* @__PURE__ */ jsx(Connector, {
198
+ "aria-hidden": true,
199
+ className: STEPPER_ORIENTATION_TO_CONNECTOR_CSS_MAP[orientation]
200
+ })]
201
+ }, `step-${String(index)}`);
202
+ })
203
+ });
204
+ });
205
+ Stepper.displayName = "Stepper";
206
+ //#endregion
207
+ export { StepperSize, Stepper as default };