@galaxy-io/dls 1.6.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (538) hide show
  1. package/README.md +47 -50
  2. package/biome/index.json +74 -0
  3. package/biome/plugins/no-hex-literal.grit +20 -0
  4. package/biome/plugins/no-inline-style.grit +13 -0
  5. package/biome/plugins/no-margin.grit +9 -0
  6. package/biome/plugins/warn/no-hex-literal.grit +23 -0
  7. package/biome/plugins/warn/no-inline-style.grit +13 -0
  8. package/biome/plugins/warn/no-margin.grit +9 -0
  9. package/dist/a11y/FocusScope.d.ts +44 -0
  10. package/dist/a11y/FocusScope.js +229 -0
  11. package/dist/a11y/VisuallyHidden.d.ts +21 -0
  12. package/dist/a11y/VisuallyHidden.js +30 -0
  13. package/dist/avatar/Avatar.d.ts +56 -14
  14. package/dist/avatar/Avatar.js +250 -96
  15. package/dist/avatar/AvatarGroup.d.ts +43 -0
  16. package/dist/avatar/AvatarGroup.js +153 -0
  17. package/dist/backgrounds/GridBackground.d.ts +48 -0
  18. package/dist/backgrounds/GridBackground.js +146 -0
  19. package/dist/beacons/Beacon.d.ts +86 -22
  20. package/dist/beacons/Beacon.js +170 -47
  21. package/dist/brand/GalaxyFilamentWordmark.d.ts +30 -0
  22. package/dist/brand/GalaxyFilamentWordmark.js +39 -0
  23. package/dist/brand/GalaxyLogomark.d.ts +26 -0
  24. package/dist/brand/GalaxyLogomark.js +41 -0
  25. package/dist/brand/GalaxyLogomarkAnimation.d.ts +36 -0
  26. package/dist/brand/GalaxyLogomarkAnimation.js +107 -0
  27. package/dist/brand/GalaxyWordmark.d.ts +30 -0
  28. package/dist/brand/GalaxyWordmark.js +63 -0
  29. package/dist/brand/assets/galaxy-logomark-animation.js +136678 -0
  30. package/dist/brand/brandMark.d.ts +26 -0
  31. package/dist/brand/brandMark.js +35 -0
  32. package/dist/buttons/Button.d.ts +148 -59
  33. package/dist/buttons/Button.js +437 -227
  34. package/dist/buttons/ButtonGroup.d.ts +38 -0
  35. package/dist/buttons/ButtonGroup.js +68 -0
  36. package/dist/buttons/CopyButton.d.ts +77 -0
  37. package/dist/buttons/CopyButton.js +65 -0
  38. package/dist/charts/AreaChart.d.ts +49 -0
  39. package/dist/charts/AreaChart.js +31 -0
  40. package/dist/charts/BarChart.d.ts +54 -67
  41. package/dist/charts/BarChart.js +136 -116
  42. package/dist/charts/ChartAxis.d.ts +35 -40
  43. package/dist/charts/ChartAxis.js +114 -90
  44. package/dist/charts/ChartCategoryTargets.d.ts +12 -26
  45. package/dist/charts/ChartCategoryTargets.js +32 -20
  46. package/dist/charts/ChartFrame.d.ts +69 -116
  47. package/dist/charts/ChartFrame.js +253 -119
  48. package/dist/charts/ChartGroupProvider.d.ts +30 -41
  49. package/dist/charts/ChartGroupProvider.js +20 -7
  50. package/dist/charts/ChartLegend.d.ts +27 -48
  51. package/dist/charts/ChartLegend.js +206 -125
  52. package/dist/charts/ChartMarkTargets.d.ts +12 -28
  53. package/dist/charts/ChartMarkTargets.js +33 -20
  54. package/dist/charts/ChartPrimitives.d.ts +50 -305
  55. package/dist/charts/ChartPrimitives.js +65 -413
  56. package/dist/charts/ChartTooltip.d.ts +20 -26
  57. package/dist/charts/ChartTooltip.js +77 -40
  58. package/dist/charts/Heatmap.d.ts +35 -0
  59. package/dist/charts/Heatmap.js +295 -0
  60. package/dist/charts/LineChart.d.ts +54 -47
  61. package/dist/charts/LineChart.js +159 -117
  62. package/dist/charts/PieChart.d.ts +32 -53
  63. package/dist/charts/PieChart.js +149 -135
  64. package/dist/charts/Sparkline.d.ts +107 -0
  65. package/dist/charts/Sparkline.js +244 -0
  66. package/dist/charts/StatChart.d.ts +37 -13
  67. package/dist/charts/StatChart.js +82 -35
  68. package/dist/charts/barChartGeometry.d.ts +138 -86
  69. package/dist/charts/barChartGeometry.js +122 -101
  70. package/dist/charts/barChartLegend.d.ts +14 -18
  71. package/dist/charts/barChartLegend.js +18 -13
  72. package/dist/charts/chartFormat.d.ts +12 -18
  73. package/dist/charts/chartFormat.js +20 -52
  74. package/dist/charts/chartPalette.d.ts +33 -0
  75. package/dist/charts/chartPalette.js +68 -0
  76. package/dist/charts/chartScales.d.ts +41 -108
  77. package/dist/charts/chartScales.js +62 -128
  78. package/dist/charts/constants.d.ts +96 -256
  79. package/dist/charts/constants.js +105 -275
  80. package/dist/charts/heatmapGeometry.d.ts +95 -0
  81. package/dist/charts/heatmapGeometry.js +155 -0
  82. package/dist/charts/lineChartGeometry.d.ts +108 -58
  83. package/dist/charts/lineChartGeometry.js +120 -78
  84. package/dist/charts/pieChartGeometry.d.ts +66 -40
  85. package/dist/charts/pieChartGeometry.js +68 -38
  86. package/dist/charts/types.d.ts +197 -466
  87. package/dist/charts/types.js +55 -144
  88. package/dist/charts/useCartesianChartLayout.d.ts +28 -59
  89. package/dist/charts/useCartesianChartLayout.js +47 -32
  90. package/dist/charts/useChartDimensions.d.ts +19 -40
  91. package/dist/charts/useChartDimensions.js +40 -56
  92. package/dist/charts/useChartFormatters.d.ts +6 -15
  93. package/dist/charts/useChartFormatters.js +4 -9
  94. package/dist/charts/useChartInteraction.d.ts +47 -116
  95. package/dist/charts/useChartInteraction.js +95 -71
  96. package/dist/charts/useChartTooltipPosition.d.ts +29 -39
  97. package/dist/charts/useChartTooltipPosition.js +14 -5
  98. package/dist/charts/useSeriesColorResolver.d.ts +11 -33
  99. package/dist/charts/useSeriesColorResolver.js +19 -12
  100. package/dist/chips/Chip.d.ts +155 -44
  101. package/dist/chips/Chip.js +329 -155
  102. package/dist/chips/ChipGroup.d.ts +53 -0
  103. package/dist/chips/ChipGroup.js +98 -0
  104. package/dist/drawer/Drawer.d.ts +81 -17
  105. package/dist/drawer/Drawer.js +370 -65
  106. package/dist/dropdown/Dropdown.d.ts +80 -63
  107. package/dist/dropdown/Dropdown.js +127 -129
  108. package/dist/editor/CodeEditor.d.ts +119 -40
  109. package/dist/editor/CodeEditor.js +490 -400
  110. package/dist/editor/CodeEditorReactWidget.d.ts +20 -17
  111. package/dist/editor/CodeEditorReactWidget.js +28 -21
  112. package/dist/feedback/Alert.d.ts +49 -0
  113. package/dist/feedback/Alert.js +172 -0
  114. package/dist/feedback/EmptyState.d.ts +39 -0
  115. package/dist/feedback/EmptyState.js +109 -0
  116. package/dist/feedback/ProgressBar.d.ts +125 -0
  117. package/dist/feedback/ProgressBar.js +183 -0
  118. package/dist/feedback/ProgressCircle.d.ts +99 -0
  119. package/dist/feedback/ProgressCircle.js +187 -0
  120. package/dist/feedback/Skeleton.d.ts +69 -0
  121. package/dist/feedback/Skeleton.js +130 -0
  122. package/dist/feedback/Spinner.d.ts +63 -0
  123. package/dist/feedback/Spinner.js +141 -0
  124. package/dist/fonts.css +70 -0
  125. package/dist/hooks/internal/useIsClient.d.ts +2 -0
  126. package/dist/hooks/internal/useIsClient.js +14 -0
  127. package/dist/hooks/useClipboard.d.ts +19 -0
  128. package/dist/hooks/useClipboard.js +45 -0
  129. package/dist/hooks/useControlledOpenState.d.ts +21 -0
  130. package/dist/hooks/useControlledOpenState.js +19 -0
  131. package/dist/hooks/useControlledState.d.ts +19 -0
  132. package/dist/hooks/useControlledState.js +22 -0
  133. package/dist/hooks/useDebouncedValue.d.ts +14 -0
  134. package/dist/hooks/useDebouncedValue.js +33 -0
  135. package/dist/hooks/useDisclosure.d.ts +26 -0
  136. package/dist/hooks/useDisclosure.js +36 -0
  137. package/dist/hooks/useDismiss.d.ts +23 -27
  138. package/dist/hooks/useDismiss.js +39 -27
  139. package/dist/hooks/useElementClientSize.d.ts +10 -10
  140. package/dist/hooks/useElementClientSize.js +8 -11
  141. package/dist/hooks/useElementWidth.d.ts +6 -13
  142. package/dist/hooks/useElementWidth.js +6 -14
  143. package/dist/hooks/useField.d.ts +47 -0
  144. package/dist/hooks/useField.js +40 -0
  145. package/dist/hooks/useHotkey.d.ts +77 -0
  146. package/dist/hooks/useHotkey.js +246 -0
  147. package/dist/hooks/useIsMac.d.ts +12 -0
  148. package/dist/hooks/useIsMac.js +27 -0
  149. package/dist/hooks/useIsomorphicLayoutEffect.d.ts +17 -0
  150. package/dist/hooks/useIsomorphicLayoutEffect.js +20 -0
  151. package/dist/hooks/useLocalStorage.d.ts +28 -0
  152. package/dist/hooks/useLocalStorage.js +145 -0
  153. package/dist/hooks/useMediaQuery.d.ts +11 -0
  154. package/dist/hooks/useMediaQuery.js +23 -0
  155. package/dist/hooks/usePrefersReducedMotion.d.ts +12 -0
  156. package/dist/hooks/usePrefersReducedMotion.js +25 -0
  157. package/dist/hooks/useResize.d.ts +42 -62
  158. package/dist/hooks/useResize.js +43 -31
  159. package/dist/icons/Icon.d.ts +64 -37
  160. package/dist/icons/Icon.js +96 -37
  161. package/dist/icons/internal/IconSlot.d.ts +10 -0
  162. package/dist/icons/internal/IconSlot.js +32 -0
  163. package/dist/inputs/CheckboxGroup.d.ts +115 -0
  164. package/dist/inputs/CheckboxGroup.js +183 -0
  165. package/dist/inputs/CheckboxInput.d.ts +98 -28
  166. package/dist/inputs/CheckboxInput.js +218 -88
  167. package/dist/inputs/ColorInput.d.ts +115 -29
  168. package/dist/inputs/ColorInput.js +748 -326
  169. package/dist/inputs/CopyInput.d.ts +49 -20
  170. package/dist/inputs/CopyInput.js +57 -49
  171. package/dist/inputs/CronInput.d.ts +94 -0
  172. package/dist/inputs/CronInput.js +618 -0
  173. package/dist/inputs/DateInput.d.ts +175 -28
  174. package/dist/inputs/DateInput.js +1109 -451
  175. package/dist/inputs/DurationInput.d.ts +101 -0
  176. package/dist/inputs/DurationInput.js +441 -0
  177. package/dist/inputs/Field.d.ts +75 -0
  178. package/dist/inputs/Field.js +247 -0
  179. package/dist/inputs/Fieldset.d.ts +53 -0
  180. package/dist/inputs/Fieldset.js +149 -0
  181. package/dist/inputs/FileInput.d.ts +110 -0
  182. package/dist/inputs/FileInput.js +476 -0
  183. package/dist/inputs/Input.d.ts +148 -187
  184. package/dist/inputs/Input.js +339 -259
  185. package/dist/inputs/KeyValueInput.d.ts +120 -0
  186. package/dist/inputs/KeyValueInput.js +383 -0
  187. package/dist/inputs/MultiSelectInput.d.ts +165 -54
  188. package/dist/inputs/MultiSelectInput.js +175 -559
  189. package/dist/inputs/NumberInput.d.ts +65 -9
  190. package/dist/inputs/NumberInput.js +197 -40
  191. package/dist/inputs/PasswordInput.d.ts +17 -12
  192. package/dist/inputs/PasswordInput.js +33 -33
  193. package/dist/inputs/PinInput.d.ts +117 -0
  194. package/dist/inputs/PinInput.js +364 -0
  195. package/dist/inputs/RadioGroup.d.ts +115 -0
  196. package/dist/inputs/RadioGroup.js +179 -0
  197. package/dist/inputs/RadioInput.d.ts +87 -24
  198. package/dist/inputs/RadioInput.js +182 -95
  199. package/dist/inputs/SearchInput.d.ts +66 -0
  200. package/dist/inputs/SearchInput.js +156 -0
  201. package/dist/inputs/SelectInput.d.ts +195 -55
  202. package/dist/inputs/SelectInput.js +1308 -446
  203. package/dist/inputs/SliderInput.d.ts +150 -30
  204. package/dist/inputs/SliderInput.js +441 -186
  205. package/dist/inputs/SwitchInput.d.ts +109 -0
  206. package/dist/inputs/SwitchInput.js +248 -0
  207. package/dist/inputs/TagInput.d.ts +117 -0
  208. package/dist/inputs/TagInput.js +408 -0
  209. package/dist/inputs/TextAreaInput.d.ts +146 -44
  210. package/dist/inputs/TextAreaInput.js +292 -198
  211. package/dist/inputs/TextInput.d.ts +4 -13
  212. package/dist/inputs/TextInput.js +13 -48
  213. package/dist/inputs/ToggleInput.d.ts +120 -22
  214. package/dist/inputs/ToggleInput.js +262 -116
  215. package/dist/inputs/internal/bareField.d.ts +18 -0
  216. package/dist/inputs/internal/bareField.js +38 -0
  217. package/dist/inputs/internal/devWarn.d.ts +7 -0
  218. package/dist/inputs/internal/devWarn.js +30 -0
  219. package/dist/inputs/internal/fieldFrame.d.ts +34 -0
  220. package/dist/inputs/internal/fieldFrame.js +64 -0
  221. package/dist/inputs/internal/fieldWiring.d.ts +50 -0
  222. package/dist/inputs/internal/fieldWiring.js +38 -0
  223. package/dist/inputs/internal/innerButton.d.ts +2 -0
  224. package/dist/inputs/internal/innerButton.js +24 -0
  225. package/dist/inputs/internal/ownField.d.ts +45 -0
  226. package/dist/inputs/internal/ownField.js +58 -0
  227. package/dist/inputs/internal/predicates.d.ts +9 -0
  228. package/dist/inputs/internal/predicates.js +11 -0
  229. package/dist/inputs/internal/useComboboxPopover.d.ts +46 -0
  230. package/dist/inputs/internal/useComboboxPopover.js +92 -0
  231. package/dist/json/JsonViewer.d.ts +62 -0
  232. package/dist/json/JsonViewer.js +483 -0
  233. package/dist/layout/Box.d.ts +87 -0
  234. package/dist/layout/Box.js +109 -0
  235. package/dist/layout/Divider.d.ts +25 -0
  236. package/dist/layout/Divider.js +70 -0
  237. package/dist/layout/Flex.d.ts +139 -0
  238. package/dist/layout/Flex.js +165 -0
  239. package/dist/layout/FlexItem.d.ts +72 -0
  240. package/dist/layout/FlexItem.js +84 -0
  241. package/dist/layout/Grid.d.ts +140 -0
  242. package/dist/layout/Grid.js +178 -0
  243. package/dist/layout/Portal.d.ts +29 -0
  244. package/dist/layout/Portal.js +27 -0
  245. package/dist/layout/ResizablePanels.d.ts +88 -0
  246. package/dist/layout/ResizablePanels.js +198 -0
  247. package/dist/layout/ResizeHandle.d.ts +48 -0
  248. package/dist/layout/ResizeHandle.js +143 -0
  249. package/dist/layout/ScrollArea.d.ts +30 -0
  250. package/dist/layout/ScrollArea.js +138 -0
  251. package/dist/links/Link.d.ts +101 -1
  252. package/dist/links/Link.js +166 -4
  253. package/dist/lists/BulletedList.d.ts +25 -7
  254. package/dist/lists/BulletedList.js +72 -27
  255. package/dist/lists/DescriptionList.d.ts +91 -0
  256. package/dist/lists/DescriptionList.js +147 -0
  257. package/dist/menu/ContextMenu.d.ts +64 -0
  258. package/dist/menu/ContextMenu.js +34 -0
  259. package/dist/menu/Menu.d.ts +280 -0
  260. package/dist/menu/Menu.js +1003 -0
  261. package/dist/modal/ConfirmDialog.d.ts +55 -0
  262. package/dist/modal/ConfirmDialog.js +151 -0
  263. package/dist/modal/Modal.d.ts +64 -14
  264. package/dist/modal/Modal.js +189 -48
  265. package/dist/navigation/Breadcrumbs.d.ts +65 -0
  266. package/dist/navigation/Breadcrumbs.js +243 -0
  267. package/dist/navigation/CommandPalette.d.ts +83 -0
  268. package/dist/navigation/CommandPalette.js +509 -0
  269. package/dist/navigation/Pagination.d.ts +87 -0
  270. package/dist/navigation/Pagination.js +300 -0
  271. package/dist/navigation/SidebarNav.d.ts +107 -0
  272. package/dist/navigation/SidebarNav.js +341 -0
  273. package/dist/navigation/Stepper.d.ts +52 -0
  274. package/dist/navigation/Stepper.js +207 -0
  275. package/dist/navigation/Tabs.d.ts +113 -0
  276. package/dist/navigation/Tabs.js +543 -0
  277. package/dist/navigation/Topbar.d.ts +20 -0
  278. package/dist/navigation/Topbar.js +62 -0
  279. package/dist/overlay/OverlayProvider.d.ts +28 -32
  280. package/dist/overlay/OverlayProvider.js +42 -93
  281. package/dist/overlay/useOverlay.d.ts +88 -12
  282. package/dist/overlay/useOverlay.js +220 -43
  283. package/dist/overlays/Popover.d.ts +114 -0
  284. package/dist/overlays/Popover.js +389 -0
  285. package/dist/shapes/Circle.d.ts +84 -8
  286. package/dist/shapes/Circle.js +122 -20
  287. package/dist/shapes/Square.d.ts +84 -8
  288. package/dist/shapes/Square.js +123 -20
  289. package/dist/styles/mixins.d.ts +35 -0
  290. package/dist/styles/mixins.js +60 -0
  291. package/dist/styles.css +1 -202
  292. package/dist/table/InfiniteSpreadsheet.d.ts +140 -10
  293. package/dist/table/InfiniteSpreadsheet.js +762 -225
  294. package/dist/table/InfiniteTable.d.ts +116 -14
  295. package/dist/table/InfiniteTable.js +287 -429
  296. package/dist/table/SpreadsheetCellEditor.d.ts +54 -6
  297. package/dist/table/SpreadsheetCellEditor.js +163 -84
  298. package/dist/table/TableCore.d.ts +252 -0
  299. package/dist/table/TableCore.js +1077 -0
  300. package/dist/table/VirtualizedInfiniteTable.d.ts +104 -14
  301. package/dist/table/VirtualizedInfiniteTable.js +280 -219
  302. package/dist/table/types.d.ts +66 -244
  303. package/dist/table/types.js +0 -51
  304. package/dist/table/useInfiniteScrollSentinel.d.ts +25 -21
  305. package/dist/table/useInfiniteScrollSentinel.js +38 -30
  306. package/dist/table/useSpreadsheetCellNavigation.d.ts +44 -0
  307. package/dist/table/useSpreadsheetCellNavigation.js +141 -0
  308. package/dist/table/useTableColumnLayout.d.ts +90 -25
  309. package/dist/table/useTableColumnLayout.js +255 -50
  310. package/dist/table/useTableKeyboardNavigation.d.ts +32 -21
  311. package/dist/table/useTableKeyboardNavigation.js +95 -71
  312. package/dist/table/useTableRowSelection.d.ts +24 -25
  313. package/dist/table/useTableRowSelection.js +57 -84
  314. package/dist/table/useTableVirtualizer.d.ts +20 -0
  315. package/dist/table/useTableVirtualizer.js +48 -0
  316. package/dist/text/Bold.d.ts +5 -6
  317. package/dist/text/Bold.js +16 -15
  318. package/dist/text/Code.d.ts +5 -6
  319. package/dist/text/Code.js +16 -25
  320. package/dist/text/CodeBlock.d.ts +77 -0
  321. package/dist/text/CodeBlock.js +373 -0
  322. package/dist/text/EditableText.d.ts +55 -15
  323. package/dist/text/EditableText.js +153 -135
  324. package/dist/text/Ellipsis.d.ts +34 -8
  325. package/dist/text/Ellipsis.js +55 -23
  326. package/dist/text/Kbd.d.ts +72 -0
  327. package/dist/text/Kbd.js +284 -0
  328. package/dist/text/MarkdownText.d.ts +27 -10
  329. package/dist/text/MarkdownText.js +317 -300
  330. package/dist/text/RequiredMarker.d.ts +17 -5
  331. package/dist/text/RequiredMarker.js +34 -36
  332. package/dist/text/Selectable.d.ts +5 -6
  333. package/dist/text/Selectable.js +16 -13
  334. package/dist/text/Span.d.ts +82 -0
  335. package/dist/text/Span.js +115 -0
  336. package/dist/text/Text.d.ts +128 -41
  337. package/dist/text/Text.js +209 -76
  338. package/dist/theme/GalaxyProvider.d.ts +75 -0
  339. package/dist/theme/GalaxyProvider.js +223 -0
  340. package/dist/theme/ThemeSwitcher.d.ts +52 -0
  341. package/dist/theme/ThemeSwitcher.js +94 -0
  342. package/dist/theme/enums.d.ts +118 -0
  343. package/dist/theme/enums.js +144 -0
  344. package/dist/theme/tokens/dark.d.ts +2 -0
  345. package/dist/theme/tokens/dark.js +275 -0
  346. package/dist/theme/tokens/generate.d.ts +15 -0
  347. package/dist/theme/tokens/generate.js +47 -0
  348. package/dist/theme/tokens/light.d.ts +2 -0
  349. package/dist/theme/tokens/light.js +274 -0
  350. package/dist/theme/tokens/palette.d.ts +14 -0
  351. package/dist/theme/tokens/palette.js +153 -0
  352. package/dist/theme/tokens/scales.d.ts +26 -0
  353. package/dist/theme/tokens/scales.js +154 -0
  354. package/dist/theme/tokens/t.d.ts +3 -0
  355. package/dist/theme/tokens/t.js +25 -0
  356. package/dist/theme/tokens/types.d.ts +189 -0
  357. package/dist/theme/tokens/types.js +0 -0
  358. package/dist/theme/useGalaxyTheme.d.ts +46 -0
  359. package/dist/theme/useGalaxyTheme.js +36 -0
  360. package/dist/theme/useInverseScope.d.ts +18 -0
  361. package/dist/theme/useInverseScope.js +33 -0
  362. package/dist/three/GalaxyLogomark3D.d.ts +46 -0
  363. package/dist/three/GalaxyLogomark3D.js +134 -0
  364. package/dist/three/assets/galaxy-logomark.js +4 -0
  365. package/dist/three/galaxyLogomark3DScene.d.ts +27 -0
  366. package/dist/three/galaxyLogomark3DScene.js +165 -0
  367. package/dist/timeline/Timeline.d.ts +99 -0
  368. package/dist/timeline/Timeline.js +269 -0
  369. package/dist/toast/Toast.d.ts +43 -19
  370. package/dist/toast/Toast.js +130 -89
  371. package/dist/toast/ToastProvider.d.ts +23 -23
  372. package/dist/toast/ToastProvider.js +298 -101
  373. package/dist/toast/ToastViewport.d.ts +12 -0
  374. package/dist/toast/ToastViewport.js +210 -0
  375. package/dist/toast/useToast.d.ts +139 -5
  376. package/dist/toast/useToast.js +15 -13
  377. package/dist/tokens.css +654 -0
  378. package/dist/tooltip/Tooltip.d.ts +64 -44
  379. package/dist/tooltip/Tooltip.js +280 -73
  380. package/dist/tooltip/internal/LazyTooltip.d.ts +7 -0
  381. package/dist/tooltip/internal/LazyTooltip.js +53 -0
  382. package/dist/transform/Fade.d.ts +33 -11
  383. package/dist/transform/Fade.js +71 -19
  384. package/dist/transform/Flasher.d.ts +25 -0
  385. package/dist/transform/Flasher.js +39 -0
  386. package/dist/transform/Rotate.d.ts +24 -12
  387. package/dist/transform/Rotate.js +36 -22
  388. package/dist/transform/ScaleFade.d.ts +36 -11
  389. package/dist/transform/ScaleFade.js +86 -28
  390. package/dist/transform/internal/CollapseMotion.d.ts +10 -0
  391. package/dist/transform/internal/CollapseMotion.js +65 -0
  392. package/dist/tree/Tree.d.ts +85 -0
  393. package/dist/tree/Tree.js +387 -0
  394. package/dist/tree/treeRow.d.ts +39 -0
  395. package/dist/tree/treeRow.js +75 -0
  396. package/dist/utils/colors.d.ts +46 -13
  397. package/dist/utils/colors.js +92 -34
  398. package/dist/utils/css.d.ts +23 -0
  399. package/dist/utils/css.js +30 -0
  400. package/dist/utils/format.d.ts +58 -0
  401. package/dist/utils/format.js +220 -0
  402. package/dist/vite/index.d.ts +16 -0
  403. package/dist/vite/index.js +52 -0
  404. package/dist/widget/Widget.d.ts +164 -48
  405. package/dist/widget/Widget.js +335 -96
  406. package/dist/widget/WidgetGroup.d.ts +36 -0
  407. package/dist/widget/WidgetGroup.js +103 -0
  408. package/package.json +851 -157
  409. package/dist/accordion/Accordion.d.ts +0 -54
  410. package/dist/accordion/Accordion.js +0 -183
  411. package/dist/assets/components/GalaxyFilamentWordmarkDark.d.ts +0 -3
  412. package/dist/assets/components/GalaxyFilamentWordmarkDark.js +0 -14
  413. package/dist/assets/components/GalaxyFilamentWordmarkLight.d.ts +0 -3
  414. package/dist/assets/components/GalaxyFilamentWordmarkLight.js +0 -14
  415. package/dist/assets/components/GalaxyLogomarkDark.d.ts +0 -3
  416. package/dist/assets/components/GalaxyLogomarkDark.js +0 -11
  417. package/dist/assets/components/GalaxyLogomarkLight.d.ts +0 -3
  418. package/dist/assets/components/GalaxyLogomarkLight.js +0 -17
  419. package/dist/assets/components/GalaxyWordmarkDark.d.ts +0 -3
  420. package/dist/assets/components/GalaxyWordmarkDark.js +0 -15
  421. package/dist/assets/components/GalaxyWordmarkLight.d.ts +0 -3
  422. package/dist/assets/components/GalaxyWordmarkLight.js +0 -28
  423. package/dist/assets/models/galaxy-animation.js +0 -136666
  424. package/dist/assets/models/galaxy-logomark.js +0 -4
  425. package/dist/avatar/AvatarShimmer.d.ts +0 -30
  426. package/dist/avatar/AvatarShimmer.js +0 -22
  427. package/dist/backgrounds/CellGridBackground.d.ts +0 -24
  428. package/dist/backgrounds/CellGridBackground.js +0 -44
  429. package/dist/backgrounds/CrossGridBackground.d.ts +0 -26
  430. package/dist/backgrounds/CrossGridBackground.js +0 -49
  431. package/dist/backgrounds/DotGridBackground.d.ts +0 -24
  432. package/dist/backgrounds/DotGridBackground.js +0 -47
  433. package/dist/badge/Badge.d.ts +0 -42
  434. package/dist/badge/Badge.js +0 -99
  435. package/dist/charts/ChartEmptyState.d.ts +0 -17
  436. package/dist/charts/ChartEmptyState.js +0 -29
  437. package/dist/charts/ProgressBar.d.ts +0 -29
  438. package/dist/charts/ProgressBar.js +0 -65
  439. package/dist/charts/chartTheme.d.ts +0 -18
  440. package/dist/charts/chartTheme.js +0 -26
  441. package/dist/containers/FlexItem.d.ts +0 -50
  442. package/dist/containers/FlexItem.js +0 -91
  443. package/dist/containers/FlexWrapper.d.ts +0 -96
  444. package/dist/containers/FlexWrapper.js +0 -143
  445. package/dist/containers/GridWrapper.d.ts +0 -79
  446. package/dist/containers/GridWrapper.js +0 -125
  447. package/dist/containers/Spacing.d.ts +0 -23
  448. package/dist/containers/Spacing.js +0 -59
  449. package/dist/containers/Wrapper.d.ts +0 -26
  450. package/dist/containers/Wrapper.js +0 -54
  451. package/dist/dividers/HorizontalDivider.d.ts +0 -7
  452. package/dist/dividers/HorizontalDivider.js +0 -39
  453. package/dist/dividers/VerticalDivider.d.ts +0 -6
  454. package/dist/dividers/VerticalDivider.js +0 -21
  455. package/dist/icons/GalaxyFilamentWordmark.d.ts +0 -11
  456. package/dist/icons/GalaxyFilamentWordmark.js +0 -25
  457. package/dist/icons/GalaxyLogomark.d.ts +0 -13
  458. package/dist/icons/GalaxyLogomark.js +0 -27
  459. package/dist/icons/GalaxyLogomark3D.d.ts +0 -56
  460. package/dist/icons/GalaxyLogomark3D.js +0 -319
  461. package/dist/icons/GalaxyLogomarkAnimation.d.ts +0 -18
  462. package/dist/icons/GalaxyLogomarkAnimation.js +0 -48
  463. package/dist/icons/GalaxyWordmark.d.ts +0 -11
  464. package/dist/icons/GalaxyWordmark.js +0 -25
  465. package/dist/inputs/MultiTextInput.d.ts +0 -32
  466. package/dist/inputs/MultiTextInput.js +0 -180
  467. package/dist/inputs/SwitcherInput.d.ts +0 -27
  468. package/dist/inputs/SwitcherInput.js +0 -64
  469. package/dist/inputs/hooks.d.ts +0 -10
  470. package/dist/inputs/hooks.js +0 -22
  471. package/dist/overlay/constants.d.ts +0 -28
  472. package/dist/overlay/constants.js +0 -37
  473. package/dist/resizable/HorizontalResizeHandle.d.ts +0 -17
  474. package/dist/resizable/HorizontalResizeHandle.js +0 -38
  475. package/dist/resizable/VerticalResizeHandle.d.ts +0 -18
  476. package/dist/resizable/VerticalResizeHandle.js +0 -39
  477. package/dist/table/SpreadsheetCell.d.ts +0 -21
  478. package/dist/table/SpreadsheetCell.js +0 -71
  479. package/dist/table/SpreadsheetHeaderCell.d.ts +0 -23
  480. package/dist/table/SpreadsheetHeaderCell.js +0 -91
  481. package/dist/table/SpreadsheetMenuItem.d.ts +0 -14
  482. package/dist/table/SpreadsheetMenuItem.js +0 -33
  483. package/dist/table/SpreadsheetPrimitives.d.ts +0 -172
  484. package/dist/table/SpreadsheetPrimitives.js +0 -105
  485. package/dist/table/SpreadsheetRow.d.ts +0 -33
  486. package/dist/table/SpreadsheetRow.js +0 -73
  487. package/dist/table/SpreadsheetRowActionCell.d.ts +0 -14
  488. package/dist/table/SpreadsheetRowActionCell.js +0 -51
  489. package/dist/table/TableExpandCell.d.ts +0 -11
  490. package/dist/table/TableExpandCell.js +0 -24
  491. package/dist/table/TableExpandedRow.d.ts +0 -16
  492. package/dist/table/TableExpandedRow.js +0 -77
  493. package/dist/table/TableHeaderCellContent.d.ts +0 -30
  494. package/dist/table/TableHeaderCellContent.js +0 -48
  495. package/dist/table/TablePrimitives.d.ts +0 -313
  496. package/dist/table/TablePrimitives.js +0 -302
  497. package/dist/table/TableSelectCell.d.ts +0 -18
  498. package/dist/table/TableSelectCell.js +0 -27
  499. package/dist/table/TableStatusRow.d.ts +0 -18
  500. package/dist/table/TableStatusRow.js +0 -50
  501. package/dist/table/useSpreadsheetEditing.d.ts +0 -13
  502. package/dist/table/useSpreadsheetEditing.js +0 -41
  503. package/dist/table/useTableColumnResize.d.ts +0 -38
  504. package/dist/table/useTableColumnResize.js +0 -155
  505. package/dist/table/useTableRowExpansion.d.ts +0 -24
  506. package/dist/table/useTableRowExpansion.js +0 -62
  507. package/dist/table/utils.d.ts +0 -50
  508. package/dist/table/utils.js +0 -78
  509. package/dist/text/HotKeys.d.ts +0 -30
  510. package/dist/text/HotKeys.js +0 -74
  511. package/dist/text/Paragraph.d.ts +0 -33
  512. package/dist/text/Paragraph.js +0 -83
  513. package/dist/text/TextShimmer.d.ts +0 -14
  514. package/dist/text/TextShimmer.js +0 -34
  515. package/dist/theme/GalaxyTheme.d.ts +0 -67
  516. package/dist/theme/GalaxyTheme.js +0 -119
  517. package/dist/theme/constants.d.ts +0 -8
  518. package/dist/theme/constants.js +0 -38
  519. package/dist/theme/index.d.ts +0 -6
  520. package/dist/theme/index.js +0 -7
  521. package/dist/theme/types.d.ts +0 -195
  522. package/dist/theme/types.js +0 -10
  523. package/dist/theme/typography.d.ts +0 -2
  524. package/dist/theme/typography.js +0 -73
  525. package/dist/theme/variants/dark.d.ts +0 -2
  526. package/dist/theme/variants/dark.js +0 -125
  527. package/dist/theme/variants/light.d.ts +0 -2
  528. package/dist/theme/variants/light.js +0 -125
  529. package/dist/toast/ToastContainer.d.ts +0 -10
  530. package/dist/toast/ToastContainer.js +0 -31
  531. package/dist/toast/ToastWrapper.d.ts +0 -6
  532. package/dist/toast/ToastWrapper.js +0 -27
  533. package/dist/transform/Flash.d.ts +0 -7
  534. package/dist/transform/Flash.js +0 -18
  535. package/dist/transform/Spin.d.ts +0 -14
  536. package/dist/transform/Spin.js +0 -25
  537. package/dist/utils/linaria.d.ts +0 -1
  538. package/dist/utils/linaria.js +0 -8
