@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,82 +1,80 @@
1
- import { BarChartNormalization, ChartKind, ChartMarkState, ChartTargetShape } from "./types.js";
2
- import { useSeriesColorResolver } from "./useSeriesColorResolver.js";
3
- import { useChartInteraction } from "./useChartInteraction.js";
1
+ import { Orientation } from "../theme/enums.js";
2
+ import { ChartKind, ChartLegendPlacement, ChartMarkState, ChartTargetShape } from "./types.js";
3
+ import { CHART_BAR_CSS, CHART_CURSOR_BAND_CSS, CHART_CURSOR_BAND_SELECTED_CSS, CHART_MARK_STATE_TO_CSS_MAP } from "./ChartPrimitives.js";
4
+ import "./constants.js";
5
+ import { ChartCategoryAxis, ChartValueAxis } from "./ChartAxis.js";
6
+ import { resolveChartSeriesColor } from "./chartPalette.js";
7
+ import { ChartLegendSwatch } from "./ChartLegend.js";
8
+ import { ChartFrame } from "./ChartFrame.js";
9
+ import { formatChartValue, resolveValueFormatter } from "./chartFormat.js";
4
10
  import { useCartesianChartLayout } from "./useCartesianChartLayout.js";
11
+ import { useChartInteraction } from "./useChartInteraction.js";
12
+ import { useSeriesColorResolver } from "./useSeriesColorResolver.js";
13
+ import { buildBarChartGeometry, getBarValueDomain, isBarChartStacked, roundedRectPath } from "./barChartGeometry.js";
5
14
  import { getBarLegendItems } from "./barChartLegend.js";
6
- import { buildBarChartGeometry, getBarValueDomain, roundedRectPath } from "./barChartGeometry.js";
7
- import { ChartBarPath, ChartCursorBand } from "./ChartPrimitives.js";
8
- import ChartFrame from "./ChartFrame.js";
9
- import { ChartCategoryAxis, ChartValueAxis } from "./ChartAxis.js";
10
- import { useCallback, useMemo, useRef } from "react";
15
+ import { forwardRef, useCallback, useMemo, useRef } from "react";
11
16
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
17
+ import { cx } from "@linaria/core";
12
18
  //#region src/charts/BarChart.tsx
13
19
  /**
14
- * Bar chart with a three-level data model.
20
+ * BarChart compares values across categories with vertical bars. Its data model is three levels:
21
+ * category **group** → one **bar** per metric → stacked **components**. A chart is grouped
22
+ * (several bars side by side), stacked (several components in a bar) or both, with no mode
23
+ * switch; `normalization={PERCENT}` turns every bar into a 100% stack. Hover and keyboard work per
24
+ * category: a quiet band marks the column, other columns step back, and the tooltip lists the
25
+ * column's values. A click names the segment under the pointer (or the column); Enter names the
26
+ * column. It joins `ChartGroupProvider` sync.
15
27
  *
16
- * Grouping and stacking are properties of the data rather than a mode: several
17
- * `bars` in a group render side by side, several `components` in a bar stack,
18
- * and a chart doing both at once needs no extra configuration.
28
+ * The chart fills its parent (2:1 when the parent has no definite height): size it with a `Box`,
29
+ * `Grid` track or flex item. Needs the optional peers `d3-scale` and `d3-shape`.
19
30
  */
