@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,92 +1,142 @@
1
- import { buildValueScale } from "./chartScales";
2
- import { LineChartCurve } from "./types";
3
- import type { LineChartLineDatum } from "./types";
4
- /** Signed value domain across every line, ignoring gaps. */
5
- export declare function getLineValueDomain<TMetric extends string>(lines: LineChartLineDatum<TMetric>[]): [number, number];
6
- /** One line, resolved to SVG paths. */
1
+ /**
2
+ * @internal Line chart geometry (LineChart, AreaChart; `resolveCurve` and the path builders are
3
+ * reused by Sparkline). Turns lines and points into SVG paths plus one hit column per category, so
4
+ * the component body maps over finished data. Pure: no React; colors arrive through a resolver.
5
+ */
6
+ import { type CurveFactory } from "d3-shape";
7
+ import type { ChartSeriesColor } from "./chartPalette.js";
8
+ import { ChartCurve } from "./types.js";
9
+ /** @internal The data a line needs (LineChart's `LineChartLineDatum`, structurally). */
10
+ export interface LineGeometryInput<TMetric extends string> {
11
+ /** Series key. */
12
+ metric: TMetric;
13
+ /** Readings by category. */
14
+ points: {
15
+ x: string;
16
+ y: number | null;
17
+ }[];
18
+ /** Dashed stroke. */
19
+ isDashed?: boolean | undefined;
20
+ }
21
+ /** @internal A point in pixel space (`undefined` y = gap). */
22
+ export interface PlotPoint {
23
+ /** x in plot coordinates. */
24
+ x: number;
25
+ /** y in plot coordinates, or `null` for a gap. */
26
+ y: number | null;
27
+ }
28
+ /** @internal `ChartCurve` → the d3 curve factory. */
29
+ export declare function resolveCurve(curve: ChartCurve): CurveFactory;
30
+ /** @internal A line path through `points`, broken at gaps (`y === null`). Empty when nothing plots. */
31
+ export declare function buildLinePath(points: PlotPoint[], curve: ChartCurve): string;
32
+ /** @internal An area path from `y0` (a baseline, or each point's lower edge) to each point, broken at gaps. */
33
+ export declare function buildAreaPath(points: PlotPoint[], y0: number | ((index: number) => number), curve: ChartCurve): string;
34
+ /**
35
+ * @internal The category axis: an explicit list, else the union of every line's `x` in
36
+ * first-seen order (worth passing `categories` whenever lines are sparse).
37
+ */
38
+ export declare function getLineCategories(lines: LineGeometryInput<string>[], explicit?: string[]): string[];
39
+ /** @internal Signed extent across every reading, ignoring gaps, always including 0. */
40
+ export declare function getLineValueDomain(lines: LineGeometryInput<string>[]): [number, number];
41
+ /**
42
+ * @internal Each line's readings densified onto the category axis: a missing category or a `null`
43
+ * reading is `null`, never zero.
44
+ */
45
+ export declare function densifyLineValues(lines: LineGeometryInput<string>[], categories: string[]): (number | null)[][];
46
+ /**
47
+ * @internal Stack offsets (AreaChart `isStacked`): for every line and category, the running total
48
+ * of the lines before it, in array order (`d3-shape` `stack()`). A gap contributes 0, so the stack
49
+ * stays a total; only the gapped line's own top edge breaks.
50
+ */
51
+ export declare function getStackOffsets(values: (number | null)[][]): number[][];
52
+ /** @internal Extent of the stacked totals (every band's lower and upper edge), always including 0. */
53
+ export declare function getStackedLineValueDomain(lines: LineGeometryInput<string>[], explicitCategories?: string[]): [number, number];
54
+ /** @internal `true` when no line has a single reading. */
55
+ export declare function hasNoReadings(lines: LineGeometryInput<string>[]): boolean;
56
+ /** @internal One line, resolved to paths. */
7
57
  export interface LineChartPath<TMetric extends string> {
8
- /** React key. Equal to the metric, which is unique by construction. */
58
+ /** React key (the metric). */
9
59
  id: string;
60
+ /** Series key. */
10
61
  metric: TMetric;
11
- /** `d` for the stroke. Empty when the line has no plottable points. */
62
+ /** Stroke `d`; empty when nothing plots. */
12
63
  path: string;
13
- /** `d` for the area fill. Present only when the line opted into an area. */
64
+ /** Area `d` (fill `AREA` only). */
14
65
  areaPath?: string;
15
- /** Pre-serialised `stroke-dasharray`. Absent for a solid line. */
16
- dashArray?: string;
17
- strokeWidth: number;
18
- color: string;
66
+ /** Dashed stroke. */
67
+ isDashed: boolean;
68
+ /** Series color. */
69
+ color: ChartSeriesColor;
19
70
  }
