@galaxy-io/dls 1.6.1 → 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 -30
  468. package/dist/inputs/SwitcherInput.js +0 -81
  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
@@ -1,117 +1,356 @@
1
- import { withTheme } from "../theme/GalaxyTheme.js";
2
- import { getCssSizeValue } from "../utils/linaria.js";
1
+ import Text, { TextSize, TextVariant, TextWeight } from "../text/Text.js";
2
+ import { useControlledOpenState } from "../hooks/useControlledOpenState.js";
3
+ import Divider from "../layout/Divider.js";
4
+ import Icon, { IconVariant } from "../icons/Icon.js";
5
+ import IconSlot from "../icons/internal/IconSlot.js";
6
+ import Rotate from "../transform/Rotate.js";
7
+ import Spinner, { SpinnerVariant } from "../feedback/Spinner.js";
8
+ import CollapseMotion from "../transform/internal/CollapseMotion.js";
3
9
  /* empty css */
4
10
  import { styled } from "@linaria/react";
11
+ import { createContext, forwardRef, useContext, useEffect, useId, useRef } from "react";
12
+ import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
13
+ import { cx } from "@linaria/core";
5
14
  import { match } from "ts-pattern";
6
- import { jsx } from "react/jsx-runtime";
15
+ import { CaretDownIcon } from "@phosphor-icons/react";
7
16
  //#region src/widget/Widget.tsx
8
- /** Surface treatment — how much the card separates from the page behind it. */
17
+ /**
18
+ * The card: a hairline-bordered, rounded surface that groups related content. Every region is
19
+ * optional around the body: a header row (a title, an optional subheader and leading icon, and
20
+ * `actions` at the end) and a footer row, separated from the body by hairline `Divider`s that
21
+ * appear only between two rendered regions. One component covers four header cases:
22
+ *
23
+ * - no `header`: the body alone (the 1.x card);
24
+ * - a static `header`: a titled card;
25
+ * - `isCollapsible`: the header is one stretched `<button>` (`aria-expanded`, `aria-controls`, named
26
+ * by the title, described by the subheader) that folds the body and footer away with an
27
+ * animated height (instant under reduced motion), with a turning caret; the folded content is a named region and leaves the tab
28
+ * order while closed;
29
+ * - `isCollapsible hasCaret={false}`: the same disclosure without the caret.
30
+ *
31
+ * It can also show a loading body (`isLoading`, a centered `Spinner`), be one click target
32
+ * (`isInteractive` with `onClick`: a childless `<button>` stretched under the content, so nothing
33
+ * nests inside a button) and show a chosen state (`isSelected`, a `text.primary` hairline). The
34
+ * fill comes from the surface set; `size` sets the header, footer and body density.
35
+ *
36
+ * Collapsible Widgets that coordinate (one open at a time, arrow keys between headers) are wrapped
37
+ * in `WidgetGroup`, which owns their open state through the context exported here. A plain surface
38
+ * with no border, regions or states is a `Box`; a status message is an `Alert`.
39
+ */
40
+ /** Card fill (Constitution V-A surface set). */
9
41
  var WidgetVariant = /* @__PURE__ */ function(WidgetVariant) {
42
+ /** `background.base`. */
10
43
  WidgetVariant["BASE"] = "BASE";
44
+ /** `background.primary`. The default (1.x default). */
11
45
  WidgetVariant["PRIMARY"] = "PRIMARY";
12
- WidgetVariant["PRIMARY_ALT"] = "PRIMARY_ALT";
46
+ /** `background.secondary`. */
13
47
  WidgetVariant["SECONDARY"] = "SECONDARY";
14
- WidgetVariant["SECONDARY_ALT"] = "SECONDARY_ALT";
48
+ /** `background.tertiary`. */
15
49
  WidgetVariant["TERTIARY"] = "TERTIARY";
16
- WidgetVariant["TERTIARY_ALT"] = "TERTIARY_ALT";
17
- WidgetVariant["SUCCESS"] = "SUCCESS";
18
- WidgetVariant["ERROR"] = "ERROR";
19
- WidgetVariant["WARNING"] = "WARNING";
20
- WidgetVariant["DISABLED"] = "DISABLED";
21
- WidgetVariant["BLUE"] = "BLUE";
22
- WidgetVariant["LIME"] = "LIME";
23
- WidgetVariant["TEAL"] = "TEAL";
24
- WidgetVariant["YELLOW"] = "YELLOW";
25
- WidgetVariant["ORANGE"] = "ORANGE";
26
- WidgetVariant["PURPLE"] = "PURPLE";
27
- WidgetVariant["PINK"] = "PINK";
28
50
  return WidgetVariant;
29
51
  }({});
