@galaxy-io/dls 1.6.1 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (540) hide show
  1. package/README.md +47 -50
  2. package/biome/index.json +74 -0
  3. package/biome/plugins/no-hex-literal.grit +20 -0
  4. package/biome/plugins/no-inline-style.grit +13 -0
  5. package/biome/plugins/no-margin.grit +9 -0
  6. package/biome/plugins/warn/no-hex-literal.grit +23 -0
  7. package/biome/plugins/warn/no-inline-style.grit +13 -0
  8. package/biome/plugins/warn/no-margin.grit +9 -0
  9. package/dist/a11y/FocusScope.d.ts +44 -0
  10. package/dist/a11y/FocusScope.js +229 -0
  11. package/dist/a11y/VisuallyHidden.d.ts +21 -0
  12. package/dist/a11y/VisuallyHidden.js +30 -0
  13. package/dist/avatar/Avatar.d.ts +56 -14
  14. package/dist/avatar/Avatar.js +250 -96
  15. package/dist/avatar/AvatarGroup.d.ts +43 -0
  16. package/dist/avatar/AvatarGroup.js +153 -0
  17. package/dist/backgrounds/GridBackground.d.ts +48 -0
  18. package/dist/backgrounds/GridBackground.js +146 -0
  19. package/dist/beacons/Beacon.d.ts +86 -22
  20. package/dist/beacons/Beacon.js +170 -47
  21. package/dist/brand/GalaxyFilamentWordmark.d.ts +30 -0
  22. package/dist/brand/GalaxyFilamentWordmark.js +39 -0
  23. package/dist/brand/GalaxyLogomark.d.ts +26 -0
  24. package/dist/brand/GalaxyLogomark.js +41 -0
  25. package/dist/brand/GalaxyLogomarkAnimation.d.ts +36 -0
  26. package/dist/brand/GalaxyLogomarkAnimation.js +107 -0
  27. package/dist/brand/GalaxyWordmark.d.ts +30 -0
  28. package/dist/brand/GalaxyWordmark.js +63 -0
  29. package/dist/brand/assets/galaxy-logomark-animation.js +136678 -0
  30. package/dist/brand/brandMark.d.ts +26 -0
  31. package/dist/brand/brandMark.js +35 -0
  32. package/dist/buttons/Button.d.ts +148 -59
  33. package/dist/buttons/Button.js +437 -227
  34. package/dist/buttons/ButtonGroup.d.ts +38 -0
  35. package/dist/buttons/ButtonGroup.js +68 -0
  36. package/dist/buttons/CopyButton.d.ts +77 -0
  37. package/dist/buttons/CopyButton.js +65 -0
  38. package/dist/charts/AreaChart.d.ts +49 -0
  39. package/dist/charts/AreaChart.js +31 -0
  40. package/dist/charts/BarChart.d.ts +54 -67
  41. package/dist/charts/BarChart.js +160 -124
  42. package/dist/charts/ChartAxis.d.ts +35 -40
  43. package/dist/charts/ChartAxis.js +114 -90
  44. package/dist/charts/ChartCategoryTargets.d.ts +12 -26
  45. package/dist/charts/ChartCategoryTargets.js +33 -20
  46. package/dist/charts/ChartFrame.d.ts +71 -116
  47. package/dist/charts/ChartFrame.js +306 -97
  48. package/dist/charts/ChartGroupProvider.d.ts +30 -41
  49. package/dist/charts/ChartGroupProvider.js +20 -7
  50. package/dist/charts/ChartLegend.d.ts +37 -48
  51. package/dist/charts/ChartLegend.js +243 -125
  52. package/dist/charts/ChartMarkTargets.d.ts +12 -28
  53. package/dist/charts/ChartMarkTargets.js +34 -20
  54. package/dist/charts/ChartPrimitives.d.ts +50 -305
  55. package/dist/charts/ChartPrimitives.js +65 -413
  56. package/dist/charts/ChartTooltip.d.ts +20 -26
  57. package/dist/charts/ChartTooltip.js +77 -40
  58. package/dist/charts/Heatmap.d.ts +35 -0
  59. package/dist/charts/Heatmap.js +307 -0
  60. package/dist/charts/LineChart.d.ts +54 -47
  61. package/dist/charts/LineChart.js +174 -121
  62. package/dist/charts/PieChart.d.ts +32 -53
  63. package/dist/charts/PieChart.js +159 -136
  64. package/dist/charts/Sparkline.d.ts +107 -0
  65. package/dist/charts/Sparkline.js +244 -0
  66. package/dist/charts/StatChart.d.ts +37 -13
  67. package/dist/charts/StatChart.js +82 -35
  68. package/dist/charts/barChartGeometry.d.ts +138 -86
  69. package/dist/charts/barChartGeometry.js +122 -101
  70. package/dist/charts/barChartLegend.d.ts +14 -18
  71. package/dist/charts/barChartLegend.js +18 -13
  72. package/dist/charts/chartFormat.d.ts +12 -18
  73. package/dist/charts/chartFormat.js +20 -52
  74. package/dist/charts/chartPalette.d.ts +33 -0
  75. package/dist/charts/chartPalette.js +68 -0
  76. package/dist/charts/chartScales.d.ts +41 -108
  77. package/dist/charts/chartScales.js +62 -128
  78. package/dist/charts/chartSelection.d.ts +15 -0
  79. package/dist/charts/chartSelection.js +22 -0
  80. package/dist/charts/constants.d.ts +100 -256
  81. package/dist/charts/constants.js +109 -275
  82. package/dist/charts/heatmapGeometry.d.ts +95 -0
  83. package/dist/charts/heatmapGeometry.js +155 -0
  84. package/dist/charts/lineChartGeometry.d.ts +108 -58
  85. package/dist/charts/lineChartGeometry.js +120 -78
  86. package/dist/charts/pieChartGeometry.d.ts +66 -40
  87. package/dist/charts/pieChartGeometry.js +68 -38
  88. package/dist/charts/types.d.ts +206 -466
  89. package/dist/charts/types.js +55 -144
  90. package/dist/charts/useCartesianChartLayout.d.ts +28 -59
  91. package/dist/charts/useCartesianChartLayout.js +47 -32
  92. package/dist/charts/useChartDimensions.d.ts +19 -40
  93. package/dist/charts/useChartDimensions.js +40 -56
  94. package/dist/charts/useChartFormatters.d.ts +6 -15
  95. package/dist/charts/useChartFormatters.js +4 -9
  96. package/dist/charts/useChartInteraction.d.ts +69 -116
  97. package/dist/charts/useChartInteraction.js +148 -78
  98. package/dist/charts/useChartTooltipPosition.d.ts +29 -39
  99. package/dist/charts/useChartTooltipPosition.js +14 -5
  100. package/dist/charts/useSeriesColorResolver.d.ts +11 -33
  101. package/dist/charts/useSeriesColorResolver.js +19 -12
  102. package/dist/chips/Chip.d.ts +155 -44
  103. package/dist/chips/Chip.js +329 -155
  104. package/dist/chips/ChipGroup.d.ts +53 -0
  105. package/dist/chips/ChipGroup.js +98 -0
  106. package/dist/drawer/Drawer.d.ts +83 -17
  107. package/dist/drawer/Drawer.js +399 -65
  108. package/dist/dropdown/Dropdown.d.ts +80 -63
  109. package/dist/dropdown/Dropdown.js +127 -129
  110. package/dist/editor/CodeEditor.d.ts +119 -40
  111. package/dist/editor/CodeEditor.js +490 -400
  112. package/dist/editor/CodeEditorReactWidget.d.ts +20 -17
  113. package/dist/editor/CodeEditorReactWidget.js +28 -21
  114. package/dist/feedback/Alert.d.ts +49 -0
  115. package/dist/feedback/Alert.js +172 -0
  116. package/dist/feedback/EmptyState.d.ts +39 -0
  117. package/dist/feedback/EmptyState.js +109 -0
  118. package/dist/feedback/ProgressBar.d.ts +125 -0
  119. package/dist/feedback/ProgressBar.js +183 -0
  120. package/dist/feedback/ProgressCircle.d.ts +99 -0
  121. package/dist/feedback/ProgressCircle.js +187 -0
  122. package/dist/feedback/Skeleton.d.ts +69 -0
  123. package/dist/feedback/Skeleton.js +130 -0
  124. package/dist/feedback/Spinner.d.ts +63 -0
  125. package/dist/feedback/Spinner.js +141 -0
  126. package/dist/fonts.css +70 -0
  127. package/dist/hooks/internal/useIsClient.d.ts +2 -0
  128. package/dist/hooks/internal/useIsClient.js +14 -0
  129. package/dist/hooks/useClipboard.d.ts +19 -0
  130. package/dist/hooks/useClipboard.js +45 -0
  131. package/dist/hooks/useControlledOpenState.d.ts +21 -0
  132. package/dist/hooks/useControlledOpenState.js +19 -0
  133. package/dist/hooks/useControlledState.d.ts +19 -0
  134. package/dist/hooks/useControlledState.js +22 -0
  135. package/dist/hooks/useDebouncedValue.d.ts +14 -0
  136. package/dist/hooks/useDebouncedValue.js +33 -0
  137. package/dist/hooks/useDisclosure.d.ts +26 -0
  138. package/dist/hooks/useDisclosure.js +36 -0
  139. package/dist/hooks/useDismiss.d.ts +23 -27
  140. package/dist/hooks/useDismiss.js +39 -27
  141. package/dist/hooks/useElementClientSize.d.ts +10 -10
  142. package/dist/hooks/useElementClientSize.js +8 -11
  143. package/dist/hooks/useElementWidth.d.ts +6 -13
  144. package/dist/hooks/useElementWidth.js +6 -14
  145. package/dist/hooks/useField.d.ts +47 -0
  146. package/dist/hooks/useField.js +40 -0
  147. package/dist/hooks/useHotkey.d.ts +77 -0
  148. package/dist/hooks/useHotkey.js +246 -0
  149. package/dist/hooks/useIsMac.d.ts +12 -0
  150. package/dist/hooks/useIsMac.js +27 -0
  151. package/dist/hooks/useIsomorphicLayoutEffect.d.ts +17 -0
  152. package/dist/hooks/useIsomorphicLayoutEffect.js +20 -0
  153. package/dist/hooks/useLocalStorage.d.ts +28 -0
  154. package/dist/hooks/useLocalStorage.js +145 -0
  155. package/dist/hooks/useMediaQuery.d.ts +11 -0
  156. package/dist/hooks/useMediaQuery.js +23 -0
  157. package/dist/hooks/usePrefersReducedMotion.d.ts +12 -0
  158. package/dist/hooks/usePrefersReducedMotion.js +25 -0
  159. package/dist/hooks/useResize.d.ts +42 -62
  160. package/dist/hooks/useResize.js +43 -31
  161. package/dist/icons/Icon.d.ts +64 -37
  162. package/dist/icons/Icon.js +96 -37
  163. package/dist/icons/internal/IconSlot.d.ts +10 -0
  164. package/dist/icons/internal/IconSlot.js +32 -0
  165. package/dist/inputs/CheckboxGroup.d.ts +115 -0
  166. package/dist/inputs/CheckboxGroup.js +183 -0
  167. package/dist/inputs/CheckboxInput.d.ts +98 -28
  168. package/dist/inputs/CheckboxInput.js +218 -88
  169. package/dist/inputs/ColorInput.d.ts +115 -29
  170. package/dist/inputs/ColorInput.js +748 -326
  171. package/dist/inputs/CopyInput.d.ts +49 -20
  172. package/dist/inputs/CopyInput.js +57 -49
  173. package/dist/inputs/CronInput.d.ts +94 -0
  174. package/dist/inputs/CronInput.js +618 -0
  175. package/dist/inputs/DateInput.d.ts +175 -28
  176. package/dist/inputs/DateInput.js +1109 -451
  177. package/dist/inputs/DurationInput.d.ts +101 -0
  178. package/dist/inputs/DurationInput.js +441 -0
  179. package/dist/inputs/Field.d.ts +75 -0
  180. package/dist/inputs/Field.js +247 -0
  181. package/dist/inputs/Fieldset.d.ts +53 -0
  182. package/dist/inputs/Fieldset.js +149 -0
  183. package/dist/inputs/FileInput.d.ts +110 -0
  184. package/dist/inputs/FileInput.js +476 -0
  185. package/dist/inputs/Input.d.ts +148 -187
  186. package/dist/inputs/Input.js +339 -259
  187. package/dist/inputs/KeyValueInput.d.ts +120 -0
  188. package/dist/inputs/KeyValueInput.js +383 -0
  189. package/dist/inputs/MultiSelectInput.d.ts +165 -54
  190. package/dist/inputs/MultiSelectInput.js +175 -559
  191. package/dist/inputs/NumberInput.d.ts +65 -9
  192. package/dist/inputs/NumberInput.js +197 -40
  193. package/dist/inputs/PasswordInput.d.ts +17 -12
  194. package/dist/inputs/PasswordInput.js +33 -33
  195. package/dist/inputs/PinInput.d.ts +117 -0
  196. package/dist/inputs/PinInput.js +364 -0
  197. package/dist/inputs/RadioGroup.d.ts +115 -0
  198. package/dist/inputs/RadioGroup.js +179 -0
  199. package/dist/inputs/RadioInput.d.ts +87 -24
  200. package/dist/inputs/RadioInput.js +182 -95
  201. package/dist/inputs/SearchInput.d.ts +66 -0
  202. package/dist/inputs/SearchInput.js +156 -0
  203. package/dist/inputs/SelectInput.d.ts +195 -55
  204. package/dist/inputs/SelectInput.js +1308 -446
  205. package/dist/inputs/SliderInput.d.ts +150 -30
  206. package/dist/inputs/SliderInput.js +441 -186
  207. package/dist/inputs/SwitchInput.d.ts +109 -0
  208. package/dist/inputs/SwitchInput.js +248 -0
  209. package/dist/inputs/TagInput.d.ts +117 -0
  210. package/dist/inputs/TagInput.js +408 -0
  211. package/dist/inputs/TextAreaInput.d.ts +146 -44
  212. package/dist/inputs/TextAreaInput.js +298 -198
  213. package/dist/inputs/TextInput.d.ts +4 -13
  214. package/dist/inputs/TextInput.js +13 -48
  215. package/dist/inputs/ToggleInput.d.ts +120 -22
  216. package/dist/inputs/ToggleInput.js +262 -116
  217. package/dist/inputs/internal/bareField.d.ts +18 -0
  218. package/dist/inputs/internal/bareField.js +38 -0
  219. package/dist/inputs/internal/devWarn.d.ts +7 -0
  220. package/dist/inputs/internal/devWarn.js +30 -0
  221. package/dist/inputs/internal/fieldFrame.d.ts +34 -0
  222. package/dist/inputs/internal/fieldFrame.js +64 -0
  223. package/dist/inputs/internal/fieldWiring.d.ts +50 -0
  224. package/dist/inputs/internal/fieldWiring.js +38 -0
  225. package/dist/inputs/internal/innerButton.d.ts +2 -0
  226. package/dist/inputs/internal/innerButton.js +24 -0
  227. package/dist/inputs/internal/ownField.d.ts +45 -0
  228. package/dist/inputs/internal/ownField.js +58 -0
  229. package/dist/inputs/internal/predicates.d.ts +9 -0
  230. package/dist/inputs/internal/predicates.js +11 -0
  231. package/dist/inputs/internal/useComboboxPopover.d.ts +46 -0
  232. package/dist/inputs/internal/useComboboxPopover.js +92 -0
  233. package/dist/json/JsonViewer.d.ts +62 -0
  234. package/dist/json/JsonViewer.js +483 -0
  235. package/dist/layout/Box.d.ts +87 -0
  236. package/dist/layout/Box.js +109 -0
  237. package/dist/layout/Divider.d.ts +25 -0
  238. package/dist/layout/Divider.js +70 -0
  239. package/dist/layout/Flex.d.ts +139 -0
  240. package/dist/layout/Flex.js +165 -0
  241. package/dist/layout/FlexItem.d.ts +72 -0
  242. package/dist/layout/FlexItem.js +84 -0
  243. package/dist/layout/Grid.d.ts +140 -0
  244. package/dist/layout/Grid.js +178 -0
  245. package/dist/layout/Portal.d.ts +29 -0
  246. package/dist/layout/Portal.js +27 -0
  247. package/dist/layout/ResizablePanels.d.ts +88 -0
  248. package/dist/layout/ResizablePanels.js +198 -0
  249. package/dist/layout/ResizeHandle.d.ts +48 -0
  250. package/dist/layout/ResizeHandle.js +143 -0
  251. package/dist/layout/ScrollArea.d.ts +30 -0
  252. package/dist/layout/ScrollArea.js +138 -0
  253. package/dist/links/Link.d.ts +101 -1
  254. package/dist/links/Link.js +166 -4
  255. package/dist/lists/BulletedList.d.ts +25 -7
  256. package/dist/lists/BulletedList.js +72 -27
  257. package/dist/lists/DescriptionList.d.ts +91 -0
  258. package/dist/lists/DescriptionList.js +147 -0
  259. package/dist/menu/ContextMenu.d.ts +64 -0
  260. package/dist/menu/ContextMenu.js +34 -0
  261. package/dist/menu/Menu.d.ts +280 -0
  262. package/dist/menu/Menu.js +1003 -0
  263. package/dist/modal/ConfirmDialog.d.ts +55 -0
  264. package/dist/modal/ConfirmDialog.js +151 -0
  265. package/dist/modal/Modal.d.ts +64 -14
  266. package/dist/modal/Modal.js +189 -48
  267. package/dist/navigation/Breadcrumbs.d.ts +65 -0
  268. package/dist/navigation/Breadcrumbs.js +243 -0
  269. package/dist/navigation/CommandPalette.d.ts +83 -0
  270. package/dist/navigation/CommandPalette.js +509 -0
  271. package/dist/navigation/Pagination.d.ts +87 -0
  272. package/dist/navigation/Pagination.js +300 -0
  273. package/dist/navigation/SidebarNav.d.ts +107 -0
  274. package/dist/navigation/SidebarNav.js +341 -0
  275. package/dist/navigation/Stepper.d.ts +52 -0
  276. package/dist/navigation/Stepper.js +207 -0
  277. package/dist/navigation/Tabs.d.ts +113 -0
  278. package/dist/navigation/Tabs.js +543 -0
  279. package/dist/navigation/Topbar.d.ts +20 -0
  280. package/dist/navigation/Topbar.js +62 -0
  281. package/dist/overlay/OverlayProvider.d.ts +28 -32
  282. package/dist/overlay/OverlayProvider.js +42 -93
  283. package/dist/overlay/useOverlay.d.ts +88 -12
  284. package/dist/overlay/useOverlay.js +220 -43
  285. package/dist/overlays/Popover.d.ts +114 -0
  286. package/dist/overlays/Popover.js +389 -0
  287. package/dist/shapes/Circle.d.ts +84 -8
  288. package/dist/shapes/Circle.js +122 -20
  289. package/dist/shapes/Square.d.ts +84 -8
  290. package/dist/shapes/Square.js +123 -20
  291. package/dist/styles/mixins.d.ts +35 -0
  292. package/dist/styles/mixins.js +60 -0
  293. package/dist/styles.css +1 -202
  294. package/dist/table/InfiniteSpreadsheet.d.ts +140 -10
  295. package/dist/table/InfiniteSpreadsheet.js +762 -225
  296. package/dist/table/InfiniteTable.d.ts +116 -14
  297. package/dist/table/InfiniteTable.js +287 -429
  298. package/dist/table/SpreadsheetCellEditor.d.ts +54 -6
  299. package/dist/table/SpreadsheetCellEditor.js +163 -84
  300. package/dist/table/TableCore.d.ts +252 -0
  301. package/dist/table/TableCore.js +1082 -0
  302. package/dist/table/VirtualizedInfiniteTable.d.ts +104 -14
  303. package/dist/table/VirtualizedInfiniteTable.js +280 -219
  304. package/dist/table/types.d.ts +66 -244
  305. package/dist/table/types.js +0 -51
  306. package/dist/table/useInfiniteScrollSentinel.d.ts +25 -21
  307. package/dist/table/useInfiniteScrollSentinel.js +38 -30
  308. package/dist/table/useSpreadsheetCellNavigation.d.ts +44 -0
  309. package/dist/table/useSpreadsheetCellNavigation.js +141 -0
  310. package/dist/table/useTableColumnLayout.d.ts +90 -25
  311. package/dist/table/useTableColumnLayout.js +255 -50
  312. package/dist/table/useTableKeyboardNavigation.d.ts +32 -21
  313. package/dist/table/useTableKeyboardNavigation.js +95 -71
  314. package/dist/table/useTableRowSelection.d.ts +24 -25
  315. package/dist/table/useTableRowSelection.js +57 -84
  316. package/dist/table/useTableVirtualizer.d.ts +20 -0
  317. package/dist/table/useTableVirtualizer.js +48 -0
  318. package/dist/text/Bold.d.ts +5 -6
  319. package/dist/text/Bold.js +16 -15
  320. package/dist/text/Code.d.ts +5 -6
  321. package/dist/text/Code.js +16 -25
  322. package/dist/text/CodeBlock.d.ts +77 -0
  323. package/dist/text/CodeBlock.js +373 -0
  324. package/dist/text/EditableText.d.ts +55 -15
  325. package/dist/text/EditableText.js +153 -135
  326. package/dist/text/Ellipsis.d.ts +34 -8
  327. package/dist/text/Ellipsis.js +55 -23
  328. package/dist/text/Kbd.d.ts +72 -0
  329. package/dist/text/Kbd.js +284 -0
  330. package/dist/text/MarkdownText.d.ts +27 -10
  331. package/dist/text/MarkdownText.js +317 -300
  332. package/dist/text/RequiredMarker.d.ts +17 -5
  333. package/dist/text/RequiredMarker.js +34 -36
  334. package/dist/text/Selectable.d.ts +5 -6
  335. package/dist/text/Selectable.js +16 -13
  336. package/dist/text/Span.d.ts +82 -0
  337. package/dist/text/Span.js +115 -0
  338. package/dist/text/Text.d.ts +128 -41
  339. package/dist/text/Text.js +209 -76
  340. package/dist/theme/GalaxyProvider.d.ts +75 -0
  341. package/dist/theme/GalaxyProvider.js +223 -0
  342. package/dist/theme/ThemeSwitcher.d.ts +52 -0
  343. package/dist/theme/ThemeSwitcher.js +94 -0
  344. package/dist/theme/enums.d.ts +118 -0
  345. package/dist/theme/enums.js +144 -0
  346. package/dist/theme/tokens/dark.d.ts +2 -0
  347. package/dist/theme/tokens/dark.js +275 -0
  348. package/dist/theme/tokens/generate.d.ts +15 -0
  349. package/dist/theme/tokens/generate.js +47 -0
  350. package/dist/theme/tokens/light.d.ts +2 -0
  351. package/dist/theme/tokens/light.js +274 -0
  352. package/dist/theme/tokens/palette.d.ts +14 -0
  353. package/dist/theme/tokens/palette.js +153 -0
  354. package/dist/theme/tokens/scales.d.ts +26 -0
  355. package/dist/theme/tokens/scales.js +154 -0
  356. package/dist/theme/tokens/t.d.ts +3 -0
  357. package/dist/theme/tokens/t.js +25 -0
  358. package/dist/theme/tokens/types.d.ts +189 -0
  359. package/dist/theme/tokens/types.js +0 -0
  360. package/dist/theme/useGalaxyTheme.d.ts +46 -0
  361. package/dist/theme/useGalaxyTheme.js +36 -0
  362. package/dist/theme/useInverseScope.d.ts +18 -0
  363. package/dist/theme/useInverseScope.js +33 -0
  364. package/dist/three/GalaxyLogomark3D.d.ts +46 -0
  365. package/dist/three/GalaxyLogomark3D.js +134 -0
  366. package/dist/three/assets/galaxy-logomark.js +4 -0
  367. package/dist/three/galaxyLogomark3DScene.d.ts +27 -0
  368. package/dist/three/galaxyLogomark3DScene.js +165 -0
  369. package/dist/timeline/Timeline.d.ts +120 -0
  370. package/dist/timeline/Timeline.js +301 -0
  371. package/dist/toast/Toast.d.ts +43 -19
  372. package/dist/toast/Toast.js +130 -89
  373. package/dist/toast/ToastProvider.d.ts +23 -23
  374. package/dist/toast/ToastProvider.js +298 -101
  375. package/dist/toast/ToastViewport.d.ts +12 -0
  376. package/dist/toast/ToastViewport.js +210 -0
  377. package/dist/toast/useToast.d.ts +139 -5
  378. package/dist/toast/useToast.js +15 -13
  379. package/dist/tokens.css +654 -0
  380. package/dist/tooltip/Tooltip.d.ts +64 -44
  381. package/dist/tooltip/Tooltip.js +280 -73
  382. package/dist/tooltip/internal/LazyTooltip.d.ts +7 -0
  383. package/dist/tooltip/internal/LazyTooltip.js +53 -0
  384. package/dist/transform/Fade.d.ts +33 -11
  385. package/dist/transform/Fade.js +71 -19
  386. package/dist/transform/Flasher.d.ts +25 -0
  387. package/dist/transform/Flasher.js +39 -0
  388. package/dist/transform/Rotate.d.ts +24 -12
  389. package/dist/transform/Rotate.js +36 -22
  390. package/dist/transform/ScaleFade.d.ts +36 -11
  391. package/dist/transform/ScaleFade.js +86 -28
  392. package/dist/transform/internal/CollapseMotion.d.ts +10 -0
  393. package/dist/transform/internal/CollapseMotion.js +65 -0
  394. package/dist/tree/Tree.d.ts +85 -0
  395. package/dist/tree/Tree.js +387 -0
  396. package/dist/tree/treeRow.d.ts +39 -0
  397. package/dist/tree/treeRow.js +75 -0
  398. package/dist/utils/colors.d.ts +46 -13
  399. package/dist/utils/colors.js +92 -34
  400. package/dist/utils/css.d.ts +23 -0
  401. package/dist/utils/css.js +30 -0
  402. package/dist/utils/format.d.ts +58 -0
  403. package/dist/utils/format.js +220 -0
  404. package/dist/vite/index.d.ts +16 -0
  405. package/dist/vite/index.js +52 -0
  406. package/dist/widget/Widget.d.ts +164 -48
  407. package/dist/widget/Widget.js +335 -96
  408. package/dist/widget/WidgetGroup.d.ts +36 -0
  409. package/dist/widget/WidgetGroup.js +103 -0
  410. package/package.json +855 -157
  411. package/dist/accordion/Accordion.d.ts +0 -54
  412. package/dist/accordion/Accordion.js +0 -183
  413. package/dist/assets/components/GalaxyFilamentWordmarkDark.d.ts +0 -3
  414. package/dist/assets/components/GalaxyFilamentWordmarkDark.js +0 -14
  415. package/dist/assets/components/GalaxyFilamentWordmarkLight.d.ts +0 -3
  416. package/dist/assets/components/GalaxyFilamentWordmarkLight.js +0 -14
  417. package/dist/assets/components/GalaxyLogomarkDark.d.ts +0 -3
  418. package/dist/assets/components/GalaxyLogomarkDark.js +0 -11
  419. package/dist/assets/components/GalaxyLogomarkLight.d.ts +0 -3
  420. package/dist/assets/components/GalaxyLogomarkLight.js +0 -17
  421. package/dist/assets/components/GalaxyWordmarkDark.d.ts +0 -3
  422. package/dist/assets/components/GalaxyWordmarkDark.js +0 -15
  423. package/dist/assets/components/GalaxyWordmarkLight.d.ts +0 -3
  424. package/dist/assets/components/GalaxyWordmarkLight.js +0 -28
  425. package/dist/assets/models/galaxy-animation.js +0 -136666
  426. package/dist/assets/models/galaxy-logomark.js +0 -4
  427. package/dist/avatar/AvatarShimmer.d.ts +0 -30
  428. package/dist/avatar/AvatarShimmer.js +0 -22
  429. package/dist/backgrounds/CellGridBackground.d.ts +0 -24
  430. package/dist/backgrounds/CellGridBackground.js +0 -44
  431. package/dist/backgrounds/CrossGridBackground.d.ts +0 -26
  432. package/dist/backgrounds/CrossGridBackground.js +0 -49
  433. package/dist/backgrounds/DotGridBackground.d.ts +0 -24
  434. package/dist/backgrounds/DotGridBackground.js +0 -47
  435. package/dist/badge/Badge.d.ts +0 -42
  436. package/dist/badge/Badge.js +0 -99
  437. package/dist/charts/ChartEmptyState.d.ts +0 -17
  438. package/dist/charts/ChartEmptyState.js +0 -29
  439. package/dist/charts/ProgressBar.d.ts +0 -29
  440. package/dist/charts/ProgressBar.js +0 -65
  441. package/dist/charts/chartTheme.d.ts +0 -18
  442. package/dist/charts/chartTheme.js +0 -26
  443. package/dist/containers/FlexItem.d.ts +0 -50
  444. package/dist/containers/FlexItem.js +0 -91
  445. package/dist/containers/FlexWrapper.d.ts +0 -96
  446. package/dist/containers/FlexWrapper.js +0 -143
  447. package/dist/containers/GridWrapper.d.ts +0 -79
  448. package/dist/containers/GridWrapper.js +0 -125
  449. package/dist/containers/Spacing.d.ts +0 -23
  450. package/dist/containers/Spacing.js +0 -59
  451. package/dist/containers/Wrapper.d.ts +0 -26
  452. package/dist/containers/Wrapper.js +0 -54
  453. package/dist/dividers/HorizontalDivider.d.ts +0 -7
  454. package/dist/dividers/HorizontalDivider.js +0 -39
  455. package/dist/dividers/VerticalDivider.d.ts +0 -6
  456. package/dist/dividers/VerticalDivider.js +0 -21
  457. package/dist/icons/GalaxyFilamentWordmark.d.ts +0 -11
  458. package/dist/icons/GalaxyFilamentWordmark.js +0 -25
  459. package/dist/icons/GalaxyLogomark.d.ts +0 -13
  460. package/dist/icons/GalaxyLogomark.js +0 -27
  461. package/dist/icons/GalaxyLogomark3D.d.ts +0 -56
  462. package/dist/icons/GalaxyLogomark3D.js +0 -319
  463. package/dist/icons/GalaxyLogomarkAnimation.d.ts +0 -18
  464. package/dist/icons/GalaxyLogomarkAnimation.js +0 -48
  465. package/dist/icons/GalaxyWordmark.d.ts +0 -11
  466. package/dist/icons/GalaxyWordmark.js +0 -25
  467. package/dist/inputs/MultiTextInput.d.ts +0 -32
  468. package/dist/inputs/MultiTextInput.js +0 -180
  469. package/dist/inputs/SwitcherInput.d.ts +0 -30
  470. package/dist/inputs/SwitcherInput.js +0 -81
  471. package/dist/inputs/hooks.d.ts +0 -10
  472. package/dist/inputs/hooks.js +0 -22
  473. package/dist/overlay/constants.d.ts +0 -28
  474. package/dist/overlay/constants.js +0 -37
  475. package/dist/resizable/HorizontalResizeHandle.d.ts +0 -17
  476. package/dist/resizable/HorizontalResizeHandle.js +0 -38
  477. package/dist/resizable/VerticalResizeHandle.d.ts +0 -18
  478. package/dist/resizable/VerticalResizeHandle.js +0 -39
  479. package/dist/table/SpreadsheetCell.d.ts +0 -21
  480. package/dist/table/SpreadsheetCell.js +0 -71
  481. package/dist/table/SpreadsheetHeaderCell.d.ts +0 -23
  482. package/dist/table/SpreadsheetHeaderCell.js +0 -91
  483. package/dist/table/SpreadsheetMenuItem.d.ts +0 -14
  484. package/dist/table/SpreadsheetMenuItem.js +0 -33
  485. package/dist/table/SpreadsheetPrimitives.d.ts +0 -172
  486. package/dist/table/SpreadsheetPrimitives.js +0 -105
  487. package/dist/table/SpreadsheetRow.d.ts +0 -33
  488. package/dist/table/SpreadsheetRow.js +0 -73
  489. package/dist/table/SpreadsheetRowActionCell.d.ts +0 -14
  490. package/dist/table/SpreadsheetRowActionCell.js +0 -51
  491. package/dist/table/TableExpandCell.d.ts +0 -11
  492. package/dist/table/TableExpandCell.js +0 -24
  493. package/dist/table/TableExpandedRow.d.ts +0 -16
  494. package/dist/table/TableExpandedRow.js +0 -77
  495. package/dist/table/TableHeaderCellContent.d.ts +0 -30
  496. package/dist/table/TableHeaderCellContent.js +0 -48
  497. package/dist/table/TablePrimitives.d.ts +0 -313
  498. package/dist/table/TablePrimitives.js +0 -302
  499. package/dist/table/TableSelectCell.d.ts +0 -18
  500. package/dist/table/TableSelectCell.js +0 -27
  501. package/dist/table/TableStatusRow.d.ts +0 -18
  502. package/dist/table/TableStatusRow.js +0 -50
  503. package/dist/table/useSpreadsheetEditing.d.ts +0 -13
  504. package/dist/table/useSpreadsheetEditing.js +0 -41
  505. package/dist/table/useTableColumnResize.d.ts +0 -38
  506. package/dist/table/useTableColumnResize.js +0 -155
  507. package/dist/table/useTableRowExpansion.d.ts +0 -24
  508. package/dist/table/useTableRowExpansion.js +0 -62
  509. package/dist/table/utils.d.ts +0 -50
  510. package/dist/table/utils.js +0 -78
  511. package/dist/text/HotKeys.d.ts +0 -30
  512. package/dist/text/HotKeys.js +0 -74
  513. package/dist/text/Paragraph.d.ts +0 -33
  514. package/dist/text/Paragraph.js +0 -83
  515. package/dist/text/TextShimmer.d.ts +0 -14
  516. package/dist/text/TextShimmer.js +0 -34
  517. package/dist/theme/GalaxyTheme.d.ts +0 -67
  518. package/dist/theme/GalaxyTheme.js +0 -119
  519. package/dist/theme/constants.d.ts +0 -8
  520. package/dist/theme/constants.js +0 -38
  521. package/dist/theme/index.d.ts +0 -6
  522. package/dist/theme/index.js +0 -7
  523. package/dist/theme/types.d.ts +0 -195
  524. package/dist/theme/types.js +0 -10
  525. package/dist/theme/typography.d.ts +0 -2
  526. package/dist/theme/typography.js +0 -73
  527. package/dist/theme/variants/dark.d.ts +0 -2
  528. package/dist/theme/variants/dark.js +0 -125
  529. package/dist/theme/variants/light.d.ts +0 -2
  530. package/dist/theme/variants/light.js +0 -125
  531. package/dist/toast/ToastContainer.d.ts +0 -10
  532. package/dist/toast/ToastContainer.js +0 -31
  533. package/dist/toast/ToastWrapper.d.ts +0 -6
  534. package/dist/toast/ToastWrapper.js +0 -27
  535. package/dist/transform/Flash.d.ts +0 -7
  536. package/dist/transform/Flash.js +0 -18
  537. package/dist/transform/Spin.d.ts +0 -14
  538. package/dist/transform/Spin.js +0 -25
  539. package/dist/utils/linaria.d.ts +0 -1
  540. package/dist/utils/linaria.js +0 -8
@@ -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 };