@galaxy-io/dls 1.6.1 → 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 -30
  468. package/dist/inputs/SwitcherInput.js +0 -81
  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,251 +1,73 @@
1
+ /**
2
+ * Column and state types shared by `InfiniteTable`, `VirtualizedInfiniteTable` and
3
+ * `InfiniteSpreadsheet` (`@galaxy-io/dls/table/types`). Types only: importing this module costs
4
+ * nothing at runtime and pulls in no optional peer. A column array written for one table works
5
+ * unchanged in the others.
6
+ */
1
7
  import type { ReactNode } from "react";
2
- import type { OnChangeFn as TanstackOnChangeFn, Row as TanstackRow, RowSelectionState as TanstackRowSelectionState, SortingState as TanstackSortingState, Table as TanstackTable } from "@tanstack/react-table";
3
- import type { TextVariant } from "../text/Text";
4
- export declare enum TableVariant {
5
- BASE = "BASE",
6
- PRIMARY = "PRIMARY",
7
- SECONDARY = "SECONDARY",
8
- TERTIARY = "TERTIARY"
9
- }
10
- export declare enum TableDensity {
11
- SMALL = "SMALL",
12
- MEDIUM = "MEDIUM",
13
- LARGE = "LARGE"
14
- }
15
- export declare enum ColumnPin {
16
- LEFT = "LEFT",
17
- RIGHT = "RIGHT"
18
- }
19
- export declare enum ColumnAlign {
20
- LEFT = "LEFT",
21
- CENTER = "CENTER",
22
- RIGHT = "RIGHT"
23
- }
24
- export declare enum ColumnResizeMode {
25
- /** Column width follows the pointer while dragging. */
26
- ON_CHANGE = "ON_CHANGE",
27
- /** Column width commits once the drag ends. */
28
- ON_END = "ON_END"
8
+ import type { TextProps } from "../text/Text.js";
9
+ import type { Side } from "../theme/enums.js";
10
+ /** Side a column sticks to while the table scrolls sideways. */
11
+ export type TableColumnPin = Side.LEFT | Side.RIGHT;
12
+ /** Horizontal alignment of a column's header and cells (the `Text` `align` values). */
13
+ export type TableColumnAlign = NonNullable<TextProps["align"]>;
14
+ /** What a column's `cell` renderer receives. */
15
+ export interface TableCellContext<TData, TValue = unknown> {
16
+ /** The column's `accessor` result for this row (`undefined` without an accessor). */
17
+ value: TValue;
18
+ /** The row's data object. */
19
+ row: TData;
20
+ /** Position of the row in the table body, from 0. */
21
+ rowIndex: number;
22
+ /** The row's id (`getRowId`). */
23
+ rowId: string;
29
24
  }
30
- export interface ColumnDef<TData, TValue = unknown> {
25
+ /** One column of a table. */
26
+ export interface TableColumn<TData, TValue = unknown> {
27
+ /** Stable identity; used by sorting, `columnLayout` and React keys. */
31
28
  id: string;
32
- accessorFn?: (row: TData) => TValue;
33
- header?: string | ((props: {
34
- table: TanstackTable<TData>;
35
- }) => ReactNode);
36
- cell?: (props: {
37
- value: TValue;
38
- row: TanstackRow<TData>;
39
- }) => ReactNode;
40
- size?: number;
41
- minSize?: number;
42
- maxSize?: number;
43
- pin?: ColumnPin;
44
- enableSorting?: boolean;
45
- sortDescFirst?: boolean;
46
- enableResizing?: boolean;
47
- align?: ColumnAlign;
48
- cellLoading?: () => ReactNode;
49
- headerAriaLabel?: string;
50
- }
51
- export interface EstimateColumnWidthOptions {
29
+ /** Column name, shown in the header and used by the Columns menu, the resize handle and screen readers. */
30
+ header: string;
31
+ /** Reads the cell value from a row. Sorting compares these values. */
32
+ accessor?(row: TData): TValue;
33
+ /** Renders the cell. Without it the value renders as one line of text. Must stay cheap; it runs for every visible row. */
34
+ cell?(context: TableCellContext<TData, TValue>): ReactNode;
35
+ /** Content of this column's cell in the sticky footer row (a total). A string renders as medium-weight text. */
36
+ footer?: ReactNode;
37
+ /** Width in pixels. Without it the column shares the leftover space. */
38
+ width?: number;
39
+ /** Smallest width in pixels, when resizing or sharing space. @default 60 */
52
40
  minWidth?: number;
41
+ /** Largest width in pixels when resizing. @default 800 */
53
42
  maxWidth?: number;
54
- charWidth?: number;
55
- padding?: number;
56
- }
57
- /** Column widths keyed by column id, as produced by resizing. */
58
- export type ColumnSizingState = Record<string, number>;
59
- /**
60
- * Props shared by every table surface — dimensions, paging, loading/error
61
- * states and resizing behave identically whether or not rows are virtualized.
62
- */
63
- export interface BaseTableProps<TData> {
64
- columns: ColumnDef<TData, unknown>[];
65
- getRowId?: (row: TData, index: number) => string;
66
- height?: number | string;
67
- minHeight?: number | string;
68
- maxHeight?: number | string;
69
- width?: number | string;
70
- fillWidth?: boolean;
71
- fillHeight?: boolean;
72
- density?: TableDensity;
73
- variant?: TableVariant;
74
- hasNextPage?: boolean;
75
- isFetchingNextPage?: boolean;
76
- fetchNextPage?: () => void;
77
- isLoading?: boolean;
78
- isError?: boolean;
79
- error?: Error;
80
- loadingRowCount?: number;
81
- contentWhenEmpty?: ReactNode;
82
- contentWhenError?: ReactNode | ((error?: Error) => ReactNode);
83
- noHeader?: boolean;
84
- noLastRowBorder?: boolean;
85
- noLastRowPadding?: boolean;
86
- enableColumnResizing?: boolean;
87
- columnSizing?: ColumnSizingState;
88
- defaultColumnSizing?: ColumnSizingState;
89
- onColumnSizingChange?: (columnSizing: ColumnSizingState) => void;
90
- columnResizeMode?: ColumnResizeMode;
91
- ariaLabel?: string;
92
- ariaLabelledBy?: string;
93
- }
94
- export interface InfiniteTableProps<TData> extends BaseTableProps<TData> {
95
- data: TData[];
96
- enableRowSelection?: boolean | ((row: TanstackRow<TData>) => boolean);
97
- enableMultiRowSelection?: boolean;
98
- rowSelection?: TanstackRowSelectionState;
99
- defaultRowSelection?: TanstackRowSelectionState;
100
- onRowSelectionChange?: TanstackOnChangeFn<TanstackRowSelectionState>;
101
- onSelectedRowsChange?: (rows: TanstackRow<TData>[]) => void;
102
- /** Renders a leading checkbox column that can actually toggle selection. */
103
- showSelectionColumn?: boolean;
104
- selectionColumnPin?: ColumnPin;
105
- enableSelectAll?: boolean;
106
- /** Shift-click selects the range between the last click and this row. */
107
- enableSelectionRange?: boolean;
108
- selectAllAriaLabel?: string;
109
- getRowSelectAriaLabel?: (row: TanstackRow<TData>) => string;
110
- enableSorting?: boolean;
111
- enableMultiSort?: boolean;
112
- sorting?: TanstackSortingState;
113
- onSortingChange?: TanstackOnChangeFn<TanstackSortingState>;
114
- manualSorting?: boolean;
115
- onRowExpand?: (row: TanstackRow<TData>) => ReactNode;
116
- expandedRowIds?: string[];
117
- defaultExpandedRowIds?: string[];
118
- onExpandedChange?: (expandedRowIds: string[]) => void;
119
- getRowCanExpand?: (row: TanstackRow<TData>) => boolean;
120
- /** When false, expanding a row collapses whichever row was open. */
121
- enableMultiRowExpansion?: boolean;
122
- showExpandColumn?: boolean;
123
- expandColumnPin?: ColumnPin;
124
- onRowClick?: (row: TanstackRow<TData>, event: React.MouseEvent) => void;
125
- onRowDoubleClick?: (row: TanstackRow<TData>, event: React.MouseEvent) => void;
126
- /** Fired by click *and* by Enter/Space when a row has keyboard focus. */
127
- onRowActivate?: (row: TanstackRow<TData>, event: React.MouseEvent | React.KeyboardEvent) => void;
128
- getRowAriaLabel?: (row: TanstackRow<TData>) => string;
129
- enableRowFocus?: boolean;
130
- onTableReady?: (table: TanstackTable<TData>) => void;
131
- }
132
- export interface VirtualizedInfiniteTableProps<TData> extends BaseTableProps<TData> {
133
- totalRowCount: number;
134
- getRowData: (index: number) => TData | undefined;
135
- estimateRowHeight?: number;
136
- overscan?: number;
137
- onRowClick?: (row: TanstackRow<TData>, event: React.MouseEvent) => void;
138
- }
139
- export type { TanstackRow as Row, TanstackTable as Table };
140
- export declare enum CellEnrichmentStatus {
141
- IDLE = "IDLE",
142
- PENDING = "PENDING",
143
- RUNNING = "RUNNING",
144
- COMPLETE = "COMPLETE",
145
- ERROR = "ERROR"
146
- }
147
- export declare enum SpreadsheetCellType {
148
- TEXT = "TEXT",
149
- NUMBER = "NUMBER",
150
- BOOLEAN = "BOOLEAN",
151
- ENUM = "ENUM",
152
- DATE = "DATE",
153
- READONLY = "READONLY"
154
- }
155
- /**
156
- * Row access handed to a column-level enrichment action.
157
- *
158
- * A spreadsheet is virtualized over an index, so there is no row array to pass.
159
- * Actions that genuinely need every row call `getLoadedRows()`; actions that
160
- * only need a count read `totalRowCount` without paying for a full scan.
161
- */
162
- export interface SpreadsheetRowsContext<TData> {
163
- totalRowCount: number;
164
- getRowData: (index: number) => TData | undefined;
165
- /**
166
- * Materializes every currently-loaded row, skipping indices that have not
167
- * been fetched. O(totalRowCount) — call once, never per row.
168
- */
169
- getLoadedRows: () => TData[];
170
- }
171
- export interface SpreadsheetColumnAction<TData> {
172
- id: string;
173
- label: string;
174
- icon?: ReactNode;
175
- onAction: (columnId: string, rows: SpreadsheetRowsContext<TData>) => void;
176
- }
177
- export interface SpreadsheetHeaderAction {
178
- id: string;
179
- label: string;
180
- icon?: ReactNode;
181
- variant?: TextVariant;
182
- onAction: (columnId: string) => void;
183
- }
184
- /**
185
- * A spreadsheet column.
186
- *
187
- * Extends `ColumnDef` so `id`, `accessorFn`, sizing, `pin`, `align`,
188
- * `cellLoading`, `enableResizing` and `headerAriaLabel` have one definition
189
- * across the domain — and so these columns feed `useTableColumnLayout` and
190
- * `useTableColumnResize` without a cast.
191
- *
192
- * `header` is narrowed to a string and sorting is dropped: the spreadsheet
193
- * header owns its own menu affordance, and there is no table instance to hand
194
- * a header render function.
195
- */
196
- export interface SpreadsheetColumnDef<TData, TValue = unknown> extends Omit<ColumnDef<TData, TValue>, "cell" | "header" | "enableSorting" | "sortDescFirst"> {
197
- header?: string;
198
- /**
199
- * Custom cell renderer.
200
- *
201
- * `row` carries only `original` and `index` — a virtualized spreadsheet has
202
- * no TanStack row model behind it, so row methods (`id`, `getIsSelected`,
203
- * `subRows`, `getValue`) are absent at runtime despite being on the type.
204
- *
205
- * `isEditing` is optional on purpose: it keeps this signature assignable to
206
- * `ColumnDef["cell"]`, which is what lets the shared layout and resize hooks
207
- * consume these columns unchanged.
208
- */
209
- cell?: (props: {
210
- value: TValue;
211
- row: TanstackRow<TData>;
212
- isEditing?: boolean;
213
- }) => ReactNode;
214
- cellType: SpreadsheetCellType;
215
- editable?: boolean;
216
- enumOptions?: string[];
217
- onCellChange?: (rowIndex: number, row: TData, value: TValue) => void;
218
- headerActions?: SpreadsheetHeaderAction[];
219
- enrichmentActions?: SpreadsheetColumnAction<TData>[];
220
- getCellEnrichmentStatus?: (row: TData, rowIndex: number) => CellEnrichmentStatus;
221
- }
222
- export interface SpreadsheetRowAction<TData> {
223
- id: string;
224
- label: string;
225
- icon?: ReactNode;
226
- onAction: (rowIndex: number, row: TData) => void;
227
- }
228
- export interface EditingCell {
229
- rowIndex: number;
43
+ /** Alignment of the header and cells. Use "right" for numbers. @default "left" */
44
+ align?: TableColumnAlign;
45
+ /** Keeps the column in view at the left or right edge while the table scrolls sideways. Give pinned columns a `width`. */
46
+ pin?: TableColumnPin;
47
+ /** This column's value names the row (a name or title). Its cells are row headers, and it labels the row's checkbox and actions. */
48
+ isRowHeader?: boolean;
49
+ /** The header sorts the table when pressed. @default false */
50
+ canSort?: boolean;
51
+ /** The column can be resized. @default the table's `canResizeColumns` */
52
+ canResize?: boolean;
53
+ /** The column can be hidden from the Columns menu. @default the table's `canCustomizeColumns` */
54
+ canHide?: boolean;
55
+ /** Menu rows (`MenuItem`, …) for a menu opened from a "…" button in this column's header. */
56
+ actions?: ReactNode;
57
+ }
58
+ /** The sorted column. */
59
+ export interface TableSort {
60
+ /** `id` of the sorted column. */
230
61
  columnId: string;
231
- }
232
- /**
233
- * Inherits dimensions, density, variant, paging, loading/error state,
234
- * controlled column sizing and the ARIA labels from the virtualized table.
235
- *
236
- * `onRowClick` is omitted deliberately: a whole-row click target would fight
237
- * the per-cell click-to-edit affordance.
238
- */
239
- export interface InfiniteSpreadsheetProps<TData> extends Omit<VirtualizedInfiniteTableProps<TData>, "columns" | "onRowClick"> {
240
- columns: SpreadsheetColumnDef<TData, unknown>[];
241
- /** Renders the trailing action column with an add-column control. */
242
- onAddColumn?: () => void;
243
- addColumnAriaLabel?: string;
244
- rowActions?: SpreadsheetRowAction<TData>[];
245
- getRowActionsAriaLabel?: (rowIndex: number) => string;
246
- /** Controlled when provided; uncontrolled otherwise. */
247
- editingCell?: EditingCell | null;
248
- onEditingCellChange?: (cell: EditingCell | null) => void;
249
- /** Roving-tabindex row focus and arrow-key row navigation. Defaults to true. */
250
- enableRowFocus?: boolean;
62
+ /** Sorted high to low (Z–A, newest first). */
63
+ isDescending: boolean;
64
+ }
65
+ /** The user's arrangement of the columns. Every field is optional; missing fields mean "as defined in `columns`". */
66
+ export interface TableColumnLayout {
67
+ /** Column ids in display order. Ids not listed follow in `columns` order; unknown ids are ignored. */
68
+ order?: string[];
69
+ /** Ids of hidden columns. */
70
+ hiddenIds?: string[];
71
+ /** Widths in pixels set by resizing, by column id. They win over `width`. */
72
+ widths?: Record<string, number>;
251
73
  }
@@ -1,51 +0,0 @@
1
- //#region src/table/types.ts
2
- var TableVariant = /* @__PURE__ */ function(TableVariant) {
3
- TableVariant["BASE"] = "BASE";
4
- TableVariant["PRIMARY"] = "PRIMARY";
5
- TableVariant["SECONDARY"] = "SECONDARY";
6
- TableVariant["TERTIARY"] = "TERTIARY";
7
- return TableVariant;
8
- }({});
9
- var TableDensity = /* @__PURE__ */ function(TableDensity) {
10
- TableDensity["SMALL"] = "SMALL";
11
- TableDensity["MEDIUM"] = "MEDIUM";
12
- TableDensity["LARGE"] = "LARGE";
13
- return TableDensity;
14
- }({});
15
- var ColumnPin = /* @__PURE__ */ function(ColumnPin) {
16
- ColumnPin["LEFT"] = "LEFT";
17
- ColumnPin["RIGHT"] = "RIGHT";
18
- return ColumnPin;
19
- }({});
20
- var ColumnAlign = /* @__PURE__ */ function(ColumnAlign) {
21
- ColumnAlign["LEFT"] = "LEFT";
22
- ColumnAlign["CENTER"] = "CENTER";
23
- ColumnAlign["RIGHT"] = "RIGHT";
24
- return ColumnAlign;
25
- }({});
26
- var ColumnResizeMode = /* @__PURE__ */ function(ColumnResizeMode) {
27
- /** Column width follows the pointer while dragging. */
28
- ColumnResizeMode["ON_CHANGE"] = "ON_CHANGE";
29
- /** Column width commits once the drag ends. */
30
- ColumnResizeMode["ON_END"] = "ON_END";
31
- return ColumnResizeMode;
32
- }({});
33
- var CellEnrichmentStatus = /* @__PURE__ */ function(CellEnrichmentStatus) {
34
- CellEnrichmentStatus["IDLE"] = "IDLE";
35
- CellEnrichmentStatus["PENDING"] = "PENDING";
36
- CellEnrichmentStatus["RUNNING"] = "RUNNING";
37
- CellEnrichmentStatus["COMPLETE"] = "COMPLETE";
38
- CellEnrichmentStatus["ERROR"] = "ERROR";
39
- return CellEnrichmentStatus;
40
- }({});
41
- var SpreadsheetCellType = /* @__PURE__ */ function(SpreadsheetCellType) {
42
- SpreadsheetCellType["TEXT"] = "TEXT";
43
- SpreadsheetCellType["NUMBER"] = "NUMBER";
44
- SpreadsheetCellType["BOOLEAN"] = "BOOLEAN";
45
- SpreadsheetCellType["ENUM"] = "ENUM";
46
- SpreadsheetCellType["DATE"] = "DATE";
47
- SpreadsheetCellType["READONLY"] = "READONLY";
48
- return SpreadsheetCellType;
49
- }({});
50
- //#endregion
51
- export { CellEnrichmentStatus, ColumnAlign, ColumnPin, ColumnResizeMode, SpreadsheetCellType, TableDensity, TableVariant };
@@ -1,24 +1,28 @@
1
- interface UseInfiniteScrollSentinelOptions {
2
- scrollRef: React.RefObject<HTMLElement | null>;
3
- hasNextPage?: boolean;
4
- isFetchingNextPage?: boolean;
5
- fetchNextPage?: () => void;
6
- /**
7
- * Number of rows currently rendered. Changing it re-arms the observer, which
8
- * is what makes a short first page keep paging until the viewport fills.
9
- */
10
- rowCount: number;
11
- }
12
1
  /**
13
- * Drives infinite scroll from an `IntersectionObserver` on a sentinel element
14
- * placed after the last row.
15
- *
16
- * A plain `scroll` listener can dead-end: if the first page is shorter than the
17
- * viewport, no scroll event ever fires and paging never starts. Re-observing an
18
- * already-intersecting sentinel re-fires the callback, so this keeps pumping
19
- * until the content overflows or `hasNextPage` goes false.
2
+ * @internal Shared by the table components; apps use InfiniteTable, VirtualizedInfiniteTable or
3
+ * InfiniteSpreadsheet.
20
4
  *
21
- * @returns A ref to attach to the sentinel element.
5
+ * The `onEndReached` sentinel: a 1px element after the table, observed with an
6
+ * `IntersectionObserver` whose bottom margin is `marginPx` (`TABLE_END_REACHED_MARGIN_PX`). The root is the
7
+ * scroll container when it overflows, otherwise the viewport, so a table in an unbounded parent
8
+ * pages on page scroll. Armed only while enabled (not loading, no error), re-armed when the row
9
+ * count changes, and calls `onEndReached` at most once per row count: an app with no next page
10
+ * adds no rows, so it is not called again. Without `IntersectionObserver` it falls back to a
11
+ * passive `scroll` listener. Nothing runs at module scope.
22
12
  */
23
- export declare function useInfiniteScrollSentinel({ scrollRef, hasNextPage, isFetchingNextPage, fetchNextPage, rowCount, }: UseInfiniteScrollSentinelOptions): import("react").RefObject<HTMLDivElement>;
24
- export {};
13
+ import { type RefObject } from "react";
14
+ /** @internal Options for `useInfiniteScrollSentinel`. */
15
+ export interface UseInfiniteScrollSentinelOptions {
16
+ /** The table's scroll container. */
17
+ scrollRef: RefObject<HTMLElement | null>;
18
+ /** Called when the end comes within reach; omitted, nothing is observed. */
19
+ onEndReached: (() => void) | undefined;
20
+ /** False while loading or in error: paging pauses. */
21
+ isEnabled: boolean;
22
+ /** Loaded rows; a change re-arms the observer. */
23
+ rowCount: number;
24
+ /** How far below the visible area the end counts as reached, in pixels. */
25
+ marginPx: number;
26
+ }
27
+ /** @internal Observes the sentinel and calls `onEndReached`; returns the sentinel's ref. */
28
+ export declare function useInfiniteScrollSentinel({ scrollRef, onEndReached, isEnabled, rowCount, marginPx, }: UseInfiniteScrollSentinelOptions): RefObject<HTMLDivElement | null>;
@@ -1,51 +1,59 @@
1
- import "./utils.js";
2
1
  import { useEffect, useRef } from "react";
3
2
  //#region src/table/useInfiniteScrollSentinel.ts
4
3
  /**
5
- * Drives infinite scroll from an `IntersectionObserver` on a sentinel element
6
- * placed after the last row.
4
+ * @internal Shared by the table components; apps use InfiniteTable, VirtualizedInfiniteTable or
5
+ * InfiniteSpreadsheet.
7
6
  *
8
- * A plain `scroll` listener can dead-end: if the first page is shorter than the
9
- * viewport, no scroll event ever fires and paging never starts. Re-observing an
10
- * already-intersecting sentinel re-fires the callback, so this keeps pumping
11
- * until the content overflows or `hasNextPage` goes false.
12
- *
13
- * @returns A ref to attach to the sentinel element.
7
+ * The `onEndReached` sentinel: a 1px element after the table, observed with an
8
+ * `IntersectionObserver` whose bottom margin is `marginPx` (`TABLE_END_REACHED_MARGIN_PX`). The root is the
9
+ * scroll container when it overflows, otherwise the viewport, so a table in an unbounded parent
10
+ * pages on page scroll. Armed only while enabled (not loading, no error), re-armed when the row
11
+ * count changes, and calls `onEndReached` at most once per row count: an app with no next page
12
+ * adds no rows, so it is not called again. Without `IntersectionObserver` it falls back to a
13
+ * passive `scroll` listener. Nothing runs at module scope.
14
14
  */
15
- function useInfiniteScrollSentinel({ scrollRef, hasNextPage, isFetchingNextPage, fetchNextPage, rowCount }) {
15
+ /** @internal Observes the sentinel and calls `onEndReached`; returns the sentinel's ref. */
16
+ function useInfiniteScrollSentinel({ scrollRef, onEndReached, isEnabled, rowCount, marginPx }) {
16
17
  const sentinelRef = useRef(null);
17
- const fetchNextPageRef = useRef(fetchNextPage);
18
- useEffect(() => {
19
- fetchNextPageRef.current = fetchNextPage;
20
- });
21
- const canFetch = fetchNextPage !== void 0;
18
+ const onEndReachedRef = useRef(onEndReached);
19
+ onEndReachedRef.current = onEndReached;
20
+ const calledForCountRef = useRef(null);
21
+ const hasHandler = onEndReached !== void 0;
22
22
  useEffect(() => {
23
- const root = scrollRef.current;
23
+ const scroll = scrollRef.current;
24
24
  const sentinel = sentinelRef.current;
25
- if (!root || !sentinel || !canFetch || !hasNextPage || isFetchingNextPage) return;
25
+ if (!hasHandler || !isEnabled || scroll === null || sentinel === null) return;
26
+ if (calledForCountRef.current === rowCount) return;
27
+ const reach = () => {
28
+ if (calledForCountRef.current === rowCount) return;
29
+ calledForCountRef.current = rowCount;
30
+ onEndReachedRef.current?.();
31
+ };
32
+ const isScrollRoot = scroll.scrollHeight > scroll.clientHeight;
26
33
  if (typeof IntersectionObserver === "undefined") {
27
- const onScroll = () => {
28
- const { scrollHeight, scrollTop, clientHeight } = root;
29
- if (scrollHeight - scrollTop - clientHeight < 500) fetchNextPageRef.current?.();
34
+ const target = isScrollRoot ? scroll : window;
35
+ const check = () => {
36
+ const bottom = isScrollRoot ? scroll.getBoundingClientRect().bottom : window.innerHeight;
37
+ if (sentinel.getBoundingClientRect().top - bottom < marginPx) reach();
30
38
  };
31
- onScroll();
32
- root.addEventListener("scroll", onScroll, { passive: true });
33
- return () => root.removeEventListener("scroll", onScroll);
39
+ check();
40
+ target.addEventListener("scroll", check, { passive: true });
41
+ return () => target.removeEventListener("scroll", check);
34
42
  }
35
43
  const observer = new IntersectionObserver((entries) => {
36
- if (entries.some((entry) => entry.isIntersecting)) fetchNextPageRef.current?.();
44
+ if (entries.some((entry) => entry.isIntersecting)) reach();
37
45
  }, {
38
- root,
39
- rootMargin: `0px 0px 500px 0px`
46
+ root: isScrollRoot ? scroll : null,
47
+ rootMargin: `0px 0px ${marginPx}px 0px`
40
48
  });
41
49
  observer.observe(sentinel);
42
50
  return () => observer.disconnect();
43
51
  }, [
44
52
  scrollRef,
45
- canFetch,
46
- hasNextPage,
47
- isFetchingNextPage,
48
- rowCount
53
+ hasHandler,
54
+ isEnabled,
55
+ rowCount,
56
+ marginPx
49
57
  ]);
50
58
  return sentinelRef;
51
59
  }
@@ -0,0 +1,44 @@
1
+ /**
2
+ * @internal Shared by InfiniteSpreadsheet; apps use InfiniteSpreadsheet.
3
+ *
4
+ * Roving cell focus over a spreadsheet body (the WAI-ARIA grid pattern): one cell is the tab stop
5
+ * (`tabIndex` 0), every other -1. Arrow keys move one cell, Home / End go to the ends of the row,
6
+ * Ctrl/Cmd+Home / End to the first / last cell of the grid, PageUp / PageDown one visible page.
7
+ * A move scrolls the row into the virtual window first (`scrollToIndex`), focuses the cell once it
8
+ * is mounted and scrolls it into view sideways. A cell element replaced in place (a skeleton row
9
+ * whose data arrives, a row re-keyed by id) takes the focus back on mount.
10
+ */
11
+ import { type KeyboardEvent } from "react";
12
+ /** @internal A cell of the navigation grid (column index over the navigable columns). */
13
+ export interface SpreadsheetGridCell {
14
+ /** Row index, from 0. */
15
+ rowIndex: number;
16
+ /** Column index among the navigable columns, from 0. */
17
+ columnIndex: number;
18
+ }
19
+ /** @internal Options for `useSpreadsheetCellNavigation`. */
20
+ export interface UseSpreadsheetCellNavigationOptions {
21
+ /** Rows, loaded or not. */
22
+ rowCount: number;
23
+ /** Navigable columns (visible columns, plus the row-actions column). */
24
+ columnCount: number;
25
+ /** Rows in one visible page, for PageUp / PageDown. */
26
+ getPageSize: () => number;
27
+ /** Brings a row into the rendered window. */
28
+ scrollToIndex: (rowIndex: number) => void;
29
+ }
30
+ /** @internal What `useSpreadsheetCellNavigation` returns. */
31
+ export interface SpreadsheetCellNavigation {
32
+ /** The tab-stop cell, clamped to the grid. */
33
+ active: SpreadsheetGridCell;
34
+ /** Ref registration for each rendered cell. */
35
+ registerCell: (rowIndex: number, columnIndex: number, element: HTMLElement | null) => void;
36
+ /** Makes a cell the tab stop and focuses it (scrolling it into view). */
37
+ focusCell: (rowIndex: number, columnIndex: number) => void;
38
+ /** A cell received focus: it becomes the tab stop. */
39
+ handleCellFocus: (rowIndex: number, columnIndex: number) => void;
40
+ /** Moves for a navigation key from `from`; returns `true` when the key was handled. */
41
+ handleNavigationKey: (from: SpreadsheetGridCell, event: KeyboardEvent<HTMLElement>) => boolean;
42
+ }
43
+ /** @internal Roving focus over the cells of a spreadsheet body. */
44
+ export declare function useSpreadsheetCellNavigation({ rowCount, columnCount, getPageSize, scrollToIndex, }: UseSpreadsheetCellNavigationOptions): SpreadsheetCellNavigation;