30
- var _exp = () => ({ theme, $variant }) => {
31
- return match($variant).with("BASE", () => theme.color.background.base).with("PRIMARY", () => theme.color.background.primary).with("PRIMARY_ALT", () => theme.color.background.primaryAlt).with("SECONDARY", () => theme.color.background.secondary).with("SECONDARY_ALT", () => theme.color.background.secondaryAlt).with("TERTIARY", () => theme.color.background.tertiary).with("TERTIARY_ALT", () => theme.color.background.tertiaryAlt).with("SUCCESS", () => theme.color.background.success).with("WARNING", () => theme.color.background.warning).with("ERROR", () => theme.color.background.error).with("DISABLED", () => theme.color.background.disabled).with("BLUE", () => theme.color.background.blue).with("LIME", () => theme.color.background.lime).with("TEAL", () => theme.color.background.teal).with("YELLOW", () => theme.color.background.yellow).with("ORANGE", () => theme.color.background.orange).with("PURPLE", () => theme.color.background.purple).with("PINK", () => theme.color.background.pink).exhaustive();
32
- };
33
- var _exp2 = () => ({ theme, $noBorder, $isSelected, $variant }) => {
34
- if ($noBorder) return "transparent";
35
- if ($isSelected) return theme.color.border.selected;
36
- return match($variant).with("BASE", () => theme.color.border.primary).with("PRIMARY", () => theme.color.border.primary).with("PRIMARY_ALT", () => theme.color.border.selected).with("SECONDARY", () => theme.color.border.primary).with("SECONDARY_ALT", () => theme.color.border.selected).with("TERTIARY", () => theme.color.border.primary).with("TERTIARY_ALT", () => theme.color.border.selected).with("SUCCESS", () => theme.color.border.success).with("WARNING", () => theme.color.border.warning).with("ERROR", () => theme.color.border.error).with("DISABLED", () => theme.color.border.disabled).with("BLUE", () => theme.color.border.blue).with("LIME", () => theme.color.border.lime).with("TEAL", () => theme.color.border.teal).with("YELLOW", () => theme.color.border.yellow).with("ORANGE", () => theme.color.border.orange).with("PURPLE", () => theme.color.border.purple).with("PINK", () => theme.color.border.pink).exhaustive();
37
- };
38
- var _exp3 = () => ({ $padding, $noPadding }) => $padding ?? ($noPadding ? "0" : "12px");
39
- var _exp4 = () => ({ $fillWidth }) => $fillWidth ? "100%" : "auto";
40
- var _exp5 = () => ({ $fillHeight }) => $fillHeight ? "100%" : "auto";
41
- var _exp6 = () => ({ $minWidth }) => {
42
- if ($minWidth === void 0) return "auto";
43
- return getCssSizeValue($minWidth);
44
- };
45
- var _exp7 = () => ({ $maxWidth }) => {
46
- if ($maxWidth === void 0) return "auto";
47
- return getCssSizeValue($maxWidth);
52
+ /** Header, footer and body density; canonical rungs `SMALL MEDIUM LARGE` (the 1.x Accordion members). */
53
+ var WidgetSize = /* @__PURE__ */ function(WidgetSize) {
54
+ /** 32px header and footer rows, 8px body inset and gap, `body_sm` title, `caption` subheader, 13px icon. */
55
+ WidgetSize["SMALL"] = "SMALL";
56
+ /** 40px header and footer rows, 12px body inset and gap, `body_md` title, `body_sm` subheader, 15px icon. The default. */
57
+ WidgetSize["MEDIUM"] = "MEDIUM";
58
+ /** 48px header and footer rows, 16px body inset and gap, `body_lg` title, `body_md` subheader, 15px icon. */
59
+ WidgetSize["LARGE"] = "LARGE";
60
+ return WidgetSize;
61
+ }({});
62
+ /**
63
+ * Plumbing between `WidgetGroup` and its collapsible `Widget`s. `null` outside a group and inside a
64
+ * Widget's body, so nested Widgets are standalone.
65
+ * @internal
66
+ */
67
+ var WidgetGroupContext = createContext(null);
68
+ /** The stretched, childless card button of an interactive card (declared first: `INTERACTIVE_CSS` selects it). */
69
+ var HitTarget = /*#__PURE__*/ styled("button")({
70
+ name: "HitTarget",
71
+ class: "gx-Widget-HitTarget-hx1o0cd",
72
+ propsAsIs: false
73
+ });
74
+ /** The card: hairline, `radius.lg`, a column of regions. No clip, so focus rings show in full. */
75
+ var Root = /*#__PURE__*/ styled("div")({
76
+ name: "Root",
77
+ class: "gx-Widget-r18wxf9x",
78
+ propsAsIs: false
79
+ });
80
+ /** The header row: icon, titles, actions and caret, over the stretched header button. */
81
+ var Header = /*#__PURE__*/ styled("div")({
82
+ name: "Header",
83
+ class: "gx-Widget-Header-h569d4k",
84
+ propsAsIs: false
85
+ });
86
+ /** The stretched, childless header button of a collapsible card: one target for the whole row. */
87
+ var HeaderToggle = /*#__PURE__*/ styled("button")({
88
+ name: "HeaderToggle",
89
+ class: "gx-Widget-HeaderToggle-hci64f9",
90
+ propsAsIs: false
91
+ });
92
+ /** Title over subheader; takes the free width and wraps. */
93
+ var Titles = /*#__PURE__*/ styled("div")({
94
+ name: "Titles",
95
+ class: "gx-Widget-Titles-t2het6w",
96
+ propsAsIs: false
97
+ });
98
+ /** A node title: its own row of content. */
99
+ var TitleNode = /*#__PURE__*/ styled("div")({
100
+ name: "TitleNode",
101
+ class: "gx-Widget-TitleNode-t1cuwt7c",
102
+ propsAsIs: false
103
+ });
104
+ /** The header's end slot, above both stretched buttons and pointer-reachable. */
105
+ var Actions = /*#__PURE__*/ styled("div")({
106
+ name: "Actions",
107
+ class: "gx-Widget-Actions-a1oiu5i6",
108
+ propsAsIs: false
109
+ });
110
+ /** The folded content of a collapsible card: a named region, a column like the card. */
111
+ var Panel = /*#__PURE__*/ styled("section")({
112
+ name: "Panel",
113
+ class: "gx-Widget-Panel-p1u3h98q",
114
+ propsAsIs: false
115
+ });
116
+ /** The body region: a column of the children. */
117
+ var Body = /*#__PURE__*/ styled("div")({
118
+ name: "Body",
119
+ class: "gx-Widget-Body-b1t0k6w8",
120
+ propsAsIs: false
121
+ });
122
+ /** The loading body: a centered spinner with a 24px inset, even when flush. */
123
+ var Loading = /*#__PURE__*/ styled("div")({
124
+ name: "Loading",
125
+ class: "gx-Widget-Loading-l13kd2xw",
126
+ propsAsIs: false
127
+ });
128
+ /** The footer row: start-aligned content. */
129
+ var Footer = /*#__PURE__*/ styled("div")({
130
+ name: "Footer",
131
+ class: "gx-Widget-Footer-f1ltvlgq",
132
+ propsAsIs: false
133
+ });
134
+ var WIDGET_VARIANT_TO_CSS_MAP = {
135
+ ["BASE"]: "gx-Widget-BASE-b1yp190m",
136
+ ["PRIMARY"]: "gx-Widget-PRIMARY-p1365057",
137
+ ["SECONDARY"]: "gx-Widget-SECONDARY-s1f3h6ms",
138
+ ["TERTIARY"]: "gx-Widget-TERTIARY-t1c1upfe"
48
139
  };
49
- var _exp8 = () => ({ $minHeight }) => {
50
- if ($minHeight === void 0) return "auto";
51
- return getCssSizeValue($minHeight);
140
+ /** Header and footer rows: inset and minimum height (a control rung plus the block inset). */
141
+ var WIDGET_SIZE_TO_ROW_CSS_MAP = {
142
+ ["SMALL"]: "gx-Widget-SMALL-s14rp7e3",
143
+ ["MEDIUM"]: "gx-Widget-MEDIUM-m14youd7",
144
+ ["LARGE"]: "gx-Widget-LARGE-lmk1xrm"
52
145
  };
53
- var _exp9 = () => ({ $maxHeight }) => {
54
- if ($maxHeight === void 0) return "auto";
55
- return getCssSizeValue($maxHeight);
146
+ /** Body inset and gap. */
147
+ var WIDGET_SIZE_TO_BODY_CSS_MAP = {
148
+ ["SMALL"]: "gx-Widget-SMALL-s1qcxaeu",
149
+ ["MEDIUM"]: "gx-Widget-MEDIUM-m1niqf43",
150
+ ["LARGE"]: "gx-Widget-LARGE-l1wi0lfv"
56
151
  };
57
- var _exp0 = () => ({ $variant }) => {
58
- if ($variant === "DISABLED") return .5;
59
- return 1;
152
+ var WIDGET_SIZE_TO_TEXT_SIZE_MAP = {
153
+ ["SMALL"]: TextSize.BODY_SM,
154
+ ["MEDIUM"]: TextSize.BODY_MD,
155
+ ["LARGE"]: TextSize.BODY_LG
60
156
  };
61
- var _exp1 = () => ({ $isClickable, $variant }) => {
62
- if ($variant === "ERROR") return "not-allowed";
63
- if ($isClickable) return "pointer";
64
- return "inherit";
157
+ var WIDGET_SIZE_TO_SUBHEADER_TEXT_SIZE_MAP = {
158
+ ["SMALL"]: TextSize.CAPTION,
159
+ ["MEDIUM"]: TextSize.BODY_SM,
160
+ ["LARGE"]: TextSize.BODY_MD
65
161
  };
66
- var _exp10 = () => ({ theme, $noHover, $isSelected, $isClickable, $variant }) => {
67
- if (!$isClickable) return match($variant).with("BASE", () => theme.color.border.primary).with("PRIMARY", () => theme.color.border.primary).with("PRIMARY_ALT", () => theme.color.border.selected).with("SECONDARY", () => theme.color.border.primary).with("SECONDARY_ALT", () => theme.color.border.selected).with("TERTIARY", () => theme.color.border.primary).with("TERTIARY_ALT", () => theme.color.border.selected).with("SUCCESS", () => theme.color.border.success).with("WARNING", () => theme.color.border.warning).with("ERROR", () => theme.color.border.error).with("DISABLED", () => theme.color.border.disabled).with("BLUE", () => theme.color.border.blue).with("LIME", () => theme.color.border.lime).with("TEAL", () => theme.color.border.teal).with("YELLOW", () => theme.color.border.yellow).with("ORANGE", () => theme.color.border.orange).with("PURPLE", () => theme.color.border.purple).with("PINK", () => theme.color.border.pink).exhaustive();
68
- return match($variant).with("SUCCESS", () => theme.color.border.success).with("WARNING", () => theme.color.border.warning).with("ERROR", () => theme.color.border.error).with("DISABLED", () => theme.color.border.disabled).otherwise(() => {
69
- if ($isSelected) return theme.color.border.selected;
70
- if ($noHover) return theme.color.border.primary;
71
- return theme.color.border.secondary;
72
- });
162
+ /**
163
+ * Leading icon px per rung: 13 / 15 / 15, Button's icons at the matching rungs (Mitch,
164
+ * 2026-10-05). Odd, so the icon sits in an `IconSlot` (whole pixels at 1x, centered at 2x).
165
+ */
166
+ var WIDGET_SIZE_TO_ICON_PX_MAP = {
167
+ ["SMALL"]: 13,
168
+ ["MEDIUM"]: 15,
169
+ ["LARGE"]: 15
73
170
  };
74
- var StyledWidget = withTheme(/*#__PURE__*/ styled("div")({
75
- name: "StyledWidget",
76
- class: "sx1o0cd",
77
- propsAsIs: false,
78
- vars: {
79
- "sx1o0cd-0": [_exp()],
80
- "sx1o0cd-1": [_exp2()],
81
- "sx1o0cd-2": [_exp3()],
82
- "sx1o0cd-3": [_exp4()],
83
- "sx1o0cd-4": [_exp5()],
84
- "sx1o0cd-5": [_exp6()],
85
- "sx1o0cd-6": [_exp7()],
86
- "sx1o0cd-7": [_exp8()],
87
- "sx1o0cd-8": [_exp9()],
88
- "sx1o0cd-9": [_exp0()],
89
- "sx1o0cd-10": [_exp1()],
90
- "sx1o0cd-11": [_exp10()]
91
- }
92
- }));
171
+ /** A collapsible card: `border.secondary` on hover (one step stronger, 1.x Accordion). */
172
+ var COLLAPSIBLE_CSS = "gx-Widget-COLLAPSIBLE_CSS-c1993nui";
173
+ /** An open collapsible card keeps the stronger border at rest. */
174
+ var OPEN_CSS = "gx-Widget-OPEN_CSS-osd319a";
93
175
  /**
94
- * The card primitive — a bordered, padded surface that groups related content.
95
- * Hairline border, no shadow. Compose the inside with `FlexWrapper`.
176
+ * An interactive card: pointer, hover border, and the content regions lifted above the card
177
+ * button with presses passing through them (`Actions` and `HeaderToggle` take theirs back).
96
178
  */
97
- var Widget = ({ children, minHeight, maxHeight, minWidth, maxWidth, fillWidth, fillHeight, padding, noPadding, noHover, noBorder, isSelected, variant = "PRIMARY", onClick }) => {
98
- return /* @__PURE__ */ jsx(StyledWidget, {
99
- $minWidth: minWidth,
100
- $maxWidth: maxWidth,
101
- $minHeight: minHeight,
102
- $maxHeight: maxHeight,
103
- $fillWidth: fillWidth,
104
- $fillHeight: fillHeight,
105
- $padding: padding,
106
- $noPadding: noPadding,
107
- $noHover: noHover,
108
- $noBorder: noBorder,
109
- $isSelected: isSelected,
110
- $variant: variant,
111
- $isClickable: !!onClick,
112
- onClick,
113
- children
179
+ var INTERACTIVE_CSS = "gx-Widget-INTERACTIVE_CSS-i11hrzgx";
180
+ /** Disabled (and not open): the hover border and pointer are cancelled. */
181
+ var DISABLED_CSS = "gx-Widget-DISABLED_CSS-d27d11a";
182
+ /** Chosen: a `text.primary` hairline, also on hover (declared after the hover states, so it wins). */
183
+ var SELECTED_CSS = "gx-Widget-SELECTED_CSS-s13jeom8";
184
+ /** `isFlush`: no body inset (the gap stays); the body clips its content inside the corners it shares. */
185
+ var FLUSH_CSS = "gx-Widget-FLUSH_CSS-f18mgbxd";
186
+ /** A flush body with no header row above it rounds the card's top corners. */
187
+ var FLUSH_TOP_CORNERS_CSS = "gx-Widget-FLUSH_TOP_CORNERS_CSS-f1djym4t";
188
+ /** A flush body with no footer under it rounds the card's bottom corners. */
189
+ var FLUSH_BOTTOM_CORNERS_CSS = "gx-Widget-FLUSH_BOTTOM_CORNERS_CSS-fln5c1k";
190
+ /** The caret lies over the header button (Rotate's transform paints it above); presses pass through. */
191
+ var CARET_CSS = "gx-Widget-CARET_CSS-c190r628";
192
+ /** The caret glyph size at every rung (1.x Accordion). */
193
+ var CARET_PX = 12;
194
+ /** A static or open header reads at full strength, a closed one a step down, a disabled one dims. */
195
+ var headerColors = (isOpen, isDisabled) => match({
196
+ isOpen,
197
+ isDisabled
198
+ }).with({ isDisabled: true }, () => ({
199
+ title: TextVariant.DISABLED,
200
+ subheader: TextVariant.DISABLED,
201
+ icon: IconVariant.DISABLED
202
+ })).with({
203
+ isDisabled: false,
204
+ isOpen: true
205
+ }, () => ({
206
+ title: TextVariant.PRIMARY,
207
+ subheader: TextVariant.SECONDARY,
208
+ icon: IconVariant.PRIMARY
209
+ })).with({
210
+ isDisabled: false,
211
+ isOpen: false
212
+ }, () => ({
213
+ title: TextVariant.SECONDARY,
214
+ subheader: TextVariant.TERTIARY,
215
+ icon: IconVariant.SECONDARY
216
+ })).exhaustive();
217
+ /** Whether a slot has something to render. */
218
+ var hasContent = (node) => node !== void 0 && node !== null && node !== false;
219
+ /** A card: a bordered surface with an optional (collapsible) header, actions, footer and states. */
220
+ var Widget = forwardRef(function Widget({ children, variant = "PRIMARY", size = "MEDIUM", header, subheader, icon, actions, footer, isFlush = false, isCollapsible = false, hasCaret = true, isOpen: isOpenProp, defaultIsOpen = false, onOpenChange, isDisabled = false, isLoading = false, isSelected, isInteractive = false, onClick, ariaLabel, id, className, style, ...rest }, ref) {
221
+ const baseId = useId();
222
+ const rootId = id ?? baseId;
223
+ const titleId = `${baseId}-title`;
224
+ const subheaderId = `${baseId}-subheader`;
225
+ const bodyId = `${baseId}-body`;
226
+ const panelId = `${baseId}-panel`;
227
+ const toggleRef = useRef(null);
228
+ const group = useContext(WidgetGroupContext);
229
+ const isGrouped = group !== null && isCollapsible;
230
+ const own = useControlledOpenState({
231
+ isOpen: isOpenProp,
232
+ defaultIsOpen,
233
+ onOpenChange
114
234
  });
115
- };
235
+ const isOpen = !isCollapsible || (isGrouped ? group.openIds.includes(rootId) : own.isOpen);
236
+ const registerToggle = isGrouped ? group.registerToggle : void 0;
237
+ useEffect(() => {
238
+ if (registerToggle === void 0) return;
239
+ registerToggle(toggleRef.current, rootId);
240
+ return () => registerToggle(null, rootId);
241
+ }, [registerToggle, rootId]);
242
+ const handleToggle = () => {
243
+ const next = !isOpen;
244
+ if (!isGrouped) {
245
+ own.setOpen(next);
246
+ return;
247
+ }
248
+ group.setItemOpen(rootId, next);
249
+ onOpenChange?.(next);
250
+ };
251
+ const hasHeader = hasContent(header);
252
+ const hasActions = hasContent(actions);
253
+ const hasHeaderRow = hasHeader || hasActions;
254
+ const hasFooter = hasContent(footer);
255
+ const hasSubheader = hasHeader && Boolean(subheader);
256
+ const hasAriaLabel = ariaLabel !== void 0 && ariaLabel !== "";
257
+ const colors = headerColors(isOpen, isDisabled);
258
+ const regions = /* @__PURE__ */ jsxs(Fragment$1, { children: [
259
+ hasHeaderRow && /* @__PURE__ */ jsx(Divider, {}),
260
+ /* @__PURE__ */ jsx(Body, {
261
+ id: bodyId,
262
+ className: cx(WIDGET_SIZE_TO_BODY_CSS_MAP[size], isFlush && FLUSH_CSS, isFlush && !hasHeaderRow && FLUSH_TOP_CORNERS_CSS, isFlush && !hasFooter && FLUSH_BOTTOM_CORNERS_CSS),
263
+ children: isLoading ? /* @__PURE__ */ jsx(Loading, { children: /* @__PURE__ */ jsx(Spinner, {
264
+ variant: SpinnerVariant.SECONDARY,
265
+ ariaLabel: "Loading"
266
+ }) }) : children
267
+ }),
268
+ hasFooter && /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(Divider, {}), /* @__PURE__ */ jsx(Footer, {
269
+ className: WIDGET_SIZE_TO_ROW_CSS_MAP[size],
270
+ children: footer
271
+ })] })
272
+ ] });
273
+ return /* @__PURE__ */ jsxs(Root, {
274
+ ...rest,
275
+ ref,
276
+ id: rootId,
277
+ "aria-busy": isLoading ? true : rest["aria-busy"],
278
+ className: cx(WIDGET_VARIANT_TO_CSS_MAP[variant], isCollapsible && COLLAPSIBLE_CSS, isCollapsible && isOpen && OPEN_CSS, isInteractive && INTERACTIVE_CSS, isDisabled && !(isCollapsible && isOpen) && DISABLED_CSS, isSelected === true && SELECTED_CSS, className),
279
+ style,
280
+ children: [
281
+ isInteractive && /* @__PURE__ */ jsx(HitTarget, {
282
+ type: "button",
283
+ onClick,
284
+ disabled: isDisabled,
285
+ "aria-pressed": isSelected,
286
+ "aria-label": hasAriaLabel ? ariaLabel : void 0,
287
+ "aria-labelledby": hasAriaLabel ? void 0 : hasHeader ? titleId : bodyId
288
+ }),
289
+ hasHeaderRow && /* @__PURE__ */ jsxs(Header, {
290
+ className: WIDGET_SIZE_TO_ROW_CSS_MAP[size],
291
+ children: [
292
+ isCollapsible && /* @__PURE__ */ jsx(HeaderToggle, {
293
+ ref: toggleRef,
294
+ type: "button",
295
+ "aria-expanded": isOpen,
296
+ "aria-controls": isOpen ? panelId : void 0,
297
+ "aria-labelledby": titleId,
298
+ "aria-describedby": hasSubheader ? subheaderId : void 0,
299
+ disabled: isDisabled,
300
+ onClick: handleToggle
301
+ }),
302
+ hasHeader && icon !== void 0 && /* @__PURE__ */ jsx(IconSlot, {
303
+ px: WIDGET_SIZE_TO_ICON_PX_MAP[size],
304
+ children: /* @__PURE__ */ jsx(Icon, {
305
+ component: icon,
306
+ size: WIDGET_SIZE_TO_ICON_PX_MAP[size],
307
+ variant: colors.icon
308
+ })
309
+ }),
310
+ /* @__PURE__ */ jsxs(Titles, { children: [typeof header === "string" ? /* @__PURE__ */ jsx(Text, {
311
+ as: "span",
312
+ id: titleId,
313
+ size: WIDGET_SIZE_TO_TEXT_SIZE_MAP[size],
314
+ weight: TextWeight.MEDIUM,
315
+ variant: colors.title,
316
+ children: header
317
+ }) : hasHeader && /* @__PURE__ */ jsx(TitleNode, {
318
+ id: titleId,
319
+ children: header
320
+ }), hasSubheader && /* @__PURE__ */ jsx(Text, {
321
+ as: "span",
322
+ id: subheaderId,
323
+ size: WIDGET_SIZE_TO_SUBHEADER_TEXT_SIZE_MAP[size],
324
+ variant: colors.subheader,
325
+ children: subheader
326
+ })] }),
327
+ hasActions && /* @__PURE__ */ jsx(Actions, { children: actions }),
328
+ isCollapsible && hasCaret && /* @__PURE__ */ jsx(Rotate, {
329
+ isRotated: isOpen,
330
+ deg: -180,
331
+ className: CARET_CSS,
332
+ children: /* @__PURE__ */ jsx(Icon, {
333
+ component: CaretDownIcon,
334
+ size: CARET_PX,
335
+ variant: colors.icon
336
+ })
337
+ })
338
+ ]
339
+ }),
340
+ /* @__PURE__ */ jsx(WidgetGroupContext.Provider, {
341
+ value: null,
342
+ children: isCollapsible ? /* @__PURE__ */ jsx(CollapseMotion, {
343
+ isOpen,
344
+ children: /* @__PURE__ */ jsx(Panel, {
345
+ id: panelId,
346
+ "aria-labelledby": titleId,
347
+ children: regions
348
+ })
349
+ }) : regions
350
+ })
351
+ ]
352
+ });
353
+ });
354
+ Widget.displayName = "Widget";
116
355
  //#endregion
117
- export { WidgetVariant, Widget as default };
356
+ export { WidgetGroupContext, WidgetSize, WidgetVariant, Widget as default };
@@ -0,0 +1,36 @@
1
+ import { type AriaAttributes, type CSSProperties, type ReactNode } from "react";
2
+ export interface WidgetGroupProps extends AriaAttributes {
3
+ /**
4
+ * The collapsible `Widget`s, in order. Other elements may sit between them (a `Text` caption);
5
+ * only collapsible Widgets take part.
6
+ */
7
+ children?: ReactNode;
8
+ /**
9
+ * Controlled list of open Widget `id`s. Pass it with `onChange`, and give the Widgets
10
+ * stable `id`s. In single-open mode only the first id is used.
11
+ */
12
+ value?: string[];
13
+ /**
14
+ * Initial open `id`s while uncontrolled. In single-open mode only the first is used.
15
+ * @default []
16
+ */
17
+ defaultValue?: string[];
18
+ /** Called with the next list of open `id`s when a header is pressed. */
19
+ onChange?: (value: string[]) => void;
20
+ /**
21
+ * Lets several Widgets be open at once. Off: opening one closes the others.
22
+ * @default false
23
+ */
24
+ canOpenMultiple?: boolean;
25
+ /** DOM id on the root `<div>`. */
26
+ id?: string;
27
+ /** Any `data-*` attribute, forwarded to the root `<div>`. */
28
+ [dataAttribute: `data-${string}`]: string | number | boolean | undefined;
29
+ /** Extra class on the root `<div>`. */
30
+ className?: string;
31
+ /** Inline style on the root `<div>`; only for setting CSS custom properties. */
32
+ style?: CSSProperties;
33
+ }
34
+ /** Coordinates collapsible `Widget`s: one open at a time by default, arrow keys between headers. */
35
+ declare const WidgetGroup: import("react").ForwardRefExoticComponent<WidgetGroupProps & import("react").RefAttributes<HTMLDivElement>>;
36
+ export default WidgetGroup;
@@ -0,0 +1,103 @@
1
+ import { useControlledState } from "../hooks/useControlledState.js";
2
+ import { WidgetGroupContext } from "./Widget.js";
3
+ /* empty css */
4
+ import { styled } from "@linaria/react";
5
+ import { forwardRef, useCallback, useMemo, useRef } from "react";
6
+ import { jsx } from "react/jsx-runtime";
7
+ //#region src/widget/WidgetGroup.tsx
8
+ /**
9
+ * Coordinates a stack of collapsible `Widget`s (`isCollapsible`): by default opening one closes the
10
+ * others, and ArrowUp / ArrowDown / Home / End move focus between their headers (the optional keys
11
+ * of the WAI-ARIA accordion pattern); Enter / Space toggle through the header buttons. It owns which
12
+ * Widgets are open as a list of their `id`s
13
+ * (`value` / `defaultValue` / `onChange`) and lays them out as a column with an 8px gap. It draws
14
+ * nothing else: no border, no fill, no dividers.
15
+ *
16
+ * Widgets find the group through `WidgetGroupContext` (exported `@internal` from the Widget
17
+ * module) and register their header buttons; arrow keys follow DOM order, so items may be wrapped
18
+ * or interleaved with other elements. A Widget that is not collapsible takes no part. Widgets that
19
+ * do not need to coordinate are simply stacked in a `Flex`. Replaces the 2.0 pre-release
20
+ * `AccordionGroup`.
21
+ */
22
+ /** The stack: a column with the 1.x 8px gap. No border, fill, radius or padding. */
23
+ var Root = /*#__PURE__*/ styled("div")({
24
+ name: "Root",
25
+ class: "gx-WidgetGroup-r4oi007",
26
+ propsAsIs: false
27
+ });
28
+ /** No ids open. A module constant so the default keeps one identity across renders. */
29
+ var NO_IDS = [];
30
+ /** The keys that move focus between headers. */
31
+ var NAVIGATION_KEYS = new Set([
32
+ "ArrowDown",
33
+ "ArrowUp",
34
+ "Home",
35
+ "End"
36
+ ]);
37
+ /** Orders two elements by their position in the document. */
38
+ var byDocumentOrder = (a, b) => a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_FOLLOWING ? -1 : 1;
39
+ /** Coordinates collapsible `Widget`s: one open at a time by default, arrow keys between headers. */
40
+ var WidgetGroup = forwardRef(function WidgetGroup({ children, value, defaultValue = NO_IDS, onChange, canOpenMultiple = false, id, className, style, ...rest }, ref) {
41
+ const [storedIds, setOpenIds] = useControlledState({
42
+ value,
43
+ defaultValue,
44
+ onChange
45
+ });
46
+ const openIds = useMemo(() => canOpenMultiple ? storedIds : storedIds.slice(0, 1), [canOpenMultiple, storedIds]);
47
+ const setItemOpen = useCallback((itemId, isOpen) => {
48
+ if (!canOpenMultiple) {
49
+ setOpenIds(isOpen ? [itemId] : []);
50
+ return;
51
+ }
52
+ if (isOpen) {
53
+ setOpenIds(openIds.includes(itemId) ? [...openIds] : [...openIds, itemId]);
54
+ return;
55
+ }
56
+ setOpenIds(openIds.filter((openId) => openId !== itemId));
57
+ }, [
58
+ canOpenMultiple,
59
+ openIds,
60
+ setOpenIds
61
+ ]);
62
+ const togglesRef = useRef(/* @__PURE__ */ new Map());
63
+ const registerToggle = useCallback((element, itemId) => {
64
+ if (element === null) togglesRef.current.delete(itemId);
65
+ else togglesRef.current.set(itemId, element);
66
+ }, []);
67
+ const context = useMemo(() => ({
68
+ openIds,
69
+ setItemOpen,
70
+ registerToggle
71
+ }), [
72
+ openIds,
73
+ setItemOpen,
74
+ registerToggle
75
+ ]);
76
+ const handleKeyDown = (event) => {
77
+ if (!NAVIGATION_KEYS.has(event.key)) return;
78
+ const registered = [...togglesRef.current.values()];
79
+ if (!registered.includes(event.target)) return;
80
+ const headers = registered.filter((element) => element.isConnected && !element.disabled).sort(byDocumentOrder);
81
+ if (headers.length === 0) return;
82
+ const current = headers.indexOf(event.target);
83
+ const last = headers.length - 1;
84
+ const next = event.key === "Home" ? 0 : event.key === "End" ? last : event.key === "ArrowDown" ? current === last ? 0 : current + 1 : current <= 0 ? last : current - 1;
85
+ event.preventDefault();
86
+ headers[next]?.focus();
87
+ };
88
+ return /* @__PURE__ */ jsx(Root, {
89
+ ...rest,
90
+ ref,
91
+ id,
92
+ className,
93
+ style,
94
+ onKeyDown: handleKeyDown,
95
+ children: /* @__PURE__ */ jsx(WidgetGroupContext.Provider, {
96
+ value: context,
97
+ children
98
+ })
99
+ });
100
+ });
101
+ WidgetGroup.displayName = "WidgetGroup";
102
+ //#endregion
103
+ export { WidgetGroup as default };