@@ -0,0 +1,98 @@
1
+ import { useControlledState } from "../hooks/useControlledState.js";
2
+ import Chip, { ChipSize } from "./Chip.js";
3
+ /* empty css */
4
+ import { styled } from "@linaria/react";
5
+ import { Children, forwardRef, useId } from "react";
6
+ import { jsx, jsxs } from "react/jsx-runtime";
7
+ import { cx } from "@linaria/core";
8
+ //#region src/chips/ChipGroup.tsx
9
+ /**
10
+ * Lays out a set of related chips (tags on a source, roles on a member, filters on a view) as one
11
+ * wrapping row with a fixed gap, and names them as a group. With `max`, only the first `max`
12
+ * chips show and a `+N` chip stands for the rest; pressing it shows every chip in place and turns
13
+ * it into "Show less" (the Article V disclosure trio `isOpen` / `defaultIsOpen` / `onOpenChange`).
14
+ *
15
+ * The children render as they are, with no wrapper, so each chip's root is a direct child of the
16
+ * group. The group holds no value or selection, pushes no props into its children, and does not
17
+ * measure: the cut-off is a count. Not a single choice (`ToggleInput`), not a tag input
18
+ * (`TagInput`).
19
+ */
20
+ /** Canonical rungs; the member names the rung of the chips in the group. */
21
+ var ChipGroupSize = /* @__PURE__ */ function(ChipGroupSize) {
22
+ /** `ChipSize.X_SMALL` toggle (16px), 4px gap. */
23
+ ChipGroupSize["X_SMALL"] = "X_SMALL";
24
+ /** `ChipSize.SMALL` toggle (20px), 4px gap. */
25
+ ChipGroupSize["SMALL"] = "SMALL";
26
+ /** `ChipSize.MEDIUM` toggle (24px), 4px gap. The default. */
27
+ ChipGroupSize["MEDIUM"] = "MEDIUM";
28
+ /** `ChipSize.LARGE` toggle (28px), 8px gap. */
29
+ ChipGroupSize["LARGE"] = "LARGE";
30
+ /** `ChipSize.X_LARGE` toggle (32px), 8px gap. */
31
+ ChipGroupSize["X_LARGE"] = "X_LARGE";
32
+ return ChipGroupSize;
33
+ }({});
34
+ /** One wrapping row; the chips (and the toggle) are its direct children. */
35
+ var Root = /*#__PURE__*/ styled("div")({
36
+ name: "Root",
37
+ class: "gx-ChipGroup-r1r6i8cm",
38
+ propsAsIs: false
39
+ });
40
+ /** Row and column gap per rung: 4px (1.x `gap={4}` between chips), 8px for the two tallest. */
41
+ var CHIP_GROUP_SIZE_TO_CSS_MAP = {
42
+ ["X_SMALL"]: "gx-ChipGroup-X_SMALL-x1p2tp2a",
43
+ ["SMALL"]: "gx-ChipGroup-SMALL-s1mja2pr",
44
+ ["MEDIUM"]: "gx-ChipGroup-MEDIUM-m1u9ku0",
45
+ ["LARGE"]: "gx-ChipGroup-LARGE-l1lpfefp",
46
+ ["X_LARGE"]: "gx-ChipGroup-X_LARGE-xffqurq"
47
+ };
48
+ /** Identity: the toggle chip's rung. */
49
+ var CHIP_GROUP_SIZE_TO_CHIP_SIZE_MAP = {
50
+ ["X_SMALL"]: ChipSize.X_SMALL,
51
+ ["SMALL"]: ChipSize.SMALL,
52
+ ["MEDIUM"]: ChipSize.MEDIUM,
53
+ ["LARGE"]: ChipSize.LARGE,
54
+ ["X_LARGE"]: ChipSize.X_LARGE
55
+ };
56
+ /** Stable key of the toggle chip, so it stays mounted (and focused) when the hidden chips appear. */
57
+ var TOGGLE_KEY = "gx-chip-group-toggle";
58
+ /** A wrapping row of related chips, with an optional `+N` / "Show less" toggle past `max`. */
59
+ var ChipGroup = forwardRef(function ChipGroup({ children, max, size = "MEDIUM", isOpen: isOpenProp, defaultIsOpen = false, onOpenChange, ariaLabel, id, className, style, ...rest }, ref) {
60
+ const generatedId = useId();
61
+ const rootId = id ?? generatedId;
62
+ const [isOpen, setIsOpen] = useControlledState({
63
+ value: isOpenProp,
64
+ defaultValue: defaultIsOpen,
65
+ onChange: onOpenChange
66
+ });
67
+ const items = Children.toArray(children);
68
+ const limit = max === void 0 ? Number.POSITIVE_INFINITY : Math.max(0, Math.floor(max));
69
+ const isOverflowing = items.length > limit;
70
+ const hiddenCount = isOverflowing ? items.length - limit : 0;
71
+ const visibleItems = isOverflowing && !isOpen ? items.slice(0, limit) : items;
72
+ return /* @__PURE__ */ jsxs(Root, {
73
+ ...rest,
74
+ ref,
75
+ id: rootId,
76
+ role: "group",
77
+ "aria-label": ariaLabel ?? rest["aria-label"],
78
+ className: cx(CHIP_GROUP_SIZE_TO_CSS_MAP[size], className),
79
+ style,
80
+ children: [visibleItems, isOverflowing && (isOpen ? /* @__PURE__ */ jsx(Chip, {
81
+ size: CHIP_GROUP_SIZE_TO_CHIP_SIZE_MAP[size],
82
+ label: "Show less",
83
+ onClick: () => setIsOpen(false),
84
+ "aria-expanded": true,
85
+ "aria-controls": rootId
86
+ }, TOGGLE_KEY) : /* @__PURE__ */ jsx(Chip, {
87
+ size: CHIP_GROUP_SIZE_TO_CHIP_SIZE_MAP[size],
88
+ label: `+${hiddenCount}`,
89
+ ariaLabel: `+${hiddenCount} more`,
90
+ onClick: () => setIsOpen(true),
91
+ "aria-expanded": false,
92
+ "aria-controls": rootId
93
+ }, TOGGLE_KEY))]
94
+ });
95
+ });
96
+ ChipGroup.displayName = "ChipGroup";
97
+ //#endregion
98
+ export { ChipGroupSize, ChipGroup as default };
@@ -1,20 +1,84 @@
1
- import { type PropsWithChildren } from "react";
2
- export interface DrawerProps {
3
- /** Controlled visibility. The drawer has no open state of its own. */
4
- open: boolean;
5
- /** Called on Escape, and on backdrop click when `closeOnClickOutside` is set. */
6
- onClose: () => void;
7
- /** Panel width. A number is px. @default "60%" */
8
- width?: number | string;
9
- /** Close when the backdrop is clicked. @default false */
10
- closeOnClickOutside?: boolean;
11
- }
1
+ import { type AriaAttributes, type CSSProperties, type ReactNode } from "react";
2
+ import { Side } from "../theme/enums.js";
12
3
  /**
13
- * A panel that slides in from the right over a dimmed backdrop. Fully
14
- * controlled — you own `open`.
15
- *
16
- * Stacking and Escape handling come from `OverlayProvider`, so only the topmost
17
- * overlay closes on Escape. Wrap your app in that provider.
4
+ * Panel width (`LEFT` / `RIGHT`) or height (`TOP` / `BOTTOM`). Canonical rung names
5
+ * (Constitution V); the values are lengths, not control heights.
18
6
  */
