@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,37 +1,82 @@
1
- import Text, { TextSize, TextVariant, TextWeight } from "../text/Text.js";
2
- import FlexItem from "../containers/FlexItem.js";
3
- import FlexWrapper, { FlexDirection } from "../containers/FlexWrapper.js";
4
- import Circle from "../shapes/Circle.js";
1
+ import Text, { TextSize, TextVariant } from "../text/Text.js";
2
+ import Flex, { AlignItems, FlexDirection } from "../layout/Flex.js";
3
+ import "./constants.js";
4
+ import Circle, { CircleSize } from "../shapes/Circle.js";
5
+ import Square, { SquareSize } from "../shapes/Square.js";
6
+ import { ChartLegendSwatch } from "./ChartLegend.js";
7
+ import Grid, { GridAlignItems } from "../layout/Grid.js";
5
8
  import { useChartTooltipPosition } from "./useChartTooltipPosition.js";
6
- import { ChartTooltipGrid, ChartTooltipLabelCell, ChartTooltipPositioner, ChartTooltipValueCell } from "./ChartPrimitives.js";
9
+ /* empty css */
10
+ import { styled } from "@linaria/react";
7
11
  import { Fragment, useState } from "react";
8
12
  import { jsx, jsxs } from "react/jsx-runtime";
13
+ import { cx } from "@linaria/core";
9
14
  //#region src/charts/ChartTooltip.tsx
