@galaxy-io/dls 1.6.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (538) hide show
  1. package/README.md +47 -50
  2. package/biome/index.json +74 -0
  3. package/biome/plugins/no-hex-literal.grit +20 -0
  4. package/biome/plugins/no-inline-style.grit +13 -0
  5. package/biome/plugins/no-margin.grit +9 -0
  6. package/biome/plugins/warn/no-hex-literal.grit +23 -0
  7. package/biome/plugins/warn/no-inline-style.grit +13 -0
  8. package/biome/plugins/warn/no-margin.grit +9 -0
  9. package/dist/a11y/FocusScope.d.ts +44 -0
  10. package/dist/a11y/FocusScope.js +229 -0
  11. package/dist/a11y/VisuallyHidden.d.ts +21 -0
  12. package/dist/a11y/VisuallyHidden.js +30 -0
  13. package/dist/avatar/Avatar.d.ts +56 -14
  14. package/dist/avatar/Avatar.js +250 -96
  15. package/dist/avatar/AvatarGroup.d.ts +43 -0
  16. package/dist/avatar/AvatarGroup.js +153 -0
  17. package/dist/backgrounds/GridBackground.d.ts +48 -0
  18. package/dist/backgrounds/GridBackground.js +146 -0
  19. package/dist/beacons/Beacon.d.ts +86 -22
  20. package/dist/beacons/Beacon.js +170 -47
  21. package/dist/brand/GalaxyFilamentWordmark.d.ts +30 -0
  22. package/dist/brand/GalaxyFilamentWordmark.js +39 -0
  23. package/dist/brand/GalaxyLogomark.d.ts +26 -0
  24. package/dist/brand/GalaxyLogomark.js +41 -0
  25. package/dist/brand/GalaxyLogomarkAnimation.d.ts +36 -0
  26. package/dist/brand/GalaxyLogomarkAnimation.js +107 -0
  27. package/dist/brand/GalaxyWordmark.d.ts +30 -0
  28. package/dist/brand/GalaxyWordmark.js +63 -0
  29. package/dist/brand/assets/galaxy-logomark-animation.js +136678 -0
  30. package/dist/brand/brandMark.d.ts +26 -0
  31. package/dist/brand/brandMark.js +35 -0
  32. package/dist/buttons/Button.d.ts +148 -59
  33. package/dist/buttons/Button.js +437 -227
  34. package/dist/buttons/ButtonGroup.d.ts +38 -0
  35. package/dist/buttons/ButtonGroup.js +68 -0
  36. package/dist/buttons/CopyButton.d.ts +77 -0
  37. package/dist/buttons/CopyButton.js +65 -0
  38. package/dist/charts/AreaChart.d.ts +49 -0
  39. package/dist/charts/AreaChart.js +31 -0
  40. package/dist/charts/BarChart.d.ts +54 -67
  41. package/dist/charts/BarChart.js +136 -116
  42. package/dist/charts/ChartAxis.d.ts +35 -40
  43. package/dist/charts/ChartAxis.js +114 -90
  44. package/dist/charts/ChartCategoryTargets.d.ts +12 -26
  45. package/dist/charts/ChartCategoryTargets.js +32 -20
  46. package/dist/charts/ChartFrame.d.ts +69 -116
  47. package/dist/charts/ChartFrame.js +253 -119
  48. package/dist/charts/ChartGroupProvider.d.ts +30 -41
  49. package/dist/charts/ChartGroupProvider.js +20 -7
  50. package/dist/charts/ChartLegend.d.ts +27 -48
  51. package/dist/charts/ChartLegend.js +206 -125
  52. package/dist/charts/ChartMarkTargets.d.ts +12 -28
  53. package/dist/charts/ChartMarkTargets.js +33 -20
  54. package/dist/charts/ChartPrimitives.d.ts +50 -305
  55. package/dist/charts/ChartPrimitives.js +65 -413
  56. package/dist/charts/ChartTooltip.d.ts +20 -26
  57. package/dist/charts/ChartTooltip.js +77 -40
  58. package/dist/charts/Heatmap.d.ts +35 -0
  59. package/dist/charts/Heatmap.js +295 -0
  60. package/dist/charts/LineChart.d.ts +54 -47
  61. package/dist/charts/LineChart.js +159 -117
  62. package/dist/charts/PieChart.d.ts +32 -53
  63. package/dist/charts/PieChart.js +149 -135
  64. package/dist/charts/Sparkline.d.ts +107 -0
  65. package/dist/charts/Sparkline.js +244 -0
  66. package/dist/charts/StatChart.d.ts +37 -13
  67. package/dist/charts/StatChart.js +82 -35
  68. package/dist/charts/barChartGeometry.d.ts +138 -86
  69. package/dist/charts/barChartGeometry.js +122 -101
  70. package/dist/charts/barChartLegend.d.ts +14 -18
  71. package/dist/charts/barChartLegend.js +18 -13
  72. package/dist/charts/chartFormat.d.ts +12 -18
  73. package/dist/charts/chartFormat.js +20 -52
  74. package/dist/charts/chartPalette.d.ts +33 -0
  75. package/dist/charts/chartPalette.js +68 -0
  76. package/dist/charts/chartScales.d.ts +41 -108
  77. package/dist/charts/chartScales.js +62 -128
  78. package/dist/charts/constants.d.ts +96 -256
  79. package/dist/charts/constants.js +105 -275
  80. package/dist/charts/heatmapGeometry.d.ts +95 -0
  81. package/dist/charts/heatmapGeometry.js +155 -0
  82. package/dist/charts/lineChartGeometry.d.ts +108 -58
  83. package/dist/charts/lineChartGeometry.js +120 -78
  84. package/dist/charts/pieChartGeometry.d.ts +66 -40
  85. package/dist/charts/pieChartGeometry.js +68 -38
  86. package/dist/charts/types.d.ts +197 -466
  87. package/dist/charts/types.js +55 -144
  88. package/dist/charts/useCartesianChartLayout.d.ts +28 -59
  89. package/dist/charts/useCartesianChartLayout.js +47 -32
  90. package/dist/charts/useChartDimensions.d.ts +19 -40
  91. package/dist/charts/useChartDimensions.js +40 -56
  92. package/dist/charts/useChartFormatters.d.ts +6 -15
  93. package/dist/charts/useChartFormatters.js +4 -9
  94. package/dist/charts/useChartInteraction.d.ts +47 -116
  95. package/dist/charts/useChartInteraction.js +95 -71
  96. package/dist/charts/useChartTooltipPosition.d.ts +29 -39
  97. package/dist/charts/useChartTooltipPosition.js +14 -5
  98. package/dist/charts/useSeriesColorResolver.d.ts +11 -33
  99. package/dist/charts/useSeriesColorResolver.js +19 -12
  100. package/dist/chips/Chip.d.ts +155 -44
  101. package/dist/chips/Chip.js +329 -155
  102. package/dist/chips/ChipGroup.d.ts +53 -0
  103. package/dist/chips/ChipGroup.js +98 -0
  104. package/dist/drawer/Drawer.d.ts +81 -17
  105. package/dist/drawer/Drawer.js +370 -65
  106. package/dist/dropdown/Dropdown.d.ts +80 -63
  107. package/dist/dropdown/Dropdown.js +127 -129
  108. package/dist/editor/CodeEditor.d.ts +119 -40
  109. package/dist/editor/CodeEditor.js +490 -400
  110. package/dist/editor/CodeEditorReactWidget.d.ts +20 -17
  111. package/dist/editor/CodeEditorReactWidget.js +28 -21
  112. package/dist/feedback/Alert.d.ts +49 -0
  113. package/dist/feedback/Alert.js +172 -0
  114. package/dist/feedback/EmptyState.d.ts +39 -0
  115. package/dist/feedback/EmptyState.js +109 -0
  116. package/dist/feedback/ProgressBar.d.ts +125 -0
  117. package/dist/feedback/ProgressBar.js +183 -0
  118. package/dist/feedback/ProgressCircle.d.ts +99 -0
  119. package/dist/feedback/ProgressCircle.js +187 -0
  120. package/dist/feedback/Skeleton.d.ts +69 -0
  121. package/dist/feedback/Skeleton.js +130 -0
  122. package/dist/feedback/Spinner.d.ts +63 -0
  123. package/dist/feedback/Spinner.js +141 -0
  124. package/dist/fonts.css +70 -0
  125. package/dist/hooks/internal/useIsClient.d.ts +2 -0
  126. package/dist/hooks/internal/useIsClient.js +14 -0
  127. package/dist/hooks/useClipboard.d.ts +19 -0
  128. package/dist/hooks/useClipboard.js +45 -0
  129. package/dist/hooks/useControlledOpenState.d.ts +21 -0
  130. package/dist/hooks/useControlledOpenState.js +19 -0
  131. package/dist/hooks/useControlledState.d.ts +19 -0
  132. package/dist/hooks/useControlledState.js +22 -0
  133. package/dist/hooks/useDebouncedValue.d.ts +14 -0
  134. package/dist/hooks/useDebouncedValue.js +33 -0
  135. package/dist/hooks/useDisclosure.d.ts +26 -0
  136. package/dist/hooks/useDisclosure.js +36 -0
  137. package/dist/hooks/useDismiss.d.ts +23 -27
  138. package/dist/hooks/useDismiss.js +39 -27
  139. package/dist/hooks/useElementClientSize.d.ts +10 -10
  140. package/dist/hooks/useElementClientSize.js +8 -11
  141. package/dist/hooks/useElementWidth.d.ts +6 -13
  142. package/dist/hooks/useElementWidth.js +6 -14
  143. package/dist/hooks/useField.d.ts +47 -0
  144. package/dist/hooks/useField.js +40 -0
  145. package/dist/hooks/useHotkey.d.ts +77 -0
  146. package/dist/hooks/useHotkey.js +246 -0
  147. package/dist/hooks/useIsMac.d.ts +12 -0
  148. package/dist/hooks/useIsMac.js +27 -0
  149. package/dist/hooks/useIsomorphicLayoutEffect.d.ts +17 -0
  150. package/dist/hooks/useIsomorphicLayoutEffect.js +20 -0
  151. package/dist/hooks/useLocalStorage.d.ts +28 -0
  152. package/dist/hooks/useLocalStorage.js +145 -0
  153. package/dist/hooks/useMediaQuery.d.ts +11 -0
  154. package/dist/hooks/useMediaQuery.js +23 -0
  155. package/dist/hooks/usePrefersReducedMotion.d.ts +12 -0
  156. package/dist/hooks/usePrefersReducedMotion.js +25 -0
  157. package/dist/hooks/useResize.d.ts +42 -62
  158. package/dist/hooks/useResize.js +43 -31
  159. package/dist/icons/Icon.d.ts +64 -37
  160. package/dist/icons/Icon.js +96 -37
  161. package/dist/icons/internal/IconSlot.d.ts +10 -0
  162. package/dist/icons/internal/IconSlot.js +32 -0
  163. package/dist/inputs/CheckboxGroup.d.ts +115 -0
  164. package/dist/inputs/CheckboxGroup.js +183 -0
  165. package/dist/inputs/CheckboxInput.d.ts +98 -28
  166. package/dist/inputs/CheckboxInput.js +218 -88
  167. package/dist/inputs/ColorInput.d.ts +115 -29
  168. package/dist/inputs/ColorInput.js +748 -326
  169. package/dist/inputs/CopyInput.d.ts +49 -20
  170. package/dist/inputs/CopyInput.js +57 -49
  171. package/dist/inputs/CronInput.d.ts +94 -0
  172. package/dist/inputs/CronInput.js +618 -0
  173. package/dist/inputs/DateInput.d.ts +175 -28
  174. package/dist/inputs/DateInput.js +1109 -451
  175. package/dist/inputs/DurationInput.d.ts +101 -0
  176. package/dist/inputs/DurationInput.js +441 -0
  177. package/dist/inputs/Field.d.ts +75 -0
  178. package/dist/inputs/Field.js +247 -0
  179. package/dist/inputs/Fieldset.d.ts +53 -0
  180. package/dist/inputs/Fieldset.js +149 -0
  181. package/dist/inputs/FileInput.d.ts +110 -0
  182. package/dist/inputs/FileInput.js +476 -0
  183. package/dist/inputs/Input.d.ts +148 -187
  184. package/dist/inputs/Input.js +339 -259
  185. package/dist/inputs/KeyValueInput.d.ts +120 -0
  186. package/dist/inputs/KeyValueInput.js +383 -0
  187. package/dist/inputs/MultiSelectInput.d.ts +165 -54
  188. package/dist/inputs/MultiSelectInput.js +175 -559
  189. package/dist/inputs/NumberInput.d.ts +65 -9
  190. package/dist/inputs/NumberInput.js +197 -40
  191. package/dist/inputs/PasswordInput.d.ts +17 -12
  192. package/dist/inputs/PasswordInput.js +33 -33
  193. package/dist/inputs/PinInput.d.ts +117 -0
  194. package/dist/inputs/PinInput.js +364 -0
  195. package/dist/inputs/RadioGroup.d.ts +115 -0
  196. package/dist/inputs/RadioGroup.js +179 -0
  197. package/dist/inputs/RadioInput.d.ts +87 -24
  198. package/dist/inputs/RadioInput.js +182 -95
  199. package/dist/inputs/SearchInput.d.ts +66 -0
  200. package/dist/inputs/SearchInput.js +156 -0
  201. package/dist/inputs/SelectInput.d.ts +195 -55
  202. package/dist/inputs/SelectInput.js +1308 -446
  203. package/dist/inputs/SliderInput.d.ts +150 -30
  204. package/dist/inputs/SliderInput.js +441 -186
  205. package/dist/inputs/SwitchInput.d.ts +109 -0
  206. package/dist/inputs/SwitchInput.js +248 -0
  207. package/dist/inputs/TagInput.d.ts +117 -0
  208. package/dist/inputs/TagInput.js +408 -0
  209. package/dist/inputs/TextAreaInput.d.ts +146 -44
  210. package/dist/inputs/TextAreaInput.js +292 -198
  211. package/dist/inputs/TextInput.d.ts +4 -13
  212. package/dist/inputs/TextInput.js +13 -48
  213. package/dist/inputs/ToggleInput.d.ts +120 -22
  214. package/dist/inputs/ToggleInput.js +262 -116
  215. package/dist/inputs/internal/bareField.d.ts +18 -0
  216. package/dist/inputs/internal/bareField.js +38 -0
  217. package/dist/inputs/internal/devWarn.d.ts +7 -0
  218. package/dist/inputs/internal/devWarn.js +30 -0
  219. package/dist/inputs/internal/fieldFrame.d.ts +34 -0
  220. package/dist/inputs/internal/fieldFrame.js +64 -0
  221. package/dist/inputs/internal/fieldWiring.d.ts +50 -0
  222. package/dist/inputs/internal/fieldWiring.js +38 -0
  223. package/dist/inputs/internal/innerButton.d.ts +2 -0
  224. package/dist/inputs/internal/innerButton.js +24 -0
  225. package/dist/inputs/internal/ownField.d.ts +45 -0
  226. package/dist/inputs/internal/ownField.js +58 -0
  227. package/dist/inputs/internal/predicates.d.ts +9 -0
  228. package/dist/inputs/internal/predicates.js +11 -0
  229. package/dist/inputs/internal/useComboboxPopover.d.ts +46 -0
  230. package/dist/inputs/internal/useComboboxPopover.js +92 -0
  231. package/dist/json/JsonViewer.d.ts +62 -0
  232. package/dist/json/JsonViewer.js +483 -0
  233. package/dist/layout/Box.d.ts +87 -0
  234. package/dist/layout/Box.js +109 -0
  235. package/dist/layout/Divider.d.ts +25 -0
  236. package/dist/layout/Divider.js +70 -0
  237. package/dist/layout/Flex.d.ts +139 -0
  238. package/dist/layout/Flex.js +165 -0
  239. package/dist/layout/FlexItem.d.ts +72 -0
  240. package/dist/layout/FlexItem.js +84 -0
  241. package/dist/layout/Grid.d.ts +140 -0
  242. package/dist/layout/Grid.js +178 -0
  243. package/dist/layout/Portal.d.ts +29 -0
  244. package/dist/layout/Portal.js +27 -0
  245. package/dist/layout/ResizablePanels.d.ts +88 -0
  246. package/dist/layout/ResizablePanels.js +198 -0
  247. package/dist/layout/ResizeHandle.d.ts +48 -0
  248. package/dist/layout/ResizeHandle.js +143 -0
  249. package/dist/layout/ScrollArea.d.ts +30 -0
  250. package/dist/layout/ScrollArea.js +138 -0
  251. package/dist/links/Link.d.ts +101 -1
  252. package/dist/links/Link.js +166 -4
  253. package/dist/lists/BulletedList.d.ts +25 -7
  254. package/dist/lists/BulletedList.js +72 -27
  255. package/dist/lists/DescriptionList.d.ts +91 -0
  256. package/dist/lists/DescriptionList.js +147 -0
  257. package/dist/menu/ContextMenu.d.ts +64 -0
  258. package/dist/menu/ContextMenu.js +34 -0
  259. package/dist/menu/Menu.d.ts +280 -0
  260. package/dist/menu/Menu.js +1003 -0
  261. package/dist/modal/ConfirmDialog.d.ts +55 -0
  262. package/dist/modal/ConfirmDialog.js +151 -0
  263. package/dist/modal/Modal.d.ts +64 -14
  264. package/dist/modal/Modal.js +189 -48
  265. package/dist/navigation/Breadcrumbs.d.ts +65 -0
  266. package/dist/navigation/Breadcrumbs.js +243 -0
  267. package/dist/navigation/CommandPalette.d.ts +83 -0
  268. package/dist/navigation/CommandPalette.js +509 -0
  269. package/dist/navigation/Pagination.d.ts +87 -0
  270. package/dist/navigation/Pagination.js +300 -0
  271. package/dist/navigation/SidebarNav.d.ts +107 -0
  272. package/dist/navigation/SidebarNav.js +341 -0
  273. package/dist/navigation/Stepper.d.ts +52 -0
  274. package/dist/navigation/Stepper.js +207 -0
  275. package/dist/navigation/Tabs.d.ts +113 -0
  276. package/dist/navigation/Tabs.js +543 -0
  277. package/dist/navigation/Topbar.d.ts +20 -0
  278. package/dist/navigation/Topbar.js +62 -0
  279. package/dist/overlay/OverlayProvider.d.ts +28 -32
  280. package/dist/overlay/OverlayProvider.js +42 -93
  281. package/dist/overlay/useOverlay.d.ts +88 -12
  282. package/dist/overlay/useOverlay.js +220 -43
  283. package/dist/overlays/Popover.d.ts +114 -0
  284. package/dist/overlays/Popover.js +389 -0
  285. package/dist/shapes/Circle.d.ts +84 -8
  286. package/dist/shapes/Circle.js +122 -20
  287. package/dist/shapes/Square.d.ts +84 -8
  288. package/dist/shapes/Square.js +123 -20
  289. package/dist/styles/mixins.d.ts +35 -0
  290. package/dist/styles/mixins.js +60 -0
  291. package/dist/styles.css +1 -202
  292. package/dist/table/InfiniteSpreadsheet.d.ts +140 -10
  293. package/dist/table/InfiniteSpreadsheet.js +762 -225
  294. package/dist/table/InfiniteTable.d.ts +116 -14
  295. package/dist/table/InfiniteTable.js +287 -429
  296. package/dist/table/SpreadsheetCellEditor.d.ts +54 -6
  297. package/dist/table/SpreadsheetCellEditor.js +163 -84
  298. package/dist/table/TableCore.d.ts +252 -0
  299. package/dist/table/TableCore.js +1077 -0
  300. package/dist/table/VirtualizedInfiniteTable.d.ts +104 -14
  301. package/dist/table/VirtualizedInfiniteTable.js +280 -219
  302. package/dist/table/types.d.ts +66 -244
  303. package/dist/table/types.js +0 -51
  304. package/dist/table/useInfiniteScrollSentinel.d.ts +25 -21
  305. package/dist/table/useInfiniteScrollSentinel.js +38 -30
  306. package/dist/table/useSpreadsheetCellNavigation.d.ts +44 -0
  307. package/dist/table/useSpreadsheetCellNavigation.js +141 -0
  308. package/dist/table/useTableColumnLayout.d.ts +90 -25
  309. package/dist/table/useTableColumnLayout.js +255 -50
  310. package/dist/table/useTableKeyboardNavigation.d.ts +32 -21
  311. package/dist/table/useTableKeyboardNavigation.js +95 -71
  312. package/dist/table/useTableRowSelection.d.ts +24 -25
  313. package/dist/table/useTableRowSelection.js +57 -84
  314. package/dist/table/useTableVirtualizer.d.ts +20 -0
  315. package/dist/table/useTableVirtualizer.js +48 -0
  316. package/dist/text/Bold.d.ts +5 -6
  317. package/dist/text/Bold.js +16 -15
  318. package/dist/text/Code.d.ts +5 -6
  319. package/dist/text/Code.js +16 -25
  320. package/dist/text/CodeBlock.d.ts +77 -0
  321. package/dist/text/CodeBlock.js +373 -0
  322. package/dist/text/EditableText.d.ts +55 -15
  323. package/dist/text/EditableText.js +153 -135
  324. package/dist/text/Ellipsis.d.ts +34 -8
  325. package/dist/text/Ellipsis.js +55 -23
  326. package/dist/text/Kbd.d.ts +72 -0
  327. package/dist/text/Kbd.js +284 -0
  328. package/dist/text/MarkdownText.d.ts +27 -10
  329. package/dist/text/MarkdownText.js +317 -300
  330. package/dist/text/RequiredMarker.d.ts +17 -5
  331. package/dist/text/RequiredMarker.js +34 -36
  332. package/dist/text/Selectable.d.ts +5 -6
  333. package/dist/text/Selectable.js +16 -13
  334. package/dist/text/Span.d.ts +82 -0
  335. package/dist/text/Span.js +115 -0
  336. package/dist/text/Text.d.ts +128 -41
  337. package/dist/text/Text.js +209 -76
  338. package/dist/theme/GalaxyProvider.d.ts +75 -0
  339. package/dist/theme/GalaxyProvider.js +223 -0
  340. package/dist/theme/ThemeSwitcher.d.ts +52 -0
  341. package/dist/theme/ThemeSwitcher.js +94 -0
  342. package/dist/theme/enums.d.ts +118 -0
  343. package/dist/theme/enums.js +144 -0
  344. package/dist/theme/tokens/dark.d.ts +2 -0
  345. package/dist/theme/tokens/dark.js +275 -0
  346. package/dist/theme/tokens/generate.d.ts +15 -0
  347. package/dist/theme/tokens/generate.js +47 -0
  348. package/dist/theme/tokens/light.d.ts +2 -0
  349. package/dist/theme/tokens/light.js +274 -0
  350. package/dist/theme/tokens/palette.d.ts +14 -0
  351. package/dist/theme/tokens/palette.js +153 -0
  352. package/dist/theme/tokens/scales.d.ts +26 -0
  353. package/dist/theme/tokens/scales.js +154 -0
  354. package/dist/theme/tokens/t.d.ts +3 -0
  355. package/dist/theme/tokens/t.js +25 -0
  356. package/dist/theme/tokens/types.d.ts +189 -0
  357. package/dist/theme/tokens/types.js +0 -0
  358. package/dist/theme/useGalaxyTheme.d.ts +46 -0
  359. package/dist/theme/useGalaxyTheme.js +36 -0
  360. package/dist/theme/useInverseScope.d.ts +18 -0
  361. package/dist/theme/useInverseScope.js +33 -0
  362. package/dist/three/GalaxyLogomark3D.d.ts +46 -0
  363. package/dist/three/GalaxyLogomark3D.js +134 -0
  364. package/dist/three/assets/galaxy-logomark.js +4 -0
  365. package/dist/three/galaxyLogomark3DScene.d.ts +27 -0
  366. package/dist/three/galaxyLogomark3DScene.js +165 -0
  367. package/dist/timeline/Timeline.d.ts +99 -0
  368. package/dist/timeline/Timeline.js +269 -0
  369. package/dist/toast/Toast.d.ts +43 -19
  370. package/dist/toast/Toast.js +130 -89
  371. package/dist/toast/ToastProvider.d.ts +23 -23
  372. package/dist/toast/ToastProvider.js +298 -101
  373. package/dist/toast/ToastViewport.d.ts +12 -0
  374. package/dist/toast/ToastViewport.js +210 -0
  375. package/dist/toast/useToast.d.ts +139 -5
  376. package/dist/toast/useToast.js +15 -13
  377. package/dist/tokens.css +654 -0
  378. package/dist/tooltip/Tooltip.d.ts +64 -44
  379. package/dist/tooltip/Tooltip.js +280 -73
  380. package/dist/tooltip/internal/LazyTooltip.d.ts +7 -0
  381. package/dist/tooltip/internal/LazyTooltip.js +53 -0
  382. package/dist/transform/Fade.d.ts +33 -11
  383. package/dist/transform/Fade.js +71 -19
  384. package/dist/transform/Flasher.d.ts +25 -0
  385. package/dist/transform/Flasher.js +39 -0
  386. package/dist/transform/Rotate.d.ts +24 -12
  387. package/dist/transform/Rotate.js +36 -22
  388. package/dist/transform/ScaleFade.d.ts +36 -11
  389. package/dist/transform/ScaleFade.js +86 -28
  390. package/dist/transform/internal/CollapseMotion.d.ts +10 -0
  391. package/dist/transform/internal/CollapseMotion.js +65 -0
  392. package/dist/tree/Tree.d.ts +85 -0
  393. package/dist/tree/Tree.js +387 -0
  394. package/dist/tree/treeRow.d.ts +39 -0
  395. package/dist/tree/treeRow.js +75 -0
  396. package/dist/utils/colors.d.ts +46 -13
  397. package/dist/utils/colors.js +92 -34
  398. package/dist/utils/css.d.ts +23 -0
  399. package/dist/utils/css.js +30 -0
  400. package/dist/utils/format.d.ts +58 -0
  401. package/dist/utils/format.js +220 -0
  402. package/dist/vite/index.d.ts +16 -0
  403. package/dist/vite/index.js +52 -0
  404. package/dist/widget/Widget.d.ts +164 -48
  405. package/dist/widget/Widget.js +335 -96
  406. package/dist/widget/WidgetGroup.d.ts +36 -0
  407. package/dist/widget/WidgetGroup.js +103 -0
  408. package/package.json +851 -157
  409. package/dist/accordion/Accordion.d.ts +0 -54
  410. package/dist/accordion/Accordion.js +0 -183
  411. package/dist/assets/components/GalaxyFilamentWordmarkDark.d.ts +0 -3
  412. package/dist/assets/components/GalaxyFilamentWordmarkDark.js +0 -14
  413. package/dist/assets/components/GalaxyFilamentWordmarkLight.d.ts +0 -3
  414. package/dist/assets/components/GalaxyFilamentWordmarkLight.js +0 -14
  415. package/dist/assets/components/GalaxyLogomarkDark.d.ts +0 -3
  416. package/dist/assets/components/GalaxyLogomarkDark.js +0 -11
  417. package/dist/assets/components/GalaxyLogomarkLight.d.ts +0 -3
  418. package/dist/assets/components/GalaxyLogomarkLight.js +0 -17
  419. package/dist/assets/components/GalaxyWordmarkDark.d.ts +0 -3
  420. package/dist/assets/components/GalaxyWordmarkDark.js +0 -15
  421. package/dist/assets/components/GalaxyWordmarkLight.d.ts +0 -3
  422. package/dist/assets/components/GalaxyWordmarkLight.js +0 -28
  423. package/dist/assets/models/galaxy-animation.js +0 -136666
  424. package/dist/assets/models/galaxy-logomark.js +0 -4
  425. package/dist/avatar/AvatarShimmer.d.ts +0 -30
  426. package/dist/avatar/AvatarShimmer.js +0 -22
  427. package/dist/backgrounds/CellGridBackground.d.ts +0 -24
  428. package/dist/backgrounds/CellGridBackground.js +0 -44
  429. package/dist/backgrounds/CrossGridBackground.d.ts +0 -26
  430. package/dist/backgrounds/CrossGridBackground.js +0 -49
  431. package/dist/backgrounds/DotGridBackground.d.ts +0 -24
  432. package/dist/backgrounds/DotGridBackground.js +0 -47
  433. package/dist/badge/Badge.d.ts +0 -42
  434. package/dist/badge/Badge.js +0 -99
  435. package/dist/charts/ChartEmptyState.d.ts +0 -17
  436. package/dist/charts/ChartEmptyState.js +0 -29
  437. package/dist/charts/ProgressBar.d.ts +0 -29
  438. package/dist/charts/ProgressBar.js +0 -65
  439. package/dist/charts/chartTheme.d.ts +0 -18
  440. package/dist/charts/chartTheme.js +0 -26
  441. package/dist/containers/FlexItem.d.ts +0 -50
  442. package/dist/containers/FlexItem.js +0 -91
  443. package/dist/containers/FlexWrapper.d.ts +0 -96
  444. package/dist/containers/FlexWrapper.js +0 -143
  445. package/dist/containers/GridWrapper.d.ts +0 -79
  446. package/dist/containers/GridWrapper.js +0 -125
  447. package/dist/containers/Spacing.d.ts +0 -23
  448. package/dist/containers/Spacing.js +0 -59
  449. package/dist/containers/Wrapper.d.ts +0 -26
  450. package/dist/containers/Wrapper.js +0 -54
  451. package/dist/dividers/HorizontalDivider.d.ts +0 -7
  452. package/dist/dividers/HorizontalDivider.js +0 -39
  453. package/dist/dividers/VerticalDivider.d.ts +0 -6
  454. package/dist/dividers/VerticalDivider.js +0 -21
  455. package/dist/icons/GalaxyFilamentWordmark.d.ts +0 -11
  456. package/dist/icons/GalaxyFilamentWordmark.js +0 -25
  457. package/dist/icons/GalaxyLogomark.d.ts +0 -13
  458. package/dist/icons/GalaxyLogomark.js +0 -27
  459. package/dist/icons/GalaxyLogomark3D.d.ts +0 -56
  460. package/dist/icons/GalaxyLogomark3D.js +0 -319
  461. package/dist/icons/GalaxyLogomarkAnimation.d.ts +0 -18
  462. package/dist/icons/GalaxyLogomarkAnimation.js +0 -48
  463. package/dist/icons/GalaxyWordmark.d.ts +0 -11
  464. package/dist/icons/GalaxyWordmark.js +0 -25
  465. package/dist/inputs/MultiTextInput.d.ts +0 -32
  466. package/dist/inputs/MultiTextInput.js +0 -180
  467. package/dist/inputs/SwitcherInput.d.ts +0 -27
  468. package/dist/inputs/SwitcherInput.js +0 -64
  469. package/dist/inputs/hooks.d.ts +0 -10
  470. package/dist/inputs/hooks.js +0 -22
  471. package/dist/overlay/constants.d.ts +0 -28
  472. package/dist/overlay/constants.js +0 -37
  473. package/dist/resizable/HorizontalResizeHandle.d.ts +0 -17
  474. package/dist/resizable/HorizontalResizeHandle.js +0 -38
  475. package/dist/resizable/VerticalResizeHandle.d.ts +0 -18
  476. package/dist/resizable/VerticalResizeHandle.js +0 -39
  477. package/dist/table/SpreadsheetCell.d.ts +0 -21
  478. package/dist/table/SpreadsheetCell.js +0 -71
  479. package/dist/table/SpreadsheetHeaderCell.d.ts +0 -23
  480. package/dist/table/SpreadsheetHeaderCell.js +0 -91
  481. package/dist/table/SpreadsheetMenuItem.d.ts +0 -14
  482. package/dist/table/SpreadsheetMenuItem.js +0 -33
  483. package/dist/table/SpreadsheetPrimitives.d.ts +0 -172
  484. package/dist/table/SpreadsheetPrimitives.js +0 -105
  485. package/dist/table/SpreadsheetRow.d.ts +0 -33
  486. package/dist/table/SpreadsheetRow.js +0 -73
  487. package/dist/table/SpreadsheetRowActionCell.d.ts +0 -14
  488. package/dist/table/SpreadsheetRowActionCell.js +0 -51
  489. package/dist/table/TableExpandCell.d.ts +0 -11
  490. package/dist/table/TableExpandCell.js +0 -24
  491. package/dist/table/TableExpandedRow.d.ts +0 -16
  492. package/dist/table/TableExpandedRow.js +0 -77
  493. package/dist/table/TableHeaderCellContent.d.ts +0 -30
  494. package/dist/table/TableHeaderCellContent.js +0 -48
  495. package/dist/table/TablePrimitives.d.ts +0 -313
  496. package/dist/table/TablePrimitives.js +0 -302
  497. package/dist/table/TableSelectCell.d.ts +0 -18
  498. package/dist/table/TableSelectCell.js +0 -27
  499. package/dist/table/TableStatusRow.d.ts +0 -18
  500. package/dist/table/TableStatusRow.js +0 -50
  501. package/dist/table/useSpreadsheetEditing.d.ts +0 -13
  502. package/dist/table/useSpreadsheetEditing.js +0 -41
  503. package/dist/table/useTableColumnResize.d.ts +0 -38
  504. package/dist/table/useTableColumnResize.js +0 -155
  505. package/dist/table/useTableRowExpansion.d.ts +0 -24
  506. package/dist/table/useTableRowExpansion.js +0 -62
  507. package/dist/table/utils.d.ts +0 -50
  508. package/dist/table/utils.js +0 -78
  509. package/dist/text/HotKeys.d.ts +0 -30
  510. package/dist/text/HotKeys.js +0 -74
  511. package/dist/text/Paragraph.d.ts +0 -33
  512. package/dist/text/Paragraph.js +0 -83
  513. package/dist/text/TextShimmer.d.ts +0 -14
  514. package/dist/text/TextShimmer.js +0 -34
  515. package/dist/theme/GalaxyTheme.d.ts +0 -67
  516. package/dist/theme/GalaxyTheme.js +0 -119
  517. package/dist/theme/constants.d.ts +0 -8
  518. package/dist/theme/constants.js +0 -38
  519. package/dist/theme/index.d.ts +0 -6
  520. package/dist/theme/index.js +0 -7
  521. package/dist/theme/types.d.ts +0 -195
  522. package/dist/theme/types.js +0 -10
  523. package/dist/theme/typography.d.ts +0 -2
  524. package/dist/theme/typography.js +0 -73
  525. package/dist/theme/variants/dark.d.ts +0 -2
  526. package/dist/theme/variants/dark.js +0 -125
  527. package/dist/theme/variants/light.d.ts +0 -2
  528. package/dist/theme/variants/light.js +0 -125
  529. package/dist/toast/ToastContainer.d.ts +0 -10
  530. package/dist/toast/ToastContainer.js +0 -31
  531. package/dist/toast/ToastWrapper.d.ts +0 -6
  532. package/dist/toast/ToastWrapper.js +0 -27
  533. package/dist/transform/Flash.d.ts +0 -7
  534. package/dist/transform/Flash.js +0 -18
  535. package/dist/transform/Spin.d.ts +0 -14
  536. package/dist/transform/Spin.js +0 -25
  537. package/dist/utils/linaria.d.ts +0 -1
  538. package/dist/utils/linaria.js +0 -8