19
- declare const Drawer: ({ open, onClose, width, closeOnClickOutside, children, }: PropsWithChildren<DrawerProps>) => import("react").ReactPortal;
7
+ export declare enum DrawerSize {
8
+ /** 400px wide / 240px tall. */
9
+ SMALL = "SMALL",
10
+ /** 560px wide / 360px tall. The default. */
11
+ MEDIUM = "MEDIUM",
12
+ /** 720px wide / 480px tall. */
13
+ LARGE = "LARGE",
14
+ /** 960px wide / 640px tall. */
15
+ X_LARGE = "X_LARGE"
16
+ }
17
+ /** Every Drawer prop except the name pair (`header` / `ariaLabel`). */
18
+ interface DrawerBaseProps extends AriaAttributes {
19
+ /** The body. It scrolls when it is taller than the panel. A string or number renders as `Text`. */
20
+ children?: ReactNode;
21
+ /** The actions row, end-aligned with an 8px gap. */
22
+ footer?: ReactNode;
23
+ /**
24
+ * The edge the drawer sits on and slides from.
25
+ * @default Side.RIGHT
26
+ */
27
+ side?: Side;
28
+ /**
29
+ * Width for `LEFT` / `RIGHT` (400 / 560 / 720 / 960px), height for `TOP` / `BOTTOM` (240 / 360 / 480 / 640px). The starting size when `isResizable`.
30
+ * @default DrawerSize.MEDIUM
31
+ */
32
+ size?: DrawerSize;
33
+ /**
34
+ * Show a `ResizeHandle` on the inner edge so the user can drag or key the size. The size is kept while the Drawer stays mounted.
35
+ * @default false
36
+ */
37
+ isResizable?: boolean;
38
+ /**
39
+ * Modal: a portal over a dimmed, locked page, with a focus trap. `false`: an in-flow panel that pushes the content beside it aside, with no backdrop and no trap.
40
+ * @default true
41
+ */
42
+ isModal?: boolean;
43
+ /**
44
+ * Escape, a backdrop click and the close button close the drawer (with `isModal={false}`, only the close button). When `false` there is no close button, and only the app can close it.
45
+ * @default true
46
+ */
47
+ isDismissable?: boolean;
48
+ /** Controlled open state. When set, Drawer calls `onOpenChange` and lets the caller decide. */
49
+ isOpen?: boolean;
50
+ /**
51
+ * Initial open state while uncontrolled.
52
+ * @default false
53
+ */
54
+ defaultIsOpen?: boolean;
55
+ /** Called with `false` on Escape, a backdrop click and the close button. */
56
+ onOpenChange?: (isOpen: boolean) => void;
57
+ /** DOM id on the panel; the resize handle's `aria-controls` points at it. @default a `useId()` value */
58
+ id?: string;
59
+ /** Any `data-*` attribute, forwarded to the panel. */
60
+ [dataAttribute: `data-${string}`]: string | number | boolean | undefined;
61
+ /** Extra class on the panel. */
62
+ className?: string;
63
+ /** Inline style on the panel; only for setting CSS custom properties. */
64
+ style?: CSSProperties;
65
+ }
66
+ /** A title row names the drawer. */
67
+ interface DrawerTitledProps {
68
+ /** The title row. A string renders as an `h2` `Text` and names the drawer; a node renders as it is. Required unless `ariaLabel` is set. */
69
+ header: ReactNode;
70
+ /** Accessible name. Required by type when there is no `header`. */
71
+ ariaLabel?: string;
72
+ }
73
+ /** No title row: the accessible name is required. */
74
+ interface DrawerUntitledProps {
75
+ /** The title row. A string renders as an `h2` `Text` and names the drawer; a node renders as it is. Required unless `ariaLabel` is set. */
76
+ header?: undefined;
77
+ /** Accessible name. Required by type when there is no `header`. */
78
+ ariaLabel: string;
79
+ }
80
+ /** Drawer props. Without a `header`, `ariaLabel` is required by the type. */
81
+ export type DrawerProps = DrawerBaseProps & (DrawerTitledProps | DrawerUntitledProps);
82
+ /** A panel that slides in from an edge: title row, scrolling body, actions row. */
83
+ declare const Drawer: import("react").ForwardRefExoticComponent<DrawerProps & import("react").RefAttributes<HTMLDivElement>>;
20
84
  export default Drawer;