10
- var ChartTooltip = ({ model, containerWidth, containerHeight, anchorHalfWidth, placeAwayFromX, verticalAlign, renderer, maxItems }) => {
15
+ /**
16
+ * @internal The in-chart tooltip: an absolutely positioned box inside the plot box, anchored to a
17
+ * geometric point that tracks the engaged category (not the `Tooltip` component, which anchors
18
+ * to a trigger element; chartgroupprovider.md Decision 8). It stays mounted so it can fade out,
19
+ * keeping its last content while it does. `aria-hidden`: keyboard moves are announced through the
20
+ * frame's live region instead.
21
+ */
22
+ /** The positioned box. Position arrives as `--gx-chart-tooltip-x` / `-y` (continuous values). */
23
+ var Root = /*#__PURE__*/ styled("div")({
24
+ name: "Root",
25
+ class: "gx-ChartTooltip-rtysfji",
26
+ propsAsIs: false
27
+ });
28
+ /** Shown. Declared after `Root` so it wins. */
29
+ var VISIBLE_STATE_CSS = "gx-ChartTooltip-VISIBLE_STATE_CSS-v1o4v2om";
30
+ function Row({ row, swatch }) {
31
+ return /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsxs(Flex, {
32
+ alignItems: AlignItems.CENTER,
33
+ gap: 8,
34
+ minWidth: 0,
35
+ children: [swatch === ChartLegendSwatch.SQUARE ? /* @__PURE__ */ jsx(Square, {
36
+ size: SquareSize.SMALL,
37
+ hex: row.color
38
+ }) : /* @__PURE__ */ jsx(Circle, {
39
+ size: CircleSize.SMALL,
40
+ hex: row.color
41
+ }), /* @__PURE__ */ jsx(Text, {
42
+ size: TextSize.BODY_SM,
43
+ variant: TextVariant.SECONDARY,
44
+ lineClamp: 1,
45
+ children: row.label
46
+ })]
47
+ }), /* @__PURE__ */ jsx(Text, {
48
+ size: TextSize.BODY_SM,
49
+ isTabular: true,
50
+ align: "right",
51
+ children: row.formattedValue
52
+ })] });
53
+ }
54
+ /** @internal The chart tooltip body and positioner. */
55
+ function ChartTooltip({ model, containerWidth, containerHeight, anchorHalfWidth, placeAwayFromX, verticalAlign, renderTooltip, swatch = ChartLegendSwatch.CIRCLE }) {
11
56
  const [retained, setRetained] = useState(model);
12
57
  if (model !== null && model !== retained) setRetained(model);
58
+ const displayed = model ?? retained;
13
59
  const { tooltipRef, x, y, isMeasured } = useChartTooltipPosition({
14
- anchorX: model?.anchorX ?? retained?.anchorX ?? 0,
15
- anchorY: model?.anchorY ?? retained?.anchorY ?? 0,
60
+ anchorX: displayed?.anchorX ?? 0,
61
+ anchorY: displayed?.anchorY ?? 0,
16
62
  containerWidth,
17
63
  containerHeight,
18
64
  anchorHalfWidth,
19
65
  placeAwayFromX,
20
66
  verticalAlign
21
67
  });
22
- const displayed = model ?? retained;
23
68
  const rows = displayed?.rows ?? [];
24
- const cap = maxItems === void 0 ? rows.length : Math.max(1, maxItems);
25
- const visibleRows = rows.slice(0, cap);
69
+ const visibleRows = rows.slice(0, 8);
26
70
  const hiddenCount = rows.length - visibleRows.length;
27
- return /* @__PURE__ */ jsx(ChartTooltipPositioner, {
71
+ return /* @__PURE__ */ jsx(Root, {
28
72
  ref: tooltipRef,
29
- $x: x,
30
- $y: y,
31
- $isVisible: model !== null && isMeasured,
32
- role: "tooltip",
33
- "aria-hidden": model === null,
34
- children: !displayed ? null : renderer ? renderer(displayed) : /* @__PURE__ */ jsxs(FlexWrapper, {
73
+ "aria-hidden": "true",
74
+ className: cx(model !== null && isMeasured && VISIBLE_STATE_CSS),
75
+ style: {
76
+ "--gx-chart-tooltip-x": `${x}px`,
77
+ "--gx-chart-tooltip-y": `${y}px`
78
+ },
79
+ children: displayed === null ? null : renderTooltip ? renderTooltip(displayed) : /* @__PURE__ */ jsxs(Flex, {
35
80
  direction: FlexDirection.COLUMN,
36
81
  gap: 8,
37
82
  fillWidth: true,
@@ -39,37 +84,29 @@ var ChartTooltip = ({ model, containerWidth, containerHeight, anchorHalfWidth, p
39
84
  /* @__PURE__ */ jsx(Text, {
40
85
  size: TextSize.BODY_SM,
41
86
  variant: TextVariant.SECONDARY,
42
- isEllipsis: true,
87
+ lineClamp: 1,
43
88
  children: displayed.label
44
89
  }),
45
- displayed.rows.length === 0 ? /* @__PURE__ */ jsx(Text, {
90
+ rows.length === 0 ? /* @__PURE__ */ jsx(Text, {
46
91
  size: TextSize.BODY_SM,
47
- variant: TextVariant.SECONDARY,
48
92
  children: "No data"
49
- }) : /* @__PURE__ */ jsx(ChartTooltipGrid, { children: visibleRows.map((row) => /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsxs(ChartTooltipLabelCell, { children: [/* @__PURE__ */ jsx(FlexItem, {
50
- shrink: 0,
51
- children: /* @__PURE__ */ jsx(Circle, {
52
- size: 8,
53
- hex: row.color
54
- })
55
- }), /* @__PURE__ */ jsx(Text, {
56
- size: TextSize.BODY_SM,
57
- isEllipsis: true,
58
- children: row.label
59
- })] }), /* @__PURE__ */ jsx(ChartTooltipValueCell, { children: /* @__PURE__ */ jsx(Text, {
60
- size: TextSize.BODY_SM,
61
- weight: TextWeight.MEDIUM,
62
- align: "right",
63
- children: row.formattedValue
64
- }) })] }, row.key)) }),
93
+ }) : /* @__PURE__ */ jsx(Grid, {
94
+ columns: "minmax(0, 1fr) auto",
95
+ gap: [4, 16],
96
+ alignItems: GridAlignItems.CENTER,
97
+ children: visibleRows.map((row) => /* @__PURE__ */ jsx(Row, {
98
+ row,
99
+ swatch
100
+ }, row.key))
101
+ }),
65
102
  hiddenCount > 0 && /* @__PURE__ */ jsx(Text, {
66
103
  size: TextSize.BODY_SM,
67
- variant: TextVariant.SECONDARY,
104
+ variant: TextVariant.TERTIARY,
68
105
  children: `+${hiddenCount} more`
69
106
  })
70
107
  ]
71
108
  })
72
109
  });
73
- };
110
+ }
74
111
  //#endregion
75
- export { ChartTooltip as default };
112
+ export { ChartTooltip };
@@ -0,0 +1,35 @@
1
+ import { type BaseChartProps, type ChartLabelFormatter, ChartPalette, type ChartValueDomain } from "./types.js";
2
+ /** One cell of the grid. */
3
+ export interface HeatmapCellDatum {
4
+ /** Column label; must match a column on the x-axis. */
5
+ column: string;
6
+ /** Row label; must match a row on the y-axis. */
7
+ row: string;
8
+ /** Value; `null` is an empty cell (no reading), which is not the same as 0. */
9
+ value: number | null;
10
+ }
11
+ /** Heatmap's own props; the shared chart props follow (`BaseChartProps`). */
12
+ interface HeatmapOwnProps {
13
+ /** One entry per filled cell. A column × row pair with no entry, or `value: null`, is an empty cell. */
14
+ cells: HeatmapCellDatum[];
15
+ /** Column order, left to right (e.g. hours). Pass it when some columns have no cells. @default every cell's `column`, first-seen order */
16
+ columns?: string[];
17
+ /** Row order, top to bottom (e.g. weekdays). Pass it when some rows have no cells. @default every cell's `row`, first-seen order */
18
+ rows?: string[];
19
+ /**
20
+ * The hue whose ramp fills the cells. `PRIMARY`, `SECONDARY` and `TERTIARY` use the `indigo`, `sky` and `violet` ramps (no gray).
21
+ * @default ChartPalette.PURPLE
22
+ */
23
+ color?: ChartPalette;
24
+ /**
25
+ * Formats column and row labels on the axes and in the tooltip heading. Selection still matches raw labels.
26
+ * @default (label) => label
27
+ */
28
+ labelFormatter?: ChartLabelFormatter;
29
+ /** `min` / `max` of the color ramp (`tickCount` is ignored). Fix it to compare heatmaps. @default [smallest, largest] of the non-null values */
30
+ valueDomain?: Partial<ChartValueDomain>;
31
+ }
32
+ export type HeatmapProps = HeatmapOwnProps & BaseChartProps<string>;
33
+ /** A grid of cells colored by value along one hue's token ramp. */
34
+ declare const Heatmap: import("react").ForwardRefExoticComponent<HeatmapOwnProps & BaseChartProps<string> & import("react").RefAttributes<HTMLDivElement>>;
35
+ export default Heatmap;
@@ -0,0 +1,307 @@
1
+ import { Orientation } from "../theme/enums.js";
2
+ import Text, { TextSize, TextVariant } from "../text/Text.js";
3
+ import { t } from "../theme/tokens/t.js";
4
+ import Flex, { AlignItems } from "../layout/Flex.js";
5
+ import { ChartKind, ChartLegendPlacement, ChartMarkState, ChartPalette, ChartTargetShape } from "./types.js";
6
+ import { CHART_MARK_STATE_TO_CSS_MAP, HEATMAP_CELL_CSS, HEATMAP_EMPTY_CELL_CSS } from "./ChartPrimitives.js";
7
+ import { PLOT_INSET_BOTTOM, PLOT_INSET_RIGHT, PLOT_INSET_TOP } from "./constants.js";
8
+ import { clamp } from "./chartScales.js";
9
+ import { ChartCategoryAxis } from "./ChartAxis.js";
10
+ import Square, { SquareSize, SquareVariant } from "../shapes/Square.js";
11
+ import { ChartLegendSwatch } from "./ChartLegend.js";
12
+ import { ChartFrame } from "./ChartFrame.js";
13
+ import { formatChartValue } from "./chartFormat.js";
14
+ import { useChartDimensions } from "./useChartDimensions.js";
15
+ import { useChartFormatters } from "./useChartFormatters.js";
16
+ import { useChartInteraction } from "./useChartInteraction.js";
17
+ import { HEATMAP_CELL_RADIUS, HEATMAP_STEP_TO_TOKEN_MAP, buildHeatmapGeometry, estimateRowLabelInset, getHeatmapDomain, getHeatmapLabels } from "./heatmapGeometry.js";
18
+ /* empty css */
19
+ import { styled } from "@linaria/react";
20
+ import { forwardRef, useCallback, useMemo, useRef } from "react";
21
+ import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
22
+ import { cx } from "@linaria/core";
23
+ //#region src/charts/Heatmap.tsx
24
+ /**
25
+ * Heatmap shows a value for every pair of two categories (hour × weekday, endpoint × region) as a
26
+ * grid of cells whose fill gets stronger as the value grows. The fill is one hue's token ramp in
27
+ * five steps (`color`, a `ChartPalette` slot), so it follows the theme; a
28
+ * missing value is an empty, outlined cell. Hover and arrow keys move cell by cell (Up / Down by
29
+ * row); the tooltip names the column, the row and the value; a click or Enter reports the cell. A
30
+ * step legend shows the low and high ends. It does not join `ChartGroupProvider` sync.
31
+ *
32
+ * The chart fills its parent; with no definite parent height it takes an aspect ratio of columns
33
+ * to rows (clamped 1–4), so cells stay near-square. Needs the optional peers `d3-scale` and
34
+ * `d3-shape`.
35
+ */
36
+ var DEFAULT_PLACEHOLDER = "No data available";
37
+ /** The step legend: aligned with the plot's left edge (a continuous inset). */
38
+ var LegendRoot = /*#__PURE__*/ styled("div")({
39
+ name: "LegendRoot",
40
+ class: "gx-Heatmap-LegendRoot-lii3tjm",
41
+ propsAsIs: false
42
+ });
43
+ /** A ramp swatch: a `Square INHERIT` that fills with this wrapper's `color`. */
44
+ var RampSwatch = /*#__PURE__*/ styled("span")({
45
+ name: "RampSwatch",
46
+ class: "gx-Heatmap-RampSwatch-r12vxnd7",
47
+ propsAsIs: false
48
+ });
49
+ /** The "No data" swatch: an outlined square the size of `SquareSize.SMALL`. */
50
+ var EmptySwatch = /*#__PURE__*/ styled("span")({
51
+ name: "EmptySwatch",
52
+ class: "gx-Heatmap-EmptySwatch-echoni0",
53
+ propsAsIs: false
54
+ });
55
+ function HeatmapLegend({ ramp, min, max, hasEmpty, inset }) {
56
+ return /* @__PURE__ */ jsx(LegendRoot, {
57
+ style: { "--gx-heatmap-legend-inset": `${inset}px` },
58
+ children: /* @__PURE__ */ jsxs(Flex, {
59
+ alignItems: AlignItems.CENTER,
60
+ gap: 8,
61
+ children: [
62
+ /* @__PURE__ */ jsx(Text, {
63
+ size: TextSize.CAPTION,
64
+ variant: TextVariant.TERTIARY,
65
+ isTabular: true,
66
+ children: min
67
+ }),
68
+ ramp.map((token) => /* @__PURE__ */ jsx(RampSwatch, {
69
+ style: { "--gx-chart-mark-color": token },
70
+ children: /* @__PURE__ */ jsx(Square, {
71
+ size: SquareSize.SMALL,
72
+ variant: SquareVariant.INHERIT
73
+ })
74
+ }, token)),
75
+ /* @__PURE__ */ jsx(Text, {
76
+ size: TextSize.CAPTION,
77
+ variant: TextVariant.TERTIARY,
78
+ isTabular: true,
79
+ children: max
80
+ }),
81
+ hasEmpty && /* @__PURE__ */ jsxs(Flex, {
82
+ alignItems: AlignItems.CENTER,
83
+ gap: 8,
84
+ padding: [
85
+ 0,
86
+ 0,
87
+ 0,
88
+ 8
89
+ ],
90
+ children: [/* @__PURE__ */ jsx(EmptySwatch, {}), /* @__PURE__ */ jsx(Text, {
91
+ size: TextSize.CAPTION,
92
+ variant: TextVariant.TERTIARY,
93
+ children: "No data"
94
+ })]
95
+ })
96
+ ]
97
+ })
98
+ });
99
+ }
100
+ /** A grid of cells colored by value along one hue's token ramp. */
101
+ var Heatmap = forwardRef(function Heatmap(props, ref) {
102
+ const { cells, columns: explicitColumns, rows: explicitRows, color = ChartPalette.PURPLE, labelFormatter, valueDomain, valueFormatter, hasLegend = true, hasTooltip = true, renderTooltip, isLoading = false, placeholder = DEFAULT_PLACEHOLDER, onSelect, selection, isFilterable = false, defaultSelection, onSelectionChange, ariaLabel, id, className, style, ...rest } = props;
103
+ const plotRef = useRef(null);
104
+ const { formatValue, formatLabel } = useChartFormatters(valueFormatter, labelFormatter);
105
+ const { columns, rows } = useMemo(() => getHeatmapLabels(cells, explicitColumns, explicitRows), [
106
+ cells,
107
+ explicitColumns,
108
+ explicitRows
109
+ ]);
110
+ const domainMin = valueDomain?.min;
111
+ const domainMax = valueDomain?.max;
112
+ const domain = useMemo(() => getHeatmapDomain(cells, {
113
+ min: domainMin,
114
+ max: domainMax
115
+ }), [
116
+ cells,
117
+ domainMin,
118
+ domainMax
119
+ ]);
120
+ const ramp = HEATMAP_STEP_TO_TOKEN_MAP[color];
121
+ const formattedRows = useMemo(() => rows.map(formatLabel), [rows, formatLabel]);
122
+ const insetLeft = useMemo(() => estimateRowLabelInset(formattedRows), [formattedRows]);
123
+ const dimensions = useChartDimensions(plotRef, useMemo(() => ({
124
+ top: PLOT_INSET_TOP,
125
+ right: PLOT_INSET_RIGHT,
126
+ bottom: PLOT_INSET_BOTTOM,
127
+ left: insetLeft
128
+ }), [insetLeft]));
129
+ const { plotWidth, plotHeight } = dimensions;
130
+ const geometry = useMemo(() => buildHeatmapGeometry({
131
+ cells,
132
+ columns,
133
+ rows,
134
+ domain,
135
+ plotWidth,
136
+ plotHeight
137
+ }), [
138
+ cells,
139
+ columns,
140
+ rows,
141
+ domain,
142
+ plotWidth,
143
+ plotHeight
144
+ ]);
145
+ const isEmpty = columns.length === 0 || rows.length === 0;
146
+ const cellCount = columns.length * rows.length;
147
+ const cellColumnKeys = useMemo(() => rows.flatMap(() => columns), [rows, columns]);
148
+ const grid = useMemo(() => ({ columns: Math.max(1, columns.length) }), [columns.length]);
149
+ const interaction = useChartInteraction({
150
+ categoryCount: cellCount,
151
+ categoryKeys: cellColumnKeys,
152
+ enableGroupSync: false,
153
+ selection,
154
+ isFilterable,
155
+ defaultSelection,
156
+ onSelectionChange,
157
+ categoryMuteState: ChartMarkState.ACTIVE,
158
+ isDisabled: !(hasTooltip || onSelect || isFilterable) || isLoading || isEmpty,
159
+ isLoading,
160
+ grid
161
+ });
162
+ const stepColor = useCallback((cell) => cell.step === null ? t.color.border.primary : ramp[cell.step] ?? "", [ramp]);
163
+ const buildCategoryTooltip = useCallback((index) => {
164
+ const cell = geometry.cells[index];
165
+ if (!cell) return null;
166
+ return {
167
+ label: `${formatLabel(cell.column)} · ${formatLabel(cell.row)}`,
168
+ rows: [{
169
+ key: cell.id,
170
+ label: "Value",
171
+ value: cell.value,
172
+ formattedValue: formatChartValue(cell.value, formatValue),
173
+ color: stepColor(cell)
174
+ }],
175
+ anchorX: cell.x + cell.width / 2,
176
+ anchorY: cell.y
177
+ };
178
+ }, [
179
+ geometry.cells,
180
+ formatLabel,
181
+ formatValue,
182
+ stepColor
183
+ ]);
184
+ const describeCategory = useCallback((index) => {
185
+ const cell = geometry.cells[index];
186
+ if (!cell) return "";
187
+ const value = cell.value === null ? "no data" : formatValue(cell.value);
188
+ return `${formatLabel(cell.column)}, ${formatLabel(cell.row)}: ${value}.`;
189
+ }, [
190
+ geometry.cells,
191
+ formatLabel,
192
+ formatValue
193
+ ]);
194
+ const categoryTargets = useMemo(() => geometry.cells.map((cell) => {
195
+ const x0 = Math.max(0, cell.x - geometry.gapX / 2);
196
+ const y0 = Math.max(0, cell.y - geometry.gapY / 2);
197
+ const x1 = Math.min(plotWidth, cell.x + cell.width + geometry.gapX / 2);
198
+ const y1 = Math.min(plotHeight, cell.y + cell.height + geometry.gapY / 2);
199
+ return {
200
+ key: cell.id,
201
+ shape: ChartTargetShape.RECT,
202
+ x: x0,
203
+ y: y0,
204
+ width: x1 - x0,
205
+ height: y1 - y0
206
+ };
207
+ }), [
208
+ geometry,
209
+ plotWidth,
210
+ plotHeight
211
+ ]);
212
+ const { toggleSelection } = interaction;
213
+ const handleSelect = useCallback((index, isAdditive = false) => {
214
+ const cell = geometry.cells[index];
215
+ if (!cell) return;
216
+ onSelect?.({
217
+ categoryIndex: cell.columnIndex,
218
+ categoryKey: cell.column,
219
+ seriesKey: cell.row,
220
+ ...cell.value !== null && { value: cell.value }
221
+ });
222
+ toggleSelection({
223
+ categoryKey: cell.column,
224
+ seriesKey: cell.row
225
+ }, isAdditive);
226
+ }, [
227
+ geometry.cells,
228
+ onSelect,
229
+ toggleSelection
230
+ ]);
231
+ const passedAriaLabel = typeof rest["aria-label"] === "string" ? rest["aria-label"] : void 0;
232
+ const resolvedAriaLabel = ariaLabel ?? passedAriaLabel ?? `Heatmap, ${columns.length} columns by ${rows.length} rows`;
233
+ const aspectRatio = clamp(columns.length / Math.max(1, rows.length), 1, 4);
234
+ return /* @__PURE__ */ jsx(ChartFrame, {
235
+ rootRef: ref,
236
+ plotRef,
237
+ id,
238
+ className,
239
+ style,
240
+ rest,
241
+ dimensions,
242
+ interaction,
243
+ kind: ChartKind.HEATMAP,
244
+ categoryCount: cellCount,
245
+ ariaLabel: resolvedAriaLabel,
246
+ aspectRatio,
247
+ axes: /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(ChartCategoryAxis, {
248
+ labels: columns,
249
+ positions: geometry.columnPositions,
250
+ step: geometry.columnStep,
251
+ plotWidth,
252
+ plotHeight,
253
+ orientation: Orientation.HORIZONTAL,
254
+ insetLeft,
255
+ formatter: formatLabel
256
+ }), /* @__PURE__ */ jsx(ChartCategoryAxis, {
257
+ labels: rows,
258
+ positions: geometry.rowPositions,
259
+ step: geometry.rowStep,
260
+ plotWidth,
261
+ plotHeight,
262
+ orientation: Orientation.VERTICAL,
263
+ insetLeft,
264
+ formatter: formatLabel
265
+ })] }),
266
+ describeCategory,
267
+ hasTooltip,
268
+ buildCategoryTooltip,
269
+ renderTooltip,
270
+ categoryTargets,
271
+ onCategorySelect: onSelect || isFilterable ? handleSelect : void 0,
272
+ anchorHalfWidth: (geometry.cells[0]?.width ?? 0) / 2,
273
+ isEmpty,
274
+ isLoading,
275
+ placeholder,
276
+ hasLegend,
277
+ legendItems: [],
278
+ legendPlacement: ChartLegendPlacement.BOTTOM,
279
+ legendSwatch: ChartLegendSwatch.SQUARE,
280
+ legend: isEmpty ? null : /* @__PURE__ */ jsx(HeatmapLegend, {
281
+ ramp,
282
+ min: formatValue(domain[0]),
283
+ max: formatValue(domain[1]),
284
+ hasEmpty: geometry.hasEmptyCells,
285
+ inset: insetLeft
286
+ }),
287
+ children: geometry.cells.map((cell, index) => {
288
+ let state = interaction.getMarkState({
289
+ categoryIndex: index,
290
+ seriesKey: cell.row
291
+ });
292
+ if (state === ChartMarkState.MUTED && !isLoading) state = ChartMarkState.DIMMED;
293
+ return /* @__PURE__ */ jsx("rect", {
294
+ x: cell.x,
295
+ y: cell.y,
296
+ width: cell.width,
297
+ height: cell.height,
298
+ rx: HEATMAP_CELL_RADIUS,
299
+ className: cx(cell.step === null ? HEATMAP_EMPTY_CELL_CSS : HEATMAP_CELL_CSS, interaction.activeIndex === index && "gx-ChartPrimitives-HEATMAP_ACTIVE_CELL_CSS-h17guewt", CHART_MARK_STATE_TO_CSS_MAP[state]),
300
+ style: cell.step === null ? void 0 : { "--gx-chart-mark-color": stepColor(cell) }
301
+ }, cell.id);
302
+ })
303
+ });
304
+ });
305
+ Heatmap.displayName = "Heatmap";
306
+ //#endregion
307
+ export { Heatmap as default };
@@ -1,57 +1,64 @@
1
- import { LineChartCurve } from "./types";
2
- import type { BaseCartesianChartProps, ChartSelectionEvent, ChartSelectionInput, ChartSeriesStyles, ChartSize, LineChartLineDatum } from "./types";
3
- export type LineChartProps<TMetric extends string> = BaseCartesianChartProps & ChartSize & {
1
+ import { type ReactElement, type RefAttributes } from "react";
2
+ import { type BaseCartesianChartProps, ChartCurve, ChartKind, type ChartSeriesStyles } from "./types.js";
3
+ /** One reading on a line. */
4
+ export interface LineChartPointDatum {
5
+ /** Category this point sits on; must match a category on the axis. */
6
+ x: string;
7
+ /** Value; `null` breaks the line (a missing reading is not zero). */
8
+ y: number | null;
9
+ }
10
+ /** One line. Its label and color come from the chart's `series` record, keyed by `metric`. */
11
+ export interface LineChartLineDatum<TMetric extends string> {
12
+ /** Which metric this line draws; a key of `series`. */
13
+ metric: TMetric;
14
+ /** Points in category order. Sparse is fine: a missing category is a gap. */
15
+ points: LineChartPointDatum[];
4
16
  /**
5
- * Presentation for every metric, keyed by metric.
6
- *
7
- * `TMetric` is inferred from these keys alone — `lines` wraps it in
8
- * `NoInfer` — so a mistyped metric is a compile error rather than a line
9
- * that silently fails to draw.
17
+ * Draw the line dashed (4px dash, 4px gap): a forecast, a target, a previous period.
18
+ * @default false
10
19
  */
20
+ isDashed?: boolean;
21
+ }
22
+ /** LineChart's own props; the shared chart props follow (`BaseCartesianChartProps`). */
23
+ interface LineChartOwnProps<TMetric extends string> {
24
+ /** Label and color for every metric, keyed by metric. `TMetric` is inferred from these keys only, so a misspelt metric in `lines` is a type error. */
11
25
  series: ChartSeriesStyles<TMetric>;
12
- /** One entry per line. Lines may be sparse. */
26
+ /** One entry per line. Lines may be sparse; a missing category or a `null` reading is a gap. */
13
27
  lines: LineChartLineDatum<NoInfer<TMetric>>[];
14
- /**
15
- * Explicit category order along the x-axis.
16
- *
17
- * Worth supplying whenever the lines are sparse: the inferred order is the
18
- * union of each line's categories in first-seen order, which is only
19
- * correct if some line covers them all.
20
- */
28
+ /** Category order along the x-axis. Pass it whenever lines are sparse. @default the union of every line's `x`, first-seen order */
21
29
  categories?: string[];
22
- /** @default LineChartCurve.SMOOTH */
23
- curve?: LineChartCurve;
24
- /** Default stroke width in px, overridable per line. */
25
- strokeWidth?: number;
26
- /** Draw a vertical rule at the active category. @default true */
27
- showCursor?: boolean;
28
- /**
29
- * Fires when a category is clicked. Supplying it is what makes the plot
30
- * clickable.
31
- *
32
- * Always the category, never a single line: hit testing is per column here,
33
- * and a line has no segment to land on — the reading at a category belongs
34
- * to every line at once, which is exactly what the tooltip reports. Use
35
- * `seriesKey` in {@link selection} to narrow to one line.
36
- */
37
- onSelect?: (event: ChartSelectionEvent<NoInfer<TMetric>>) => void;
38
30
  /**
39
- * Which marks read as selected. Matching lines hold full strength, the rest
40
- * recede, and each selected category keeps a persistent cursor with its
41
- * dots — the hover rule one step firmer, held rather than previewed.
42
- *
43
- * Presentational and never written by the chart: the state belongs to
44
- * whatever the selection is filtering, so the two cannot drift apart.
31
+ * How segments between points are drawn.
32
+ * @default ChartCurve.SMOOTH
45
33
  */
46
- selection?: ChartSelectionInput<NoInfer<TMetric>>;
47
- };
34
+ curve?: ChartCurve;
35
+ }
36
+ export type LineChartProps<TMetric extends string> = LineChartOwnProps<TMetric> & BaseCartesianChartProps<NoInfer<TMetric>>;
37
+ /** @internal How `LineChartRoot` fills under its lines. */
38
+ export declare enum LineChartFill {
39
+ /** Lines only (LineChart). */
40
+ NONE = "NONE",
41
+ /** A translucent area to the baseline (AreaChart). */
42
+ AREA = "AREA"
43
+ }
44
+ /** @internal `LineChartRoot`'s extra props: the engine modes AreaChart sets. */
45
+ export interface LineChartRootProps<TMetric extends string> extends LineChartOwnProps<TMetric> {
46
+ /** Fill mode. */
47
+ fill: LineChartFill;
48
+ /** Stack the series in array order (AreaChart): top edges are running totals. */
49
+ isStacked: boolean;
50
+ /** Which chart (default name and legend swatch). */
51
+ kind: ChartKind;
52
+ }
53
+ /** @internal The generic signature of `LineChartRoot` (docgen reads an arrow function). */
54
+ declare const LINE_CHART_ROOT_SIGNATURE: <TMetric extends string>(_props: LineChartRootProps<TMetric> & BaseCartesianChartProps<NoInfer<TMetric>> & RefAttributes<HTMLDivElement>) => ReactElement | null;
55
+ /** @internal Shared by LineChart and AreaChart; apps use those. */
56
+ export declare const LineChartRoot: typeof LINE_CHART_ROOT_SIGNATURE;
48
57
  /**
49
- * Line chart over a categorical x-axis.
50
- *
51
- * Hit testing is per category column rather than per stroke: the tooltip
52
- * reports every line at the hovered category at once, which is almost always
53
- * what a reader wants, and it avoids the proximity search a
54
- * nearest-point-to-cursor model needs.
58
+ * The public, generic call signature (`TMetric` inferred from `series`). Never called: it only
59
+ * types the default export. An arrow function so react-docgen-typescript reads the props.
55
60
  */
56
- declare const LineChart: <TMetric extends string>({ series, lines, categories, width, height, fillWidth, fillHeight, aspectRatio, margin, curve, strokeWidth, showCursor, onSelect, selection, valueUnit, valueFormatter, labelFormatter, valueDomain, categoryLabelMode, categoryAxisTitle, valueAxisTitle, showGrid, showLegend, legendMaxItems, noTooltip, tooltipRenderer, tooltipMaxItems, isLoading, contentWhenEmpty, ariaLabel, ariaDescription, }: LineChartProps<TMetric>) => import("react").JSX.Element;
61
+ declare const LINE_CHART_SIGNATURE: <TMetric extends string>(_props: LineChartProps<TMetric> & RefAttributes<HTMLDivElement>) => ReactElement | null;
62
+ /** Lines over a categorical x-axis. */
63
+ declare const LineChart: typeof LINE_CHART_SIGNATURE;
57
64
  export default LineChart;