20
- /** One point, resolved to pixels. */
71
+ /** @internal One reading, resolved to pixels. */
21
72
  export interface LineChartPoint<TMetric extends string> {
22
- /** React key. `${metric}:${categoryIndex}`. */
73
+ /** React key: `${metric}:${categoryIndex}`. */
23
74
  id: string;
75
+ /** Series key. */
24
76
  metric: TMetric;
77
+ /** The reading. */
25
78
  value: number;
79
+ /** x in plot coordinates. */
26
80
  x: number;
81
+ /** y in plot coordinates. */
27
82
  y: number;
28
- color: string;
83
+ /** Series color. */
84
+ color: ChartSeriesColor;
29
85
  }
30
- /**
31
- * One category column: the hit target and everything the tooltip needs.
32
- *
33
- * Line charts hit-test by column rather than by proximity to a stroke, so the
34
- * whole vertical band is a target and the tooltip reports every line at once.
35
- */
86
+ /** @internal One category column: the hit band and everything the tooltip needs. */
36
87
  export interface LineChartColumn<TMetric extends string> {
88
+ /** Position on the axis. */
37
89
  categoryIndex: number;
90
+ /** Raw label. */
38
91
  label: string;
39
92
  /** x of the category tick. */
40
93
  x: number;
41
- /** Full-height hit target, tiling with its neighbours. */
94
+ /** Left edge of the hit band (bands tile the plot). */
42
95
  bandX: number;
96
+ /** Width of the hit band. */
43
97
  bandWidth: number;
44
- /** Points present in this column, one per line that has a value here. */
98
+ /** Readings at this category, one per line that has one. */
45
99
  points: LineChartPoint<TMetric>[];
46
- /** Topmost point in the column — where the tooltip anchors. */
100
+ /** Lines with no reading at this category. */
101
+ gaps: TMetric[];
102
+ /** Topmost point: where the tooltip anchors. */
47
103
  anchorY: number;
48
104
  }
105
+ /** @internal The finished geometry. */
49
106
  export interface LineChartGeometry<TMetric extends string> {
107
+ /** One per line. */
50
108
  paths: LineChartPath<TMetric>[];
109
+ /** One per category. */
51
110
  columns: LineChartColumn<TMetric>[];
52
- /**
53
- * Points with no defined neighbour on either side.
54
- *
55
- * A lone reading has nothing to connect to, so it produces a zero-length path
56
- * segment and renders as nothing at all — a silent hole in sparse data. These
57
- * are drawn as explicit dots so the value is visible without hovering.
58
- */
111
+ /** Readings with no neighbour on either side: drawn as dots so they do not vanish. */
59
112
  isolatedPoints: LineChartPoint<TMetric>[];
113
+ /** Category labels in axis order. */
60
114
  categories: string[];
61
- valueScale: ReturnType<typeof buildValueScale>;
62
- /**
63
- * Distance between category ticks.
64
- *
65
- * Exposed because axis labels must be centred on their tick, which is not the
66
- * same as being centred on the hit band: the first and last bands are clipped
67
- * to the plot edge, and centring a label inside a half-width band pushes it
68
- * off its tick.
69
- */
115
+ /** Value → y. */
116
+ valueScale: (value: number) => number;
117
+ /** Distance between category ticks. */
70
118
  step: number;
71
119
  }
