@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,178 +1,89 @@
1
1
  //#region src/charts/types.ts
2
2
  /**
3
- * Shared types for the chart components (`BarChart`, `LineChart`, `PieChart`).
4
- *
5
- * Every data type is generic over its key unions, and the inference is
6
- * deliberately one-directional: `TMetric` comes from the keys of the `series`
7
- * record and from nowhere else, with {@link NoInfer} applied to every
8
- * data-shaped prop.
9
- *
10
- * That asymmetry is what makes the guarantees real. Were `TMetric` also
11
- * inferred from the data, an inline `{ metric: "revenue" }` would widen to
12
- * `string`, TypeScript would pick the supertype, and every check below would
13
- * quietly become a no-op — type safety that looks present but is not.
14
- *
15
- * ```ts
16
- * <BarChart
17
- * series={{
18
- * revenue: { label: "Revenue" },
19
- * cost: { label: "Cost" },
20
- * }}
21
- * groups={[
22
- * { label: "Q1", bars: [{ metric: "revenu", components: [] }] },
23
- * // ^ Type '"revenu"' is not assignable to
24
- * // type '"revenue" | "cost"'.
25
- * ]}
26
- * />
27
- * ```
28
- *
29
- * The same union then makes aggregates exhaustive, spell-checks legend and
30
- * ordering props, and narrows callback parameters for `ts-pattern`.
31
- */
32
- /**
33
- * Semantic color slot for a series, resolved against the active theme at render
34
- * time by `resolveChartPaletteColor` in `chartTheme.ts`.
35
- *
36
- * Deliberately an enum of slots rather than a hex string: consumer data should
37
- * never carry raw color, and every rendered color has to come from
38
- * `theme.color.*` so both themes stay correct.
3
+ * Series color slot. Members are canonical color-set names (Constitution
4
+ * III.4). The first eight are the automatic order (purple leads); the rest are for explicit,
5
+ * meaningful assignment only.
39
6
  */
40
7
  var ChartPalette = /* @__PURE__ */ function(ChartPalette) {
8
+ /** `text.purple`. First in the automatic order. */
41
9
  ChartPalette["PURPLE"] = "PURPLE";
10
+ /** `text.pink`. */
42
11
  ChartPalette["PINK"] = "PINK";
12
+ /** `text.blue`. */
43
13
  ChartPalette["BLUE"] = "BLUE";
14
+ /** `text.teal`. */
44
15
  ChartPalette["TEAL"] = "TEAL";
16
+ /** `text.lime`. */
45
17
  ChartPalette["LIME"] = "LIME";
18
+ /** `text.orange`. */
46
19
  ChartPalette["ORANGE"] = "ORANGE";
20
+ /** `text.yellow`. */
47
21
  ChartPalette["YELLOW"] = "YELLOW";
22
+ /** `text.green`. Last in the automatic order. */
48
23
  ChartPalette["GREEN"] = "GREEN";
49
- ChartPalette["RED"] = "RED";
24
+ /** `text.success`. Explicit assignment only. */
25
+ ChartPalette["SUCCESS"] = "SUCCESS";
26
+ /** `text.warning`. Explicit assignment only. */
27
+ ChartPalette["WARNING"] = "WARNING";
28
+ /** `text.error` (1.x `RED`). Explicit assignment only. */
29
+ ChartPalette["ERROR"] = "ERROR";
30
+ /** `text.indigo` (no gray in charts). Explicit assignment only. */
50
31
  ChartPalette["PRIMARY"] = "PRIMARY";
32
+ /** `text.sky` (no gray in charts). Explicit assignment only. */
51
33
  ChartPalette["SECONDARY"] = "SECONDARY";
34
+ /** `text.violet` (no gray in charts). Explicit assignment only. */
52
35
  ChartPalette["TERTIARY"] = "TERTIARY";
53
- ChartPalette["WARNING"] = "WARNING";
54
36
  return ChartPalette;
55
37
  }({});