@@ -1,77 +1,382 @@
1
- import { withTheme } from "../theme/GalaxyTheme.js";
2
- import { getCssSizeValue } from "../utils/linaria.js";
3
- import { OverlayLayer } from "../overlay/constants.js";
4
- import useOverlay from "../overlay/useOverlay.js";
5
- import { useDismiss } from "../hooks/useDismiss.js";
1
+ import FocusScope, { FocusScopeAutoFocus } from "../a11y/FocusScope.js";
2
+ import { Orientation, Side } from "../theme/enums.js";
3
+ import Text, { TextSize, TextWeight } from "../text/Text.js";
4
+ import { DURATION, SPACE } from "../theme/tokens/scales.js";
5
+ import { useControlledOpenState } from "../hooks/useControlledOpenState.js";
6
+ import Portal from "../layout/Portal.js";
7
+ import { OverlayLayer, useOverlay } from "../overlay/useOverlay.js";
8
+ import { usePrefersReducedMotion } from "../hooks/usePrefersReducedMotion.js";
9
+ import { OverlayNode } from "../overlay/OverlayProvider.js";
10
+ import Button, { ButtonSize, ButtonVariant } from "../buttons/Button.js";
11
+ import ResizeHandle from "../layout/ResizeHandle.js";
12
+ import Fade from "../transform/Fade.js";
6
13
  /* empty css */
