@galaxy-io/dls 1.6.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (538) hide show
  1. package/README.md +47 -50
  2. package/biome/index.json +74 -0
  3. package/biome/plugins/no-hex-literal.grit +20 -0
  4. package/biome/plugins/no-inline-style.grit +13 -0
  5. package/biome/plugins/no-margin.grit +9 -0
  6. package/biome/plugins/warn/no-hex-literal.grit +23 -0
  7. package/biome/plugins/warn/no-inline-style.grit +13 -0
  8. package/biome/plugins/warn/no-margin.grit +9 -0
  9. package/dist/a11y/FocusScope.d.ts +44 -0
  10. package/dist/a11y/FocusScope.js +229 -0
  11. package/dist/a11y/VisuallyHidden.d.ts +21 -0
  12. package/dist/a11y/VisuallyHidden.js +30 -0
  13. package/dist/avatar/Avatar.d.ts +56 -14
  14. package/dist/avatar/Avatar.js +250 -96
  15. package/dist/avatar/AvatarGroup.d.ts +43 -0
  16. package/dist/avatar/AvatarGroup.js +153 -0
  17. package/dist/backgrounds/GridBackground.d.ts +48 -0
  18. package/dist/backgrounds/GridBackground.js +146 -0
  19. package/dist/beacons/Beacon.d.ts +86 -22
  20. package/dist/beacons/Beacon.js +170 -47
  21. package/dist/brand/GalaxyFilamentWordmark.d.ts +30 -0
  22. package/dist/brand/GalaxyFilamentWordmark.js +39 -0
  23. package/dist/brand/GalaxyLogomark.d.ts +26 -0
  24. package/dist/brand/GalaxyLogomark.js +41 -0
  25. package/dist/brand/GalaxyLogomarkAnimation.d.ts +36 -0
  26. package/dist/brand/GalaxyLogomarkAnimation.js +107 -0
  27. package/dist/brand/GalaxyWordmark.d.ts +30 -0
  28. package/dist/brand/GalaxyWordmark.js +63 -0
  29. package/dist/brand/assets/galaxy-logomark-animation.js +136678 -0
  30. package/dist/brand/brandMark.d.ts +26 -0
  31. package/dist/brand/brandMark.js +35 -0
  32. package/dist/buttons/Button.d.ts +148 -59
  33. package/dist/buttons/Button.js +437 -227
  34. package/dist/buttons/ButtonGroup.d.ts +38 -0
  35. package/dist/buttons/ButtonGroup.js +68 -0
  36. package/dist/buttons/CopyButton.d.ts +77 -0
  37. package/dist/buttons/CopyButton.js +65 -0
  38. package/dist/charts/AreaChart.d.ts +49 -0
  39. package/dist/charts/AreaChart.js +31 -0
  40. package/dist/charts/BarChart.d.ts +54 -67
  41. package/dist/charts/BarChart.js +136 -116
  42. package/dist/charts/ChartAxis.d.ts +35 -40
  43. package/dist/charts/ChartAxis.js +114 -90
  44. package/dist/charts/ChartCategoryTargets.d.ts +12 -26
  45. package/dist/charts/ChartCategoryTargets.js +32 -20
  46. package/dist/charts/ChartFrame.d.ts +69 -116
  47. package/dist/charts/ChartFrame.js +253 -119
  48. package/dist/charts/ChartGroupProvider.d.ts +30 -41
  49. package/dist/charts/ChartGroupProvider.js +20 -7
  50. package/dist/charts/ChartLegend.d.ts +27 -48
  51. package/dist/charts/ChartLegend.js +206 -125
  52. package/dist/charts/ChartMarkTargets.d.ts +12 -28
  53. package/dist/charts/ChartMarkTargets.js +33 -20
  54. package/dist/charts/ChartPrimitives.d.ts +50 -305
  55. package/dist/charts/ChartPrimitives.js +65 -413
  56. package/dist/charts/ChartTooltip.d.ts +20 -26
  57. package/dist/charts/ChartTooltip.js +77 -40
  58. package/dist/charts/Heatmap.d.ts +35 -0
  59. package/dist/charts/Heatmap.js +295 -0
  60. package/dist/charts/LineChart.d.ts +54 -47
  61. package/dist/charts/LineChart.js +159 -117
  62. package/dist/charts/PieChart.d.ts +32 -53
  63. package/dist/charts/PieChart.js +149 -135
  64. package/dist/charts/Sparkline.d.ts +107 -0
  65. package/dist/charts/Sparkline.js +244 -0
  66. package/dist/charts/StatChart.d.ts +37 -13
  67. package/dist/charts/StatChart.js +82 -35
  68. package/dist/charts/barChartGeometry.d.ts +138 -86
  69. package/dist/charts/barChartGeometry.js +122 -101
  70. package/dist/charts/barChartLegend.d.ts +14 -18
  71. package/dist/charts/barChartLegend.js +18 -13
  72. package/dist/charts/chartFormat.d.ts +12 -18
  73. package/dist/charts/chartFormat.js +20 -52
  74. package/dist/charts/chartPalette.d.ts +33 -0
  75. package/dist/charts/chartPalette.js +68 -0
  76. package/dist/charts/chartScales.d.ts +41 -108
  77. package/dist/charts/chartScales.js +62 -128
  78. package/dist/charts/constants.d.ts +96 -256
  79. package/dist/charts/constants.js +105 -275
  80. package/dist/charts/heatmapGeometry.d.ts +95 -0
  81. package/dist/charts/heatmapGeometry.js +155 -0
  82. package/dist/charts/lineChartGeometry.d.ts +108 -58
  83. package/dist/charts/lineChartGeometry.js +120 -78
  84. package/dist/charts/pieChartGeometry.d.ts +66 -40
  85. package/dist/charts/pieChartGeometry.js +68 -38
  86. package/dist/charts/types.d.ts +197 -466
  87. package/dist/charts/types.js +55 -144
  88. package/dist/charts/useCartesianChartLayout.d.ts +28 -59
  89. package/dist/charts/useCartesianChartLayout.js +47 -32
  90. package/dist/charts/useChartDimensions.d.ts +19 -40
  91. package/dist/charts/useChartDimensions.js +40 -56
  92. package/dist/charts/useChartFormatters.d.ts +6 -15
  93. package/dist/charts/useChartFormatters.js +4 -9
  94. package/dist/charts/useChartInteraction.d.ts +47 -116
  95. package/dist/charts/useChartInteraction.js +95 -71
  96. package/dist/charts/useChartTooltipPosition.d.ts +29 -39
  97. package/dist/charts/useChartTooltipPosition.js +14 -5
  98. package/dist/charts/useSeriesColorResolver.d.ts +11 -33
  99. package/dist/charts/useSeriesColorResolver.js +19 -12
  100. package/dist/chips/Chip.d.ts +155 -44
  101. package/dist/chips/Chip.js +329 -155
  102. package/dist/chips/ChipGroup.d.ts +53 -0
  103. package/dist/chips/ChipGroup.js +98 -0
  104. package/dist/drawer/Drawer.d.ts +81 -17
  105. package/dist/drawer/Drawer.js +370 -65
  106. package/dist/dropdown/Dropdown.d.ts +80 -63
  107. package/dist/dropdown/Dropdown.js +127 -129
  108. package/dist/editor/CodeEditor.d.ts +119 -40
  109. package/dist/editor/CodeEditor.js +490 -400
  110. package/dist/editor/CodeEditorReactWidget.d.ts +20 -17
  111. package/dist/editor/CodeEditorReactWidget.js +28 -21
  112. package/dist/feedback/Alert.d.ts +49 -0
  113. package/dist/feedback/Alert.js +172 -0
  114. package/dist/feedback/EmptyState.d.ts +39 -0
  115. package/dist/feedback/EmptyState.js +109 -0
  116. package/dist/feedback/ProgressBar.d.ts +125 -0
  117. package/dist/feedback/ProgressBar.js +183 -0
  118. package/dist/feedback/ProgressCircle.d.ts +99 -0
  119. package/dist/feedback/ProgressCircle.js +187 -0
  120. package/dist/feedback/Skeleton.d.ts +69 -0
  121. package/dist/feedback/Skeleton.js +130 -0
  122. package/dist/feedback/Spinner.d.ts +63 -0
  123. package/dist/feedback/Spinner.js +141 -0
  124. package/dist/fonts.css +70 -0
  125. package/dist/hooks/internal/useIsClient.d.ts +2 -0
  126. package/dist/hooks/internal/useIsClient.js +14 -0
  127. package/dist/hooks/useClipboard.d.ts +19 -0
  128. package/dist/hooks/useClipboard.js +45 -0
  129. package/dist/hooks/useControlledOpenState.d.ts +21 -0
  130. package/dist/hooks/useControlledOpenState.js +19 -0
  131. package/dist/hooks/useControlledState.d.ts +19 -0
  132. package/dist/hooks/useControlledState.js +22 -0
  133. package/dist/hooks/useDebouncedValue.d.ts +14 -0
  134. package/dist/hooks/useDebouncedValue.js +33 -0
  135. package/dist/hooks/useDisclosure.d.ts +26 -0
  136. package/dist/hooks/useDisclosure.js +36 -0
  137. package/dist/hooks/useDismiss.d.ts +23 -27
  138. package/dist/hooks/useDismiss.js +39 -27
  139. package/dist/hooks/useElementClientSize.d.ts +10 -10
  140. package/dist/hooks/useElementClientSize.js +8 -11
  141. package/dist/hooks/useElementWidth.d.ts +6 -13
  142. package/dist/hooks/useElementWidth.js +6 -14
  143. package/dist/hooks/useField.d.ts +47 -0
  144. package/dist/hooks/useField.js +40 -0
  145. package/dist/hooks/useHotkey.d.ts +77 -0
  146. package/dist/hooks/useHotkey.js +246 -0
  147. package/dist/hooks/useIsMac.d.ts +12 -0
  148. package/dist/hooks/useIsMac.js +27 -0
  149. package/dist/hooks/useIsomorphicLayoutEffect.d.ts +17 -0
  150. package/dist/hooks/useIsomorphicLayoutEffect.js +20 -0
  151. package/dist/hooks/useLocalStorage.d.ts +28 -0
  152. package/dist/hooks/useLocalStorage.js +145 -0
  153. package/dist/hooks/useMediaQuery.d.ts +11 -0
  154. package/dist/hooks/useMediaQuery.js +23 -0
  155. package/dist/hooks/usePrefersReducedMotion.d.ts +12 -0
  156. package/dist/hooks/usePrefersReducedMotion.js +25 -0
  157. package/dist/hooks/useResize.d.ts +42 -62
  158. package/dist/hooks/useResize.js +43 -31
  159. package/dist/icons/Icon.d.ts +64 -37
  160. package/dist/icons/Icon.js +96 -37
  161. package/dist/icons/internal/IconSlot.d.ts +10 -0
  162. package/dist/icons/internal/IconSlot.js +32 -0
  163. package/dist/inputs/CheckboxGroup.d.ts +115 -0
  164. package/dist/inputs/CheckboxGroup.js +183 -0
  165. package/dist/inputs/CheckboxInput.d.ts +98 -28
  166. package/dist/inputs/CheckboxInput.js +218 -88
  167. package/dist/inputs/ColorInput.d.ts +115 -29
  168. package/dist/inputs/ColorInput.js +748 -326
  169. package/dist/inputs/CopyInput.d.ts +49 -20
  170. package/dist/inputs/CopyInput.js +57 -49
  171. package/dist/inputs/CronInput.d.ts +94 -0
  172. package/dist/inputs/CronInput.js +618 -0
  173. package/dist/inputs/DateInput.d.ts +175 -28
  174. package/dist/inputs/DateInput.js +1109 -451
  175. package/dist/inputs/DurationInput.d.ts +101 -0
  176. package/dist/inputs/DurationInput.js +441 -0
  177. package/dist/inputs/Field.d.ts +75 -0
  178. package/dist/inputs/Field.js +247 -0
  179. package/dist/inputs/Fieldset.d.ts +53 -0
  180. package/dist/inputs/Fieldset.js +149 -0
  181. package/dist/inputs/FileInput.d.ts +110 -0
  182. package/dist/inputs/FileInput.js +476 -0
  183. package/dist/inputs/Input.d.ts +148 -187
  184. package/dist/inputs/Input.js +339 -259
  185. package/dist/inputs/KeyValueInput.d.ts +120 -0
  186. package/dist/inputs/KeyValueInput.js +383 -0
  187. package/dist/inputs/MultiSelectInput.d.ts +165 -54
  188. package/dist/inputs/MultiSelectInput.js +175 -559
  189. package/dist/inputs/NumberInput.d.ts +65 -9
  190. package/dist/inputs/NumberInput.js +197 -40
  191. package/dist/inputs/PasswordInput.d.ts +17 -12
  192. package/dist/inputs/PasswordInput.js +33 -33
  193. package/dist/inputs/PinInput.d.ts +117 -0
  194. package/dist/inputs/PinInput.js +364 -0
  195. package/dist/inputs/RadioGroup.d.ts +115 -0
  196. package/dist/inputs/RadioGroup.js +179 -0
  197. package/dist/inputs/RadioInput.d.ts +87 -24
  198. package/dist/inputs/RadioInput.js +182 -95
  199. package/dist/inputs/SearchInput.d.ts +66 -0
  200. package/dist/inputs/SearchInput.js +156 -0
  201. package/dist/inputs/SelectInput.d.ts +195 -55
  202. package/dist/inputs/SelectInput.js +1308 -446
  203. package/dist/inputs/SliderInput.d.ts +150 -30
  204. package/dist/inputs/SliderInput.js +441 -186
  205. package/dist/inputs/SwitchInput.d.ts +109 -0
  206. package/dist/inputs/SwitchInput.js +248 -0
  207. package/dist/inputs/TagInput.d.ts +117 -0
  208. package/dist/inputs/TagInput.js +408 -0
  209. package/dist/inputs/TextAreaInput.d.ts +146 -44
  210. package/dist/inputs/TextAreaInput.js +292 -198
  211. package/dist/inputs/TextInput.d.ts +4 -13
  212. package/dist/inputs/TextInput.js +13 -48
  213. package/dist/inputs/ToggleInput.d.ts +120 -22
  214. package/dist/inputs/ToggleInput.js +262 -116
  215. package/dist/inputs/internal/bareField.d.ts +18 -0
  216. package/dist/inputs/internal/bareField.js +38 -0
  217. package/dist/inputs/internal/devWarn.d.ts +7 -0
  218. package/dist/inputs/internal/devWarn.js +30 -0
  219. package/dist/inputs/internal/fieldFrame.d.ts +34 -0
  220. package/dist/inputs/internal/fieldFrame.js +64 -0
  221. package/dist/inputs/internal/fieldWiring.d.ts +50 -0
  222. package/dist/inputs/internal/fieldWiring.js +38 -0
  223. package/dist/inputs/internal/innerButton.d.ts +2 -0
  224. package/dist/inputs/internal/innerButton.js +24 -0
  225. package/dist/inputs/internal/ownField.d.ts +45 -0
  226. package/dist/inputs/internal/ownField.js +58 -0
  227. package/dist/inputs/internal/predicates.d.ts +9 -0
  228. package/dist/inputs/internal/predicates.js +11 -0
  229. package/dist/inputs/internal/useComboboxPopover.d.ts +46 -0
  230. package/dist/inputs/internal/useComboboxPopover.js +92 -0
  231. package/dist/json/JsonViewer.d.ts +62 -0
  232. package/dist/json/JsonViewer.js +483 -0
  233. package/dist/layout/Box.d.ts +87 -0
  234. package/dist/layout/Box.js +109 -0
  235. package/dist/layout/Divider.d.ts +25 -0
  236. package/dist/layout/Divider.js +70 -0
  237. package/dist/layout/Flex.d.ts +139 -0
  238. package/dist/layout/Flex.js +165 -0
  239. package/dist/layout/FlexItem.d.ts +72 -0
  240. package/dist/layout/FlexItem.js +84 -0
  241. package/dist/layout/Grid.d.ts +140 -0
  242. package/dist/layout/Grid.js +178 -0
  243. package/dist/layout/Portal.d.ts +29 -0
  244. package/dist/layout/Portal.js +27 -0
  245. package/dist/layout/ResizablePanels.d.ts +88 -0
  246. package/dist/layout/ResizablePanels.js +198 -0
  247. package/dist/layout/ResizeHandle.d.ts +48 -0
  248. package/dist/layout/ResizeHandle.js +143 -0
  249. package/dist/layout/ScrollArea.d.ts +30 -0
  250. package/dist/layout/ScrollArea.js +138 -0
  251. package/dist/links/Link.d.ts +101 -1
  252. package/dist/links/Link.js +166 -4
  253. package/dist/lists/BulletedList.d.ts +25 -7
  254. package/dist/lists/BulletedList.js +72 -27
  255. package/dist/lists/DescriptionList.d.ts +91 -0
  256. package/dist/lists/DescriptionList.js +147 -0
  257. package/dist/menu/ContextMenu.d.ts +64 -0
  258. package/dist/menu/ContextMenu.js +34 -0
  259. package/dist/menu/Menu.d.ts +280 -0
  260. package/dist/menu/Menu.js +1003 -0
  261. package/dist/modal/ConfirmDialog.d.ts +55 -0
  262. package/dist/modal/ConfirmDialog.js +151 -0
  263. package/dist/modal/Modal.d.ts +64 -14
  264. package/dist/modal/Modal.js +189 -48
  265. package/dist/navigation/Breadcrumbs.d.ts +65 -0
  266. package/dist/navigation/Breadcrumbs.js +243 -0
  267. package/dist/navigation/CommandPalette.d.ts +83 -0
  268. package/dist/navigation/CommandPalette.js +509 -0
  269. package/dist/navigation/Pagination.d.ts +87 -0
  270. package/dist/navigation/Pagination.js +300 -0
  271. package/dist/navigation/SidebarNav.d.ts +107 -0
  272. package/dist/navigation/SidebarNav.js +341 -0
  273. package/dist/navigation/Stepper.d.ts +52 -0
  274. package/dist/navigation/Stepper.js +207 -0
  275. package/dist/navigation/Tabs.d.ts +113 -0
  276. package/dist/navigation/Tabs.js +543 -0
  277. package/dist/navigation/Topbar.d.ts +20 -0
  278. package/dist/navigation/Topbar.js +62 -0
  279. package/dist/overlay/OverlayProvider.d.ts +28 -32
  280. package/dist/overlay/OverlayProvider.js +42 -93
  281. package/dist/overlay/useOverlay.d.ts +88 -12
  282. package/dist/overlay/useOverlay.js +220 -43
  283. package/dist/overlays/Popover.d.ts +114 -0
  284. package/dist/overlays/Popover.js +389 -0
  285. package/dist/shapes/Circle.d.ts +84 -8
  286. package/dist/shapes/Circle.js +122 -20
  287. package/dist/shapes/Square.d.ts +84 -8
  288. package/dist/shapes/Square.js +123 -20
  289. package/dist/styles/mixins.d.ts +35 -0
  290. package/dist/styles/mixins.js +60 -0
  291. package/dist/styles.css +1 -202
  292. package/dist/table/InfiniteSpreadsheet.d.ts +140 -10
  293. package/dist/table/InfiniteSpreadsheet.js +762 -225
  294. package/dist/table/InfiniteTable.d.ts +116 -14
  295. package/dist/table/InfiniteTable.js +287 -429
  296. package/dist/table/SpreadsheetCellEditor.d.ts +54 -6
  297. package/dist/table/SpreadsheetCellEditor.js +163 -84
  298. package/dist/table/TableCore.d.ts +252 -0
  299. package/dist/table/TableCore.js +1077 -0
  300. package/dist/table/VirtualizedInfiniteTable.d.ts +104 -14
  301. package/dist/table/VirtualizedInfiniteTable.js +280 -219
  302. package/dist/table/types.d.ts +66 -244
  303. package/dist/table/types.js +0 -51
  304. package/dist/table/useInfiniteScrollSentinel.d.ts +25 -21
  305. package/dist/table/useInfiniteScrollSentinel.js +38 -30
  306. package/dist/table/useSpreadsheetCellNavigation.d.ts +44 -0
  307. package/dist/table/useSpreadsheetCellNavigation.js +141 -0
  308. package/dist/table/useTableColumnLayout.d.ts +90 -25
  309. package/dist/table/useTableColumnLayout.js +255 -50
  310. package/dist/table/useTableKeyboardNavigation.d.ts +32 -21
  311. package/dist/table/useTableKeyboardNavigation.js +95 -71
  312. package/dist/table/useTableRowSelection.d.ts +24 -25
  313. package/dist/table/useTableRowSelection.js +57 -84
  314. package/dist/table/useTableVirtualizer.d.ts +20 -0
  315. package/dist/table/useTableVirtualizer.js +48 -0
  316. package/dist/text/Bold.d.ts +5 -6
  317. package/dist/text/Bold.js +16 -15
  318. package/dist/text/Code.d.ts +5 -6
  319. package/dist/text/Code.js +16 -25
  320. package/dist/text/CodeBlock.d.ts +77 -0
  321. package/dist/text/CodeBlock.js +373 -0
  322. package/dist/text/EditableText.d.ts +55 -15
  323. package/dist/text/EditableText.js +153 -135
  324. package/dist/text/Ellipsis.d.ts +34 -8
  325. package/dist/text/Ellipsis.js +55 -23
  326. package/dist/text/Kbd.d.ts +72 -0
  327. package/dist/text/Kbd.js +284 -0
  328. package/dist/text/MarkdownText.d.ts +27 -10
  329. package/dist/text/MarkdownText.js +317 -300
  330. package/dist/text/RequiredMarker.d.ts +17 -5
  331. package/dist/text/RequiredMarker.js +34 -36
  332. package/dist/text/Selectable.d.ts +5 -6
  333. package/dist/text/Selectable.js +16 -13
  334. package/dist/text/Span.d.ts +82 -0
  335. package/dist/text/Span.js +115 -0
  336. package/dist/text/Text.d.ts +128 -41
  337. package/dist/text/Text.js +209 -76
  338. package/dist/theme/GalaxyProvider.d.ts +75 -0
  339. package/dist/theme/GalaxyProvider.js +223 -0
  340. package/dist/theme/ThemeSwitcher.d.ts +52 -0
  341. package/dist/theme/ThemeSwitcher.js +94 -0
  342. package/dist/theme/enums.d.ts +118 -0
  343. package/dist/theme/enums.js +144 -0
  344. package/dist/theme/tokens/dark.d.ts +2 -0
  345. package/dist/theme/tokens/dark.js +275 -0
  346. package/dist/theme/tokens/generate.d.ts +15 -0
  347. package/dist/theme/tokens/generate.js +47 -0
  348. package/dist/theme/tokens/light.d.ts +2 -0
  349. package/dist/theme/tokens/light.js +274 -0
  350. package/dist/theme/tokens/palette.d.ts +14 -0
  351. package/dist/theme/tokens/palette.js +153 -0
  352. package/dist/theme/tokens/scales.d.ts +26 -0
  353. package/dist/theme/tokens/scales.js +154 -0
  354. package/dist/theme/tokens/t.d.ts +3 -0
  355. package/dist/theme/tokens/t.js +25 -0
  356. package/dist/theme/tokens/types.d.ts +189 -0
  357. package/dist/theme/tokens/types.js +0 -0
  358. package/dist/theme/useGalaxyTheme.d.ts +46 -0
  359. package/dist/theme/useGalaxyTheme.js +36 -0
  360. package/dist/theme/useInverseScope.d.ts +18 -0
  361. package/dist/theme/useInverseScope.js +33 -0
  362. package/dist/three/GalaxyLogomark3D.d.ts +46 -0
  363. package/dist/three/GalaxyLogomark3D.js +134 -0
  364. package/dist/three/assets/galaxy-logomark.js +4 -0
  365. package/dist/three/galaxyLogomark3DScene.d.ts +27 -0
  366. package/dist/three/galaxyLogomark3DScene.js +165 -0
  367. package/dist/timeline/Timeline.d.ts +99 -0
  368. package/dist/timeline/Timeline.js +269 -0
  369. package/dist/toast/Toast.d.ts +43 -19
  370. package/dist/toast/Toast.js +130 -89
  371. package/dist/toast/ToastProvider.d.ts +23 -23
  372. package/dist/toast/ToastProvider.js +298 -101
  373. package/dist/toast/ToastViewport.d.ts +12 -0
  374. package/dist/toast/ToastViewport.js +210 -0
  375. package/dist/toast/useToast.d.ts +139 -5
  376. package/dist/toast/useToast.js +15 -13
  377. package/dist/tokens.css +654 -0
  378. package/dist/tooltip/Tooltip.d.ts +64 -44
  379. package/dist/tooltip/Tooltip.js +280 -73
  380. package/dist/tooltip/internal/LazyTooltip.d.ts +7 -0
  381. package/dist/tooltip/internal/LazyTooltip.js +53 -0
  382. package/dist/transform/Fade.d.ts +33 -11
  383. package/dist/transform/Fade.js +71 -19
  384. package/dist/transform/Flasher.d.ts +25 -0
  385. package/dist/transform/Flasher.js +39 -0
  386. package/dist/transform/Rotate.d.ts +24 -12
  387. package/dist/transform/Rotate.js +36 -22
  388. package/dist/transform/ScaleFade.d.ts +36 -11
  389. package/dist/transform/ScaleFade.js +86 -28
  390. package/dist/transform/internal/CollapseMotion.d.ts +10 -0
  391. package/dist/transform/internal/CollapseMotion.js +65 -0
  392. package/dist/tree/Tree.d.ts +85 -0
  393. package/dist/tree/Tree.js +387 -0
  394. package/dist/tree/treeRow.d.ts +39 -0
  395. package/dist/tree/treeRow.js +75 -0
  396. package/dist/utils/colors.d.ts +46 -13
  397. package/dist/utils/colors.js +92 -34
  398. package/dist/utils/css.d.ts +23 -0
  399. package/dist/utils/css.js +30 -0
  400. package/dist/utils/format.d.ts +58 -0
  401. package/dist/utils/format.js +220 -0
  402. package/dist/vite/index.d.ts +16 -0
  403. package/dist/vite/index.js +52 -0
  404. package/dist/widget/Widget.d.ts +164 -48
  405. package/dist/widget/Widget.js +335 -96
  406. package/dist/widget/WidgetGroup.d.ts +36 -0
  407. package/dist/widget/WidgetGroup.js +103 -0
  408. package/package.json +851 -157
  409. package/dist/accordion/Accordion.d.ts +0 -54
  410. package/dist/accordion/Accordion.js +0 -183
  411. package/dist/assets/components/GalaxyFilamentWordmarkDark.d.ts +0 -3
  412. package/dist/assets/components/GalaxyFilamentWordmarkDark.js +0 -14
  413. package/dist/assets/components/GalaxyFilamentWordmarkLight.d.ts +0 -3
  414. package/dist/assets/components/GalaxyFilamentWordmarkLight.js +0 -14
  415. package/dist/assets/components/GalaxyLogomarkDark.d.ts +0 -3
  416. package/dist/assets/components/GalaxyLogomarkDark.js +0 -11
  417. package/dist/assets/components/GalaxyLogomarkLight.d.ts +0 -3
  418. package/dist/assets/components/GalaxyLogomarkLight.js +0 -17
  419. package/dist/assets/components/GalaxyWordmarkDark.d.ts +0 -3
  420. package/dist/assets/components/GalaxyWordmarkDark.js +0 -15
  421. package/dist/assets/components/GalaxyWordmarkLight.d.ts +0 -3
  422. package/dist/assets/components/GalaxyWordmarkLight.js +0 -28
  423. package/dist/assets/models/galaxy-animation.js +0 -136666
  424. package/dist/assets/models/galaxy-logomark.js +0 -4
  425. package/dist/avatar/AvatarShimmer.d.ts +0 -30
  426. package/dist/avatar/AvatarShimmer.js +0 -22
  427. package/dist/backgrounds/CellGridBackground.d.ts +0 -24
  428. package/dist/backgrounds/CellGridBackground.js +0 -44
  429. package/dist/backgrounds/CrossGridBackground.d.ts +0 -26
  430. package/dist/backgrounds/CrossGridBackground.js +0 -49
  431. package/dist/backgrounds/DotGridBackground.d.ts +0 -24
  432. package/dist/backgrounds/DotGridBackground.js +0 -47
  433. package/dist/badge/Badge.d.ts +0 -42
  434. package/dist/badge/Badge.js +0 -99
  435. package/dist/charts/ChartEmptyState.d.ts +0 -17
  436. package/dist/charts/ChartEmptyState.js +0 -29
  437. package/dist/charts/ProgressBar.d.ts +0 -29
  438. package/dist/charts/ProgressBar.js +0 -65
  439. package/dist/charts/chartTheme.d.ts +0 -18
  440. package/dist/charts/chartTheme.js +0 -26
  441. package/dist/containers/FlexItem.d.ts +0 -50
  442. package/dist/containers/FlexItem.js +0 -91
  443. package/dist/containers/FlexWrapper.d.ts +0 -96
  444. package/dist/containers/FlexWrapper.js +0 -143
  445. package/dist/containers/GridWrapper.d.ts +0 -79
  446. package/dist/containers/GridWrapper.js +0 -125
  447. package/dist/containers/Spacing.d.ts +0 -23
  448. package/dist/containers/Spacing.js +0 -59
  449. package/dist/containers/Wrapper.d.ts +0 -26
  450. package/dist/containers/Wrapper.js +0 -54
  451. package/dist/dividers/HorizontalDivider.d.ts +0 -7
  452. package/dist/dividers/HorizontalDivider.js +0 -39
  453. package/dist/dividers/VerticalDivider.d.ts +0 -6
  454. package/dist/dividers/VerticalDivider.js +0 -21
  455. package/dist/icons/GalaxyFilamentWordmark.d.ts +0 -11
  456. package/dist/icons/GalaxyFilamentWordmark.js +0 -25
  457. package/dist/icons/GalaxyLogomark.d.ts +0 -13
  458. package/dist/icons/GalaxyLogomark.js +0 -27
  459. package/dist/icons/GalaxyLogomark3D.d.ts +0 -56
  460. package/dist/icons/GalaxyLogomark3D.js +0 -319
  461. package/dist/icons/GalaxyLogomarkAnimation.d.ts +0 -18
  462. package/dist/icons/GalaxyLogomarkAnimation.js +0 -48
  463. package/dist/icons/GalaxyWordmark.d.ts +0 -11
  464. package/dist/icons/GalaxyWordmark.js +0 -25
  465. package/dist/inputs/MultiTextInput.d.ts +0 -32
  466. package/dist/inputs/MultiTextInput.js +0 -180
  467. package/dist/inputs/SwitcherInput.d.ts +0 -27
  468. package/dist/inputs/SwitcherInput.js +0 -64
  469. package/dist/inputs/hooks.d.ts +0 -10
  470. package/dist/inputs/hooks.js +0 -22
  471. package/dist/overlay/constants.d.ts +0 -28
  472. package/dist/overlay/constants.js +0 -37
  473. package/dist/resizable/HorizontalResizeHandle.d.ts +0 -17
  474. package/dist/resizable/HorizontalResizeHandle.js +0 -38
  475. package/dist/resizable/VerticalResizeHandle.d.ts +0 -18
  476. package/dist/resizable/VerticalResizeHandle.js +0 -39
  477. package/dist/table/SpreadsheetCell.d.ts +0 -21
  478. package/dist/table/SpreadsheetCell.js +0 -71
  479. package/dist/table/SpreadsheetHeaderCell.d.ts +0 -23
  480. package/dist/table/SpreadsheetHeaderCell.js +0 -91
  481. package/dist/table/SpreadsheetMenuItem.d.ts +0 -14
  482. package/dist/table/SpreadsheetMenuItem.js +0 -33
  483. package/dist/table/SpreadsheetPrimitives.d.ts +0 -172
  484. package/dist/table/SpreadsheetPrimitives.js +0 -105
  485. package/dist/table/SpreadsheetRow.d.ts +0 -33
  486. package/dist/table/SpreadsheetRow.js +0 -73
  487. package/dist/table/SpreadsheetRowActionCell.d.ts +0 -14
  488. package/dist/table/SpreadsheetRowActionCell.js +0 -51
  489. package/dist/table/TableExpandCell.d.ts +0 -11
  490. package/dist/table/TableExpandCell.js +0 -24
  491. package/dist/table/TableExpandedRow.d.ts +0 -16
  492. package/dist/table/TableExpandedRow.js +0 -77
  493. package/dist/table/TableHeaderCellContent.d.ts +0 -30
  494. package/dist/table/TableHeaderCellContent.js +0 -48
  495. package/dist/table/TablePrimitives.d.ts +0 -313
  496. package/dist/table/TablePrimitives.js +0 -302
  497. package/dist/table/TableSelectCell.d.ts +0 -18
  498. package/dist/table/TableSelectCell.js +0 -27
  499. package/dist/table/TableStatusRow.d.ts +0 -18
  500. package/dist/table/TableStatusRow.js +0 -50
  501. package/dist/table/useSpreadsheetEditing.d.ts +0 -13
  502. package/dist/table/useSpreadsheetEditing.js +0 -41
  503. package/dist/table/useTableColumnResize.d.ts +0 -38
  504. package/dist/table/useTableColumnResize.js +0 -155
  505. package/dist/table/useTableRowExpansion.d.ts +0 -24
  506. package/dist/table/useTableRowExpansion.js +0 -62
  507. package/dist/table/utils.d.ts +0 -50
  508. package/dist/table/utils.js +0 -78
  509. package/dist/text/HotKeys.d.ts +0 -30
  510. package/dist/text/HotKeys.js +0 -74
  511. package/dist/text/Paragraph.d.ts +0 -33
  512. package/dist/text/Paragraph.js +0 -83
  513. package/dist/text/TextShimmer.d.ts +0 -14
  514. package/dist/text/TextShimmer.js +0 -34
  515. package/dist/theme/GalaxyTheme.d.ts +0 -67
  516. package/dist/theme/GalaxyTheme.js +0 -119
  517. package/dist/theme/constants.d.ts +0 -8
  518. package/dist/theme/constants.js +0 -38
  519. package/dist/theme/index.d.ts +0 -6
  520. package/dist/theme/index.js +0 -7
  521. package/dist/theme/types.d.ts +0 -195
  522. package/dist/theme/types.js +0 -10
  523. package/dist/theme/typography.d.ts +0 -2
  524. package/dist/theme/typography.js +0 -73
  525. package/dist/theme/variants/dark.d.ts +0 -2
  526. package/dist/theme/variants/dark.js +0 -125
  527. package/dist/theme/variants/light.d.ts +0 -2
  528. package/dist/theme/variants/light.js +0 -125
  529. package/dist/toast/ToastContainer.d.ts +0 -10
  530. package/dist/toast/ToastContainer.js +0 -31
  531. package/dist/toast/ToastWrapper.d.ts +0 -6
  532. package/dist/toast/ToastWrapper.js +0 -27
  533. package/dist/transform/Flash.d.ts +0 -7
  534. package/dist/transform/Flash.js +0 -18
  535. package/dist/transform/Spin.d.ts +0 -14
  536. package/dist/transform/Spin.js +0 -25
  537. package/dist/utils/linaria.d.ts +0 -1
  538. package/dist/utils/linaria.js +0 -8