@@ -1,354 +1,213 @@
1
- import type { ReactNode } from "react";
2
1
  /**
3
- * Shared types for the chart components (`BarChart`, `LineChart`, `PieChart`).
2
+ * Shared chart vocabulary (`@galaxy-io/dls/charts/types`): the palette, the curve, and the prop
3
+ * and data types every chart composes. Types and enums only, so importing this module pulls in no
4
+ * optional peer (`d3-scale`, `d3-shape`) and no component.
4
5
  *
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.
6
+ * Every chart is generic over its series keys, and the inference is one-directional: the key
7
+ * union comes from the keys of the `series` record and from nowhere else, and every data-shaped
8
+ * prop wraps it in `NoInfer`. Were the keys also inferred from the data, an inline
9
+ * `{ metric: "revenue" }` would widen to `string` and every check below would quietly become a
10
+ * no-op.
9
11
  *
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
- * ]}
12
+ * ```tsx
13
+ * <LineChart
14
+ * series={{ revenue: { label: "Revenue" }, cost: { label: "Cost" } }}
15
+ * lines={[{ metric: "revenu", points: [] }]}
16
+ * // ^ Type '"revenu"' is not assignable to type '"revenue" | "cost"'.
26
17
  * />
27
18
  * ```
28
- *
29
- * The same union then makes aggregates exhaustive, spell-checks legend and
30
- * ordering props, and narrows callback parameters for `ts-pattern`.
31
19
  */