72
- interface BuildLineChartGeometryArgs<TMetric extends string> {
73
- lines: LineChartLineDatum<TMetric>[];
74
- categories?: string[];
120
+ /** @internal Inputs of `buildLineChartGeometry`. */
121
+ export interface BuildLineChartGeometryArgs<TMetric extends string> {
122
+ /** The lines. */
123
+ lines: LineGeometryInput<TMetric>[];
124
+ /** Explicit category order. */
125
+ categories?: string[] | undefined;
126
+ /** Plot width. */
75
127
  plotWidth: number;
128
+ /** Plot height. */
76
129
  plotHeight: number;
77
- curve: LineChartCurve;
78
- /**
79
- * The final value domain, already overridden, zeroed and niced.
80
- *
81
- * Resolved by the caller rather than here, because the left gutter is sized
82
- * from the tick labels and therefore needs the domain before the plot — and
83
- * hence this builder — exists.
84
- */
130
+ /** Segment shape. */
131
+ curve: ChartCurve;
132
+ /** The resolved value domain. */
85
133
  domain: [number, number];
86
- strokeWidth?: number;
87
- resolveColor: (args: {
88
- metric: TMetric;
89
- }) => string;
134
+ /** Draw each line's area to the zero baseline (or, stacked, to the band below). */
135
+ hasArea: boolean;
136
+ /** Stack the lines in array order (AreaChart `isStacked`): each top edge is the running total. */
137
+ isStacked?: boolean | undefined;
138
+ /** Series color by metric. */
139
+ resolveColor: (metric: TMetric) => ChartSeriesColor;
90
140
  }
91
- export declare function buildLineChartGeometry<TMetric extends string>({ lines, categories: explicitCategories, plotWidth, plotHeight, curve, domain, strokeWidth: defaultStrokeWidth, resolveColor, }: BuildLineChartGeometryArgs<TMetric>): LineChartGeometry<TMetric>;
92
- export {};
141
+ /** @internal Builds a line chart's paths, columns and isolated points. */
142
+ export declare function buildLineChartGeometry<TMetric extends string>({ lines, categories: explicitCategories, plotWidth, plotHeight, curve, domain, hasArea, isStacked, resolveColor, }: BuildLineChartGeometryArgs<TMetric>): LineChartGeometry<TMetric>;
@@ -1,19 +1,28 @@
1
- import { LineChartCurve } from "./types.js";
2
- import { DEFAULT_LINE_STROKE_WIDTH } from "./constants.js";
1
+ import { ChartCurve } from "./types.js";
3
2
  import { buildCategoryPointScale, buildValueScale, sanitizeValue } from "./chartScales.js";
4
3
  import { match } from "ts-pattern";
5
- import { area, curveLinear, curveMonotoneX, curveStepAfter, line } from "d3-shape";
4
+ import { area, curveLinear, curveMonotoneX, curveStepAfter, line, stack } from "d3-shape";
6
5
  //#region src/charts/lineChartGeometry.ts
6
+ /**
7
+ * @internal Line chart geometry (LineChart, AreaChart; `resolveCurve` and the path builders are
8
+ * reused by Sparkline). Turns lines and points into SVG paths plus one hit column per category, so
9
+ * the component body maps over finished data. Pure: no React; colors arrive through a resolver.
10
+ */
11
+ /** @internal `ChartCurve` → the d3 curve factory. */
7
12
  function resolveCurve(curve) {
8
- return match(curve).with(LineChartCurve.LINEAR, () => curveLinear).with(LineChartCurve.SMOOTH, () => curveMonotoneX).with(LineChartCurve.STEP, () => curveStepAfter).exhaustive();
13
+ return match(curve).with(ChartCurve.LINEAR, () => curveLinear).with(ChartCurve.SMOOTH, () => curveMonotoneX).with(ChartCurve.STEP, () => curveStepAfter).exhaustive();
14
+ }
15
+ /** @internal A line path through `points`, broken at gaps (`y === null`). Empty when nothing plots. */
16
+ function buildLinePath(points, curve) {
17
+ return line().defined((point) => point.y !== null).x((point) => point.x).y((point) => point.y ?? 0).curve(resolveCurve(curve))(points) ?? "";
18
+ }
19
+ /** @internal An area path from `y0` (a baseline, or each point's lower edge) to each point, broken at gaps. */
20
+ function buildAreaPath(points, y0, curve) {
21
+ return area().defined((point) => point.y !== null).x((point) => point.x).y0((_, index) => typeof y0 === "number" ? y0 : y0(index)).y1((point) => point.y ?? 0).curve(resolveCurve(curve))(points) ?? "";
9
22
  }
10
23
  /**
11
- * The union of every line's categories, in first-seen order.
12
- *
13
- * Lines are allowed to be sparse, so the axis cannot come from any single one
14
- * of them. An explicit `categories` list wins, and is worth supplying whenever
15
- * the data is gappy — inferring order from a union of incomplete series is
16
- * guesswork, and guessing wrong reorders time.
24
+ * @internal The category axis: an explicit list, else the union of every line's `x` in
25
+ * first-seen order (worth passing `categories` whenever lines are sparse).
17
26
  */
18
27
  function getLineCategories(lines, explicit) {
19
28
  if (explicit) return explicit;
@@ -25,110 +34,143 @@ function getLineCategories(lines, explicit) {
25
34
  }
26
35
  return seen;
27
36
  }
28
- /** Signed value domain across every line, ignoring gaps. */
37
+ /** @internal Signed extent across every reading, ignoring gaps, always including 0. */
29
38
  function getLineValueDomain(lines) {
30
39
  let min = 0;
31
40
  let max = 0;
32
- let hasValue = false;
33
41
  for (const lineDatum of lines) for (const point of lineDatum.points) {
34
42
  if (point.y === null || point.y === void 0) continue;
35
43
  const value = sanitizeValue(point.y);
36
- if (!hasValue) {
37
- min = value;
38
- max = value;
39
- hasValue = true;
40
- continue;
41
- }
42
- if (value < min) min = value;
43
- if (value > max) max = value;
44
+ min = Math.min(min, value);
45
+ max = Math.max(max, value);
44
46
  }
45
- return [Math.min(0, min), Math.max(0, max)];
47
+ return [min, max];
48
+ }
49
+ /**
50
+ * @internal Each line's readings densified onto the category axis: a missing category or a `null`
51
+ * reading is `null`, never zero.
52
+ */
53
+ function densifyLineValues(lines, categories) {
54
+ const indexOf = new Map(categories.map((label, index) => [label, index]));
55
+ return lines.map((lineDatum) => {
56
+ const values = categories.map(() => null);
57
+ for (const point of lineDatum.points) {
58
+ const index = indexOf.get(point.x);
59
+ if (index === void 0) continue;
60
+ values[index] = point.y === null || point.y === void 0 ? null : sanitizeValue(point.y);
61
+ }
62
+ return values;
63
+ });
64
+ }
65
+ /**
66
+ * @internal Stack offsets (AreaChart `isStacked`): for every line and category, the running total
67
+ * of the lines before it, in array order (`d3-shape` `stack()`). A gap contributes 0, so the stack
68
+ * stays a total; only the gapped line's own top edge breaks.
69
+ */
70
+ function getStackOffsets(values) {
71
+ const categoryCount = values[0]?.length ?? 0;
72
+ const keys = values.map((_, index) => index);
73
+ const rows = Array.from({ length: categoryCount }, (_, category) => category);
74
+ const series = stack().keys(keys).value((category, key) => values[key]?.[category] ?? 0)(rows);
75
+ return values.map((_, index) => rows.map((category) => series[index]?.[category]?.[0] ?? 0));
76
+ }
77
+ /** @internal Extent of the stacked totals (every band's lower and upper edge), always including 0. */
78
+ function getStackedLineValueDomain(lines, explicitCategories) {
79
+ const values = densifyLineValues(lines, getLineCategories(lines, explicitCategories));
80
+ const offsets = getStackOffsets(values);
81
+ let min = 0;
82
+ let max = 0;
83
+ values.forEach((row, lineIndex) => {
84
+ row.forEach((value, category) => {
85
+ const base = offsets[lineIndex]?.[category] ?? 0;
86
+ const top = base + (value ?? 0);
87
+ min = Math.min(min, base, top);
88
+ max = Math.max(max, base, top);
89
+ });
90
+ });
91
+ return [min, max];
46
92
  }
47
- function buildLineChartGeometry({ lines, categories: explicitCategories, plotWidth, plotHeight, curve, domain, strokeWidth: defaultStrokeWidth = DEFAULT_LINE_STROKE_WIDTH, resolveColor }) {
93
+ /** @internal `true` when no line has a single reading. */
94
+ function hasNoReadings(lines) {
95
+ return lines.every((lineDatum) => lineDatum.points.every((point) => point.y === null));
96
+ }
97
+ /** @internal Builds a line chart's paths, columns and isolated points. */
98
+ function buildLineChartGeometry({ lines, categories: explicitCategories, plotWidth, plotHeight, curve, domain, hasArea, isStacked = false, resolveColor }) {
48
99
  const categories = getLineCategories(lines, explicitCategories);
49
- const valueScale = buildValueScale(domain, [plotHeight, 0]);
50
- const categoryScale = buildCategoryPointScale(categories, [0, plotWidth]);
51
- const baselineY = valueScale(0);
52
- const paths = [];
53
- const columns = [];
54
- const isolatedPoints = [];
55
- if (categories.length === 0 || plotWidth <= 0 || plotHeight <= 0) return {
56
- paths,
57
- columns,
58
- isolatedPoints,
100
+ const scale = buildValueScale(domain, [plotHeight, 0]);
101
+ const valueScale = (value) => scale(value);
102
+ const geometry = {
103
+ paths: [],
104
+ columns: [],
105
+ isolatedPoints: [],
59
106
  categories,
60
107
  valueScale,
61
108
  step: 0
62
109
  };
63
- const curveFactory = resolveCurve(curve);
64
- const categoryIndex = new Map(categories.map((label, index) => [label, index]));
65
- const xAt = (index) => categoryScale(categories[index]) ?? 0;
110
+ if (categories.length === 0 || plotWidth <= 0 || plotHeight <= 0) return geometry;
111
+ const categoryScale = buildCategoryPointScale(categories, [0, plotWidth]);
112
+ const xAt = (index) => categoryScale(categories[index] ?? "") ?? 0;
113
+ const baselineY = valueScale(0);
66
114
  const pointsByCategory = categories.map(() => []);
67
- lines.forEach((lineDatum) => {
68
- const color = resolveColor({ metric: lineDatum.metric });
69
- const stroke = lineDatum.strokeWidth ?? defaultStrokeWidth;
70
- const plotted = categories.map((_, index) => ({
71
- categoryIndex: index,
72
- value: null
115
+ const gapsByCategory = categories.map(() => []);
116
+ const valuesByLine = densifyLineValues(lines, categories);
117
+ const offsets = isStacked ? getStackOffsets(valuesByLine) : null;
118
+ lines.forEach((lineDatum, lineIndex) => {
119
+ const color = resolveColor(lineDatum.metric);
120
+ const values = valuesByLine[lineIndex] ?? [];
121
+ const lineOffsets = offsets?.[lineIndex];
122
+ const offsetAt = (index) => lineOffsets?.[index] ?? 0;
123
+ const plotted = values.map((value, index) => ({
124
+ x: xAt(index),
125
+ y: value === null ? null : valueScale(offsetAt(index) + value)
73
126
  }));
74
- for (const point of lineDatum.points) {
75
- const index = categoryIndex.get(point.x);
76
- if (index === void 0) continue;
77
- plotted[index].value = point.y === null || point.y === void 0 ? null : sanitizeValue(point.y);
78
- }
79
- const isDefined = (p) => p.value !== null;
80
- const strokePath = line().defined(isDefined).x((p) => xAt(p.categoryIndex)).y((p) => valueScale(p.value)).curve(curveFactory)(plotted) ?? "";
81
- const areaPath = lineDatum.showArea ? area().defined(isDefined).x((p) => xAt(p.categoryIndex)).y0(baselineY).y1((p) => valueScale(p.value)).curve(curveFactory)(plotted) ?? void 0 : void 0;
82
- paths.push({
127
+ const areaBase = lineOffsets ? (index) => valueScale(offsetAt(index)) : baselineY;
128
+ geometry.paths.push({
83
129
  id: lineDatum.metric,
84
130
  metric: lineDatum.metric,
85
- path: strokePath,
86
- areaPath,
87
- dashArray: lineDatum.dashSize ? `${lineDatum.dashSize} ${lineDatum.dashSize}` : void 0,
88
- strokeWidth: stroke,
131
+ path: buildLinePath(plotted, curve),
132
+ ...hasArea && { areaPath: buildAreaPath(plotted, areaBase, curve) },
133
+ isDashed: lineDatum.isDashed ?? false,
89
134
  color
90
135
  });
91
- plotted.forEach((p, index) => {
92
- if (p.value === null) return;
136
+ values.forEach((value, index) => {
137
+ if (value === null) {
138
+ gapsByCategory[index]?.push(lineDatum.metric);
139
+ return;
140
+ }
93
141
  const point = {
94
- id: `${lineDatum.metric}:${p.categoryIndex}`,
142
+ id: `${lineDatum.metric}:${index}`,
95
143
  metric: lineDatum.metric,
96
- value: p.value,
97
- x: xAt(p.categoryIndex),
98
- y: valueScale(p.value),
144
+ value,
145
+ x: xAt(index),
146
+ y: valueScale(offsetAt(index) + value),
99
147
  color
100
148
  };
101
- pointsByCategory[p.categoryIndex].push(point);
102
- const hasPrev = index > 0 && plotted[index - 1].value !== null;
103
- const hasNext = index < plotted.length - 1 && plotted[index + 1].value !== null;
104
- if (!hasPrev && !hasNext) isolatedPoints.push(point);
149
+ pointsByCategory[index]?.push(point);
150
+ const hasPrev = index > 0 && values[index - 1] !== null;
151
+ const hasNext = index < values.length - 1 && values[index + 1] !== null;
152
+ if (!hasPrev && !hasNext) geometry.isolatedPoints.push(point);
105
153
  });
106
154
  });
107
155
  const step = categories.length > 1 ? categoryScale.step() : plotWidth;
156
+ geometry.step = step;
108
157
  categories.forEach((label, index) => {
109
158
  const x = xAt(index);
110
- const points = pointsByCategory[index];
159
+ const points = pointsByCategory[index] ?? [];
111
160
  const rawBandX = x - step / 2;
112
161
  const bandX = Math.max(0, rawBandX);
113
- const bandWidth = Math.min(plotWidth, rawBandX + step) - bandX;
114
- columns.push({
162
+ geometry.columns.push({
115
163
  categoryIndex: index,
116
164
  label,
117
165
  x,
118
166
  bandX,
119
- bandWidth,
167
+ bandWidth: Math.min(plotWidth, rawBandX + step) - bandX,
120
168
  points,
121
- anchorY: points.length > 0 ? Math.min(...points.map((p) => p.y)) : baselineY
169
+ gaps: gapsByCategory[index] ?? [],
170
+ anchorY: points.length > 0 ? Math.min(...points.map((point) => point.y)) : baselineY
122
171
  });
123
172
  });
124
- return {
125
- paths,
126
- columns,
127
- isolatedPoints,
128
- categories,
129
- valueScale,
130
- step
131
- };
173
+ return geometry;
132
174
  }
133
175
  //#endregion
134
- export { buildLineChartGeometry, getLineValueDomain };
176
+ export { buildAreaPath, buildLineChartGeometry, buildLinePath, densifyLineValues, getLineCategories, getLineValueDomain, getStackOffsets, getStackedLineValueDomain, hasNoReadings, resolveCurve };
@@ -1,60 +1,86 @@
1
- import type { ChartPalette, PieChartSliceDatum } from "./types";
1
+ import type { ChartSeriesColor } from "./chartPalette.js";
2
+ /** @internal Key of the folded "Other" slice in events, selection and the legend. */
3
+ export declare const AGGREGATED_SLICE_KEY = "__other__";
4
+ /** @internal Default share below which a slice folds into "Other" (1.x). */
5
+ export declare const PIE_MIN_SLICE_SHARE = 0.02;
6
+ /** @internal Donut hole as a fraction of the outer radius (1.x). */
7
+ export declare const PIE_DONUT_INNER_RATIO = 0.62;
8
+ /** @internal Slice corner radius: `radius.sm`. */
9
+ export declare const PIE_CORNER_RADIUS: number;
2
10
  /**
3
- * Pie and donut geometry.
4
- *
5
- * Produces a flat array of finished arcs — path, anchor, colour and share all
6
- * resolved — so the component body is a `.map()`.
7
- *
8
- * Pure: no React, no theme access. Colours arrive through a resolver callback.
11
+ * @internal Share of the narrowest slice its two inner pad insets may consume (1.x). A solid pie
12
+ * keeps a tiny hole so every gap stays radial instead of collapsing at the center.
9
13
  */
10
- /** One rendered arc. */
11
- export interface PieChartArc {
12
- /** React key. The slice key, or `AGGREGATED_SLICE_KEY` for the folded bucket. */
14
+ export declare const PIE_MAX_INSET_SHARE = 0.7;
15
+ /** @internal Ceiling on that auto inner radius, as a share of the outer radius (1.x). */
16
+ export declare const PIE_MAX_AUTO_INNER_RATIO = 0.06;
17
+ /** @internal One slice after clamping and folding: everything that comes from the data alone. */
18
+ export interface PieChartSlice {
19
+ /** The slice key, or `AGGREGATED_SLICE_KEY` for the folded slice. */
13
20
  id: string;
21
+ /** Slice label. */
14
22
  label: string;
15
- /** Summed value for the aggregated bucket, the slice's own otherwise. */
23
+ /** The slice's value (the folded slice: the sum). */
16
24
  value: number;
17
25
  /** Share of the total, 0–1. */
18
26
  share: number;
19
- /** `d` for the arc. */
27
+ /** Resolved color. */
28
+ color: ChartSeriesColor;
29
+ }
30
+ /** @internal One rendered arc: a slice plus the parts that depend on the measured plot. */
31
+ export interface PieChartArc extends PieChartSlice {
32
+ /** Arc `d`, around the origin. */
20
33
  path: string;
21
- /** Anchor for the tooltip, just outside the arc's outer edge. */
34
+ /** Tooltip anchor just outside the arc's bisector, plot coordinates. */
22
35
  anchorX: number;
36
+ /** Tooltip anchor y. */
23
37
  anchorY: number;
24
- color: string;
25
38
  }
39
+ /** @internal The finished geometry. */
26
40
  export interface PieChartGeometry {
41
+ /** Arcs clockwise from 12 o'clock, index-aligned with the slices; empty until measured. */
27
42
  arcs: PieChartArc[];
28
- /** Centre of the pie, in plot coordinates. */
43
+ /** Center x, plot coordinates. */
29
44
  centerX: number;
45
+ /** Center y. */
30
46
  centerY: number;
47
+ /** The hole's radius (0-ish for a solid pie). */
31
48
  innerRadius: number;
49
+ /** The outer radius. */
50
+ outerRadius: number;
51
+ }
52
+ /** @internal Inputs of `resolvePieChartSlices`. */
53
+ export interface ResolvePieChartSlicesArgs<TSlice extends string> {
54
+ /** Slices in array order. */
55
+ slices: {
56
+ key: TSlice;
57
+ value: number;
58
+ }[];
59
+ /** Fold slices under this share; 0 draws every slice. */
60
+ minSliceShare: number;
61
+ /** Label of the folded slice. */
62
+ aggregatedLabel: string;
63
+ /** Color of a slice; `null` is the folded slice. */
64
+ resolveColor: (sliceKey: TSlice | null) => ChartSeriesColor;
65
+ /** Label of a slice. */
66
+ getSliceLabel: (sliceKey: TSlice) => string;
32
67
  }
33
- interface BuildPieChartGeometryArgs<TSlice extends string> {
34
- slices: PieChartSliceDatum<TSlice>[];
68
+ /**
69
+ * @internal The size-free half: clamps negatives to 0, folds the tail under `minSliceShare` into
70
+ * one slice (last), drops zero slices, and resolves labels, shares and colors. Runs from data
71
+ * alone, so the server render already knows the slice count and the legend.
72
+ */
73
+ export declare function resolvePieChartSlices<TSlice extends string>({ slices, minSliceShare, aggregatedLabel, resolveColor, getSliceLabel, }: ResolvePieChartSlicesArgs<TSlice>): PieChartSlice[];
74
+ /** @internal Inputs of `buildPieChartGeometry`. */
75
+ export interface BuildPieChartGeometryArgs {
76
+ /** The resolved slices (`resolvePieChartSlices`). */
77
+ slices: PieChartSlice[];
78
+ /** Plot width. */
35
79
  plotWidth: number;
80
+ /** Plot height. */
36
81
  plotHeight: number;
37
- /** Hole size as a fraction of the outer radius. `0` is a solid pie. */
38
- innerRadiusRatio?: number;
39
- padAngle?: number;
40
- cornerRadius?: number;
41
- /**
42
- * Slices below this share of the total are folded into one bucket.
43
- *
44
- * `0` disables folding. A donut with forty slivers communicates nothing, and
45
- * the slivers are individually unhoverable, so a modest default is kinder
46
- * than faithfully rendering every one.
47
- */
48
- minSliceShare?: number;
49
- /** Label for the folded bucket. */
50
- aggregatedLabel?: string;
51
- resolveColor: (args: {
52
- sliceKey: TSlice | null;
53
- explicit?: ChartPalette;
54
- }) => string;
55
- /** Palette override declared by the caller for a given slice. */
56
- getSliceColor?: (sliceKey: TSlice) => ChartPalette | undefined;
57
- getSliceLabel: (sliceKey: TSlice) => string;
82
+ /** Solid pie instead of a donut. */
83
+ isSolid: boolean;
58
84
  }
59
- export declare function buildPieChartGeometry<TSlice extends string>({ slices, plotWidth, plotHeight, innerRadiusRatio, padAngle, cornerRadius, minSliceShare, aggregatedLabel, resolveColor, getSliceColor, getSliceLabel, }: BuildPieChartGeometryArgs<TSlice>): PieChartGeometry;
60
- export {};
85
+ /** @internal The size-bound half: radii, center, arc paths and tooltip anchors. */
86
+ export declare function buildPieChartGeometry({ slices, plotWidth, plotHeight, isSolid, }: BuildPieChartGeometryArgs): PieChartGeometry;