@@ -1,55 +1,75 @@
1
- import type { PropsWithChildren } from "react";
2
- /** Placement relative to the trigger. The `AUTO_*` values pick a side that fits. */
3
- export declare enum TooltipPosition {
4
- TOP = "top",
5
- BOTTOM = "bottom",
6
- LEFT = "left",
7
- RIGHT = "right",
8
- TOP_START = "top-start",
9
- TOP_END = "top-end",
10
- BOTTOM_START = "bottom-start",
11
- BOTTOM_END = "bottom-end",
12
- RIGHT_START = "right-start",
13
- RIGHT_END = "right-end",
14
- LEFT_START = "left-start",
15
- LEFT_END = "left-end",
16
- AUTO = "auto",
17
- AUTO_START = "auto-start",
18
- AUTO_END = "auto-end"
19
- }
20
- /** Surface treatment of the tooltip bubble. */
1
+ import { type AriaAttributes, type CSSProperties, type ReactElement, type ReactNode } from "react";
2
+ import { Placement } from "../theme/enums.js";
3
+ /**
4
+ * Bubble fill: a surface step (Constitution V-A surface set), resolved **inside the inverse
5
+ * scope**, so every step is the opposite theme's (dark on a light UI, light on a dark one).
6
+ */
21
7
  export declare enum TooltipVariant {
8
+ /** The opposite theme's canvas fill, `background.base`: the high-contrast bubble. The default. */
22
9
  BASE = "BASE",
10
+ /** The opposite theme's panel fill, `background.primary`. */
23
11
  PRIMARY = "PRIMARY",
12
+ /** The opposite theme's raised fill, `background.secondary`. */
24
13
  SECONDARY = "SECONDARY",
14
+ /** The opposite theme's most elevated fill, `background.tertiary`. */
25
15
  TERTIARY = "TERTIARY"
26
16
  }