20
+ import type { AriaAttributes, CSSProperties, ReactNode } from "react";
21
+ import type { Hex } from "../theme/tokens/types.js";
32
22
  /**
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.
23
+ * Series color slot. Members are canonical color-set names (Constitution
24
+ * III.4). The first eight are the automatic order (purple leads); the rest are for explicit,
25
+ * meaningful assignment only.
39
26
  */
40
27
  export declare enum ChartPalette {
28
+ /** `text.purple`. First in the automatic order. */
41
29
  PURPLE = "PURPLE",
30
+ /** `text.pink`. */
42
31
  PINK = "PINK",
32
+ /** `text.blue`. */
43
33
  BLUE = "BLUE",
34
+ /** `text.teal`. */
44
35
  TEAL = "TEAL",
36
+ /** `text.lime`. */
45
37
  LIME = "LIME",
38
+ /** `text.orange`. */
46
39
  ORANGE = "ORANGE",
40
+ /** `text.yellow`. */
47
41
  YELLOW = "YELLOW",
42
+ /** `text.green`. Last in the automatic order. */
48
43
  GREEN = "GREEN",
49
- RED = "RED",
44
+ /** `text.success`. Explicit assignment only. */
45
+ SUCCESS = "SUCCESS",
46
+ /** `text.warning`. Explicit assignment only. */
47
+ WARNING = "WARNING",
48
+ /** `text.error` (1.x `RED`). Explicit assignment only. */
49
+ ERROR = "ERROR",
50
+ /** `text.indigo` (no gray in charts). Explicit assignment only. */
50
51
  PRIMARY = "PRIMARY",
52
+ /** `text.sky` (no gray in charts). Explicit assignment only. */
51
53
  SECONDARY = "SECONDARY",
52
- TERTIARY = "TERTIARY",
53
- WARNING = "WARNING"
54
+ /** `text.violet` (no gray in charts). Explicit assignment only. */
55
+ TERTIARY = "TERTIARY"
54
56
  }