56
- /**
57
- * Built-in value formats. Supplies an `Intl`-based default for axis ticks,
58
- * value labels and tooltip rows so callers don't have to write the same
59
- * formatter three times.
60
- *
61
- * A `valueFormatter` prop always wins over this when both are given.
62
- */
63
- var ChartValueUnit = /* @__PURE__ */ function(ChartValueUnit) {
64
- /** Locale-grouped integer, e.g. `1,250`. */
65
- ChartValueUnit["PLAIN"] = "PLAIN";
66
- /** Locale currency with no decimals, e.g. `$1,250`. */
67
- ChartValueUnit["CURRENCY"] = "CURRENCY";
68
- /** Percentage of a 0–100 value, e.g. `42%`. */
69
- ChartValueUnit["PERCENT"] = "PERCENT";
70
- /** Abbreviated magnitude, e.g. `1.3K`, `4.2M`. */
71
- ChartValueUnit["COMPACT"] = "COMPACT";
72
- return ChartValueUnit;
38
+ /** How segments between points are drawn (LineChart, AreaChart, Sparkline). 1.x `LineChartCurve`. */
39
+ var ChartCurve = /* @__PURE__ */ function(ChartCurve) {
40
+ /** Straight segments. */
41
+ ChartCurve["LINEAR"] = "LINEAR";
42
+ /** Monotone cubic: smooth without overshooting the data. */
43
+ ChartCurve["SMOOTH"] = "SMOOTH";
44
+ /** Right-angled steps (step-after). */
45
+ ChartCurve["STEP"] = "STEP";
46
+ return ChartCurve;
73
47
  }({});
74
- /**
75
- * Which chart is being rendered.
76
- *
77
- * Exists so the frame can phrase a default accessible name — a pie has slices
78
- * where the cartesian charts have categories. Deliberately not a styling hook:
79
- * nothing else branches on it.
80
- */
48
+ /** @internal Emphasis of a rendered mark, applied as a `css` class (`CHART_MARK_STATE_TO_CSS_MAP`). */
49
+ var ChartMarkState = /* @__PURE__ */ function(ChartMarkState) {
50
+ /** Full strength: the default, and the engaged category or series. */
51
+ ChartMarkState["ACTIVE"] = "ACTIVE";
52
+ /** Softened: outside the engaged series, the selection, or while loading. */
53
+ ChartMarkState["MUTED"] = "MUTED";
54
+ /** Barely softened: off-category marks where a cursor band already carries the emphasis. */
55
+ ChartMarkState["DIMMED"] = "DIMMED";
56
+ return ChartMarkState;
57
+ }({});
58
+ /** @internal Which chart is rendering; phrases the default accessible name only. */
81
59
  var ChartKind = /* @__PURE__ */ function(ChartKind) {
82
- ChartKind["BAR"] = "BAR";
60
+ /** `LineChart`. */
83
61
  ChartKind["LINE"] = "LINE";
62
+ /** `AreaChart`. */
63
+ ChartKind["AREA"] = "AREA";
64
+ /** `BarChart`. */
65
+ ChartKind["BAR"] = "BAR";
66
+ /** `PieChart`. */
84
67
  ChartKind["PIE"] = "PIE";
68
+ /** `Heatmap`. */
69
+ ChartKind["HEATMAP"] = "HEATMAP";
85
70
  return ChartKind;
86
71
  }({});
87
- /**
88
- * Where the legend sits relative to the plot.
89
- *
90
- * Its own enum rather than a branch on {@link ChartKind}, which promises to be
91
- * nothing but a label for the accessible name.
92
- */
72
+ /** @internal Where the legend sits relative to the plot. */
93
73
  var ChartLegendPlacement = /* @__PURE__ */ function(ChartLegendPlacement) {
94
- /** Beneath the plot, wrapping — the cartesian layout. */
74
+ /** Beneath the plot, one line (cartesian charts, Heatmap). */
95
75
  ChartLegendPlacement["BOTTOM"] = "BOTTOM";
96
- /** Beside the plot, stacked, vertically centred on it — the pie layout. */
76
+ /** Beside the plot, one column, vertically centered (PieChart). */
97
77
  ChartLegendPlacement["RIGHT"] = "RIGHT";
98
78
  return ChartLegendPlacement;
99
79
  }({});
100
- /** How the category axis copes when labels outgrow their slots. */
101
- var ChartCategoryLabelMode = /* @__PURE__ */ function(ChartCategoryLabelMode) {
102
- /** Render every label that fits; otherwise show every nth. The default. */
103
- ChartCategoryLabelMode["AUTO"] = "AUTO";
104
- /** Render every label, ellipsizing any that overflow its slot. */
105
- ChartCategoryLabelMode["TRUNCATE"] = "TRUNCATE";
106
- /** Render every label unconditionally, overlap included. */
107
- ChartCategoryLabelMode["ALL"] = "ALL";
108
- return ChartCategoryLabelMode;
109
- }({});
110
- /**
111
- * Emphasis level of a rendered mark.
112
- *
113
- * Travels to the DOM as a `data-state` attribute rather than a styled-component
114
- * prop: `@linaria/react` skips prop filtering entirely for SVG tags (its
115
- * `allTagsSet` is built with a missing spread, so `has('rect')` is false and
116
- * `propsAsIs` turns on), which would forward a `$`-prefixed prop straight to the
117
- * DOM and trigger a React warning.
118
- */
119
- var ChartMarkState = /* @__PURE__ */ function(ChartMarkState) {
120
- /** Full strength — the default, and the hovered category. */
121
- ChartMarkState["ACTIVE"] = "active";
122
- /** Softened, for marks outside the engaged series or category. */
123
- ChartMarkState["MUTED"] = "muted";
124
- /**
125
- * Barely softened — a whisper of {@link MUTED}.
126
- *
127
- * Used where another affordance already carries the emphasis and strong
128
- * muting would be a second, louder voice: BarChart's category axis dims
129
- * like this because the cursor band is the highlight.
130
- */
131
- ChartMarkState["DIMMED"] = "dimmed";
132
- return ChartMarkState;
133
- }({});
134
- /** Which pair of a rectangle's corners carries the radius. */
135
- var BarCorners = /* @__PURE__ */ function(BarCorners) {
136
- /** Cap for a bar growing up from the baseline. */
137
- BarCorners["TOP"] = "TOP";
138
- /** Cap for a bar growing down from the baseline. */
139
- BarCorners["BOTTOM"] = "BOTTOM";
140
- /** Interior stack segment — square on both ends. */
141
- BarCorners["NONE"] = "NONE";
142
- return BarCorners;
143
- }({});
144
- /**
145
- * How bar values are scaled before rendering.
146
- *
147
- * Note there is no grouped-vs-stacked mode: with the group → bar → component
148
- * hierarchy, several `bars` in a group render side by side and several
149
- * `components` in a bar render on top of each other, so a chart can be grouped
150
- * and stacked at the same time.
151
- */
152
- var BarChartNormalization = /* @__PURE__ */ function(BarChartNormalization) {
153
- /** Plot raw values. */
154
- BarChartNormalization["NONE"] = "NONE";
155
- /** Scale each bar's components to fill the axis — a 100% stacked chart. */
156
- BarChartNormalization["PERCENT"] = "PERCENT";
157
- return BarChartNormalization;
158
- }({});
159
- /** How the segments between points are interpolated. */
160
- var LineChartCurve = /* @__PURE__ */ function(LineChartCurve) {
161
- /** Straight segments. */
162
- LineChartCurve["LINEAR"] = "LINEAR";
163
- /** Monotone cubic — smooth without overshooting the data. */
164
- LineChartCurve["SMOOTH"] = "SMOOTH";
165
- /** Right-angled steps. */
166
- LineChartCurve["STEP"] = "STEP";
167
- return LineChartCurve;
168
- }({});
169
- /** Which shape a category's hit target is drawn as. */
80
+ /** @internal Shape of a hit target. */
170
81
  var ChartTargetShape = /* @__PURE__ */ function(ChartTargetShape) {
171
- /** Cartesian charts: a full-height band over the category. */
82
+ /** A rectangle: a category band or a bar. */
172
83
  ChartTargetShape["RECT"] = "RECT";
173
- /** Radial charts: the arc's own outline, redrawn transparent. */
84
+ /** A path: an arc outline, redrawn transparent. */
174
85
  ChartTargetShape["PATH"] = "PATH";
175
86
  return ChartTargetShape;
176
87
  }({});
177
88
  //#endregion
178
- export { BarChartNormalization, BarCorners, ChartCategoryLabelMode, ChartKind, ChartLegendPlacement, ChartMarkState, ChartPalette, ChartTargetShape, ChartValueUnit, LineChartCurve };
89
+ export { ChartCurve, ChartKind, ChartLegendPlacement, ChartMarkState, ChartPalette, ChartTargetShape };
@@ -1,70 +1,39 @@
1
- import type { ChartLabelFormatter, ChartMargin, ChartValueDomain, ChartValueFormatter, ChartValueUnit } from "./types";
2
- import type { ChartDimensions } from "./useChartDimensions";
3
1
  /**
4
- * Everything a cartesian chart resolves *before* it can be measured.
5
- *
6
- * There is a hard ordering inside bar and line alike:
7
- *
8
- * ```
9
- * domain → ticks → left margin → dimensions → plot size → geometry
10
- * ```
11
- *
12
- * The gutter has to fit the tick labels, the ticks come from the domain, and
13
- * the domain comes from the data — none of which needs the plot. Everything
14
- * after `geometry` does need it, which is why this hook stops there rather than
15
- * trying to own the whole chart: the geometry builders are generic over the
16
- * chart's own key types, and threading those through here would buy nothing.
17
- *
18
- * Deliberately **not generic**. `getBarValueDomain` and `getLineValueDomain`
19
- * have already erased the key types by the time they return an extent, so
20
- * nothing in this phase needs them.
2
+ * @internal Everything a cartesian chart resolves before its geometry, in the one order that
3
+ * works: measured box → plot height (the top and bottom insets do not depend on the ticks) →
4
+ * domain and ticks thinned to that height → left gutter (fits the tick labels) → plot → geometry.
5
+ * Not generic: the value extent has already erased the series keys.
21
6
  */
22
- interface UseCartesianChartLayoutOptions {
23
- containerRef: React.RefObject<HTMLDivElement | null>;
24
- /**
25
- * The data's own extent, before any override or nicing.
26
- *
27
- * Free to be a fresh array each render — the memo below keys on the two
28
- * numbers, not the array's identity.
29
- */
7
+ import { type RefObject } from "react";
8
+ import type { ChartAxisLabels, ChartLabelFormatter, ChartValueDomain, ChartValueFormatter } from "./types.js";
9
+ import { type ChartDimensions } from "./useChartDimensions.js";
10
+ /** @internal Inputs of `useCartesianChartLayout`. */
11
+ export interface UseCartesianChartLayoutOptions {
12
+ /** The plot box to measure. */
13
+ plotRef: RefObject<HTMLDivElement>;
14
+ /** The data's own extent, before any override or nicing. */
30
15
  rawDomain: [number, number];
31
- valueDomain?: Partial<ChartValueDomain>;
32
- width?: number;
33
- height?: number;
34
- fillWidth?: boolean;
35
- fillHeight?: boolean;
36
- aspectRatio?: number;
37
- margin?: Partial<ChartMargin>;
38
- valueUnit?: ChartValueUnit;
39
- valueFormatter?: ChartValueFormatter;
40
- labelFormatter?: ChartLabelFormatter;
41
- /**
42
- * Rewrites the resolved value formatter for the axis alone.
43
- *
44
- * Takes the resolved formatter rather than replacing it, because the only
45
- * caller — a percent-normalized bar chart — falls back to it whenever the
46
- * consumer asked for something specific. Applies to the tick labels *and* the
47
- * gutter estimate, which is the point: sizing the gutter with a different
48
- * formatter than the one that renders into it is how a gutter ends up too
49
- * narrow for its own labels.
50
- *
51
- * Must be stable; memoize it at the call site.
52
- */
53
- deriveAxisFormatter?: (formatValue: ChartValueFormatter) => ChartValueFormatter;
54
- valueAxisTitle?: string;
55
- categoryAxisTitle?: string;
16
+ /** The `valueDomain` prop. */
17
+ valueDomain?: Partial<ChartValueDomain> | undefined;
18
+ /** The `valueFormatter` prop. */
19
+ valueFormatter?: ChartValueFormatter | undefined;
20
+ /** The `labelFormatter` prop. */
21
+ labelFormatter?: ChartLabelFormatter | undefined;
22
+ /** The `axisLabels` prop. */
23
+ axisLabels?: ChartAxisLabels | undefined;
56
24
  }
25
+ /** @internal The resolved layout. */
57
26
  export interface CartesianChartLayout {
27
+ /** Measured plot box, insets and plot size. */
58
28
  dimensions: ChartDimensions;
59
- /** Override applied, zero included, degenerate widened, `nice()` applied. */
29
+ /** Override applied, zero included, degenerate widened, `nice()`d. */
60
30
  domain: [number, number];
31
+ /** Value tick values. */
61
32
  valueTicks: number[];
62
- /** Tooltip rows and value labels. */
33
+ /** Values: ticks, tooltip rows, announcements. */
63
34
  formatValue: ChartValueFormatter;
64
- /** Category names — the axis and the tooltip heading. */
35
+ /** Category names: the axis and the tooltip heading. */
65
36
  formatLabel: ChartLabelFormatter;
66
- /** Axis ticks. Identical to `formatValue` unless `deriveAxisFormatter` said otherwise. */
67
- formatAxisValue: ChartValueFormatter;
68
37
  }
69
- export declare function useCartesianChartLayout({ containerRef, rawDomain, valueDomain, width, height, fillWidth, fillHeight, aspectRatio, margin, valueUnit, valueFormatter, labelFormatter, deriveAxisFormatter, valueAxisTitle, categoryAxisTitle, }: UseCartesianChartLayoutOptions): CartesianChartLayout;
70
- export {};
38
+ /** @internal Resolves a cartesian chart's domain, ticks, insets, dimensions and formatters. */
39
+ export declare function useCartesianChartLayout({ plotRef, rawDomain, valueDomain, valueFormatter, labelFormatter, axisLabels, }: UseCartesianChartLayoutOptions): CartesianChartLayout;
@@ -1,55 +1,70 @@
1
- import { addAxisTitleSpace, estimateValueAxisMargin, getValueTicks, resolveValueDomain } from "./chartScales.js";
1
+ import { estimateValueAxisInset, getCartesianInsets, resolveValueAxis } from "./chartScales.js";
2
+ import { useElementClientSize } from "../hooks/useElementClientSize.js";
3
+ import { toChartDimensions } from "./useChartDimensions.js";
2
4
  import { useChartFormatters } from "./useChartFormatters.js";
3
- import { useChartDimensions } from "./useChartDimensions.js";
4
5
  import { useMemo } from "react";
5
6
  //#region src/charts/useCartesianChartLayout.ts
6
- function useCartesianChartLayout({ containerRef, rawDomain, valueDomain, width, height, fillWidth, fillHeight, aspectRatio, margin, valueUnit, valueFormatter, labelFormatter, deriveAxisFormatter, valueAxisTitle, categoryAxisTitle }) {
7
- const { formatValue, formatLabel } = useChartFormatters({
8
- valueFormatter,
9
- valueUnit,
10
- labelFormatter
7
+ /**
8
+ * @internal Everything a cartesian chart resolves before its geometry, in the one order that
9
+ * works: measured box → plot height (the top and bottom insets do not depend on the ticks) →
10
+ * domain and ticks thinned to that height → left gutter (fits the tick labels) → plot → geometry.
11
+ * Not generic: the value extent has already erased the series keys.
12
+ */
13
+ /** @internal Resolves a cartesian chart's domain, ticks, insets, dimensions and formatters. */
14
+ function useCartesianChartLayout({ plotRef, rawDomain, valueDomain, valueFormatter, labelFormatter, axisLabels }) {
15
+ const { formatValue, formatLabel } = useChartFormatters(valueFormatter, labelFormatter);
16
+ const { width: measuredWidth, height: measuredHeight } = useElementClientSize(plotRef);
17
+ const width = measuredWidth ?? 0;
18
+ const height = measuredHeight ?? 0;
19
+ const hasValueTitle = Boolean(axisLabels?.value);
20
+ const hasCategoryTitle = Boolean(axisLabels?.category);
21
+ const { top, bottom } = getCartesianInsets(0, {
22
+ hasValueTitle,
23
+ hasCategoryTitle
11
24
  });
12
- const formatAxisValue = useMemo(() => deriveAxisFormatter?.(formatValue) ?? formatValue, [deriveAxisFormatter, formatValue]);
25
+ const plotHeight = height > 0 ? Math.max(0, height - top - bottom) : 0;
13
26
  const [rawMin, rawMax] = rawDomain;
14
- const domain = useMemo(() => resolveValueDomain([rawMin, rawMax], valueDomain), [
27
+ const domainMin = valueDomain?.min;
28
+ const domainMax = valueDomain?.max;
29
+ const tickCount = valueDomain?.tickCount;
30
+ const { domain, ticks: valueTicks } = useMemo(() => resolveValueAxis([rawMin, rawMax], {
31
+ ...domainMin !== void 0 && { min: domainMin },
32
+ ...domainMax !== void 0 && { max: domainMax },
33
+ ...tickCount !== void 0 && { tickCount }
34
+ }, plotHeight), [
15
35
  rawMin,
16
36
  rawMax,
17
- valueDomain
37
+ domainMin,
38
+ domainMax,
39
+ tickCount,
40
+ plotHeight
18
41
  ]);
19
- const valueTicks = useMemo(() => getValueTicks(domain, valueDomain), [domain, valueDomain]);
20
- const dimensions = useChartDimensions({
21
- containerRef,
42
+ const tickInset = useMemo(() => estimateValueAxisInset(valueTicks, formatValue), [valueTicks, formatValue]);
43
+ const insets = useMemo(() => getCartesianInsets(tickInset, {
44
+ hasValueTitle,
45
+ hasCategoryTitle
46
+ }), [
47
+ tickInset,
48
+ hasValueTitle,
49
+ hasCategoryTitle
50
+ ]);
51
+ const dimensions = useMemo(() => toChartDimensions(width, height, insets), [
22
52
  width,
23
53
  height,
24
- fillWidth,
25
- fillHeight,
26
- aspectRatio,
27
- margin: addAxisTitleSpace(useMemo(() => ({
28
- ...margin,
29
- left: margin?.left ?? estimateValueAxisMargin(valueTicks, formatAxisValue)
30
- }), [
31
- margin,
32
- valueTicks,
33
- formatAxisValue
34
- ]), {
35
- hasValueTitle: Boolean(valueAxisTitle),
36
- hasCategoryTitle: Boolean(categoryAxisTitle)
37
- })
38
- });
54
+ insets
55
+ ]);
39
56
  return useMemo(() => ({
40
57
  dimensions,
41
58
  domain,
42
59
  valueTicks,
43
60
  formatValue,
44
- formatLabel,
45
- formatAxisValue
61
+ formatLabel
46
62
  }), [
47
63
  dimensions,
48
64
  domain,
49
65
  valueTicks,
50
66
  formatValue,
51
- formatLabel,
52
- formatAxisValue
67
+ formatLabel
53
68
  ]);
54
69
  }
55
70
  //#endregion
@@ -1,47 +1,26 @@
1
- import type { ChartMargin } from "./types";
2
- interface UseChartDimensionsOptions {
3
- /**
4
- * The element to measure.
5
- *
6
- * Owned by the caller rather than returned from here: a hook that hands back
7
- * a ref inside its result object reads as a ref access during render, both to
8
- * the `react-hooks/refs` lint rule and to anyone reviewing the call site.
9
- */
10
- containerRef: React.RefObject<HTMLElement | null>;
11
- width?: number;
12
- height?: number;
13
- fillWidth?: boolean;
14
- /**
15
- * Take the height from the measured box rather than a prop.
16
- *
17
- * Requires an ancestor with a definite height — see {@link ChartSize}. The
18
- * measured element is the *plot box*, not the chart root, so the legend is
19
- * already excluded by flexbox and nothing here has to subtract it.
20
- */
21
- fillHeight?: boolean;
22
- aspectRatio?: number;
23
- margin?: Partial<ChartMargin>;
24
- /**
25
- * Fallback for whichever fields `margin` leaves out.
26
- *
27
- * Radial charts pass their own, since the cartesian default reserves gutters
28
- * for axes they do not draw. Merged per field, so a caller's partial margin
29
- * lands on top of *this* rather than reverting the chart to the cartesian
30
- * defaults.
31
- */
32
- defaultMargin?: ChartMargin;
33
- }
1
+ /**
2
+ * @internal Measures a chart's plot box. The chart fills its parent (or takes its 2:1
3
+ * aspect-ratio fallback through CSS), so the box already has its size before measurement lands
4
+ * and nothing shifts. SSR-safe: `useElementClientSize` measures in an effect.
5
+ */
6
+ import { type RefObject } from "react";
7
+ import type { ChartInsets } from "./chartScales.js";
8
+ /** @internal The measured plot box and the plot inside it. */
34
9
  export interface ChartDimensions {
10
+ /** Plot box width (client pixels). */
35
11
  width: number;
12
+ /** Plot box height (client pixels). */
36
13
  height: number;
14
+ /** Plot width: the box less the left and right insets, never negative. */
37
15
  plotWidth: number;
16
+ /** Plot height: the box less the top and bottom insets, never negative. */
38
17
  plotHeight: number;
39
- margin: ChartMargin;
40
- /** False until the box has usable dimensions; guard mark rendering on it. */
18
+ /** Space between the box edge and the plot. */
19
+ insets: ChartInsets;
20
+ /** `false` until the first measurement with a usable size; marks render only after it. */
41
21
  isMeasured: boolean;
42
- /** Handed to the plot box so it reserves space before measurement lands. */
43
- reservedHeight?: number;
44
- reservedAspectRatio?: number;
45
22
  }
46
- export declare function useChartDimensions({ containerRef, width, height, fillWidth, fillHeight, aspectRatio, margin: marginOverride, defaultMargin, }: UseChartDimensionsOptions): ChartDimensions;
47
- export {};
23
+ /** @internal The plot inside a measured `width` × `height` box (pure: the hook below, without measuring). */
24
+ export declare function toChartDimensions(width: number, height: number, insets: ChartInsets): ChartDimensions;
25
+ /** @internal Measures `plotRef` (the plot box, not the root: the legend is a sibling). */
26
+ export declare function useChartDimensions(plotRef: RefObject<HTMLElement | null>, insets: ChartInsets): ChartDimensions;
@@ -1,63 +1,47 @@
1
1
  import { useElementClientSize } from "../hooks/useElementClientSize.js";
2
- import { DEFAULT_CHART_MARGIN } from "./constants.js";
3
- import { getPlotDimensions, resolveMargin } from "./chartScales.js";
4
- import { useEffect, useMemo } from "react";
2
+ import { useMemo } from "react";
5
3
  //#region src/charts/useChartDimensions.ts
6
- function useChartDimensions({ containerRef, width, height, fillWidth = false, fillHeight = false, aspectRatio, margin: marginOverride, defaultMargin }) {
7
- const { width: measuredWidth, height: measuredHeight } = useElementClientSize(containerRef);
8
- const resolvedWidth = fillWidth ? measuredWidth ?? 0 : width ?? 0;
9
- const resolvedHeight = fillHeight ? measuredHeight ?? 0 : aspectRatio ? resolvedWidth / aspectRatio : height ?? 0;
10
- const { top: marginTop, right: marginRight, bottom: marginBottom, left: marginLeft } = marginOverride ?? {};
11
- const { top: defaultTop, right: defaultRight, bottom: defaultBottom, left: defaultLeft } = defaultMargin ?? DEFAULT_CHART_MARGIN;
12
- const margin = useMemo(() => resolveMargin({
13
- top: marginTop,
14
- right: marginRight,
15
- bottom: marginBottom,
16
- left: marginLeft
17
- }, {
18
- top: defaultTop,
19
- right: defaultRight,
20
- bottom: defaultBottom,
21
- left: defaultLeft
22
- }), [
23
- marginTop,
24
- marginRight,
25
- marginBottom,
26
- marginLeft,
27
- defaultTop,
28
- defaultRight,
29
- defaultBottom,
30
- defaultLeft
31
- ]);
32
- const { plotWidth, plotHeight } = useMemo(() => getPlotDimensions(resolvedWidth, resolvedHeight, margin), [
33
- resolvedWidth,
34
- resolvedHeight,
35
- margin
36
- ]);
37
- useEffect(() => {
38
- if (typeof process !== "undefined" && process.env.NODE_ENV === "production") return;
39
- if (!fillHeight || measuredHeight === void 0 || measuredHeight > 0) return;
40
- console.warn("[@galaxy-io/dls] A chart with `fillHeight` measured 0px tall and will not render. `fillHeight` takes its height from the container, so an ancestor needs a definite height — an explicit height, a flex or grid track, or absolute positioning. Use `height` or `aspectRatio` instead if the container is sized by its content.");
41
- }, [fillHeight, measuredHeight]);
42
- return useMemo(() => ({
43
- width: resolvedWidth,
44
- height: resolvedHeight,
45
- plotWidth,
46
- plotHeight,
47
- margin,
48
- isMeasured: resolvedWidth > 0 && resolvedHeight > 0,
49
- reservedHeight: fillHeight || aspectRatio ? void 0 : height,
50
- reservedAspectRatio: fillHeight ? void 0 : aspectRatio
4
+ /**
5
+ * @internal Measures a chart's plot box. The chart fills its parent (or takes its 2:1
6
+ * aspect-ratio fallback through CSS), so the box already has its size before measurement lands
7
+ * and nothing shifts. SSR-safe: `useElementClientSize` measures in an effect.
8
+ */
9
+ /** @internal The plot inside a measured `width` × `height` box (pure: the hook below, without measuring). */
10
+ function toChartDimensions(width, height, insets) {
11
+ const { top, right, bottom, left } = insets;
12
+ return {
13
+ width,
14
+ height,
15
+ plotWidth: Math.max(0, width - left - right),
16
+ plotHeight: Math.max(0, height - top - bottom),
17
+ insets: {
18
+ top,
19
+ right,
20
+ bottom,
21
+ left
22
+ },
23
+ isMeasured: width > 0 && height > 0
24
+ };
25
+ }
26
+ /** @internal Measures `plotRef` (the plot box, not the root: the legend is a sibling). */
27
+ function useChartDimensions(plotRef, insets) {
28
+ const { width: measuredWidth, height: measuredHeight } = useElementClientSize(plotRef);
29
+ const width = measuredWidth ?? 0;
30
+ const height = measuredHeight ?? 0;
31
+ const { top, right, bottom, left } = insets;
32
+ return useMemo(() => toChartDimensions(width, height, {
33
+ top,
34
+ right,
35
+ bottom,
36
+ left
51
37
  }), [
52
- resolvedWidth,
53
- resolvedHeight,
54
- plotWidth,
55
- plotHeight,
56
- margin,
57
- aspectRatio,
38
+ width,
58
39
  height,
59
- fillHeight
40
+ top,
41
+ right,
42
+ bottom,
43
+ left
60
44
  ]);
61
45
  }
62
46
  //#endregion
63
- export { useChartDimensions };
47
+ export { toChartDimensions, useChartDimensions };
@@ -1,19 +1,10 @@
1
- import type { ChartLabelFormatter, ChartValueFormatter, ChartValueUnit } from "./types";
2
- interface UseChartFormattersOptions {
3
- valueFormatter?: ChartValueFormatter;
4
- valueUnit?: ChartValueUnit;
5
- labelFormatter?: ChartLabelFormatter;
6
- }
1
+ import type { ChartLabelFormatter, ChartValueFormatter } from "./types.js";
2
+ /** @internal The resolved formatters. */
7
3
  export interface ChartFormatters {
4
+ /** Values: axis ticks, tooltip rows, announcements. */
8
5
  formatValue: ChartValueFormatter;
6
+ /** Category names: the axis and the tooltip heading. */
9
7
  formatLabel: ChartLabelFormatter;
10
8
  }
11
- /**
12
- * Resolves the value and label formatters once per chart.
13
- *
14
- * Doing this centrally is what keeps axis ticks, value labels and tooltip rows
15
- * from drifting apart — the recurring failure when each call site formats for
16
- * itself.
17
- */
18
- export declare function useChartFormatters({ valueFormatter, valueUnit, labelFormatter, }: UseChartFormattersOptions): ChartFormatters;
19
- export {};
9
+ /** @internal Resolves `valueFormatter` (default `formatNumber(v, { precision: 2 })`) and `labelFormatter` (identity). */
10
+ export declare function useChartFormatters(valueFormatter?: ChartValueFormatter, labelFormatter?: ChartLabelFormatter): ChartFormatters;