27
- export interface TooltipProps {
28
- /** Tooltip content. A string is wrapped in `Text`; a node renders as-is. */
29
- body: string | React.ReactNode;
30
- /** @default TooltipVariant.SECONDARY */
17
+ export interface TooltipProps extends AriaAttributes {
18
+ /**
19
+ * The trigger: one element that forwards its `ref` and spreads props to a DOM element. Tooltip
20
+ * clones it and does not wrap it.
21
+ */
22
+ children: ReactElement;
23
+ /**
24
+ * Hint content. A string or number renders as `Text` `BODY_SM`; a node renders as it is. An
25
+ * empty value never opens. Keep it short and non-interactive.
26
+ */
27
+ body: ReactNode;
28
+ /**
29
+ * Shortcut for the trigger's action, shown as a trailing `Kbd` (`useHotkey` grammar). Display
30
+ * only: the host binds it.
31
+ */
32
+ hotKeys?: string[];
33
+ /**
34
+ * Bubble fill: a surface step of the opposite theme (the bubble is always inverted).
35
+ * @default TooltipVariant.BASE
36
+ */
31
37
  variant?: TooltipVariant;
32
- /** @default TooltipPosition.TOP */
33
- position?: TooltipPosition;
34
- /** Milliseconds to hover before it appears. @default 0 */
38
+ /**
39
+ * Preferred side and alignment. The bubble flips and shifts to stay in the viewport; `AUTO*`
40
+ * picks the side with the most room.
41
+ * @default Placement.TOP
42
+ */
43
+ placement?: Placement;
44
+ /**
45
+ * Milliseconds the pointer must rest on the trigger before the bubble opens. Skipped while
46
+ * another tooltip is open or has just closed; keyboard focus opens without a delay.
47
+ * @default 0
48
+ */
35
49
  delay?: number;
36
- /** `[skidding, distance]` in px from the trigger. @default [0, 4] */
37
- offset?: [number, number];
38
- /** Keep it open while the pointer is over it, so links inside stay reachable. */
39
- isInteractive?: boolean;
40
- /** Drop the 8px inset — for tooltips that host their own layout. */
41
- noPadding?: boolean;
42
- /** Drop the hairline border. */
43
- noBorder?: boolean;
44
- /** Render children bare, with no tooltip at all. */
50
+ /** Controlled open state. When set, Tooltip calls `onOpenChange` and lets the caller decide. */
51
+ isOpen?: boolean;
52
+ /**
53
+ * Initial open state while uncontrolled.
54
+ * @default false
55
+ */
56
+ defaultIsOpen?: boolean;
57
+ /** Called with the requested open state on hover, focus, blur, Escape, trigger press, and when another tooltip opens. */
58
+ onOpenChange?: (isOpen: boolean) => void;
59
+ /**
60
+ * Never opens and adds no `aria-describedby`. The trigger renders exactly as when enabled.
61
+ * @default false
62
+ */
45
63
  isDisabled?: boolean;
64
+ /** DOM id on the bubble; the trigger's `aria-describedby` target. @default a `useId()` value */
65
+ id?: string;
66
+ /** Any `data-*` attribute, forwarded to the bubble. */
67
+ [dataAttribute: `data-${string}`]: string | number | boolean | undefined;
68
+ /** Extra class on the bubble. */
69
+ className?: string;
70
+ /** Inline style on the bubble; only for setting CSS custom properties. */
71
+ style?: CSSProperties;
46
72
  }
47
- /**
48
- * Wraps a trigger and shows `body` on hover or keyboard focus. Children are the
49
- * trigger, wrapped in an inline-block span.
50
- *
51
- * Sits at z-index 10000, above modals and drawers. Set `isInteractive` if the
52
- * body contains anything clickable.
53
- */
54
- declare const Tooltip: ({ children, variant, body, position, delay, offset, isInteractive, noPadding, noBorder, isDisabled, }: PropsWithChildren<TooltipProps>) => string | number | boolean | Iterable<import("react").ReactNode> | import("react").JSX.Element | null | undefined;
73
+ /** A short, non-interactive hint for one trigger, shown on hover or keyboard focus. */
74
+ declare const Tooltip: import("react").ForwardRefExoticComponent<TooltipProps & import("react").RefAttributes<HTMLDivElement>>;
55
75
  export default Tooltip;
@@ -1,90 +1,297 @@
1
- import { withTheme } from "../theme/GalaxyTheme.js";
2
- import Text, { TextSize } from "../text/Text.js";
1
+ import { Placement } from "../theme/enums.js";
2
+ import Text, { TextSize, TextVariant } from "../text/Text.js";
3
+ import { SPACE } from "../theme/tokens/scales.js";
4
+ import { useControlledOpenState } from "../hooks/useControlledOpenState.js";
5
+ import Flex, { AlignItems } from "../layout/Flex.js";
6
+ import { ThemeScopeContext } from "../theme/useGalaxyTheme.js";
7
+ import Portal from "../layout/Portal.js";
8
+ import { OverlayLayer, useOverlay } from "../overlay/useOverlay.js";
9
+ import Kbd, { KbdSize, KbdVariant } from "../text/Kbd.js";
10
+ import { useInverseScope } from "../theme/useInverseScope.js";
3
11
  /* empty css */
4
12
  import { styled } from "@linaria/react";
5
- import { match } from "ts-pattern";
6
- import { jsx } from "react/jsx-runtime";
7
- import Tippy from "@tippyjs/react";
13
+ import { cloneElement, forwardRef, useCallback, useEffect, useId, useReducer, useRef, version } from "react";
14
+ import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
15
+ import { cx } from "@linaria/core";
16
+ import { autoPlacement, autoUpdate, flip, hide, offset, safePolygon, shift, useDismiss, useFloating, useFocus, useHover, useInteractions, useMergeRefs, useRole } from "@floating-ui/react";
8
17
  //#region src/tooltip/Tooltip.tsx
9
- /** Placement relative to the trigger. The `AUTO_*` values pick a side that fits. */
10
- var TooltipPosition = /* @__PURE__ */ function(TooltipPosition) {
11
- TooltipPosition["TOP"] = "top";
12
- TooltipPosition["BOTTOM"] = "bottom";
13
- TooltipPosition["LEFT"] = "left";
14
- TooltipPosition["RIGHT"] = "right";
15
- TooltipPosition["TOP_START"] = "top-start";
16
- TooltipPosition["TOP_END"] = "top-end";
17
- TooltipPosition["BOTTOM_START"] = "bottom-start";
18
- TooltipPosition["BOTTOM_END"] = "bottom-end";
19
- TooltipPosition["RIGHT_START"] = "right-start";
20
- TooltipPosition["RIGHT_END"] = "right-end";
21
- TooltipPosition["LEFT_START"] = "left-start";
22
- TooltipPosition["LEFT_END"] = "left-end";
23
- TooltipPosition["AUTO"] = "auto";
24
- TooltipPosition["AUTO_START"] = "auto-start";
25
- TooltipPosition["AUTO_END"] = "auto-end";
26
- return TooltipPosition;
27
- }({});
28
- /** Surface treatment of the tooltip bubble. */
18
+ /**
19
+ * A short, non-interactive hint beside one trigger element, shown while the pointer rests on it or
20
+ * it has keyboard focus. The trigger is the single child: Tooltip clones it (adding the event
21
+ * handlers, the `ref` and `aria-describedby`) instead of wrapping it, so the trigger's box and
22
+ * HTML do not change. The bubble renders in a `Portal` only while open. Tooltip is the engine
23
+ * behind every `tooltip` shortcut prop in the library.
24
+ *
25
+ * Positioning and interactions come from `@floating-ui/react`. The computed `x`/`y` are written
26
+ * as the `--gx-tooltip-x` / `--gx-tooltip-y` custom properties, read by a static transform.
27
+ *
28
+ * The bubble is always an inverse scope (the opposite theme on its subtree, `useInverseScope`):
29
+ * dark on a light UI, light on a dark one. `variant` picks the surface step inside that scope.
30
+ *
31
+ * Text, Tooltip and Kbd import each other (Text → Tooltip → Kbd → Text). None of them reads
32
+ * another's exports at module scope, so any load order works: the one cross-cycle map here,
33
+ * `TOOLTIP_VARIANT_TO_KBD_VARIANT_MAP`, is built when called at render.
34
+ */
35
+ /**
36
+ * Bubble fill: a surface step (Constitution V-A surface set), resolved **inside the inverse
37
+ * scope**, so every step is the opposite theme's (dark on a light UI, light on a dark one).
38
+ */
29
39
  var TooltipVariant = /* @__PURE__ */ function(TooltipVariant) {
40
+ /** The opposite theme's canvas fill, `background.base`: the high-contrast bubble. The default. */
30
41
  TooltipVariant["BASE"] = "BASE";
42
+ /** The opposite theme's panel fill, `background.primary`. */
31
43
  TooltipVariant["PRIMARY"] = "PRIMARY";
44
+ /** The opposite theme's raised fill, `background.secondary`. */
32
45
  TooltipVariant["SECONDARY"] = "SECONDARY";
46
+ /** The opposite theme's most elevated fill, `background.tertiary`. */
33
47
  TooltipVariant["TERTIARY"] = "TERTIARY";
34
48
  return TooltipVariant;
35
49
  }({});
36
- var TooltipWrapper = /*#__PURE__*/ styled("span")({
37
- name: "TooltipWrapper",
38
- class: "tbnx4ok",
39
- propsAsIs: false
40
- });
41
- var _exp = () => ({ $noPadding }) => $noPadding ? "0" : "8px";
42
- var _exp2 = () => ({ $variant, theme }) => {
43
- return match($variant).with("BASE", () => theme.color.background.base).with("PRIMARY", () => theme.color.background.primary).with("SECONDARY", () => theme.color.background.secondary).with("TERTIARY", () => theme.color.background.tertiary).exhaustive();
50
+ /** The bubble's width cap. A module constant because no width token exists. */
51
+ /** Distance from the trigger and the viewport inset, resolved to numbers for the engine. */
52
+ var TOOLTIP_OFFSET_PX = Number.parseFloat(SPACE[4]);
53
+ var TOOLTIP_SHIFT_PADDING_PX = Number.parseFloat(SPACE[8]);
54
+ /** A hover within this many ms of a tooltip closing opens at once (delay grouping). */
55
+ var TOOLTIP_SKIP_DELAY_MS = 300;
56
+ /**
57
+ * Delay grouping, shared by every Tooltip. Plain JS: never touched at import time, only in event
58
+ * handlers and effects. `close` closes the tooltip that opened last from hover or focus.
59
+ */
60
+ var TOOLTIP_GROUP = {
61
+ close: null,
62
+ lastClosedAt: Number.NEGATIVE_INFINITY
44
63
  };
45
- var _exp3 = () => ({ $noBorder, $variant, theme }) => {
46
- if ($noBorder) return "none";
47
- return match($variant).with("BASE", () => `0.5px solid ${theme.color.border.secondary}`).with("PRIMARY", () => `0.5px solid ${theme.color.border.secondary}`).with("SECONDARY", () => `0.5px solid ${theme.color.border.secondary}`).with("TERTIARY", () => `0.5px solid ${theme.color.border.secondary}`).exhaustive();
64
+ /** `true` while a grouped tooltip is open or one closed less than `TOOLTIP_SKIP_DELAY_MS` ago. */
65
+ function isTooltipGroupWarm() {
66
+ return TOOLTIP_GROUP.close !== null || Date.now() - TOOLTIP_GROUP.lastClosedAt < TOOLTIP_SKIP_DELAY_MS;
67
+ }
68
+ /** `Placement` → the engine: 12 sided placements, and `AUTO*` as `autoPlacement` (replacing `flip`). */
69
+ var TOOLTIP_PLACEMENT_TO_FLOATING_PLACEMENT_MAP = {
70
+ [Placement.TOP]: { placement: "top" },
71
+ [Placement.BOTTOM]: { placement: "bottom" },
72
+ [Placement.LEFT]: { placement: "left" },
73
+ [Placement.RIGHT]: { placement: "right" },
74
+ [Placement.TOP_START]: { placement: "top-start" },
75
+ [Placement.TOP_END]: { placement: "top-end" },
76
+ [Placement.BOTTOM_START]: { placement: "bottom-start" },
77
+ [Placement.BOTTOM_END]: { placement: "bottom-end" },
78
+ [Placement.LEFT_START]: { placement: "left-start" },
79
+ [Placement.LEFT_END]: { placement: "left-end" },
80
+ [Placement.RIGHT_START]: { placement: "right-start" },
81
+ [Placement.RIGHT_END]: { placement: "right-end" },
82
+ [Placement.AUTO]: { autoAlignment: void 0 },
83
+ [Placement.AUTO_START]: { autoAlignment: "start" },
84
+ [Placement.AUTO_END]: { autoAlignment: "end" }
48
85
  };
49
- var TooltipContent = withTheme(/*#__PURE__*/ styled("span")({
50
- name: "TooltipContent",
51
- class: "tjda4tq",
52
- propsAsIs: false,
53
- vars: {
54
- "tjda4tq-0": [_exp()],
55
- "tjda4tq-1": [_exp2()],
56
- "tjda4tq-2": [_exp3()]
57
- }
58
- }));
59
86
  /**
60
- * Wraps a trigger and shows `body` on hover or keyboard focus. Children are the
61
- * trigger, wrapped in an inline-block span.
62
- *
63
- * Sits at z-index 10000, above modals and drawers. Set `isInteractive` if the
64
- * body contains anything clickable.
87
+ * The shortcut caps sit one surface step above the bubble (inside the same inverse scope); the top
88
+ * step has nothing above it, so it steps down. Built when called at render (Text ↔ Tooltip ↔ Kbd
89
+ * cycle: no load-time reads of `KbdVariant`).
65
90
  */
66
- var Tooltip = ({ children, variant = "SECONDARY", body, position = "top", delay = 0, offset = [0, 4], isInteractive = false, noPadding = false, noBorder = false, isDisabled = false }) => {
67
- if (isDisabled) return children;
68
- return /* @__PURE__ */ jsx(Tippy, {
69
- content: /* @__PURE__ */ jsx(TooltipContent, {
70
- $variant: variant,
71
- $noPadding: noPadding,
72
- $noBorder: noBorder,
73
- children: typeof body === "string" ? /* @__PURE__ */ jsx(Text, {
74
- size: TextSize.BODY_SM,
75
- children: body
76
- }) : body
91
+ var TOOLTIP_VARIANT_TO_KBD_VARIANT_MAP = () => ({
92
+ ["BASE"]: KbdVariant.PRIMARY,
93
+ ["PRIMARY"]: KbdVariant.SECONDARY,
94
+ ["SECONDARY"]: KbdVariant.TERTIARY,
95
+ ["TERTIARY"]: KbdVariant.SECONDARY
96
+ });
97
+ var Bubble = /*#__PURE__*/ styled("div")({
98
+ name: "Bubble",
99
+ class: "gx-Tooltip-Bubble-bbnx4ok",
100
+ propsAsIs: false
101
+ });
102
+ /**
103
+ * Bubble fill per surface step, resolved in the inverse scope. The hairline keeps its 0.5px but
104
+ * takes the fill's color on every step: an inverted bubble always contrasts with the page, and a
105
+ * visible hairline would only draw an opposite-theme rim around it.
106
+ */
107
+ var TOOLTIP_VARIANT_TO_CSS_MAP = {
108
+ ["BASE"]: "gx-Tooltip-BASE-bjda4tq",
109
+ ["PRIMARY"]: "gx-Tooltip-PRIMARY-pvbsl8",
110
+ ["SECONDARY"]: "gx-Tooltip-SECONDARY-sxdjaj",
111
+ ["TERTIARY"]: "gx-Tooltip-TERTIARY-tfsg8kc"
112
+ };
113
+ /** The trigger scrolled fully out of view (or the first position is not computed yet). */
114
+ var REFERENCE_HIDDEN_CSS = "gx-Tooltip-REFERENCE_HIDDEN_CSS-r1itzgix";
115
+ /** React 19 moved an element's `ref` into `props`; React 18 keeps it on the element. */
116
+ var IS_REACT_19 = Number.parseInt(version, 10) >= 19;
117
+ /** The child's own ref, read where the running React version keeps it, so neither version warns. */
118
+ function getElementRef(element) {
119
+ return (IS_REACT_19 ? element.props : element).ref;
120
+ }
121
+ /** `undefined`, `null`, `false` and `""` are empty: the tooltip never opens. */
122
+ function isEmptyBody(body) {
123
+ return body === void 0 || body === null || body === false || body === "";
124
+ }
125
+ /** Rounds to the device pixel grid so the translated bubble's text stays sharp. */
126
+ function roundToDevicePixel(value) {
127
+ const ratio = typeof window === "undefined" ? 1 : window.devicePixelRatio || 1;
128
+ return Math.round(value * ratio) / ratio;
129
+ }
130
+ /** Opens from user interaction; only these take part in "one open at a time". */
131
+ var INTERACTION_OPEN_REASONS = new Set(["hover", "focus"]);
132
+ /** The open bubble: the engine's floating props, the passthrough, the position and the content. */
133
+ function TooltipBubble({ floatingProps, passthrough, bubbleRef, id, body, hotKeys, variant, x, y, isHidden, className, style }) {
134
+ const { tabIndex: _tabIndex, ...engineProps } = floatingProps;
135
+ const inverse = useInverseScope();
136
+ const content = typeof body === "string" || typeof body === "number" ? /* @__PURE__ */ jsx(Text, {
137
+ size: TextSize.BODY_SM,
138
+ variant: TextVariant.PRIMARY,
139
+ children: body
140
+ }) : body;
141
+ const inner = hotKeys !== void 0 && hotKeys.length > 0 ? /* @__PURE__ */ jsxs(Flex, {
142
+ alignItems: AlignItems.CENTER,
143
+ gap: 8,
144
+ children: [content, /* @__PURE__ */ jsx(Kbd, {
145
+ hotKeys,
146
+ size: KbdSize.SMALL,
147
+ variant: TOOLTIP_VARIANT_TO_KBD_VARIANT_MAP()[variant]
148
+ })]
149
+ }) : content;
150
+ const position = {
151
+ "--gx-tooltip-x": `${roundToDevicePixel(x)}px`,
152
+ "--gx-tooltip-y": `${roundToDevicePixel(y)}px`
153
+ };
154
+ return /* @__PURE__ */ jsx(Bubble, {
155
+ ...engineProps,
156
+ ...passthrough,
157
+ ...inverse.attributes,
158
+ ref: bubbleRef,
159
+ id,
160
+ className: cx(TOOLTIP_VARIANT_TO_CSS_MAP[variant], isHidden && REFERENCE_HIDDEN_CSS, className),
161
+ style: {
162
+ ...position,
163
+ ...style
164
+ },
165
+ children: /* @__PURE__ */ jsx(ThemeScopeContext.Provider, {
166
+ value: inverse.scope,
167
+ children: inner
168
+ })
169
+ });
170
+ }
171
+ /** A short, non-interactive hint for one trigger, shown on hover or keyboard focus. */
172
+ var Tooltip = forwardRef(function Tooltip({ children, body, hotKeys, variant = "BASE", placement = Placement.TOP, delay = 0, isOpen: isOpenProp, defaultIsOpen = false, onOpenChange, isDisabled = false, id, className, style, ...rest }, ref) {
173
+ const generatedId = useId();
174
+ const bubbleId = id ?? generatedId;
175
+ const isDecorative = rest["aria-hidden"] === true || rest["aria-hidden"] === "true";
176
+ const isEnabled = !isDisabled && !isEmptyBody(body);
177
+ const { isOpen, setOpen } = useControlledOpenState({
178
+ isOpen: isOpenProp,
179
+ defaultIsOpen,
180
+ onOpenChange
181
+ });
182
+ const isShown = isOpen && isEnabled;
183
+ const isShownRef = useRef(isShown);
184
+ isShownRef.current = isShown;
185
+ const setOpenRef = useRef(setOpen);
186
+ setOpenRef.current = setOpen;
187
+ const delayRef = useRef(delay);
188
+ delayRef.current = delay;
189
+ /** Stable identity: the group compares it to know which tooltip it holds. */
190
+ const close = useCallback(() => setOpenRef.current(false), []);
191
+ /** Re-renders this tooltip, so `isShownRef` is reset to the real state after every request. */
192
+ const [, rerender] = useReducer((count) => count + 1, 0);
193
+ const handleOpenChange = useCallback((nextIsOpen, _event, reason) => {
194
+ if (nextIsOpen === isShownRef.current) return;
195
+ if (nextIsOpen && INTERACTION_OPEN_REASONS.has(reason)) {
196
+ const previousClose = TOOLTIP_GROUP.close;
197
+ TOOLTIP_GROUP.close = close;
198
+ if (previousClose !== null && previousClose !== close) previousClose();
199
+ }
200
+ isShownRef.current = nextIsOpen;
201
+ setOpenRef.current(nextIsOpen);
202
+ rerender();
203
+ }, [close]);
204
+ const wasShownRef = useRef(isShown);
205
+ useEffect(() => {
206
+ if (wasShownRef.current && !isShown) {
207
+ TOOLTIP_GROUP.lastClosedAt = Date.now();
208
+ if (TOOLTIP_GROUP.close === close) TOOLTIP_GROUP.close = null;
209
+ }
210
+ wasShownRef.current = isShown;
211
+ }, [isShown, close]);
212
+ useEffect(() => () => {
213
+ if (TOOLTIP_GROUP.close === close) TOOLTIP_GROUP.close = null;
214
+ }, [close]);
215
+ const target = TOOLTIP_PLACEMENT_TO_FLOATING_PLACEMENT_MAP[placement];
216
+ const { refs, context, x, y, middlewareData, isPositioned } = useFloating({
217
+ open: isShown,
218
+ onOpenChange: handleOpenChange,
219
+ placement: "placement" in target ? target.placement : "top",
220
+ strategy: "absolute",
221
+ whileElementsMounted: autoUpdate,
222
+ middleware: [
223
+ offset(TOOLTIP_OFFSET_PX),
224
+ "placement" in target ? flip() : autoPlacement({ alignment: target.autoAlignment }),
225
+ shift({ padding: TOOLTIP_SHIFT_PADDING_PX }),
226
+ hide()
227
+ ]
228
+ });
229
+ const hover = useHover(context, {
230
+ enabled: isEnabled,
231
+ mouseOnly: true,
232
+ move: false,
233
+ delay: () => ({
234
+ open: isTooltipGroupWarm() ? 0 : delayRef.current,
235
+ close: 0
77
236
  }),
78
- placement: position,
79
- delay,
80
- duration: 0,
81
- offset,
82
- interactive: isInteractive,
83
- appendTo: () => document.body,
84
- maxWidth: "none",
85
- zIndex: 1e4,
86
- children: /* @__PURE__ */ jsx(TooltipWrapper, { children })
237
+ handleClose: safePolygon()
87
238
  });
88
- };
239
+ const focus = useFocus(context, {
240
+ enabled: isEnabled,
241
+ visibleOnly: true
242
+ });
243
+ useOverlay({
244
+ isOpen: isShown,
245
+ layer: OverlayLayer.TOOLTIP,
246
+ onEscape: close
247
+ });
248
+ const { getReferenceProps, getFloatingProps } = useInteractions([
249
+ hover,
250
+ focus,
251
+ useDismiss(context, {
252
+ enabled: isEnabled,
253
+ escapeKey: false,
254
+ referencePress: true,
255
+ outsidePress: false
256
+ }),
257
+ useRole(context, {
258
+ enabled: isEnabled,
259
+ role: "tooltip"
260
+ })
261
+ ]);
262
+ const childProps = children.props;
263
+ const triggerRef = useMergeRefs([refs.setReference, getElementRef(children)]);
264
+ const bubbleRef = useMergeRefs([refs.setFloating, ref]);
265
+ const triggerProps = {};
266
+ for (const [key, value] of Object.entries(getReferenceProps())) {
267
+ if (key === "aria-describedby") continue;
268
+ const own = childProps[key];
269
+ triggerProps[key] = typeof value === "function" && typeof own === "function" ? (...args) => {
270
+ own(...args);
271
+ value(...args);
272
+ } : value;
273
+ }
274
+ const ownDescribedBy = childProps["aria-describedby"];
275
+ const describedBy = isShown && !isDecorative ? [typeof ownDescribedBy === "string" ? ownDescribedBy : void 0, bubbleId].filter(Boolean).join(" ") : ownDescribedBy;
276
+ return /* @__PURE__ */ jsxs(Fragment$1, { children: [cloneElement(children, {
277
+ ...triggerProps,
278
+ ref: triggerRef,
279
+ "aria-describedby": describedBy
280
+ }), isShown && /* @__PURE__ */ jsx(Portal, { children: /* @__PURE__ */ jsx(TooltipBubble, {
281
+ floatingProps: getFloatingProps(),
282
+ passthrough: rest,
283
+ bubbleRef,
284
+ id: bubbleId,
285
+ body,
286
+ hotKeys,
287
+ variant,
288
+ x,
289
+ y,
290
+ isHidden: middlewareData.hide?.referenceHidden === true || !isPositioned,
291
+ className,
292
+ style
293
+ }) })] });
294
+ });
295
+ Tooltip.displayName = "Tooltip";
89
296
  //#endregion
90
- export { TooltipPosition, TooltipVariant, Tooltip as default };
297
+ export { TooltipVariant, Tooltip as default };
@@ -0,0 +1,7 @@
1
+ import type { TooltipProps } from "../Tooltip.js";
2
+ /** @internal `Tooltip` behind `import()`: the trigger renders alone until the module has loaded. */
3
+ declare function LazyTooltip({ children, ...props }: TooltipProps): import("react").JSX.Element;
4
+ declare namespace LazyTooltip {
5
+ var displayName: string;
6
+ }
7
+ export default LazyTooltip;
@@ -0,0 +1,53 @@
1
+ import { useIsClient } from "../../hooks/internal/useIsClient.js";
2
+ import { useEffect, useState } from "react";
3
+ import { jsx } from "react/jsx-runtime";
4
+ //#region src/tooltip/internal/LazyTooltip.tsx
5
+ /**
6
+ * @internal `Tooltip` loaded on first use. `Text` and `Icon` are in every app and almost never
7
+ * show a tooltip, but a static import would pull `Tooltip` (and with it floating-ui, `Portal`,
8
+ * the overlay store, `Flex` and `Kbd`) into every bundle that renders text, and would make `Text`
9
+ * ↔ `Tooltip` an import cycle.
10
+ *
11
+ * The module is fetched with `import()` once, after the first client render that needs it, and
12
+ * cached for every later instance. Until it has landed the trigger renders alone: on the server,
13
+ * during hydration (so the markup matches) and for the one tick the import takes in an app whose
14
+ * bundle already holds `Tooltip`. No `Suspense` boundary is involved, so `renderToString` emits
15
+ * plain markup and hydration never falls back to client rendering.
16
+ *
17
+ * Only `Text` and `Icon` use it. A component whose tooltip is part of its job (`Button`, `Chip`,
18
+ * `Field`) imports `Tooltip` directly.
19
+ */
20
+ /** The loaded `Tooltip`, shared by every instance once the import has resolved. */
21
+ var loadedTooltip = null;
22
+ /** The in-flight import, so concurrent first renders share one request. */
23
+ var loading = null;
24
+ /** Starts (or joins) the import; resolves once `loadedTooltip` is set. */
25
+ function loadTooltip() {
26
+ loading ??= import("../Tooltip.js").then((module) => {
27
+ loadedTooltip = module.default;
28
+ });
29
+ return loading;
30
+ }
31
+ /** @internal `Tooltip` behind `import()`: the trigger renders alone until the module has loaded. */
32
+ function LazyTooltip({ children, ...props }) {
33
+ const isClient = useIsClient();
34
+ const [Tooltip, setTooltip] = useState(() => loadedTooltip);
35
+ useEffect(() => {
36
+ if (!isClient || Tooltip !== null) return;
37
+ let isMounted = true;
38
+ loadTooltip().then(() => {
39
+ if (isMounted) setTooltip(() => loadedTooltip);
40
+ });
41
+ return () => {
42
+ isMounted = false;
43
+ };
44
+ }, [isClient, Tooltip]);
45
+ if (!isClient || Tooltip === null) return children;
46
+ return /* @__PURE__ */ jsx(Tooltip, {
47
+ ...props,
48
+ children
49
+ });
50
+ }
51
+ LazyTooltip.displayName = "LazyTooltip";
52
+ //#endregion
53
+ export { LazyTooltip as default };
@@ -1,13 +1,35 @@
1
- import type { PropsWithChildren } from "react";
2
- export interface FadeProps {
3
- /** Seconds to wait before starting. @default 0 */
4
- delay?: number;
1
+ import { type AriaAttributes, type CSSProperties, type ReactNode } from "react";
2
+ export interface FadeProps extends AriaAttributes {
3
+ /** The content to fade in and out. */
4
+ children?: ReactNode;
5
+ /**
6
+ * Whether the content is shown. Changing it fades the content in or out. Controlled only; the
7
+ * host owns the state.
8
+ * @default false
9
+ */
10
+ isOpen?: boolean;
11
+ /**
12
+ * Keep the content mounted while closed (transparent, `visibility: hidden`) so its state
13
+ * survives and it keeps its space in the layout. By default it unmounts after the fade-out.
14
+ * @default false
15
+ */
16
+ shouldKeepMounted?: boolean;
17
+ /**
18
+ * Fade in when the component mounts already open (a message that appears with its row). By
19
+ * default a Fade that mounts open renders at rest. The server renders it transparent, so don't
20
+ * use it for server-rendered content that must be readable before JavaScript runs.
21
+ * @default false
22
+ */
23
+ shouldAnimateOnMount?: boolean;
24
+ /** DOM id on the root `<div>`. */
25
+ id?: string;
26
+ /** Any `data-*` attribute, forwarded to the root `<div>`. */
27
+ [dataAttribute: `data-${string}`]: string | number | boolean | undefined;
28
+ /** Extra class on the root `<div>`. Must not set `opacity`, `transform` or `visibility`. */
29
+ className?: string;
30
+ /** Inline style on the root `<div>`; only for setting CSS custom properties. */
31
+ style?: CSSProperties;
5
32
  }
6
- /**
7
- * Fades children in on mount and out on unmount, over 200ms.
8
- *
9
- * The exit half only runs inside a framer-motion `AnimatePresence`. Fills its
10
- * parent (100% × 100%).
11
- */
12
- declare const Fade: ({ children, delay }: PropsWithChildren<FadeProps>) => import("react").JSX.Element;
33
+ /** Fades its content in and out; unmounts it when closed by default. */
34
+ declare const Fade: import("react").ForwardRefExoticComponent<FadeProps & import("react").RefAttributes<HTMLDivElement>>;
13
35
  export default Fade;