55
- /**
56
- * Built-in value formats. Supplies an `Intl`-based default for axis ticks,
57
- * value labels and tooltip rows so callers don't have to write the same
58
- * formatter three times.
59
- *
60
- * A `valueFormatter` prop always wins over this when both are given.
61
- */
62
- export declare enum ChartValueUnit {
63
- /** Locale-grouped integer, e.g. `1,250`. */
64
- PLAIN = "PLAIN",
65
- /** Locale currency with no decimals, e.g. `$1,250`. */
66
- CURRENCY = "CURRENCY",
67
- /** Percentage of a 0–100 value, e.g. `42%`. */
68
- PERCENT = "PERCENT",
69
- /** Abbreviated magnitude, e.g. `1.3K`, `4.2M`. */
70
- COMPACT = "COMPACT"
57
+ /** How segments between points are drawn (LineChart, AreaChart, Sparkline). 1.x `LineChartCurve`. */
58
+ export declare enum ChartCurve {
59
+ /** Straight segments. */
60
+ LINEAR = "LINEAR",
61
+ /** Monotone cubic: smooth without overshooting the data. */
62
+ SMOOTH = "SMOOTH",
63
+ /** Right-angled steps (step-after). */
64
+ STEP = "STEP"
71
65
  }
66
+ /** @internal Emphasis of a rendered mark, applied as a `css` class (`CHART_MARK_STATE_TO_CSS_MAP`). */
67
+ export declare enum ChartMarkState {
68
+ /** Full strength: the default, and the engaged category or series. */
69
+ ACTIVE = "ACTIVE",
70
+ /** Softened: outside the engaged series, the selection, or while loading. */
71
+ MUTED = "MUTED",
72
+ /** Barely softened: off-category marks where a cursor band already carries the emphasis. */
73
+ DIMMED = "DIMMED"
74
+ }
75
+ /** @internal Which chart is rendering; phrases the default accessible name only. */
76
+ export declare enum ChartKind {
77
+ /** `LineChart`. */
78
+ LINE = "LINE",
79
+ /** `AreaChart`. */
80
+ AREA = "AREA",
81
+ /** `BarChart`. */
82
+ BAR = "BAR",
83
+ /** `PieChart`. */
84
+ PIE = "PIE",
85
+ /** `Heatmap`. */
86
+ HEATMAP = "HEATMAP"
87
+ }
88
+ /** @internal Where the legend sits relative to the plot. */
89
+ export declare enum ChartLegendPlacement {
90
+ /** Beneath the plot, one line (cartesian charts, Heatmap). */
91
+ BOTTOM = "BOTTOM",
92
+ /** Beside the plot, one column, vertically centered (PieChart). */
93
+ RIGHT = "RIGHT"
94
+ }
95
+ /** @internal Shape of a hit target. */
96
+ export declare enum ChartTargetShape {
97
+ /** A rectangle: a category band or a bar. */
98
+ RECT = "RECT",
99
+ /** A path: an arc outline, redrawn transparent. */
100
+ PATH = "PATH"
101
+ }
102
+ /** Formats a value for the value axis, the tooltip and the keyboard announcement. */
72
103
  export type ChartValueFormatter = (value: number) => string;
104
+ /** Formats a raw category label for the axis and the tooltip heading. */
73
105
  export type ChartLabelFormatter = (label: string) => string;
74
- /**
75
- * How one series is presented: what to call it and which palette slot it owns.
76
- *
77
- * Holds no data and no key — the key is the record key in
78
- * {@link ChartSeriesStyles}, which is exactly what makes that record
79
- * exhaustive.
80
- */
106
+ /** How one series is presented. The key is the record key in `ChartSeriesStyles`. */
81
107
  export interface ChartSeriesStyle {
82
- /** Name shown in the legend, tooltip and accessible labels. */
108
+ /** Name shown in the legend, the tooltip and the accessible summary. */
83
109
  label: string;
84
- /**
85
- * Palette slot. Defaults to the series' position in the record, walked
86
- * through `CHART_PALETTE_ORDER`.
87
- */
110
+ /** Palette slot. Defaults to the series' position in the record, walked through the automatic order. */
88
111
  color?: ChartPalette;
112
+ /** Raw color for a data-driven series color. Discouraged: it does not follow the theme. Wins over `color`. */
113
+ hex?: Hex;
89
114
  }
90
115
  /**
91
- * Presentation for every series, keyed by series key.
92
- *
93
- * A `Record` over the key union rather than an array of `{ key, name }` is the
94
- * single most load-bearing decision in this model. An array can be wrong in
95
- * four independent ways — missing entry, extra entry, duplicate key, misspelt
96
- * key — and TypeScript catches none of them. A record catches all four, because
97
- * its *keys are the type*.
116
+ * Presentation for every series, keyed by series key. A `Record` over the key union rather than
117
+ * an array of `{ key, label }`: a missing, extra, duplicate or misspelt key is a type error.
98
118
  */
99
119
  export type ChartSeriesStyles<TKey extends string> = Record<TKey, ChartSeriesStyle>;
100
- export interface ChartMargin {
101
- top: number;
102
- right: number;
103
- bottom: number;
104
- left: number;
105
- }
106
- /** Override for the computed value axis domain. */
120
+ /** Override for the computed value axis. */
107
121
  export interface ChartValueDomain {
108
122
  /** Lower bound. Defaults to `min(0, smallest value)`. */
109
123
  min: number;
110
124
  /** Upper bound. Defaults to `max(0, largest value)`. */
111
125
  max: number;
112
- /** Approximate tick count passed to d3's `scale.ticks()`. */
126
+ /** Approximate tick count (d3 `scale.ticks()`). */
113
127
  tickCount: number;
114
128
  }
115
- /**
116
- * Which chart is being rendered.
117
- *
118
- * Exists so the frame can phrase a default accessible name — a pie has slices
119
- * where the cartesian charts have categories. Deliberately not a styling hook:
120
- * nothing else branches on it.
121
- */
122
- export declare enum ChartKind {
123
- BAR = "BAR",
124
- LINE = "LINE",
125
- PIE = "PIE"
126
- }
127
- /**
128
- * Where the legend sits relative to the plot.
129
- *
130
- * Its own enum rather than a branch on {@link ChartKind}, which promises to be
131
- * nothing but a label for the accessible name.
132
- */
133
- export declare enum ChartLegendPlacement {
134
- /** Beneath the plot, wrapping — the cartesian layout. */
135
- BOTTOM = "BOTTOM",
136
- /** Beside the plot, stacked, vertically centred on it — the pie layout. */
137
- RIGHT = "RIGHT"
138
- }
139
- /** How the category axis copes when labels outgrow their slots. */
140
- export declare enum ChartCategoryLabelMode {
141
- /** Render every label that fits; otherwise show every nth. The default. */
142
- AUTO = "AUTO",
143
- /** Render every label, ellipsizing any that overflow its slot. */
144
- TRUNCATE = "TRUNCATE",
145
- /** Render every label unconditionally, overlap included. */
146
- ALL = "ALL"
147
- }
148
- /**
149
- * Emphasis level of a rendered mark.
150
- *
151
- * Travels to the DOM as a `data-state` attribute rather than a styled-component
152
- * prop: `@linaria/react` skips prop filtering entirely for SVG tags (its
153
- * `allTagsSet` is built with a missing spread, so `has('rect')` is false and
154
- * `propsAsIs` turns on), which would forward a `$`-prefixed prop straight to the
155
- * DOM and trigger a React warning.
156
- */
157
- export declare enum ChartMarkState {
158
- /** Full strength — the default, and the hovered category. */
159
- ACTIVE = "active",
160
- /** Softened, for marks outside the engaged series or category. */
161
- MUTED = "muted",
162
- /**
163
- * Barely softened — a whisper of {@link MUTED}.
164
- *
165
- * Used where another affordance already carries the emphasis and strong
166
- * muting would be a second, louder voice: BarChart's category axis dims
167
- * like this because the cursor band is the highlight.
168
- */
169
- DIMMED = "dimmed"
170
- }
171
- /** Which pair of a rectangle's corners carries the radius. */
172
- export declare enum BarCorners {
173
- /** Cap for a bar growing up from the baseline. */
174
- TOP = "TOP",
175
- /** Cap for a bar growing down from the baseline. */
176
- BOTTOM = "BOTTOM",
177
- /** Interior stack segment — square on both ends. */
178
- NONE = "NONE"
179
- }
180
- /**
181
- * How bar values are scaled before rendering.
182
- *
183
- * Note there is no grouped-vs-stacked mode: with the group → bar → component
184
- * hierarchy, several `bars` in a group render side by side and several
185
- * `components` in a bar render on top of each other, so a chart can be grouped
186
- * and stacked at the same time.
187
- */
188
- export declare enum BarChartNormalization {
189
- /** Plot raw values. */
190
- NONE = "NONE",
191
- /** Scale each bar's components to fill the axis — a 100% stacked chart. */
192
- PERCENT = "PERCENT"
129
+ /** Short titles beside the axes. */
130
+ export interface ChartAxisLabels {
131
+ /** Title under the category axis. */
132
+ category?: string;
133
+ /** Title beside the value axis, rotated. */
134
+ value?: string;
193
135
  }
194
136
  /**
195
- * One stacked segment of a bar.
137
+ * Which marks a chart's `selection` covers. A descriptor: a mark matches when every field present
138
+ * matches it, and a field the mark does not have never excludes it.
196
139
  *
197
- * A bar with a single component is just a plain unstacked bar.
198
- */
199
- export interface BarChartComponentDatum<TComponentKey extends string = string> {
200
- /** Identifies this segment; must be unique within its bar. */
201
- key: TComponentKey;
202
- /** Human-readable name, shown in the tooltip and legend. */
203
- label: string;
204
- /** Segment magnitude. Negative values stack below the zero baseline. */
205
- value: number;
206
- /** Palette slot override. Defaults to the segment's position in the palette. */
207
- color?: ChartPalette;
208
- }
209
- /**
210
- * One bar within a group: a stack of components for a single metric.
211
- */
212
- export interface BarChartBarDatum<TMetric extends string, TComponentKey extends string = string> {
213
- /** Which metric this bar represents, e.g. `"prospected"`. */
214
- metric: TMetric;
215
- /** Segments of the bar, stacked in array order outward from the baseline. */
216
- components: BarChartComponentDatum<TComponentKey>[];
217
- }
218
- /**
219
- * One category on the x-axis, holding one bar per metric.
220
- */
221
- export interface BarChartGroupDatum<TMetric extends string, TComponentKey extends string = string> {
222
- /** Label rendered beneath this group on the category axis. */
223
- label: string;
224
- /** Bars in this group, rendered left to right in array order. */
225
- bars: BarChartBarDatum<TMetric, TComponentKey>[];
226
- }
227
- /** How the segments between points are interpolated. */
228
- export declare enum LineChartCurve {
229
- /** Straight segments. */
230
- LINEAR = "LINEAR",
231
- /** Monotone cubic — smooth without overshooting the data. */
232
- SMOOTH = "SMOOTH",
233
- /** Right-angled steps. */
234
- STEP = "STEP"
235
- }
236
- /** One point on a line. */
237
- export interface LineChartPointDatum {
238
- /** Category this point sits on; must match a category on the axis. */
239
- x: string;
240
- /**
241
- * Value on the value axis.
242
- *
243
- * `null` breaks the line into separate segments. That is deliberately not the
244
- * same as `0`: a missing reading and a reading of zero are different claims,
245
- * and plotting a gap as zero draws a spike to the baseline that never
246
- * happened.
247
- */
248
- y: number | null;
249
- }
250
- /**
251
- * One line in a line chart.
252
- *
253
- * Carries no label or colour — those come from the chart's `series` record,
254
- * keyed by `metric`, so the legend, tooltip and stroke cannot disagree.
140
+ * ```ts
141
+ * { categoryKey: "00:00" } // the whole 00:00 column
142
+ * { seriesKey: "failed" } // every failure, all columns
143
+ * { categoryKey: "00:00", seriesKey: "failed" } // one segment
144
+ * ```
255
145
  */
256
- export interface LineChartLineDatum<TMetric extends string> {
257
- /** Which metric this line represents. Must be a key of the `series` record. */
258
- metric: TMetric;
259
- /**
260
- * Points in category order.
261
- *
262
- * Sparse series are fine — categories absent here are treated as gaps, and
263
- * the category axis is the union across every line.
264
- */
265
- points: LineChartPointDatum[];
266
- /** Stroke width in px. Defaults to the shared line width. */
267
- strokeWidth?: number;
268
- /** Dash length in px. Solid when omitted. */
269
- dashSize?: number;
270
- /** Fill the area between the line and the baseline. */
271
- showArea?: boolean;
146
+ export interface ChartSelection<TSeriesKey extends string = string> {
147
+ /** Raw category label, never `labelFormatter` output (the vocabulary `ChartGroupProvider` matches on). */
148
+ categoryKey?: string;
149
+ /** What this chart's legend names: metrics, stack components or slices. */
150
+ seriesKey?: TSeriesKey;
272
151
  }
152
+ /** One descriptor, several, or none. */
153
+ export type ChartSelectionInput<TSeriesKey extends string = string> = ChartSelection<TSeriesKey> | ChartSelection<TSeriesKey>[] | null;
273
154
  /**
274
- * One slice of a pie or donut.
275
- *
276
- * Carries no label or colour — those come from the chart's `series` record,
277
- * keyed by `key`, so the legend, tooltip and arc cannot disagree.
155
+ * What a click (or Enter / Space on the active category) reports. Its fields are exactly those a
156
+ * `ChartSelection` is built from, so feeding an event back as a selection is the common case.
278
157
  */
279
- export interface PieChartSliceDatum<TSlice extends string> {
280
- /** Which slice this is. Must be a key of the `series` record. */
281
- key: TSlice;
282
- /**
283
- * Slice magnitude.
284
- *
285
- * A pie shows parts of a whole, so negative values have no meaning here and
286
- * are coerced to zero rather than silently inverting an arc.
287
- */
288
- value: number;
158
+ export interface ChartSelectionEvent<TSeriesKey extends string = string> {
159
+ /** Position of the category on the axis, from 0. */
160
+ categoryIndex: number;
161
+ /** Raw category label, matching `ChartSelection.categoryKey`. */
162
+ categoryKey: string;
163
+ /** The mark's series. Absent when the category, not one mark, was chosen. */
164
+ seriesKey?: TSeriesKey;
165
+ /** The mark's own value. Absent whenever `seriesKey` is. */
166
+ value?: number;
289
167
  }
290
- /** One label/value row in the tooltip. */
168
+ /** One label / value row in the tooltip. */
291
169
  export interface ChartTooltipRow {
292
170
  /** React key, unique within the tooltip. */
293
171
  key: string;
294
- /** Row label — a component label, line label or slice label. */
172
+ /** Series (or slice) label. */
295
173
  label: string;
296
- value: number;
297
- /** Already run through the resolved formatter. */
174
+ /** The reading; `null` is a gap and reads "—". */
175
+ value: number | null;
176
+ /** `value` already run through the chart's `valueFormatter` ("—" for a gap). */
298
177
  formattedValue: string;
178
+ /** Swatch color: a `var(--gx-…)` string or the series `hex`. */
299
179
  color: string;
300
180
  }
301
- /** Everything the tooltip needs to render, independent of chart type. */
181
+ /** Everything the tooltip shows, independent of chart type. */
302
182
  export interface ChartTooltipModel {
303
- /** Heading — the hovered category, or the slice label for a pie. */
183
+ /** Heading: the formatted category, or the slice label for a pie. */
304
184
  label: string;
185
+ /** One row per series at the category. Never empty when passed to `renderTooltip`. */
305
186
  rows: ChartTooltipRow[];
306
- /** Anchor in container coordinates, margins already applied. */
187
+ /** Anchor x in plot-box coordinates. */
307
188
  anchorX: number;
189
+ /** Anchor y in plot-box coordinates. */
308
190
  anchorY: number;
309
191
  }
192
+ /** Replaces the tooltip body; positioning stays with the chart. Never called with empty `rows`. */
193
+ export type ChartTooltipRenderer = (model: ChartTooltipModel) => ReactNode;
310
194
  /**
311
- * A tooltip model whose anchor is still in plot coordinates.
312
- *
313
- * Structurally identical to {@link ChartTooltipModel} — the difference is the
314
- * coordinate space, which TypeScript cannot enforce. It carries its own name
315
- * anyway, because `ChartFrame` accepting "container coordinates" and then adding
316
- * a margin to them is exactly the sort of thing a reader has to be able to see
317
- * from the signature.
318
- *
319
- * Charts build this; `ChartFrame` applies the margin translate once, in the
320
- * component that already owns the `<g transform>`.
195
+ * @internal A tooltip model whose anchor is still in plot (inset) coordinates. Charts build this;
196
+ * `ChartFrame` adds the insets once.
321
197
  */
322
198
  export interface ChartPlotTooltipModel {
199
+ /** Heading. */
323
200
  label: string;
201
+ /** Rows; empty means "No data". */
324
202
  rows: ChartTooltipRow[];
325
- /** Anchor in plot coordinates. */
203
+ /** Anchor x in plot coordinates. */
326
204
  anchorX: number;
205
+ /** Anchor y in plot coordinates. */
327
206
  anchorY: number;
328
207
  }
329
208
  /**
330
- * Render prop for replacing the tooltip body. Positioning stays with the chart.
331
- *
332
- * Never called with empty `rows` — with a custom renderer installed, a
333
- * hovered category with no data opens no tooltip at all (the built-in body
334
- * is the one that knows how to say "No data") — so `rows[0]`-style
335
- * assumptions are safe here.
336
- */
337
- export type ChartTooltipRenderer = (model: ChartTooltipModel) => ReactNode;
338
- /** Which shape a category's hit target is drawn as. */
339
- export declare enum ChartTargetShape {
340
- /** Cartesian charts: a full-height band over the category. */
341
- RECT = "RECT",
342
- /** Radial charts: the arc's own outline, redrawn transparent. */
343
- PATH = "PATH"
344
- }
345
- /**
346
- * One category's interactive target, in plot coordinates.
347
- *
348
- * Array position *is* the category index — already true of every geometry
349
- * builder's output — so there is no index field that could fall out of step.
350
- * `key` is carried separately because a pie's arcs reorder, where bar and line
351
- * indices do not.
209
+ * @internal One category's hover target, in plot coordinates. Array position is the category
210
+ * index; `key` is separate because a pie's arcs reorder.
352
211
  */
353
212
  export type ChartCategoryTarget = {
354
213
  key: string;
@@ -363,20 +222,11 @@ export type ChartCategoryTarget = {
363
222
  d: string;
364
223
  };
365
224
  /**
366
- * One rendered mark's own target, in plot coordinates.
367
- *
368
- * Drawn above the category targets and bound to *clicks* only. Hover stays
369
- * per category — crossing between two segments of one stack re-enters the
370
- * category the pointer already had, so the tooltip holds still. That banding is
371
- * why a two-pixel segment is as easy to hover as a two-hundred-pixel one, and a
372
- * click layer laid over it must not undo it.
373
- *
374
- * Unlike {@link ChartCategoryTarget}, array position says nothing about the
375
- * category here, so each target names its own.
225
+ * @internal One mark's click target, drawn above the category targets. Hover stays per category;
226
+ * this layer only refines the click.
376
227
  */
377
228
  export type ChartMarkTarget = {
378
229
  key: string;
379
- /** The category this mark sits in — its hover, and its selection event. */
380
230
  categoryIndex: number;
381
231
  shape: ChartTargetShape.RECT;
382
232
  x: number;
@@ -389,189 +239,70 @@ export type ChartMarkTarget = {
389
239
  shape: ChartTargetShape.PATH;
390
240
  d: string;
391
241
  };
392
- /**
393
- * Which marks a chart's `selection` covers.
394
- *
395
- * A *descriptor* rather than a coordinate: a mark matches when every field
396
- * present matches it, and a field the mark has no notion of never excludes it.
397
- * One shape therefore spells every granularity without a mode flag —
398
- *
399
- * ```ts
400
- * { categoryKey: "00:00" } // the whole 00:00 column
401
- * { seriesKey: "failed" } // every failure, all columns
402
- * { categoryKey: "00:00", seriesKey: "failed" } // one segment
403
- * ```
404
- *
405
- * — and that last rule is what stops a category selection from muting a
406
- * LineChart's strokes, which span every category and belong to none.
407
- */
408
- export interface ChartSelection<TSeriesKey extends string = string> {
409
- /**
410
- * Raw category label, never `labelFormatter` output — the same vocabulary
411
- * `ChartGroupProvider` matches on, for the same reason: two charts formatting
412
- * one label differently must still agree on what it names.
413
- */
414
- categoryKey?: string;
415
- /**
416
- * Whatever this chart's legend names: components in a stacked bar, metrics in
417
- * an unstacked one or a line chart, slices in a pie. The same key the mute
418
- * axis uses, so a selection and the legend cannot describe different things.
419
- */
420
- seriesKey?: TSeriesKey;
421
- }
422
- /** One descriptor, several, or none. */
423
- export type ChartSelectionInput<TSeriesKey extends string = string> = ChartSelection<TSeriesKey> | ChartSelection<TSeriesKey>[] | null;
424
- /**
425
- * What a click reports.
426
- *
427
- * Deliberately thin — no rows, no colors, no formatted strings. The caller
428
- * already holds the data it passed in and can look the rest up by key, and a
429
- * presentation-shaped payload is the kind that becomes load-bearing and then
430
- * cannot be changed. The fields are exactly those a {@link ChartSelection} is
431
- * built from, so feeding an event straight back as one is the common case.
432
- */
433
- export interface ChartSelectionEvent<TSeriesKey extends string = string> {
434
- categoryIndex: number;
435
- /** Raw label, matching {@link ChartSelection.categoryKey}. */
436
- categoryKey: string;
437
- /** Absent when the click landed on empty plot rather than on a mark. */
438
- seriesKey?: TSeriesKey;
439
- /** The mark's own value, before any normalization. Absent whenever
440
- * {@link seriesKey} is. */
441
- value?: number;
442
- }
443
- /** One legend entry. */
242
+ /** @internal One legend entry: the swatch inputs, not a resolved color. */
444
243
  export interface ChartLegendItem {
244
+ /** Series key; isolates the series on hover. */
445
245
  key: string;
246
+ /** Series label. */
446
247
  label: string;
447
- color: string;
448
- }
449
- /** Fixed-size chart: both dimensions given in px. */
450
- export interface ChartFixedSize {
451
- fillWidth?: false;
452
- fillHeight?: false;
453
- width: number;
454
- height: number;
455
- aspectRatio?: never;
456
- }
457
- /** Container-width chart with an explicit height. */
458
- export interface ChartFluidFixedHeight {
459
- fillWidth: true;
460
- fillHeight?: false;
461
- width?: never;
462
- height: number;
463
- aspectRatio?: never;
464
- }
465
- /** Container-width chart whose height follows its width. */
466
- export interface ChartFluidRatioHeight {
467
- fillWidth: true;
468
- fillHeight?: false;
469
- width?: never;
470
- height?: never;
471
- /** Width ÷ height. `2` is a 2:1 landscape plot. */
472
- aspectRatio: number;
473
- }
474
- /** Fixed-width chart that takes its height from the container. */
475
- export interface ChartFixedWidthFluidHeight {
476
- fillWidth?: false;
477
- fillHeight: true;
478
- width: number;
479
- height?: never;
480
- aspectRatio?: never;
481
- }
482
- /** Chart that fills its container on both axes — a dashboard tile. */
483
- export interface ChartFluidBothAxes {
484
- fillWidth: true;
485
- fillHeight: true;
486
- width?: never;
487
- height?: never;
488
- aspectRatio?: never;
248
+ /** Palette slot of the swatch, when the series has no `hex`. */
249
+ palette?: ChartPalette;
250
+ /** Raw swatch color; wins over `palette`. */
251
+ hex?: Hex;
489
252
  }
490
- /**
491
- * The five legal ways to size a chart.
492
- *
493
- * A union rather than independent optional props, because the failure mode of
494
- * the optional version is a chart that resolves to 0×0 and renders as nothing at
495
- * all, with no error anywhere. Here `<BarChart fillWidth />` with neither
496
- * `height` nor `aspectRatio` simply does not compile, and neither does
497
- * `fillHeight` alongside a `height` that would contradict it.
498
- *
499
- * **`fillHeight` is not the mirror of `fillWidth`, and carries a requirement the
500
- * type system cannot check.** Width flows down from the parent, so `fillWidth`
501
- * is satisfied by any block container. Height flows *up* from content, so
502
- * `fillHeight` needs an ancestor with a definite height — an explicit size, a
503
- * flex or grid track, or absolute positioning. Given one, the chart fills it;
504
- * given a content-sized parent there is nothing to fill and the chart collapses,
505
- * which `useChartDimensions` warns about in development.
506
- */
507
- export type ChartSize = ChartFixedSize | ChartFluidFixedHeight | ChartFluidRatioHeight | ChartFixedWidthFluidHeight | ChartFluidBothAxes;
508
- /**
509
- * Props common to every chart.
510
- *
511
- * Data props are declared per chart, since their shapes and generics differ.
512
- */
513
- export interface BaseChartProps {
514
- /** Space around the plot area. Merged over the defaults. */
515
- margin?: Partial<ChartMargin>;
516
- /** Built-in value format. Ignored when `valueFormatter` is given. */
517
- valueUnit?: ChartValueUnit;
518
- /** Full control over value rendering. Wins over `valueUnit`. */
253
+ /** Props every chart takes (the shared vocabulary in `chartgroupprovider.md`). */
254
+ export interface BaseChartProps<TKey extends string> extends AriaAttributes {
255
+ /**
256
+ * Formats values on the value axis, in the tooltip and in the keyboard announcement.
257
+ * @default (value) => formatNumber(value, { precision: 2 })
258
+ */
519
259
  valueFormatter?: ChartValueFormatter;
520
260
  /**
521
- * Format category labels, wherever a category is named.
522
- *
523
- * That is the axis and the tooltip heading on the cartesian charts, and
524
- * additionally the legend on a pie — whose legend lists *slices*, which are
525
- * its categories. Bar and line legends name series, which come from the
526
- * `series` record and are not categories, so this does not reach them.
261
+ * Shows the legend (beneath the plot; beside it for PieChart). Entries that do not fit collapse behind "+N more".
262
+ * @default true
527
263
  */
528
- labelFormatter?: ChartLabelFormatter;
529
- /** Replace the tooltip body. Collision handling stays with the chart. */
530
- tooltipRenderer?: ChartTooltipRenderer;
531
- /** Suppress the tooltip and its hit targets entirely. */
532
- noTooltip?: boolean;
264
+ hasLegend?: boolean;
533
265
  /**
534
- * Cap on tooltip rows. Rows past the cap collapse into an inert "+N more"
535
- * line. Applies to the built-in body only; a custom `tooltipRenderer`
536
- * receives the full model. Clamped to at least 1.
266
+ * Shows the tooltip on hover and keyboard focus. With `false` and no `onSelect`, the plot is a static image.
267
+ * @default true
537
268
  */
538
- tooltipMaxItems?: number;
539
- /** Show the legend beneath the plot. */
540
- showLegend?: boolean;
269
+ hasTooltip?: boolean;
270
+ /** Replaces the tooltip body; positioning stays with the chart. Never called with empty rows. */
271
+ renderTooltip?: ChartTooltipRenderer;
541
272
  /**
542
- * Stricter cap on inline legend entries, on top of the automatic fit. The
543
- * legend never outgrows the plot: a horizontal legend holds one line of the
544
- * plot's width, a side-placed legend one column of the plot's height, and
545
- * entries that would not fit collapse behind a "+N more" trigger whose
546
- * tooltip lists them — still hoverable, so a collapsed series isolates
547
- * exactly like a visible one. This prop only lowers the inline count
548
- * further.
273
+ * With no data yet, a `Skeleton` fills the plot; with data, marks recede and interaction pauses until it clears. Sets `aria-busy`.
274
+ * @default false
549
275
  */
550
- legendMaxItems?: number;
551
- /** Render the loading treatment instead of the data. */
552
276
  isLoading?: boolean;
553
- /** Shown when there is nothing to plot. Defaults to a centred "No data". */
554
- contentWhenEmpty?: ReactNode;
555
- /** Accessible name for the chart. */
277
+ /**
278
+ * Header of the `EmptyState` shown in the plot when there is nothing to plot.
279
+ * @default No data available
280
+ */
281
+ placeholder?: string;
282
+ /** Called when a mark or category is clicked, or Enter / Space is pressed on the active category. Supplying it makes the plot selectable. */
283
+ onSelect?: (event: ChartSelectionEvent<TKey>) => void;
284
+ /** Which marks read as selected: matching marks hold full strength, the rest recede. Presentational; the chart never writes it. */
285
+ selection?: ChartSelectionInput<TKey>;
286
+ /** Accessible name of the chart. @default derived, e.g. Line chart, 12 categories, 3 series */
556
287
  ariaLabel?: string;
557
- /** Longer description, associated via `aria-describedby`. */
558
- ariaDescription?: string;
559
- }
560
- /**
561
- * Props shared by the two cartesian charts (bar and line).
562
- *
563
- * Composed into each chart's props with `&` rather than `extends`, since
564
- * {@link ChartSize} is a union and an interface cannot extend one.
565
- */
566
- export interface BaseCartesianChartProps extends BaseChartProps {
567
- /** Draw horizontal grid lines at each value tick. */
568
- showGrid?: boolean;
569
- /** Override the computed value axis domain and tick count. */
288
+ /** DOM id on the root `<div>`. */
289
+ id?: string;
290
+ /** Any `data-*` attribute, forwarded to the root `<div>`. */
291
+ [dataAttribute: `data-${string}`]: string | number | boolean | undefined;
292
+ /** Extra class on the root `<div>`. */
293
+ className?: string;
294
+ /** Inline style on the root `<div>`; only for setting CSS custom properties. */
295
+ style?: CSSProperties;
296
+ }
297
+ /** Props the cartesian charts (Line, Area, Bar) add to `BaseChartProps`. */
298
+ export interface BaseCartesianChartProps<TKey extends string> extends BaseChartProps<TKey> {
299
+ /**
300
+ * Formats category labels on the axis and in the tooltip heading. Sync and selection still match raw labels.
301
+ * @default (label) => label
302
+ */
303
+ labelFormatter?: ChartLabelFormatter;
304
+ /** Overrides the value axis `min`, `max` and approximate `tickCount`. @default derived from the data, always including 0 */
570
305
  valueDomain?: Partial<ChartValueDomain>;
571
- /** How the category axis handles labels too long or too many to fit. */
572
- categoryLabelMode?: ChartCategoryLabelMode;
573
- /** Title rendered alongside the category axis. */
574
- categoryAxisTitle?: string;
575
- /** Title rendered alongside the value axis. */
576
- valueAxisTitle?: string;
306
+ /** Short titles beside the category axis and the value axis. */
307
+ axisLabels?: ChartAxisLabels;
577
308
  }