20
- var BarChart = ({ series, groups, width, height, fillWidth, fillHeight, aspectRatio, margin, normalization = BarChartNormalization.NONE, showCursor = true, minSegmentLength = 0, onSelect, selection, valueUnit, valueFormatter, labelFormatter, valueDomain, categoryLabelMode, categoryAxisTitle, valueAxisTitle, showGrid = true, showLegend = true, legendMaxItems, noTooltip = false, tooltipRenderer, tooltipMaxItems, isLoading = false, contentWhenEmpty, ariaLabel, ariaDescription }) => {
21
- const containerRef = useRef(null);
31
+ /** How bar values are scaled before drawing. Not a grouped/stacked switch: that comes from the data. */
32
+ var BarChartNormalization = /* @__PURE__ */ function(BarChartNormalization) {
33
+ /** Plot raw values. The default. */
34
+ BarChartNormalization["NONE"] = "NONE";
35
+ /** Scale each bar's components to fill the axis: a 100% stacked chart. */
36
+ BarChartNormalization["PERCENT"] = "PERCENT";
37
+ return BarChartNormalization;
38
+ }({});
39
+ var DEFAULT_PLACEHOLDER = "No data available";
40
+ /** The percent-normalized axis reads shares unless the app formats values itself (1.x rule). */
41
+ var PERCENT_AXIS_FORMATTER = (value) => `${Math.round(value * 100)}%`;
42
+ /** Tooltip rows of one bar, top segment first (positives outward-in, zeros, then negatives). */
43
+ function visualOrder(components) {
44
+ const indexed = components.map((component, index) => ({
45
+ component,
46
+ index
47
+ }));
48
+ const rank = ({ component, index }) => component.value > 0 ? -index : component.value === 0 ? 0 : 1 + index;
49
+ return [...indexed].sort((a, b) => rank(a) - rank(b) || a.index - b.index).map(({ component }) => component);
50
+ }
51
+ function BarChartInner(props, ref) {
52
+ const { series, groups, normalization = "NONE", minSegmentLength = 0, valueFormatter, labelFormatter, valueDomain, axisLabels, hasLegend = true, hasTooltip = true, renderTooltip, isLoading = false, placeholder = DEFAULT_PLACEHOLDER, onSelect, selection, isFilterable = false, defaultSelection, onSelectionChange, ariaLabel, id, className, style, ...rest } = props;
53
+ const plotRef = useRef(null);
22
54
  const colors = useSeriesColorResolver(series);
23
- /**
24
- * Axis-only formatting for a percent-normalized chart.
25
- *
26
- * Normalization rescales the *axis* into 0–1, so the caller's formatter —
27
- * which describes their real units — would label it `0.2`, `0.4`. Unless they
28
- * asked for something specific, show shares as percentages.
29
- *
30
- * Deliberately not used for the tooltip. `stackComponents` normalizes each
31
- * segment's extent but leaves its `value` raw, so a tooltip row still carries
32
- * the real number: the axis reports the share, the tooltip reports what the
33
- * share is made of. Running a row through this would multiply a raw 200 into
34
- * `20000%`.
35
- */
36
- const deriveAxisFormatter = useCallback((formatValue) => {
37
- if (normalization !== BarChartNormalization.PERCENT) return formatValue;
38
- if (valueFormatter || valueUnit) return formatValue;
39
- return (value) => `${Math.round(value * 100)}%`;
40
- }, [
41
- normalization,
42
- valueFormatter,
43
- valueUnit
44
- ]);
45
- const { dimensions, domain, valueTicks, formatValue, formatLabel, formatAxisValue } = useCartesianChartLayout({
46
- containerRef,
55
+ const axisValueFormatter = normalization === "PERCENT" && valueFormatter === void 0 ? PERCENT_AXIS_FORMATTER : valueFormatter;
56
+ const formatValue = useMemo(() => resolveValueFormatter(valueFormatter), [valueFormatter]);
57
+ const { dimensions, domain, valueTicks, formatValue: formatAxisValue, formatLabel } = useCartesianChartLayout({
58
+ plotRef,
47
59
  rawDomain: useMemo(() => getBarValueDomain(groups, normalization), [groups, normalization]),
48
60
  valueDomain,
49
- width,
50
- height,
51
- fillWidth,
52
- fillHeight,
53
- aspectRatio,
54
- margin,
55
- valueUnit,
56
- valueFormatter,
61
+ valueFormatter: axisValueFormatter,
57
62
  labelFormatter,
58
- deriveAxisFormatter,
59
- valueAxisTitle,
60
- categoryAxisTitle
63
+ axisLabels
61
64
  });
62
65
  const { plotWidth, plotHeight } = dimensions;
63
- /**
64
- * True when any bar carries more than one component.
65
- *
66
- * This is what decides the colour grammar. In a stacked chart the segments
67
- * are the thing being compared, so they take the palette and every stack
68
- * repeats the same ramp; in an unstacked one the metrics are, so each bar
69
- * takes its metric's colour. Applying the metric colour to a stack would
70
- * paint every segment identically.
71
- */
72
- const isStacked = useMemo(() => groups.some((group) => group.bars.some((bar) => bar.components.length > 1)), [groups]);
73
- const resolveColor = useCallback(({ metric, componentIndex, isStacked: barIsStacked, explicit }) => barIsStacked ? colors.resolveByIndex(componentIndex, explicit) : colors.resolve(metric, explicit), [colors]);
66
+ /** Stacked charts color components (every stack repeats the ramp); others color metrics. */
67
+ const isStacked = useMemo(() => isBarChartStacked(groups), [groups]);
68
+ const resolveColor = useCallback(({ metric, componentIndex, explicit, hex }) => {
69
+ if (isStacked) return resolveChartSeriesColor(componentIndex, explicit, hex);
70
+ if (explicit !== void 0 || hex !== void 0) return resolveChartSeriesColor(colors.keys.indexOf(metric), explicit, hex);
71
+ return colors.resolve(metric);
72
+ }, [isStacked, colors]);
74
73
  const geometry = useMemo(() => buildBarChartGeometry({
75
74
  groups,
76
75
  plotWidth,
77
76
  plotHeight,
78
77
  normalization,
79
- isStacked,
80
78
  domain,
81
79
  resolveColor,
82
80
  minSegmentLength
@@ -85,12 +83,11 @@ var BarChart = ({ series, groups, width, height, fillWidth, fillHeight, aspectRa
85
83
  plotWidth,
86
84
  plotHeight,
87
85
  normalization,
88
- isStacked,
89
86
  domain,
90
87
  resolveColor,
91
88
  minSegmentLength
92
89
  ]);
93
- const isEmpty = groups.length === 0;
90
+ const isEmpty = groups.length === 0 || groups.every((group) => group.bars.length === 0);
94
91
  const legendItems = useMemo(() => getBarLegendItems({
95
92
  isStacked,
96
93
  series,
@@ -105,26 +102,47 @@ var BarChart = ({ series, groups, width, height, fillWidth, fillHeight, aspectRa
105
102
  const legendKeys = useMemo(() => legendItems.map((item) => item.key), [legendItems]);
106
103
  const categoryKeys = useMemo(() => groups.map((group) => group.label), [groups]);
107
104
  const interaction = useChartInteraction({
108
- categoryCount: geometry.bands.length,
105
+ categoryCount: groups.length,
109
106
  seriesKeys: legendKeys,
110
107
  categoryKeys,
111
108
  categoryMuteState: ChartMarkState.DIMMED,
112
109
  selection,
113
- isDisabled: noTooltip || isLoading || isEmpty,
110
+ isFilterable,
111
+ defaultSelection,
112
+ onSelectionChange,
113
+ isDisabled: !(hasTooltip || onSelect || isFilterable) || isLoading || isEmpty,
114
114
  isLoading
115
115
  });
116
- const activeBand = interaction.activeIndex === null ? null : geometry.bands[interaction.activeIndex] ?? null;
116
+ const seriesKeyOf = useCallback((rect) => isStacked ? rect.componentKey : rect.metric, [isStacked]);
117
117
  const buildCategoryTooltip = useCallback((index) => {
118
118
  const band = geometry.bands[index];
119
119
  const group = groups[index];
120
120
  if (!band || !group) return null;
121
- const rows = geometry.rects.filter((rect) => rect.groupIndex === index).map((rect) => ({
122
- key: rect.id,
123
- label: rect.label,
124
- value: rect.value,
125
- formattedValue: formatValue(rect.value),
126
- color: rect.color
127
- }));
121
+ const isGrouped = group.bars.length > 1;
122
+ const rows = [];
123
+ group.bars.forEach((bar, barIndex) => {
124
+ const metricLabel = series[bar.metric]?.label ?? bar.metric;
125
+ const indexed = bar.components.map((component, componentIndex) => ({
126
+ component,
127
+ componentIndex,
128
+ value: component.value
129
+ }));
130
+ for (const { component, componentIndex } of visualOrder(indexed)) {
131
+ const label = !isStacked ? metricLabel : isGrouped ? `${metricLabel} · ${component.label}` : component.label;
132
+ rows.push({
133
+ key: `${index}:${barIndex}:${component.key}`,
134
+ label,
135
+ value: component.value,
136
+ formattedValue: formatChartValue(component.value, formatValue),
137
+ color: resolveColor({
138
+ metric: bar.metric,
139
+ componentIndex,
140
+ explicit: component.color,
141
+ hex: component.hex
142
+ }).color
143
+ });
144
+ }
145
+ });
128
146
  return {
129
147
  label: formatLabel(group.label),
130
148
  rows,
@@ -132,13 +150,16 @@ var BarChart = ({ series, groups, width, height, fillWidth, fillHeight, aspectRa
132
150
  anchorY: band.anchorY
133
151
  };
134
152
  }, [
135
- geometry,
153
+ geometry.bands,
136
154
  groups,
155
+ series,
156
+ isStacked,
137
157
  formatValue,
138
- formatLabel
158
+ formatLabel,
159
+ resolveColor
139
160
  ]);
140
161
  const categoryPositions = useMemo(() => geometry.bands.map((band) => band.x), [geometry.bands]);
141
- const categoryStep = geometry.bands[0]?.width ?? 0;
162
+ const categoryStep = geometry.step;
142
163
  const categoryTargets = useMemo(() => geometry.bands.map((band) => ({
143
164
  key: String(band.groupIndex),
144
165
  shape: ChartTargetShape.RECT,
@@ -147,15 +168,6 @@ var BarChart = ({ series, groups, width, height, fillWidth, fillHeight, aspectRa
147
168
  width: band.width,
148
169
  height: band.height
149
170
  })), [geometry.bands]);
150
- /**
151
- * One clickable target per drawn rectangle, over the bands.
152
- *
153
- * The rects already carry everything a click needs, so the target is exactly
154
- * the mark — no inflation to make a thin segment easier to hit. Growing one
155
- * would overlap the neighbour whose edge the geometry snapped to the same
156
- * pixel, and a segment too small to hit still lands on the band beneath and
157
- * selects its category, which is the honest answer for a sliver.
158
- */
159
171
  const markTargets = useMemo(() => geometry.rects.map((rect) => ({
160
172
  key: rect.id,
161
173
  categoryIndex: rect.groupIndex,
@@ -165,97 +177,121 @@ var BarChart = ({ series, groups, width, height, fillWidth, fillHeight, aspectRa
165
177
  width: rect.width,
166
178
  height: rect.height
167
179
  })), [geometry.rects]);
168
- const handleCategorySelect = useCallback((index) => {
180
+ const { toggleSelection } = interaction;
181
+ const handleCategorySelect = useCallback((index, isAdditive = false) => {
169
182
  const group = groups[index];
170
- if (!group || !onSelect) return;
171
- onSelect({
183
+ if (!group) return;
184
+ onSelect?.({
172
185
  categoryIndex: index,
173
186
  categoryKey: group.label
174
187
  });
175
- }, [groups, onSelect]);
176
- const handleMarkSelect = useCallback((index) => {
188
+ toggleSelection({ categoryKey: group.label }, isAdditive);
189
+ }, [
190
+ groups,
191
+ onSelect,
192
+ toggleSelection
193
+ ]);
194
+ const handleMarkSelect = useCallback((index, isAdditive = false) => {
177
195
  const rect = geometry.rects[index];
178
- if (!rect || !onSelect) return;
179
- onSelect({
196
+ const group = groups[rect?.groupIndex ?? -1];
197
+ if (!rect || !group) return;
198
+ const seriesKey = seriesKeyOf(rect);
199
+ onSelect?.({
180
200
  categoryIndex: rect.groupIndex,
181
- categoryKey: groups[rect.groupIndex]?.label ?? rect.metric,
182
- seriesKey: isStacked ? rect.componentKey : rect.metric,
201
+ categoryKey: group.label,
202
+ seriesKey,
183
203
  value: rect.value
184
204
  });
205
+ toggleSelection({
206
+ categoryKey: group.label,
207
+ seriesKey
208
+ }, isAdditive);
185
209
  }, [
186
210
  geometry.rects,
187
211
  groups,
188
- isStacked,
189
- onSelect
212
+ onSelect,
213
+ seriesKeyOf,
214
+ toggleSelection
190
215
  ]);
216
+ const activeBand = interaction.activeIndex === null ? void 0 : geometry.bands[interaction.activeIndex];
191
217
  return /* @__PURE__ */ jsxs(ChartFrame, {
192
- containerRef,
218
+ rootRef: ref,
219
+ plotRef,
220
+ id,
221
+ className,
222
+ style,
223
+ rest,
193
224
  dimensions,
194
- fillWidth,
195
- fillHeight,
196
225
  interaction,
197
226
  kind: ChartKind.BAR,
198
227
  categoryCount: groups.length,
199
228
  ariaLabel,
200
- ariaDescription,
229
+ aspectRatio: 2,
201
230
  axes: /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(ChartValueAxis, {
202
231
  ticks: valueTicks,
203
232
  scale: geometry.valueScale,
204
233
  plotWidth,
205
234
  plotHeight,
206
- marginLeft: dimensions.margin.left,
235
+ insetLeft: dimensions.insets.left,
207
236
  formatter: formatAxisValue,
208
- showGrid,
209
- title: valueAxisTitle
237
+ title: axisLabels?.value
210
238
  }), /* @__PURE__ */ jsx(ChartCategoryAxis, {
211
239
  labels: categoryKeys,
212
240
  positions: categoryPositions,
213
241
  step: categoryStep,
214
242
  plotWidth,
215
243
  plotHeight,
244
+ orientation: Orientation.HORIZONTAL,
245
+ insetLeft: dimensions.insets.left,
216
246
  formatter: formatLabel,
217
- mode: categoryLabelMode,
218
- title: categoryAxisTitle
247
+ title: axisLabels?.category
219
248
  })] }),
220
- noTooltip,
249
+ hasTooltip,
221
250
  buildCategoryTooltip,
222
- tooltipRenderer,
223
- tooltipMaxItems,
251
+ renderTooltip,
224
252
  categoryTargets,
225
253
  markTargets,
226
- onCategorySelect: onSelect && handleCategorySelect,
227
- onMarkSelect: onSelect && handleMarkSelect,
254
+ onCategorySelect: onSelect || isFilterable ? handleCategorySelect : void 0,
255
+ onMarkSelect: onSelect || isFilterable ? handleMarkSelect : void 0,
228
256
  anchorHalfWidth: categoryStep / 2,
229
257
  isEmpty,
230
258
  isLoading,
231
- contentWhenEmpty,
232
- showLegend,
259
+ placeholder,
260
+ hasLegend,
261
+ formatCategoryKey: formatLabel,
233
262
  legendItems,
234
- legendMaxItems,
263
+ legendPlacement: ChartLegendPlacement.BOTTOM,
264
+ legendSwatch: ChartLegendSwatch.SQUARE,
265
+ tooltipSwatch: ChartLegendSwatch.SQUARE,
235
266
  children: [
236
- geometry.bands.filter((band) => interaction.selectedCategoryIndices.has(band.groupIndex)).map((band) => /* @__PURE__ */ jsx(ChartCursorBand, {
267
+ geometry.bands.filter((band) => interaction.selectedCategoryIndices.has(band.groupIndex)).map((band) => /* @__PURE__ */ jsx("rect", {
237
268
  x: band.x,
238
269
  y: band.y,
239
270
  width: band.width,
240
271
  height: band.height,
241
- "data-selected": "true"
272
+ className: cx(CHART_CURSOR_BAND_CSS, CHART_CURSOR_BAND_SELECTED_CSS)
242
273
  }, `selected:${band.groupIndex}`)),
243
- showCursor && activeBand && /* @__PURE__ */ jsx(ChartCursorBand, {
274
+ activeBand && /* @__PURE__ */ jsx("rect", {
244
275
  x: activeBand.x,
245
276
  y: activeBand.y,
246
277
  width: activeBand.width,
247
- height: activeBand.height
278
+ height: activeBand.height,
279
+ className: "gx-ChartPrimitives-CHART_CURSOR_BAND_CSS-c1iaray"
248
280
  }),
249
- geometry.rects.map((rect) => /* @__PURE__ */ jsx(ChartBarPath, {
281
+ geometry.rects.map((rect) => /* @__PURE__ */ jsx("path", {
250
282
  d: roundedRectPath(rect.x, rect.y, rect.width, rect.height, rect.radius, rect.corners),
251
- fill: rect.color,
252
- "data-state": interaction.getMarkState({
283
+ className: cx(CHART_BAR_CSS, CHART_MARK_STATE_TO_CSS_MAP[interaction.getMarkState({
253
284
  categoryIndex: rect.groupIndex,
254
- seriesKey: isStacked ? rect.componentKey : rect.metric
255
- })
285
+ seriesKey: seriesKeyOf(rect)
286
+ })]),
287
+ style: { "--gx-chart-mark-color": rect.color.color }
256
288
  }, rect.id))
257
289
  ]
258
290
  });
259
- };
291
+ }
292
+ var BarChartForwarded = forwardRef(BarChartInner);
293
+ BarChartForwarded.displayName = "BarChart";
294
+ /** Vertical bars over a categorical x-axis: grouped, stacked, or both. */
295
+ var BarChart = BarChartForwarded;
260
296
  //#endregion
261
- export { BarChart as default };
297
+ export { BarChartNormalization, BarChart as default };
@@ -1,53 +1,48 @@
1
- import { ChartCategoryLabelMode } from "./types";
2
- import type { ChartLabelFormatter, ChartValueFormatter } from "./types";
3
- /**
4
- * Axes for the cartesian charts.
5
- *
6
- * Neither axis draws a domain line or tick marks — the grid lines carry the
7
- * structure, and the one at zero is what makes bars read as resting on a
8
- * baseline rather than floating.
9
- */
10
- interface ChartValueAxisProps {
1
+ import { Orientation } from "../theme/enums.js";
2
+ import type { ChartLabelFormatter, ChartValueFormatter } from "./types.js";
3
+ /** @internal Props of `ChartValueAxis`. */
4
+ export interface ChartValueAxisProps {
5
+ /** Tick values. */
11
6
  ticks: number[];
12
- /** Maps a tick value to its y position in plot coordinates. */
7
+ /** Tick value → y in plot coordinates. */
13
8
  scale: (value: number) => number;
9
+ /** Plot width (grid line length). */
14
10
  plotWidth: number;
15
- /**
16
- * The chart's left margin. The label box is this minus the tick gap, so the
17
- * axis follows the margin instead of hardcoding an offset — a custom margin
18
- * used to push these labels outside the viewport.
19
- */
20
- marginLeft: number;
21
- /** Needed to centre a rotated axis title along the gutter. */
11
+ /** Plot height (centers the rotated title). */
22
12
  plotHeight: number;
13
+ /** The left inset; the label box is this less the title band and the tick gap. */
14
+ insetLeft: number;
15
+ /** Tick label formatter. */
23
16
  formatter: ChartValueFormatter;
24
- showGrid?: boolean;
25
- /**
26
- * Rotated title in the left gutter.
27
- *
28
- * Space for it must already be reserved by `addAxisTitleSpace`, since the
29
- * margin is resolved before this renders.
30
- */
31
- title?: string;
17
+ /** Rotated title in the left gutter (`axisLabels.value`). */
18
+ title?: string | undefined;
32
19
  }
33
- export declare const ChartValueAxis: ({ ticks, scale, plotWidth, plotHeight, marginLeft, formatter, showGrid, title, }: ChartValueAxisProps) => import("react").JSX.Element;
34
- interface ChartCategoryAxisProps {
20
+ /** @internal Grid hairlines at every tick, tick labels, and the value axis title. */
21
+ export declare function ChartValueAxis({ ticks, scale, plotWidth, plotHeight, insetLeft, formatter, title, }: ChartValueAxisProps): import("react").JSX.Element;
22
+ /** @internal Props of `ChartCategoryAxis`. */
23
+ export interface ChartCategoryAxisProps {
24
+ /** Raw category labels. */
35
25
  labels: string[];
36
- /** Left edge of each category's slot, in plot coordinates. */
26
+ /** Leading edge of each category's slot (left for `HORIZONTAL`, top for `VERTICAL`), plot coordinates. */
37
27
  positions: number[];
38
- /** Width of one category slot. */
28
+ /** Size of one category slot along the axis. */
39
29
  step: number;
40
- /** Needed to span an axis title across the full plot. */
30
+ /** Plot width. */
41
31
  plotWidth: number;
32
+ /** Plot height. */
42
33
  plotHeight: number;
34
+ /** `HORIZONTAL` under the plot; `VERTICAL` beside it (Heatmap rows). */
35
+ orientation: Orientation;
36
+ /** The left inset: the `VERTICAL` label gutter; for `HORIZONTAL`, how far an end label may run left of the plot. */
37
+ insetLeft?: number;
38
+ /** Label formatter. */
43
39
  formatter: ChartLabelFormatter;
44
- mode?: ChartCategoryLabelMode;
45
- /**
46
- * Title below the tick labels.
47
- *
48
- * Space for it must already be reserved by `addAxisTitleSpace`.
49
- */
50
- title?: string;
40
+ /** Category axis title (`axisLabels.category`). */
41
+ title?: string | undefined;
51
42
  }
52
- export declare const ChartCategoryAxis: ({ labels, positions, step, plotWidth, plotHeight, formatter, mode, title, }: ChartCategoryAxisProps) => import("react").JSX.Element;
53
- export {};
43
+ /**
44
+ * @internal Category labels with `AUTO` thinning: every label that fits, otherwise every nth
45
+ * (a skipped label is still inferable from its neighbours; a clipped one carries nothing). A
46
+ * rendered label may spread over the run it stands for.
47
+ */
48
+ export declare function ChartCategoryAxis({ labels, positions, step, plotWidth, plotHeight, orientation, insetLeft, formatter, title, }: ChartCategoryAxisProps): import("react").JSX.Element;