7
14
  import { styled } from "@linaria/react";
8
- import { useCallback } from "react";
9
- import { jsx } from "react/jsx-runtime";
10
- import { createPortal } from "react-dom";
15
+ import { forwardRef, useEffect, useId, useRef, useState } from "react";
16
+ import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
17
+ import { cx } from "@linaria/core";
18
+ import { XIcon } from "@phosphor-icons/react";
19
+ import { AnimatePresence, motion } from "framer-motion";
11
20
  //#region src/drawer/Drawer.tsx
12
- var _exp = () => ({ isOpen }) => isOpen ? 1 : 0;
13
- var _exp2 = () => ({ isOpen }) => isOpen ? "visible" : "hidden";
14
- var StyledDrawerWrapper = /*#__PURE__*/ styled("div")({
15
- name: "StyledDrawerWrapper",
16
- class: "smaltnf",
17
- propsAsIs: false,
18
- vars: {
19
- "smaltnf-0": [_exp()],
20
- "smaltnf-1": [_exp2()]
21
- }
21
+ /**
22
+ * The panel that slides in from an edge of the screen and keeps the page visible beside it (run
23
+ * details next to a list of runs, a source's settings, a log tail). It draws the panel and its
24
+ * three regions (a title row, a scrolling body and an actions row), sits on any `side`, takes a
25
+ * `size`, and with `isResizable` the user drags or keys its inner edge to resize it.
26
+ *
27
+ * By default it is modal, like `Modal`: a portal over a dimmed, locked page with a focus trap,
28
+ * stacked through the overlay stack, closing on Escape or a backdrop click. With
29
+ * `isModal={false}` it is a docked panel: it renders in place in the layout and pushes the content
30
+ * beside it aside, with no backdrop, no trap and no Escape.
31
+ *
32
+ * SSR: a modal drawer renders nothing on the server; a push drawer renders nothing while closed
33
+ * and its panel at rest while open. The scroll lock is CSS keyed on the backdrop; `window` is
34
+ * read only in an effect while open.
35
+ */
36
+ /**
37
+ * Panel width (`LEFT` / `RIGHT`) or height (`TOP` / `BOTTOM`). Canonical rung names
38
+ * (Constitution V); the values are lengths, not control heights.
39
+ */
40
+ var DrawerSize = /* @__PURE__ */ function(DrawerSize) {
41
+ /** 400px wide / 240px tall. */
42
+ DrawerSize["SMALL"] = "SMALL";
43
+ /** 560px wide / 360px tall. The default. */
44
+ DrawerSize["MEDIUM"] = "MEDIUM";
45
+ /** 720px wide / 480px tall. */
46
+ DrawerSize["LARGE"] = "LARGE";
47
+ /** 960px wide / 640px tall. */
48
+ DrawerSize["X_LARGE"] = "X_LARGE";
49
+ return DrawerSize;
50
+ }({});
51
+ /** The close button's accessible name (fixed English, as Modal's). */
52
+ var CLOSE_LABEL = "Close";
53
+ /** The resize handle's accessible name. */
54
+ var RESIZE_LABEL = "Resize drawer";
55
+ /** Width per size for `LEFT` / `RIGHT` (a logic map: the resize handle needs the number). */
56
+ var DRAWER_SIZE_TO_WIDTH_PX_MAP = {
57
+ ["SMALL"]: 400,
58
+ ["MEDIUM"]: 560,
59
+ ["LARGE"]: 720,
60
+ ["X_LARGE"]: 960
61
+ };
62
+ /** Height per size for `TOP` / `BOTTOM`. */
63
+ var DRAWER_SIZE_TO_HEIGHT_PX_MAP = {
64
+ ["SMALL"]: 240,
65
+ ["MEDIUM"]: 360,
66
+ ["LARGE"]: 480,
67
+ ["X_LARGE"]: 640
68
+ };
69
+ /** Whether the side's length is a width (`LEFT` / `RIGHT`) rather than a height. */
70
+ var DRAWER_SIDE_TO_IS_HORIZONTAL_MAP = {
71
+ [Side.LEFT]: true,
72
+ [Side.RIGHT]: true,
73
+ [Side.TOP]: false,
74
+ [Side.BOTTOM]: false
75
+ };
76
+ /** The handle's axis: a vertical bar for side drawers, a horizontal one for top / bottom. */
77
+ var DRAWER_SIDE_TO_HANDLE_ORIENTATION_MAP = {
78
+ [Side.LEFT]: Orientation.VERTICAL,
79
+ [Side.RIGHT]: Orientation.VERTICAL,
80
+ [Side.TOP]: Orientation.HORIZONTAL,
81
+ [Side.BOTTOM]: Orientation.HORIZONTAL
82
+ };
83
+ /** On the right and bottom the panel is after its handle, so moving toward the start grows it. */
84
+ var DRAWER_SIDE_TO_IS_HANDLE_REVERSED_MAP = {
85
+ [Side.LEFT]: false,
86
+ [Side.RIGHT]: true,
87
+ [Side.TOP]: false,
88
+ [Side.BOTTOM]: true
89
+ };
90
+ /** Smallest size the handle allows. */
91
+ var DRAWER_MIN_SIZE_PX = 240;
92
+ /** The strip of page the drawer always leaves: `space[48]`, matching the CSS cap. */
93
+ var DRAWER_VIEWPORT_GAP_PX = Number.parseFloat(SPACE[48]);
94
+ /** How far the modal panel travels on enter and exit: `space[24]`. */
95
+ var DRAWER_OFFSET_PX = Number.parseFloat(SPACE[24]);
96
+ /** The enter / exit offset toward each side. */
97
+ var DRAWER_SIDE_TO_OFFSET_MAP = {
98
+ [Side.RIGHT]: { x: DRAWER_OFFSET_PX },
99
+ [Side.LEFT]: { x: -DRAWER_OFFSET_PX },
100
+ [Side.TOP]: { y: -DRAWER_OFFSET_PX },
101
+ [Side.BOTTOM]: { y: DRAWER_OFFSET_PX }
102
+ };
103
+ /** Push mode: the root's collapsed length on its axis (enter start, exit end). */
104
+ var DRAWER_SIDE_TO_PUSH_COLLAPSED_MAP = {
105
+ [Side.LEFT]: { width: 0 },
106
+ [Side.RIGHT]: { width: 0 },
107
+ [Side.TOP]: { height: 0 },
108
+ [Side.BOTTOM]: { height: 0 }
109
+ };
110
+ /** Push mode: the root's open length, measured by framer from the panel. */
111
+ var DRAWER_SIDE_TO_PUSH_OPEN_MAP = {
112
+ [Side.LEFT]: { width: "auto" },
113
+ [Side.RIGHT]: { width: "auto" },
114
+ [Side.TOP]: { height: "auto" },
115
+ [Side.BOTTOM]: { height: "auto" }
116
+ };
117
+ var DRAWER_TRANSITION = {
118
+ duration: Number.parseFloat(DURATION.base) / 1e3,
119
+ ease: "easeOut"
120
+ };
121
+ /** Under reduced motion the state snaps. */
122
+ var DRAWER_REDUCED_TRANSITION = { duration: 0 };
123
+ /** Open at rest: framer writes `transform: none` at x = y = 0. */
124
+ var DRAWER_OPEN = {
125
+ opacity: 1,
126
+ x: 0,
127
+ y: 0,
128
+ pointerEvents: "auto"
129
+ };
130
+ /**
131
+ * Scroll lock: while any drawer backdrop is mounted (open or exiting) the page does not scroll.
132
+ * Keyed on Drawer's own backdrop, so a drawer and a modal open together keep the page locked
133
+ * until both are gone.
134
+ */
135
+ var Backdrop = /*#__PURE__*/ styled("div")({
136
+ name: "Backdrop",
137
+ class: "gx-Drawer-Backdrop-bmaltnf",
138
+ propsAsIs: false
22
139
  });
23
- var DrawerWrapperContent = /*#__PURE__*/ styled("div")({
24
- name: "DrawerWrapperContent",
25
- class: "d4wvefv",
140
+ /** The backdrop's Fade root: positioned just under the panel. Sets no opacity or visibility. */
141
+ var BACKDROP_FRAME_CSS = "gx-Drawer-BACKDROP_FRAME_CSS-b19reibl";
142
+ /** The modal panel's `motion.div`: fixed at its side, sized by `--gx-drawer-size`. */
143
+ var FRAME_CSS = "gx-Drawer-FRAME_CSS-f410s14";
144
+ /** Modal mode: the 8px inset on the drawer's side, the length on its axis, capped. */
145
+ var DRAWER_SIDE_TO_CSS_MAP = {
146
+ [Side.RIGHT]: "gx-Drawer-Side_RIGHT-s1ucw1ej",
147
+ [Side.LEFT]: "gx-Drawer-Side_LEFT-s1gpgm7s",
148
+ [Side.TOP]: "gx-Drawer-Side_TOP-s78031y",
149
+ [Side.BOTTOM]: "gx-Drawer-Side_BOTTOM-sr5uo3u"
150
+ };
151
+ /** Push mode: the in-flow clipping root whose length animates. */
152
+ var PUSH_ROOT_CSS = "gx-Drawer-PUSH_ROOT_CSS-pxznmax";
153
+ var DRAWER_PUSH_SIDE_TO_CSS_MAP = {
154
+ [Side.LEFT]: "gx-Drawer-Side_LEFT-skwwkog",
155
+ [Side.RIGHT]: "gx-Drawer-Side_RIGHT-s1p1mte",
156
+ [Side.TOP]: "gx-Drawer-Side_TOP-s3til6b",
157
+ [Side.BOTTOM]: "gx-Drawer-Side_BOTTOM-s28htx1"
158
+ };
159
+ var FOCUS_SCOPE_CSS = "gx-Drawer-FOCUS_SCOPE_CSS-f7ohikf";
160
+ /** The panel (Modal's declarations); it fills its frame. */
161
+ var Panel = /*#__PURE__*/ styled("div")({
162
+ name: "Panel",
163
+ class: "gx-Drawer-Panel-p1putub7",
26
164
  propsAsIs: false
27
165
  });
28
- var DrawerContentWrapper = /*#__PURE__*/ styled("div")({
29
- name: "DrawerContentWrapper",
30
- class: "d19reibl",
166
+ /** Push mode: the panel keeps its full length inside the clipping root, capped like the frame. */
167
+ var DRAWER_PUSH_PANEL_SIDE_TO_CSS_MAP = {
168
+ [Side.LEFT]: "gx-Drawer-Side_LEFT-s127o7of",
169
+ [Side.RIGHT]: "gx-Drawer-Side_RIGHT-su7a1is",
170
+ [Side.TOP]: "gx-Drawer-Side_TOP-s1smajqi",
171
+ [Side.BOTTOM]: "gx-Drawer-Side_BOTTOM-s3tnyde"
172
+ };
173
+ var Header = /*#__PURE__*/ styled("div")({
174
+ name: "Header",
175
+ class: "gx-Drawer-Header-h45j7yl",
176
+ propsAsIs: false
177
+ });
178
+ /** While the close button shows: a long title never runs under it. */
179
+ var HAS_CLOSE_CSS = "gx-Drawer-HAS_CLOSE_CSS-hov58xm";
180
+ /** A node `header`: takes the row and may shrink. */
181
+ var HeaderNode = /*#__PURE__*/ styled("div")({
182
+ name: "HeaderNode",
183
+ class: "gx-Drawer-HeaderNode-hckczr5",
184
+ propsAsIs: false
185
+ });
186
+ var Body = /*#__PURE__*/ styled("div")({
187
+ name: "Body",
188
+ class: "gx-Drawer-Body-b1v64nx4",
189
+ propsAsIs: false
190
+ });
191
+ var Footer = /*#__PURE__*/ styled("div")({
192
+ name: "Footer",
193
+ class: "gx-Drawer-Footer-ft6k1c3",
194
+ propsAsIs: false
195
+ });
196
+ var CloseSlot = /*#__PURE__*/ styled("span")({
197
+ name: "CloseSlot",
198
+ class: "gx-Drawer-CloseSlot-c15lcrsa",
31
199
  propsAsIs: false
32
200
  });
33
- var _exp3 = () => ({ $width }) => getCssSizeValue($width, "60%");
34
- var _exp4 = () => ({ theme }) => theme.color.background.base;
35
- var _exp5 = () => ({ theme }) => theme.color.border.primary;
36
- var DrawerWrapperContentBody = withTheme(/*#__PURE__*/ styled("div")({
37
- name: "DrawerWrapperContentBody",
38
- class: "d410s14",
39
- propsAsIs: false,
40
- vars: {
41
- "d410s14-0": [_exp3()],
42
- "d410s14-1": [_exp4()],
43
- "d410s14-2": [_exp5()]
44
- }
45
- }));
46
201
  /**
47
- * A panel that slides in from the right over a dimmed backdrop. Fully
48
- * controlled — you own `open`.
49
- *
50
- * Stacking and Escape handling come from `OverlayProvider`, so only the topmost
51
- * overlay closes on Escape. Wrap your app in that provider.
202
+ * Places the resize handle over the panel's inner edge, inside the panel's box. The doubled class
203
+ * outranks ResizeHandle's own `position: relative` whatever order the two modules' rules land in
204
+ * the stylesheet.
52
205
  */
53
- var Drawer = ({ open, onClose, width, closeOnClickOutside = false, children }) => {
54
- const { zIndex, isTopmost } = useOverlay(onClose, open, { layer: OverlayLayer.DRAWER });
55
- const handleContentClick = useCallback((e) => {
56
- e.stopPropagation();
57
- }, []);
58
- const dismissRef = useDismiss({
59
- onDismiss: onClose,
60
- enabled: open && isTopmost,
61
- enableClickOutside: closeOnClickOutside && isTopmost
62
- });
63
- return createPortal(open && /* @__PURE__ */ jsx(StyledDrawerWrapper, {
64
- isOpen: open,
65
- role: "dialog",
66
- "aria-modal": "true",
67
- style: { zIndex },
68
- children: /* @__PURE__ */ jsx(DrawerWrapperContent, { children: /* @__PURE__ */ jsx(DrawerContentWrapper, { children: /* @__PURE__ */ jsx(DrawerWrapperContentBody, {
69
- ref: dismissRef,
70
- $width: width,
71
- onClick: handleContentClick,
72
- children
73
- }) }) })
74
- }), document.body);
206
+ var DRAWER_SIDE_TO_HANDLE_CSS_MAP = {
207
+ [Side.RIGHT]: "gx-Drawer-Side_RIGHT-s1ob4oh8",
208
+ [Side.LEFT]: "gx-Drawer-Side_LEFT-s14nwavk",
209
+ [Side.TOP]: "gx-Drawer-Side_TOP-s1ifjfam",
210
+ [Side.BOTTOM]: "gx-Drawer-Side_BOTTOM-sv6fh8e"
75
211
  };
212
+ /** The viewport length on the side's axis, less the 48px strip. */
213
+ function readMaxSize(side) {
214
+ return (DRAWER_SIDE_TO_IS_HORIZONTAL_MAP[side] ? window.innerWidth : window.innerHeight) - DRAWER_VIEWPORT_GAP_PX;
215
+ }
216
+ /** A panel that slides in from an edge: title row, scrolling body, actions row. */
217
+ var Drawer = forwardRef(function Drawer({ children, header, footer, side = Side.RIGHT, size = "MEDIUM", isResizable = false, isModal = true, isDismissable = true, isOpen: isOpenProp, defaultIsOpen = false, onOpenChange, ariaLabel, id, className, style, ...rest }, ref) {
218
+ const generatedId = useId();
219
+ const titleId = useId();
220
+ const panelId = id ?? generatedId;
221
+ const transition = usePrefersReducedMotion() ? DRAWER_REDUCED_TRANSITION : DRAWER_TRANSITION;
222
+ const { isOpen, setOpen } = useControlledOpenState({
223
+ isOpen: isOpenProp,
224
+ defaultIsOpen,
225
+ onOpenChange
226
+ });
227
+ const close = () => setOpen(false);
228
+ const { zIndex, isTopmost, overlayId } = useOverlay({
229
+ isOpen: isOpen && isModal,
230
+ layer: OverlayLayer.DRAWER,
231
+ onEscape: isDismissable ? close : void 0
232
+ });
233
+ const [resizedSize, setResizedSize] = useState(null);
234
+ const sizeKey = `${size}:${side}`;
235
+ const [appliedSizeKey, setAppliedSizeKey] = useState(sizeKey);
236
+ if (appliedSizeKey !== sizeKey) {
237
+ setAppliedSizeKey(sizeKey);
238
+ setResizedSize(null);
239
+ }
240
+ const isHorizontal = DRAWER_SIDE_TO_IS_HORIZONTAL_MAP[side];
241
+ const currentSize = resizedSize ?? (isHorizontal ? DRAWER_SIZE_TO_WIDTH_PX_MAP[size] : DRAWER_SIZE_TO_HEIGHT_PX_MAP[size]);
242
+ const [maxSize, setMaxSize] = useState(Number.POSITIVE_INFINITY);
243
+ useEffect(() => {
244
+ if (!isOpen) return;
245
+ const update = () => setMaxSize(readMaxSize(side));
246
+ update();
247
+ window.addEventListener("resize", update);
248
+ return () => window.removeEventListener("resize", update);
249
+ }, [isOpen, side]);
250
+ const [hasOpened, setHasOpened] = useState(isOpen);
251
+ if (isOpen && !hasOpened) setHasOpened(true);
252
+ const [isOpenOnFirstRender] = useState(isOpen);
253
+ const shouldAnimateOnMount = !isOpenOnFirstRender;
254
+ /** Whether the current press started on the backdrop while this drawer was topmost. */
255
+ const isBackdropPressRef = useRef(false);
256
+ const handleBackdropPointerDown = (event) => {
257
+ isBackdropPressRef.current = event.target === event.currentTarget && isTopmost;
258
+ };
259
+ const handleBackdropClick = (_event) => {
260
+ const isBackdropPress = isBackdropPressRef.current;
261
+ isBackdropPressRef.current = false;
262
+ if (isBackdropPress && isDismissable) close();
263
+ };
264
+ const hasHeaderRow = header !== void 0 || isDismissable;
265
+ const labelling = ariaLabel !== void 0 ? { "aria-label": ariaLabel } : rest["aria-labelledby"] !== void 0 || header === void 0 ? {} : { "aria-labelledby": titleId };
266
+ const sizeStyle = { "--gx-drawer-size": `${currentSize}px` };
267
+ const regions = /* @__PURE__ */ jsxs(Fragment$1, { children: [
268
+ hasHeaderRow && /* @__PURE__ */ jsx(Header, {
269
+ className: cx(isDismissable && HAS_CLOSE_CSS),
270
+ children: typeof header === "string" ? /* @__PURE__ */ jsx(Text, {
271
+ as: "h2",
272
+ size: TextSize.BODY_LG,
273
+ weight: TextWeight.MEDIUM,
274
+ id: titleId,
275
+ children: header
276
+ }) : header !== void 0 ? /* @__PURE__ */ jsx(HeaderNode, {
277
+ id: titleId,
278
+ children: header
279
+ }) : null
280
+ }),
281
+ /* @__PURE__ */ jsx(Body, { children: typeof children === "string" || typeof children === "number" ? /* @__PURE__ */ jsx(Text, { children }) : children }),
282
+ footer !== void 0 && /* @__PURE__ */ jsx(Footer, { children: footer }),
283
+ isResizable && /* @__PURE__ */ jsx(ResizeHandle, {
284
+ orientation: DRAWER_SIDE_TO_HANDLE_ORIENTATION_MAP[side],
285
+ isReversed: DRAWER_SIDE_TO_IS_HANDLE_REVERSED_MAP[side],
286
+ value: currentSize,
287
+ onChange: setResizedSize,
288
+ min: DRAWER_MIN_SIZE_PX,
289
+ max: maxSize,
290
+ ariaLabel: RESIZE_LABEL,
291
+ "aria-controls": panelId,
292
+ className: DRAWER_SIDE_TO_HANDLE_CSS_MAP[side]
293
+ }),
294
+ isDismissable && /* @__PURE__ */ jsx(CloseSlot, { children: /* @__PURE__ */ jsx(Button, {
295
+ variant: ButtonVariant.TERTIARY,
296
+ size: ButtonSize.SMALL,
297
+ icon: XIcon,
298
+ ariaLabel: CLOSE_LABEL,
299
+ onClick: close
300
+ }) })
301
+ ] });
302
+ if (!isModal) return /* @__PURE__ */ jsx(AnimatePresence, {
303
+ initial: false,
304
+ children: isOpen && /* @__PURE__ */ jsx(motion.div, {
305
+ initial: DRAWER_SIDE_TO_PUSH_COLLAPSED_MAP[side],
306
+ animate: DRAWER_SIDE_TO_PUSH_OPEN_MAP[side],
307
+ exit: DRAWER_SIDE_TO_PUSH_COLLAPSED_MAP[side],
308
+ transition,
309
+ className: cx(PUSH_ROOT_CSS, DRAWER_PUSH_SIDE_TO_CSS_MAP[side]),
310
+ children: /* @__PURE__ */ jsx(FocusScope, {
311
+ isTrapped: false,
312
+ autoFocus: FocusScopeAutoFocus.NONE,
313
+ className: FOCUS_SCOPE_CSS,
314
+ children: /* @__PURE__ */ jsx(Panel, {
315
+ ...rest,
316
+ ...labelling,
317
+ ref,
318
+ id: panelId,
319
+ role: "region",
320
+ className: cx(DRAWER_PUSH_PANEL_SIDE_TO_CSS_MAP[side], className),
321
+ style: {
322
+ ...sizeStyle,
323
+ ...style
324
+ },
325
+ children: regions
326
+ })
327
+ })
328
+ }, "drawer-push")
329
+ });
330
+ if (!hasOpened) return null;
331
+ const closed = {
332
+ opacity: 0,
333
+ ...DRAWER_SIDE_TO_OFFSET_MAP[side],
334
+ pointerEvents: "none"
335
+ };
336
+ const frameStyle = {
337
+ "--gx-drawer-z": zIndex,
338
+ "--gx-drawer-size": `${currentSize}px`
339
+ };
340
+ return /* @__PURE__ */ jsx(Portal, { children: /* @__PURE__ */ jsxs(OverlayNode, {
341
+ overlayId,
342
+ children: [/* @__PURE__ */ jsx(Fade, {
343
+ isOpen,
344
+ shouldAnimateOnMount,
345
+ className: BACKDROP_FRAME_CSS,
346
+ style: { "--gx-drawer-z": zIndex },
347
+ children: /* @__PURE__ */ jsx(Backdrop, {
348
+ "aria-hidden": true,
349
+ onPointerDown: handleBackdropPointerDown,
350
+ onClick: handleBackdropClick
351
+ })
352
+ }), /* @__PURE__ */ jsx(AnimatePresence, {
353
+ initial: shouldAnimateOnMount,
354
+ children: isOpen && /* @__PURE__ */ jsx(motion.div, {
355
+ initial: closed,
356
+ animate: DRAWER_OPEN,
357
+ exit: closed,
358
+ transition,
359
+ className: cx(FRAME_CSS, DRAWER_SIDE_TO_CSS_MAP[side]),
360
+ style: frameStyle,
361
+ children: /* @__PURE__ */ jsx(FocusScope, {
362
+ autoFocus: FocusScopeAutoFocus.FIRST,
363
+ className: FOCUS_SCOPE_CSS,
364
+ children: /* @__PURE__ */ jsx(Panel, {
365
+ ...rest,
366
+ ...labelling,
367
+ ref,
368
+ id: panelId,
369
+ role: "dialog",
370
+ "aria-modal": "true",
371
+ className,
372
+ style,
373
+ children: regions
374
+ })
375
+ })
376
+ }, "drawer-frame")
377
+ })]
378
+ }) });
379
+ });
380
+ Drawer.displayName = "Drawer";
76
381
  //#endregion
77
- export { Drawer as default };
382
+ export { DrawerSize, Drawer as default };