@galaxy-io/dls 1.6.1 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (540) hide show
  1. package/README.md +47 -50
  2. package/biome/index.json +74 -0
  3. package/biome/plugins/no-hex-literal.grit +20 -0
  4. package/biome/plugins/no-inline-style.grit +13 -0
  5. package/biome/plugins/no-margin.grit +9 -0
  6. package/biome/plugins/warn/no-hex-literal.grit +23 -0
  7. package/biome/plugins/warn/no-inline-style.grit +13 -0
  8. package/biome/plugins/warn/no-margin.grit +9 -0
  9. package/dist/a11y/FocusScope.d.ts +44 -0
  10. package/dist/a11y/FocusScope.js +229 -0
  11. package/dist/a11y/VisuallyHidden.d.ts +21 -0
  12. package/dist/a11y/VisuallyHidden.js +30 -0
  13. package/dist/avatar/Avatar.d.ts +56 -14
  14. package/dist/avatar/Avatar.js +250 -96
  15. package/dist/avatar/AvatarGroup.d.ts +43 -0
  16. package/dist/avatar/AvatarGroup.js +153 -0
  17. package/dist/backgrounds/GridBackground.d.ts +48 -0
  18. package/dist/backgrounds/GridBackground.js +146 -0
  19. package/dist/beacons/Beacon.d.ts +86 -22
  20. package/dist/beacons/Beacon.js +170 -47
  21. package/dist/brand/GalaxyFilamentWordmark.d.ts +30 -0
  22. package/dist/brand/GalaxyFilamentWordmark.js +39 -0
  23. package/dist/brand/GalaxyLogomark.d.ts +26 -0
  24. package/dist/brand/GalaxyLogomark.js +41 -0
  25. package/dist/brand/GalaxyLogomarkAnimation.d.ts +36 -0
  26. package/dist/brand/GalaxyLogomarkAnimation.js +107 -0
  27. package/dist/brand/GalaxyWordmark.d.ts +30 -0
  28. package/dist/brand/GalaxyWordmark.js +63 -0
  29. package/dist/brand/assets/galaxy-logomark-animation.js +136678 -0
  30. package/dist/brand/brandMark.d.ts +26 -0
  31. package/dist/brand/brandMark.js +35 -0
  32. package/dist/buttons/Button.d.ts +148 -59
  33. package/dist/buttons/Button.js +437 -227
  34. package/dist/buttons/ButtonGroup.d.ts +38 -0
  35. package/dist/buttons/ButtonGroup.js +68 -0
  36. package/dist/buttons/CopyButton.d.ts +77 -0
  37. package/dist/buttons/CopyButton.js +65 -0
  38. package/dist/charts/AreaChart.d.ts +49 -0
  39. package/dist/charts/AreaChart.js +31 -0
  40. package/dist/charts/BarChart.d.ts +54 -67
  41. package/dist/charts/BarChart.js +160 -124
  42. package/dist/charts/ChartAxis.d.ts +35 -40
  43. package/dist/charts/ChartAxis.js +114 -90
  44. package/dist/charts/ChartCategoryTargets.d.ts +12 -26
  45. package/dist/charts/ChartCategoryTargets.js +33 -20
  46. package/dist/charts/ChartFrame.d.ts +71 -116
  47. package/dist/charts/ChartFrame.js +306 -97
  48. package/dist/charts/ChartGroupProvider.d.ts +30 -41
  49. package/dist/charts/ChartGroupProvider.js +20 -7
  50. package/dist/charts/ChartLegend.d.ts +37 -48
  51. package/dist/charts/ChartLegend.js +243 -125
  52. package/dist/charts/ChartMarkTargets.d.ts +12 -28
  53. package/dist/charts/ChartMarkTargets.js +34 -20
  54. package/dist/charts/ChartPrimitives.d.ts +50 -305
  55. package/dist/charts/ChartPrimitives.js +65 -413
  56. package/dist/charts/ChartTooltip.d.ts +20 -26
  57. package/dist/charts/ChartTooltip.js +77 -40
  58. package/dist/charts/Heatmap.d.ts +35 -0
  59. package/dist/charts/Heatmap.js +307 -0
  60. package/dist/charts/LineChart.d.ts +54 -47
  61. package/dist/charts/LineChart.js +174 -121
  62. package/dist/charts/PieChart.d.ts +32 -53
  63. package/dist/charts/PieChart.js +159 -136
  64. package/dist/charts/Sparkline.d.ts +107 -0
  65. package/dist/charts/Sparkline.js +244 -0
  66. package/dist/charts/StatChart.d.ts +37 -13
  67. package/dist/charts/StatChart.js +82 -35
  68. package/dist/charts/barChartGeometry.d.ts +138 -86
  69. package/dist/charts/barChartGeometry.js +122 -101
  70. package/dist/charts/barChartLegend.d.ts +14 -18
  71. package/dist/charts/barChartLegend.js +18 -13
  72. package/dist/charts/chartFormat.d.ts +12 -18
  73. package/dist/charts/chartFormat.js +20 -52
  74. package/dist/charts/chartPalette.d.ts +33 -0
  75. package/dist/charts/chartPalette.js +68 -0
  76. package/dist/charts/chartScales.d.ts +41 -108
  77. package/dist/charts/chartScales.js +62 -128
  78. package/dist/charts/chartSelection.d.ts +15 -0
  79. package/dist/charts/chartSelection.js +22 -0
  80. package/dist/charts/constants.d.ts +100 -256
  81. package/dist/charts/constants.js +109 -275
  82. package/dist/charts/heatmapGeometry.d.ts +95 -0
  83. package/dist/charts/heatmapGeometry.js +155 -0
  84. package/dist/charts/lineChartGeometry.d.ts +108 -58
  85. package/dist/charts/lineChartGeometry.js +120 -78
  86. package/dist/charts/pieChartGeometry.d.ts +66 -40
  87. package/dist/charts/pieChartGeometry.js +68 -38
  88. package/dist/charts/types.d.ts +206 -466
  89. package/dist/charts/types.js +55 -144
  90. package/dist/charts/useCartesianChartLayout.d.ts +28 -59
  91. package/dist/charts/useCartesianChartLayout.js +47 -32
  92. package/dist/charts/useChartDimensions.d.ts +19 -40
  93. package/dist/charts/useChartDimensions.js +40 -56
  94. package/dist/charts/useChartFormatters.d.ts +6 -15
  95. package/dist/charts/useChartFormatters.js +4 -9
  96. package/dist/charts/useChartInteraction.d.ts +69 -116
  97. package/dist/charts/useChartInteraction.js +148 -78
  98. package/dist/charts/useChartTooltipPosition.d.ts +29 -39
  99. package/dist/charts/useChartTooltipPosition.js +14 -5
  100. package/dist/charts/useSeriesColorResolver.d.ts +11 -33
  101. package/dist/charts/useSeriesColorResolver.js +19 -12
  102. package/dist/chips/Chip.d.ts +155 -44
  103. package/dist/chips/Chip.js +329 -155
  104. package/dist/chips/ChipGroup.d.ts +53 -0
  105. package/dist/chips/ChipGroup.js +98 -0
  106. package/dist/drawer/Drawer.d.ts +83 -17
  107. package/dist/drawer/Drawer.js +399 -65
  108. package/dist/dropdown/Dropdown.d.ts +80 -63
  109. package/dist/dropdown/Dropdown.js +127 -129
  110. package/dist/editor/CodeEditor.d.ts +119 -40
  111. package/dist/editor/CodeEditor.js +490 -400
  112. package/dist/editor/CodeEditorReactWidget.d.ts +20 -17
  113. package/dist/editor/CodeEditorReactWidget.js +28 -21
  114. package/dist/feedback/Alert.d.ts +49 -0
  115. package/dist/feedback/Alert.js +172 -0
  116. package/dist/feedback/EmptyState.d.ts +39 -0
  117. package/dist/feedback/EmptyState.js +109 -0
  118. package/dist/feedback/ProgressBar.d.ts +125 -0
  119. package/dist/feedback/ProgressBar.js +183 -0
  120. package/dist/feedback/ProgressCircle.d.ts +99 -0
  121. package/dist/feedback/ProgressCircle.js +187 -0
  122. package/dist/feedback/Skeleton.d.ts +69 -0
  123. package/dist/feedback/Skeleton.js +130 -0
  124. package/dist/feedback/Spinner.d.ts +63 -0
  125. package/dist/feedback/Spinner.js +141 -0
  126. package/dist/fonts.css +70 -0
  127. package/dist/hooks/internal/useIsClient.d.ts +2 -0
  128. package/dist/hooks/internal/useIsClient.js +14 -0
  129. package/dist/hooks/useClipboard.d.ts +19 -0
  130. package/dist/hooks/useClipboard.js +45 -0
  131. package/dist/hooks/useControlledOpenState.d.ts +21 -0
  132. package/dist/hooks/useControlledOpenState.js +19 -0
  133. package/dist/hooks/useControlledState.d.ts +19 -0
  134. package/dist/hooks/useControlledState.js +22 -0
  135. package/dist/hooks/useDebouncedValue.d.ts +14 -0
  136. package/dist/hooks/useDebouncedValue.js +33 -0
  137. package/dist/hooks/useDisclosure.d.ts +26 -0
  138. package/dist/hooks/useDisclosure.js +36 -0
  139. package/dist/hooks/useDismiss.d.ts +23 -27
  140. package/dist/hooks/useDismiss.js +39 -27
  141. package/dist/hooks/useElementClientSize.d.ts +10 -10
  142. package/dist/hooks/useElementClientSize.js +8 -11
  143. package/dist/hooks/useElementWidth.d.ts +6 -13
  144. package/dist/hooks/useElementWidth.js +6 -14
  145. package/dist/hooks/useField.d.ts +47 -0
  146. package/dist/hooks/useField.js +40 -0
  147. package/dist/hooks/useHotkey.d.ts +77 -0
  148. package/dist/hooks/useHotkey.js +246 -0
  149. package/dist/hooks/useIsMac.d.ts +12 -0
  150. package/dist/hooks/useIsMac.js +27 -0
  151. package/dist/hooks/useIsomorphicLayoutEffect.d.ts +17 -0
  152. package/dist/hooks/useIsomorphicLayoutEffect.js +20 -0
  153. package/dist/hooks/useLocalStorage.d.ts +28 -0
  154. package/dist/hooks/useLocalStorage.js +145 -0
  155. package/dist/hooks/useMediaQuery.d.ts +11 -0
  156. package/dist/hooks/useMediaQuery.js +23 -0
  157. package/dist/hooks/usePrefersReducedMotion.d.ts +12 -0
  158. package/dist/hooks/usePrefersReducedMotion.js +25 -0
  159. package/dist/hooks/useResize.d.ts +42 -62
  160. package/dist/hooks/useResize.js +43 -31
  161. package/dist/icons/Icon.d.ts +64 -37
  162. package/dist/icons/Icon.js +96 -37
  163. package/dist/icons/internal/IconSlot.d.ts +10 -0
  164. package/dist/icons/internal/IconSlot.js +32 -0
  165. package/dist/inputs/CheckboxGroup.d.ts +115 -0
  166. package/dist/inputs/CheckboxGroup.js +183 -0
  167. package/dist/inputs/CheckboxInput.d.ts +98 -28
  168. package/dist/inputs/CheckboxInput.js +218 -88
  169. package/dist/inputs/ColorInput.d.ts +115 -29
  170. package/dist/inputs/ColorInput.js +748 -326
  171. package/dist/inputs/CopyInput.d.ts +49 -20
  172. package/dist/inputs/CopyInput.js +57 -49
  173. package/dist/inputs/CronInput.d.ts +94 -0
  174. package/dist/inputs/CronInput.js +618 -0
  175. package/dist/inputs/DateInput.d.ts +175 -28
  176. package/dist/inputs/DateInput.js +1109 -451
  177. package/dist/inputs/DurationInput.d.ts +101 -0
  178. package/dist/inputs/DurationInput.js +441 -0
  179. package/dist/inputs/Field.d.ts +75 -0
  180. package/dist/inputs/Field.js +247 -0
  181. package/dist/inputs/Fieldset.d.ts +53 -0
  182. package/dist/inputs/Fieldset.js +149 -0
  183. package/dist/inputs/FileInput.d.ts +110 -0
  184. package/dist/inputs/FileInput.js +476 -0
  185. package/dist/inputs/Input.d.ts +148 -187
  186. package/dist/inputs/Input.js +339 -259
  187. package/dist/inputs/KeyValueInput.d.ts +120 -0
  188. package/dist/inputs/KeyValueInput.js +383 -0
  189. package/dist/inputs/MultiSelectInput.d.ts +165 -54
  190. package/dist/inputs/MultiSelectInput.js +175 -559
  191. package/dist/inputs/NumberInput.d.ts +65 -9
  192. package/dist/inputs/NumberInput.js +197 -40
  193. package/dist/inputs/PasswordInput.d.ts +17 -12
  194. package/dist/inputs/PasswordInput.js +33 -33
  195. package/dist/inputs/PinInput.d.ts +117 -0
  196. package/dist/inputs/PinInput.js +364 -0
  197. package/dist/inputs/RadioGroup.d.ts +115 -0
  198. package/dist/inputs/RadioGroup.js +179 -0
  199. package/dist/inputs/RadioInput.d.ts +87 -24
  200. package/dist/inputs/RadioInput.js +182 -95
  201. package/dist/inputs/SearchInput.d.ts +66 -0
  202. package/dist/inputs/SearchInput.js +156 -0
  203. package/dist/inputs/SelectInput.d.ts +195 -55
  204. package/dist/inputs/SelectInput.js +1308 -446
  205. package/dist/inputs/SliderInput.d.ts +150 -30
  206. package/dist/inputs/SliderInput.js +441 -186
  207. package/dist/inputs/SwitchInput.d.ts +109 -0
  208. package/dist/inputs/SwitchInput.js +248 -0
  209. package/dist/inputs/TagInput.d.ts +117 -0
  210. package/dist/inputs/TagInput.js +408 -0
  211. package/dist/inputs/TextAreaInput.d.ts +146 -44
  212. package/dist/inputs/TextAreaInput.js +298 -198
  213. package/dist/inputs/TextInput.d.ts +4 -13
  214. package/dist/inputs/TextInput.js +13 -48
  215. package/dist/inputs/ToggleInput.d.ts +120 -22
  216. package/dist/inputs/ToggleInput.js +262 -116
  217. package/dist/inputs/internal/bareField.d.ts +18 -0
  218. package/dist/inputs/internal/bareField.js +38 -0
  219. package/dist/inputs/internal/devWarn.d.ts +7 -0
  220. package/dist/inputs/internal/devWarn.js +30 -0
  221. package/dist/inputs/internal/fieldFrame.d.ts +34 -0
  222. package/dist/inputs/internal/fieldFrame.js +64 -0
  223. package/dist/inputs/internal/fieldWiring.d.ts +50 -0
  224. package/dist/inputs/internal/fieldWiring.js +38 -0
  225. package/dist/inputs/internal/innerButton.d.ts +2 -0
  226. package/dist/inputs/internal/innerButton.js +24 -0
  227. package/dist/inputs/internal/ownField.d.ts +45 -0
  228. package/dist/inputs/internal/ownField.js +58 -0
  229. package/dist/inputs/internal/predicates.d.ts +9 -0
  230. package/dist/inputs/internal/predicates.js +11 -0
  231. package/dist/inputs/internal/useComboboxPopover.d.ts +46 -0
  232. package/dist/inputs/internal/useComboboxPopover.js +92 -0
  233. package/dist/json/JsonViewer.d.ts +62 -0
  234. package/dist/json/JsonViewer.js +483 -0
  235. package/dist/layout/Box.d.ts +87 -0
  236. package/dist/layout/Box.js +109 -0
  237. package/dist/layout/Divider.d.ts +25 -0
  238. package/dist/layout/Divider.js +70 -0
  239. package/dist/layout/Flex.d.ts +139 -0
  240. package/dist/layout/Flex.js +165 -0
  241. package/dist/layout/FlexItem.d.ts +72 -0
  242. package/dist/layout/FlexItem.js +84 -0
  243. package/dist/layout/Grid.d.ts +140 -0
  244. package/dist/layout/Grid.js +178 -0
  245. package/dist/layout/Portal.d.ts +29 -0
  246. package/dist/layout/Portal.js +27 -0
  247. package/dist/layout/ResizablePanels.d.ts +88 -0
  248. package/dist/layout/ResizablePanels.js +198 -0
  249. package/dist/layout/ResizeHandle.d.ts +48 -0
  250. package/dist/layout/ResizeHandle.js +143 -0
  251. package/dist/layout/ScrollArea.d.ts +30 -0
  252. package/dist/layout/ScrollArea.js +138 -0
  253. package/dist/links/Link.d.ts +101 -1
  254. package/dist/links/Link.js +166 -4
  255. package/dist/lists/BulletedList.d.ts +25 -7
  256. package/dist/lists/BulletedList.js +72 -27
  257. package/dist/lists/DescriptionList.d.ts +91 -0
  258. package/dist/lists/DescriptionList.js +147 -0
  259. package/dist/menu/ContextMenu.d.ts +64 -0
  260. package/dist/menu/ContextMenu.js +34 -0
  261. package/dist/menu/Menu.d.ts +280 -0
  262. package/dist/menu/Menu.js +1003 -0
  263. package/dist/modal/ConfirmDialog.d.ts +55 -0
  264. package/dist/modal/ConfirmDialog.js +151 -0
  265. package/dist/modal/Modal.d.ts +64 -14
  266. package/dist/modal/Modal.js +189 -48
  267. package/dist/navigation/Breadcrumbs.d.ts +65 -0
  268. package/dist/navigation/Breadcrumbs.js +243 -0
  269. package/dist/navigation/CommandPalette.d.ts +83 -0
  270. package/dist/navigation/CommandPalette.js +509 -0
  271. package/dist/navigation/Pagination.d.ts +87 -0
  272. package/dist/navigation/Pagination.js +300 -0
  273. package/dist/navigation/SidebarNav.d.ts +107 -0
  274. package/dist/navigation/SidebarNav.js +341 -0
  275. package/dist/navigation/Stepper.d.ts +52 -0
  276. package/dist/navigation/Stepper.js +207 -0
  277. package/dist/navigation/Tabs.d.ts +113 -0
  278. package/dist/navigation/Tabs.js +543 -0
  279. package/dist/navigation/Topbar.d.ts +20 -0
  280. package/dist/navigation/Topbar.js +62 -0
  281. package/dist/overlay/OverlayProvider.d.ts +28 -32
  282. package/dist/overlay/OverlayProvider.js +42 -93
  283. package/dist/overlay/useOverlay.d.ts +88 -12
  284. package/dist/overlay/useOverlay.js +220 -43
  285. package/dist/overlays/Popover.d.ts +114 -0
  286. package/dist/overlays/Popover.js +389 -0
  287. package/dist/shapes/Circle.d.ts +84 -8
  288. package/dist/shapes/Circle.js +122 -20
  289. package/dist/shapes/Square.d.ts +84 -8
  290. package/dist/shapes/Square.js +123 -20
  291. package/dist/styles/mixins.d.ts +35 -0
  292. package/dist/styles/mixins.js +60 -0
  293. package/dist/styles.css +1 -202
  294. package/dist/table/InfiniteSpreadsheet.d.ts +140 -10
  295. package/dist/table/InfiniteSpreadsheet.js +762 -225
  296. package/dist/table/InfiniteTable.d.ts +116 -14
  297. package/dist/table/InfiniteTable.js +287 -429
  298. package/dist/table/SpreadsheetCellEditor.d.ts +54 -6
  299. package/dist/table/SpreadsheetCellEditor.js +163 -84
  300. package/dist/table/TableCore.d.ts +252 -0
  301. package/dist/table/TableCore.js +1082 -0
  302. package/dist/table/VirtualizedInfiniteTable.d.ts +104 -14
  303. package/dist/table/VirtualizedInfiniteTable.js +280 -219
  304. package/dist/table/types.d.ts +66 -244
  305. package/dist/table/types.js +0 -51
  306. package/dist/table/useInfiniteScrollSentinel.d.ts +25 -21
  307. package/dist/table/useInfiniteScrollSentinel.js +38 -30
  308. package/dist/table/useSpreadsheetCellNavigation.d.ts +44 -0
  309. package/dist/table/useSpreadsheetCellNavigation.js +141 -0
  310. package/dist/table/useTableColumnLayout.d.ts +90 -25
  311. package/dist/table/useTableColumnLayout.js +255 -50
  312. package/dist/table/useTableKeyboardNavigation.d.ts +32 -21
  313. package/dist/table/useTableKeyboardNavigation.js +95 -71
  314. package/dist/table/useTableRowSelection.d.ts +24 -25
  315. package/dist/table/useTableRowSelection.js +57 -84
  316. package/dist/table/useTableVirtualizer.d.ts +20 -0
  317. package/dist/table/useTableVirtualizer.js +48 -0
  318. package/dist/text/Bold.d.ts +5 -6
  319. package/dist/text/Bold.js +16 -15
  320. package/dist/text/Code.d.ts +5 -6
  321. package/dist/text/Code.js +16 -25
  322. package/dist/text/CodeBlock.d.ts +77 -0
  323. package/dist/text/CodeBlock.js +373 -0
  324. package/dist/text/EditableText.d.ts +55 -15
  325. package/dist/text/EditableText.js +153 -135
  326. package/dist/text/Ellipsis.d.ts +34 -8
  327. package/dist/text/Ellipsis.js +55 -23
  328. package/dist/text/Kbd.d.ts +72 -0
  329. package/dist/text/Kbd.js +284 -0
  330. package/dist/text/MarkdownText.d.ts +27 -10
  331. package/dist/text/MarkdownText.js +317 -300
  332. package/dist/text/RequiredMarker.d.ts +17 -5
  333. package/dist/text/RequiredMarker.js +34 -36
  334. package/dist/text/Selectable.d.ts +5 -6
  335. package/dist/text/Selectable.js +16 -13
  336. package/dist/text/Span.d.ts +82 -0
  337. package/dist/text/Span.js +115 -0
  338. package/dist/text/Text.d.ts +128 -41
  339. package/dist/text/Text.js +209 -76
  340. package/dist/theme/GalaxyProvider.d.ts +75 -0
  341. package/dist/theme/GalaxyProvider.js +223 -0
  342. package/dist/theme/ThemeSwitcher.d.ts +52 -0
  343. package/dist/theme/ThemeSwitcher.js +94 -0
  344. package/dist/theme/enums.d.ts +118 -0
  345. package/dist/theme/enums.js +144 -0
  346. package/dist/theme/tokens/dark.d.ts +2 -0
  347. package/dist/theme/tokens/dark.js +275 -0
  348. package/dist/theme/tokens/generate.d.ts +15 -0
  349. package/dist/theme/tokens/generate.js +47 -0
  350. package/dist/theme/tokens/light.d.ts +2 -0
  351. package/dist/theme/tokens/light.js +274 -0
  352. package/dist/theme/tokens/palette.d.ts +14 -0
  353. package/dist/theme/tokens/palette.js +153 -0
  354. package/dist/theme/tokens/scales.d.ts +26 -0
  355. package/dist/theme/tokens/scales.js +154 -0
  356. package/dist/theme/tokens/t.d.ts +3 -0
  357. package/dist/theme/tokens/t.js +25 -0
  358. package/dist/theme/tokens/types.d.ts +189 -0
  359. package/dist/theme/tokens/types.js +0 -0
  360. package/dist/theme/useGalaxyTheme.d.ts +46 -0
  361. package/dist/theme/useGalaxyTheme.js +36 -0
  362. package/dist/theme/useInverseScope.d.ts +18 -0
  363. package/dist/theme/useInverseScope.js +33 -0
  364. package/dist/three/GalaxyLogomark3D.d.ts +46 -0
  365. package/dist/three/GalaxyLogomark3D.js +134 -0
  366. package/dist/three/assets/galaxy-logomark.js +4 -0
  367. package/dist/three/galaxyLogomark3DScene.d.ts +27 -0
  368. package/dist/three/galaxyLogomark3DScene.js +165 -0
  369. package/dist/timeline/Timeline.d.ts +120 -0
  370. package/dist/timeline/Timeline.js +301 -0
  371. package/dist/toast/Toast.d.ts +43 -19
  372. package/dist/toast/Toast.js +130 -89
  373. package/dist/toast/ToastProvider.d.ts +23 -23
  374. package/dist/toast/ToastProvider.js +298 -101
  375. package/dist/toast/ToastViewport.d.ts +12 -0
  376. package/dist/toast/ToastViewport.js +210 -0
  377. package/dist/toast/useToast.d.ts +139 -5
  378. package/dist/toast/useToast.js +15 -13
  379. package/dist/tokens.css +654 -0
  380. package/dist/tooltip/Tooltip.d.ts +64 -44
  381. package/dist/tooltip/Tooltip.js +280 -73
  382. package/dist/tooltip/internal/LazyTooltip.d.ts +7 -0
  383. package/dist/tooltip/internal/LazyTooltip.js +53 -0
  384. package/dist/transform/Fade.d.ts +33 -11
  385. package/dist/transform/Fade.js +71 -19
  386. package/dist/transform/Flasher.d.ts +25 -0
  387. package/dist/transform/Flasher.js +39 -0
  388. package/dist/transform/Rotate.d.ts +24 -12
  389. package/dist/transform/Rotate.js +36 -22
  390. package/dist/transform/ScaleFade.d.ts +36 -11
  391. package/dist/transform/ScaleFade.js +86 -28
  392. package/dist/transform/internal/CollapseMotion.d.ts +10 -0
  393. package/dist/transform/internal/CollapseMotion.js +65 -0
  394. package/dist/tree/Tree.d.ts +85 -0
  395. package/dist/tree/Tree.js +387 -0
  396. package/dist/tree/treeRow.d.ts +39 -0
  397. package/dist/tree/treeRow.js +75 -0
  398. package/dist/utils/colors.d.ts +46 -13
  399. package/dist/utils/colors.js +92 -34
  400. package/dist/utils/css.d.ts +23 -0
  401. package/dist/utils/css.js +30 -0
  402. package/dist/utils/format.d.ts +58 -0
  403. package/dist/utils/format.js +220 -0
  404. package/dist/vite/index.d.ts +16 -0
  405. package/dist/vite/index.js +52 -0
  406. package/dist/widget/Widget.d.ts +164 -48
  407. package/dist/widget/Widget.js +335 -96
  408. package/dist/widget/WidgetGroup.d.ts +36 -0
  409. package/dist/widget/WidgetGroup.js +103 -0
  410. package/package.json +855 -157
  411. package/dist/accordion/Accordion.d.ts +0 -54
  412. package/dist/accordion/Accordion.js +0 -183
  413. package/dist/assets/components/GalaxyFilamentWordmarkDark.d.ts +0 -3
  414. package/dist/assets/components/GalaxyFilamentWordmarkDark.js +0 -14
  415. package/dist/assets/components/GalaxyFilamentWordmarkLight.d.ts +0 -3
  416. package/dist/assets/components/GalaxyFilamentWordmarkLight.js +0 -14
  417. package/dist/assets/components/GalaxyLogomarkDark.d.ts +0 -3
  418. package/dist/assets/components/GalaxyLogomarkDark.js +0 -11
  419. package/dist/assets/components/GalaxyLogomarkLight.d.ts +0 -3
  420. package/dist/assets/components/GalaxyLogomarkLight.js +0 -17
  421. package/dist/assets/components/GalaxyWordmarkDark.d.ts +0 -3
  422. package/dist/assets/components/GalaxyWordmarkDark.js +0 -15
  423. package/dist/assets/components/GalaxyWordmarkLight.d.ts +0 -3
  424. package/dist/assets/components/GalaxyWordmarkLight.js +0 -28
  425. package/dist/assets/models/galaxy-animation.js +0 -136666
  426. package/dist/assets/models/galaxy-logomark.js +0 -4
  427. package/dist/avatar/AvatarShimmer.d.ts +0 -30
  428. package/dist/avatar/AvatarShimmer.js +0 -22
  429. package/dist/backgrounds/CellGridBackground.d.ts +0 -24
  430. package/dist/backgrounds/CellGridBackground.js +0 -44
  431. package/dist/backgrounds/CrossGridBackground.d.ts +0 -26
  432. package/dist/backgrounds/CrossGridBackground.js +0 -49
  433. package/dist/backgrounds/DotGridBackground.d.ts +0 -24
  434. package/dist/backgrounds/DotGridBackground.js +0 -47
  435. package/dist/badge/Badge.d.ts +0 -42
  436. package/dist/badge/Badge.js +0 -99
  437. package/dist/charts/ChartEmptyState.d.ts +0 -17
  438. package/dist/charts/ChartEmptyState.js +0 -29
  439. package/dist/charts/ProgressBar.d.ts +0 -29
  440. package/dist/charts/ProgressBar.js +0 -65
  441. package/dist/charts/chartTheme.d.ts +0 -18
  442. package/dist/charts/chartTheme.js +0 -26
  443. package/dist/containers/FlexItem.d.ts +0 -50
  444. package/dist/containers/FlexItem.js +0 -91
  445. package/dist/containers/FlexWrapper.d.ts +0 -96
  446. package/dist/containers/FlexWrapper.js +0 -143
  447. package/dist/containers/GridWrapper.d.ts +0 -79
  448. package/dist/containers/GridWrapper.js +0 -125
  449. package/dist/containers/Spacing.d.ts +0 -23
  450. package/dist/containers/Spacing.js +0 -59
  451. package/dist/containers/Wrapper.d.ts +0 -26
  452. package/dist/containers/Wrapper.js +0 -54
  453. package/dist/dividers/HorizontalDivider.d.ts +0 -7
  454. package/dist/dividers/HorizontalDivider.js +0 -39
  455. package/dist/dividers/VerticalDivider.d.ts +0 -6
  456. package/dist/dividers/VerticalDivider.js +0 -21
  457. package/dist/icons/GalaxyFilamentWordmark.d.ts +0 -11
  458. package/dist/icons/GalaxyFilamentWordmark.js +0 -25
  459. package/dist/icons/GalaxyLogomark.d.ts +0 -13
  460. package/dist/icons/GalaxyLogomark.js +0 -27
  461. package/dist/icons/GalaxyLogomark3D.d.ts +0 -56
  462. package/dist/icons/GalaxyLogomark3D.js +0 -319
  463. package/dist/icons/GalaxyLogomarkAnimation.d.ts +0 -18
  464. package/dist/icons/GalaxyLogomarkAnimation.js +0 -48
  465. package/dist/icons/GalaxyWordmark.d.ts +0 -11
  466. package/dist/icons/GalaxyWordmark.js +0 -25
  467. package/dist/inputs/MultiTextInput.d.ts +0 -32
  468. package/dist/inputs/MultiTextInput.js +0 -180
  469. package/dist/inputs/SwitcherInput.d.ts +0 -30
  470. package/dist/inputs/SwitcherInput.js +0 -81
  471. package/dist/inputs/hooks.d.ts +0 -10
  472. package/dist/inputs/hooks.js +0 -22
  473. package/dist/overlay/constants.d.ts +0 -28
  474. package/dist/overlay/constants.js +0 -37
  475. package/dist/resizable/HorizontalResizeHandle.d.ts +0 -17
  476. package/dist/resizable/HorizontalResizeHandle.js +0 -38
  477. package/dist/resizable/VerticalResizeHandle.d.ts +0 -18
  478. package/dist/resizable/VerticalResizeHandle.js +0 -39
  479. package/dist/table/SpreadsheetCell.d.ts +0 -21
  480. package/dist/table/SpreadsheetCell.js +0 -71
  481. package/dist/table/SpreadsheetHeaderCell.d.ts +0 -23
  482. package/dist/table/SpreadsheetHeaderCell.js +0 -91
  483. package/dist/table/SpreadsheetMenuItem.d.ts +0 -14
  484. package/dist/table/SpreadsheetMenuItem.js +0 -33
  485. package/dist/table/SpreadsheetPrimitives.d.ts +0 -172
  486. package/dist/table/SpreadsheetPrimitives.js +0 -105
  487. package/dist/table/SpreadsheetRow.d.ts +0 -33
  488. package/dist/table/SpreadsheetRow.js +0 -73
  489. package/dist/table/SpreadsheetRowActionCell.d.ts +0 -14
  490. package/dist/table/SpreadsheetRowActionCell.js +0 -51
  491. package/dist/table/TableExpandCell.d.ts +0 -11
  492. package/dist/table/TableExpandCell.js +0 -24
  493. package/dist/table/TableExpandedRow.d.ts +0 -16
  494. package/dist/table/TableExpandedRow.js +0 -77
  495. package/dist/table/TableHeaderCellContent.d.ts +0 -30
  496. package/dist/table/TableHeaderCellContent.js +0 -48
  497. package/dist/table/TablePrimitives.d.ts +0 -313
  498. package/dist/table/TablePrimitives.js +0 -302
  499. package/dist/table/TableSelectCell.d.ts +0 -18
  500. package/dist/table/TableSelectCell.js +0 -27
  501. package/dist/table/TableStatusRow.d.ts +0 -18
  502. package/dist/table/TableStatusRow.js +0 -50
  503. package/dist/table/useSpreadsheetEditing.d.ts +0 -13
  504. package/dist/table/useSpreadsheetEditing.js +0 -41
  505. package/dist/table/useTableColumnResize.d.ts +0 -38
  506. package/dist/table/useTableColumnResize.js +0 -155
  507. package/dist/table/useTableRowExpansion.d.ts +0 -24
  508. package/dist/table/useTableRowExpansion.js +0 -62
  509. package/dist/table/utils.d.ts +0 -50
  510. package/dist/table/utils.js +0 -78
  511. package/dist/text/HotKeys.d.ts +0 -30
  512. package/dist/text/HotKeys.js +0 -74
  513. package/dist/text/Paragraph.d.ts +0 -33
  514. package/dist/text/Paragraph.js +0 -83
  515. package/dist/text/TextShimmer.d.ts +0 -14
  516. package/dist/text/TextShimmer.js +0 -34
  517. package/dist/theme/GalaxyTheme.d.ts +0 -67
  518. package/dist/theme/GalaxyTheme.js +0 -119
  519. package/dist/theme/constants.d.ts +0 -8
  520. package/dist/theme/constants.js +0 -38
  521. package/dist/theme/index.d.ts +0 -6
  522. package/dist/theme/index.js +0 -7
  523. package/dist/theme/types.d.ts +0 -195
  524. package/dist/theme/types.js +0 -10
  525. package/dist/theme/typography.d.ts +0 -2
  526. package/dist/theme/typography.js +0 -73
  527. package/dist/theme/variants/dark.d.ts +0 -2
  528. package/dist/theme/variants/dark.js +0 -125
  529. package/dist/theme/variants/light.d.ts +0 -2
  530. package/dist/theme/variants/light.js +0 -125
  531. package/dist/toast/ToastContainer.d.ts +0 -10
  532. package/dist/toast/ToastContainer.js +0 -31
  533. package/dist/toast/ToastWrapper.d.ts +0 -6
  534. package/dist/toast/ToastWrapper.js +0 -27
  535. package/dist/transform/Flash.d.ts +0 -7
  536. package/dist/transform/Flash.js +0 -18
  537. package/dist/transform/Spin.d.ts +0 -14
  538. package/dist/transform/Spin.js +0 -25
  539. package/dist/utils/linaria.d.ts +0 -1
  540. package/dist/utils/linaria.js +0 -8
@@ -0,0 +1,27 @@
1
+ import { useSyncExternalStore } from "react";
2
+ //#region src/hooks/useIsMac.ts
3
+ var MAC_PLATFORM = /mac|iphone|ipad|ipod/i;
4
+ /** The platform never changes while the page is open, so there is nothing to subscribe to. */
5
+ var subscribe = () => () => {};
6
+ var getSnapshot = () => {
7
+ if (typeof navigator === "undefined") return false;
8
+ const platform = navigator.userAgentData?.platform || navigator.platform || "";
9
+ return MAC_PLATFORM.test(platform);
10
+ };
11
+ var getServerSnapshot = () => false;
12
+ /**
13
+ * Whether the user is on an Apple platform (macOS, iOS, iPadOS), for ⌘ vs Ctrl labels and
14
+ * bindings. Reads `navigator.userAgentData.platform`, falling back to `navigator.platform`.
15
+ * `false` on the server and during hydration; the client re-renders once with the real value.
16
+ *
17
+ * @returns Whether the platform is macOS, iOS or iPadOS
18
+ *
19
+ * @example
20
+ * const isMac = useIsMac();
21
+ * const modLabel = isMac ? "⌘" : "Ctrl";
22
+ */
23
+ function useIsMac() {
24
+ return useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);
25
+ }
26
+ //#endregion
27
+ export { useIsMac };
@@ -0,0 +1,17 @@
1
+ /**
2
+ * `useLayoutEffect` in the browser, `useEffect` on the server. React warns when `useLayoutEffect`
3
+ * runs during server rendering (it never fires there); this picks the effect at module load so
4
+ * measuring and focusing code reads the DOM before paint in the browser and stays silent in SSR.
5
+ * The choice is made once per module load, which is SSR-safe: `typeof window` is a check, not a
6
+ * read.
7
+ */
8
+ import { useEffect } from "react";
9
+ /**
10
+ * Layout effect in the browser, plain effect on the server (no SSR warning).
11
+ *
12
+ * @example
13
+ * useIsomorphicLayoutEffect(() => {
14
+ * setWidth(ref.current?.getBoundingClientRect().width ?? 0);
15
+ * }, []);
16
+ */
17
+ export declare const useIsomorphicLayoutEffect: typeof useEffect;
@@ -0,0 +1,20 @@
1
+ import { useEffect, useLayoutEffect } from "react";
2
+ //#region src/hooks/useIsomorphicLayoutEffect.ts
3
+ /**
4
+ * `useLayoutEffect` in the browser, `useEffect` on the server. React warns when `useLayoutEffect`
5
+ * runs during server rendering (it never fires there); this picks the effect at module load so
6
+ * measuring and focusing code reads the DOM before paint in the browser and stays silent in SSR.
7
+ * The choice is made once per module load, which is SSR-safe: `typeof window` is a check, not a
8
+ * read.
9
+ */
10
+ /**
11
+ * Layout effect in the browser, plain effect on the server (no SSR warning).
12
+ *
13
+ * @example
14
+ * useIsomorphicLayoutEffect(() => {
15
+ * setWidth(ref.current?.getBoundingClientRect().width ?? 0);
16
+ * }, []);
17
+ */
18
+ var useIsomorphicLayoutEffect = typeof window === "undefined" ? useEffect : useLayoutEffect;
19
+ //#endregion
20
+ export { useIsomorphicLayoutEffect };
@@ -0,0 +1,28 @@
1
+ /** The part of the Web Storage API `useLocalStorage` uses; `sessionStorage` or any adapter fits. */
2
+ export type LocalStorageLike = Pick<Storage, "getItem" | "setItem" | "removeItem">;
3
+ /** Options for `useLocalStorage`. */
4
+ export interface UseLocalStorageOptions<T> {
5
+ /** Turns a value into the stored string. @default JSON.stringify */
6
+ serialize?: ((value: T) => string) | undefined;
7
+ /** Turns the stored string back into a value; a throw reads as `initial`. @default JSON.parse */
8
+ deserialize?: ((raw: string) => T) | undefined;
9
+ /** Where the value lives. Read lazily, never at module scope. @default window.localStorage */
10
+ storage?: LocalStorageLike | undefined;
11
+ }
12
+ /**
13
+ * State persisted in `localStorage` (or `options.storage`) under `key`. Returns
14
+ * `[value, setValue, remove]`; `setValue` takes a value or an updater, `remove()` deletes the key
15
+ * and the value returns to `initial`. Instances with the same key stay in sync, in this tab and
16
+ * across tabs. Returns `initial` on the server and during hydration, so hydration never
17
+ * mismatches. A value that fails to deserialize reads as `initial`; a failed write still updates
18
+ * the value for the session.
19
+ *
20
+ * @param key - The storage key
21
+ * @param initial - The value when nothing (or nothing readable) is stored, and on the server
22
+ * @param options - `serialize` (default `JSON.stringify`), `deserialize` (default `JSON.parse`), `storage` (default `window.localStorage`)
23
+ * @returns `[value, setValue, remove]`
24
+ *
25
+ * @example
26
+ * const [isCollapsed, setIsCollapsed] = useLocalStorage("sidebar:collapsed", false);
27
+ */
28
+ export declare function useLocalStorage<T>(key: string, initial: T, options?: UseLocalStorageOptions<T>): [value: T, setValue: (value: T | ((previous: T) => T)) => void, remove: () => void];
@@ -0,0 +1,145 @@
1
+ import { useCallback, useRef, useSyncExternalStore } from "react";
2
+ //#region src/hooks/useLocalStorage.ts
3
+ /**
4
+ * Writes that failed (quota, private mode) per storage, so the value still holds for the session.
5
+ * `null` records a failed remove.
6
+ */
7
+ var MEMORY_OVERLAYS = /* @__PURE__ */ new WeakMap();
8
+ /** Same-tab subscribers; the `storage` event only reaches other tabs. */
9
+ var LISTENERS = /* @__PURE__ */ new Set();
10
+ /** Stands in for `localStorage` on the server, or where reading it throws. Created on first use. */
11
+ var memoryStorage;
12
+ function getMemoryStorage() {
13
+ if (memoryStorage === void 0) {
14
+ const values = /* @__PURE__ */ new Map();
15
+ memoryStorage = {
16
+ getItem: (key) => values.get(key) ?? null,
17
+ setItem: (key, value) => {
18
+ values.set(key, value);
19
+ },
20
+ removeItem: (key) => {
21
+ values.delete(key);
22
+ }
23
+ };
24
+ }
25
+ return memoryStorage;
26
+ }
27
+ function getDefaultStorage() {
28
+ try {
29
+ if (typeof window !== "undefined" && window.localStorage) return window.localStorage;
30
+ } catch {}
31
+ return getMemoryStorage();
32
+ }
33
+ function getOverlay(storage) {
34
+ let overlay = MEMORY_OVERLAYS.get(storage);
35
+ if (overlay === void 0) {
36
+ overlay = /* @__PURE__ */ new Map();
37
+ MEMORY_OVERLAYS.set(storage, overlay);
38
+ }
39
+ return overlay;
40
+ }
41
+ /** The stored string for `key`: a failed write's value first, then the storage itself. */
42
+ function readRaw(storage, key) {
43
+ const overlay = MEMORY_OVERLAYS.get(storage);
44
+ if (overlay?.has(key)) return overlay.get(key) ?? null;
45
+ try {
46
+ return storage.getItem(key);
47
+ } catch {
48
+ return null;
49
+ }
50
+ }
51
+ function writeRaw(storage, key, raw) {
52
+ try {
53
+ if (raw === null) storage.removeItem(key);
54
+ else storage.setItem(key, raw);
55
+ MEMORY_OVERLAYS.get(storage)?.delete(key);
56
+ } catch {
57
+ getOverlay(storage).set(key, raw);
58
+ }
59
+ for (const listener of LISTENERS) listener(storage, key);
60
+ }
61
+ /**
62
+ * State persisted in `localStorage` (or `options.storage`) under `key`. Returns
63
+ * `[value, setValue, remove]`; `setValue` takes a value or an updater, `remove()` deletes the key
64
+ * and the value returns to `initial`. Instances with the same key stay in sync, in this tab and
65
+ * across tabs. Returns `initial` on the server and during hydration, so hydration never
66
+ * mismatches. A value that fails to deserialize reads as `initial`; a failed write still updates
67
+ * the value for the session.
68
+ *
69
+ * @param key - The storage key
70
+ * @param initial - The value when nothing (or nothing readable) is stored, and on the server
71
+ * @param options - `serialize` (default `JSON.stringify`), `deserialize` (default `JSON.parse`), `storage` (default `window.localStorage`)
72
+ * @returns `[value, setValue, remove]`
73
+ *
74
+ * @example
75
+ * const [isCollapsed, setIsCollapsed] = useLocalStorage("sidebar:collapsed", false);
76
+ */
77
+ function useLocalStorage(key, initial, options) {
78
+ const storageOption = options?.storage;
79
+ const serialize = options?.serialize ?? JSON.stringify;
80
+ const deserialize = options?.deserialize ?? JSON.parse;
81
+ const initialRef = useRef(initial);
82
+ const cacheRef = useRef(void 0);
83
+ const resolveStorage = useCallback(() => storageOption ?? getDefaultStorage(), [storageOption]);
84
+ const subscribe = useCallback((onStoreChange) => {
85
+ const storage = resolveStorage();
86
+ const handleLocalChange = (changedStorage, changedKey) => {
87
+ if (changedStorage === storage && changedKey === key) onStoreChange();
88
+ };
89
+ const handleStorageEvent = (event) => {
90
+ if (event.storageArea === storage && (event.key === key || event.key === null)) onStoreChange();
91
+ };
92
+ LISTENERS.add(handleLocalChange);
93
+ window.addEventListener("storage", handleStorageEvent);
94
+ return () => {
95
+ LISTENERS.delete(handleLocalChange);
96
+ window.removeEventListener("storage", handleStorageEvent);
97
+ };
98
+ }, [resolveStorage, key]);
99
+ const getSnapshot = () => {
100
+ const raw = readRaw(resolveStorage(), key);
101
+ const cached = cacheRef.current;
102
+ if (cached !== void 0 && cached.key === key && cached.raw === raw) return cached.value;
103
+ let value = initialRef.current;
104
+ if (raw !== null) try {
105
+ value = deserialize(raw);
106
+ } catch {
107
+ value = initialRef.current;
108
+ }
109
+ cacheRef.current = {
110
+ key,
111
+ raw,
112
+ value
113
+ };
114
+ return value;
115
+ };
116
+ const getServerSnapshot = () => initialRef.current;
117
+ const value = useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);
118
+ const latestRef = useRef({
119
+ serialize,
120
+ getSnapshot
121
+ });
122
+ latestRef.current = {
123
+ serialize,
124
+ getSnapshot
125
+ };
126
+ return [
127
+ value,
128
+ useCallback((next) => {
129
+ const { serialize: write, getSnapshot: read } = latestRef.current;
130
+ const resolved = typeof next === "function" ? next(read()) : next;
131
+ const raw = write(resolved);
132
+ cacheRef.current = {
133
+ key,
134
+ raw,
135
+ value: resolved
136
+ };
137
+ writeRaw(resolveStorage(), key, raw);
138
+ }, [resolveStorage, key]),
139
+ useCallback(() => {
140
+ writeRaw(resolveStorage(), key, null);
141
+ }, [resolveStorage, key])
142
+ ];
143
+ }
144
+ //#endregion
145
+ export { useLocalStorage };
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Whether the CSS media `query` matches, updating when it changes. `false` on the server and
3
+ * during hydration; the client re-renders once with the real value.
4
+ *
5
+ * @param query - A CSS media query, e.g. `"(max-width: 640px)"`
6
+ * @returns Whether it matches
7
+ *
8
+ * @example
9
+ * const isNarrow = useMediaQuery("(max-width: 640px)");
10
+ */
11
+ export declare function useMediaQuery(query: string): boolean;
@@ -0,0 +1,23 @@
1
+ import { useCallback, useSyncExternalStore } from "react";
2
+ //#region src/hooks/useMediaQuery.ts
3
+ var getServerSnapshot = () => false;
4
+ /**
5
+ * Whether the CSS media `query` matches, updating when it changes. `false` on the server and
6
+ * during hydration; the client re-renders once with the real value.
7
+ *
8
+ * @param query - A CSS media query, e.g. `"(max-width: 640px)"`
9
+ * @returns Whether it matches
10
+ *
11
+ * @example
12
+ * const isNarrow = useMediaQuery("(max-width: 640px)");
13
+ */
14
+ function useMediaQuery(query) {
15
+ return useSyncExternalStore(useCallback((onStoreChange) => {
16
+ if (typeof window === "undefined" || typeof window.matchMedia !== "function") return () => {};
17
+ const mediaQueryList = window.matchMedia(query);
18
+ mediaQueryList.addEventListener("change", onStoreChange);
19
+ return () => mediaQueryList.removeEventListener("change", onStoreChange);
20
+ }, [query]), useCallback(() => typeof window !== "undefined" && typeof window.matchMedia === "function" && window.matchMedia(query).matches, [query]), getServerSnapshot);
21
+ }
22
+ //#endregion
23
+ export { useMediaQuery };
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Whether motion should be reduced. The nearest `GalaxyProvider`'s `reducedMotion` wins:
3
+ * `ALWAYS` → `true`, `NEVER` → `false`. With `SYSTEM`, or outside a provider, it follows
4
+ * `prefers-reduced-motion`. `false` on the server and during hydration unless a provider forces it.
5
+ *
6
+ * @returns Whether motion should be reduced
7
+ *
8
+ * @example
9
+ * const prefersReducedMotion = usePrefersReducedMotion();
10
+ * <motion.div transition={prefersReducedMotion ? { duration: 0 } : undefined} />
11
+ */
12
+ export declare function usePrefersReducedMotion(): boolean;
@@ -0,0 +1,25 @@
1
+ import { ReducedMotion } from "../theme/enums.js";
2
+ import { GalaxyThemeContext } from "../theme/useGalaxyTheme.js";
3
+ import { useMediaQuery } from "./useMediaQuery.js";
4
+ import { useContext } from "react";
5
+ //#region src/hooks/usePrefersReducedMotion.ts
6
+ /**
7
+ * Whether motion should be reduced. The nearest `GalaxyProvider`'s `reducedMotion` wins:
8
+ * `ALWAYS` → `true`, `NEVER` → `false`. With `SYSTEM`, or outside a provider, it follows
9
+ * `prefers-reduced-motion`. `false` on the server and during hydration unless a provider forces it.
10
+ *
11
+ * @returns Whether motion should be reduced
12
+ *
13
+ * @example
14
+ * const prefersReducedMotion = usePrefersReducedMotion();
15
+ * <motion.div transition={prefersReducedMotion ? { duration: 0 } : undefined} />
16
+ */
17
+ function usePrefersReducedMotion() {
18
+ const reducedMotion = useContext(GalaxyThemeContext)?.reducedMotion ?? ReducedMotion.SYSTEM;
19
+ const isSystemReduced = useMediaQuery("(prefers-reduced-motion: reduce)");
20
+ if (reducedMotion === ReducedMotion.ALWAYS) return true;
21
+ if (reducedMotion === ReducedMotion.NEVER) return false;
22
+ return isSystemReduced;
23
+ }
24
+ //#endregion
25
+ export { usePrefersReducedMotion };
@@ -1,86 +1,66 @@
1
+ import { type MouseEvent as ReactMouseEvent } from "react";
1
2
  /**
2
- * Which edge or corner stays put while dragging. Edge anchors resize one
3
- * dimension; corner anchors resize both.
3
+ * Which edge or corner the resize handle sits on; the opposite edge or corner stays put while
4
+ * dragging. Edge anchors resize one dimension; corner anchors resize both.
4
5
  */
5
- export type ResizeAnchor = "left" | "right" | "top" | "bottom" | "top-left" | "top-right" | "bottom-left" | "bottom-right";
6
+ export declare enum ResizeAnchor {
7
+ /** Handle on the left; the right edge is fixed. Resizes width. */
8
+ LEFT = "LEFT",
9
+ /** Handle on the right; the left edge is fixed. Resizes width. */
10
+ RIGHT = "RIGHT",
11
+ /** Handle on top; the bottom edge is fixed. Resizes height. */
12
+ TOP = "TOP",
13
+ /** Handle on the bottom; the top edge is fixed. Resizes height. */
14
+ BOTTOM = "BOTTOM",
15
+ /** Handle top-left; the bottom-right corner is fixed. Resizes both. */
16
+ TOP_LEFT = "TOP_LEFT",
17
+ /** Handle top-right; the bottom-left corner is fixed. Resizes both. */
18
+ TOP_RIGHT = "TOP_RIGHT",
19
+ /** Handle bottom-left; the top-right corner is fixed. Resizes both. */
20
+ BOTTOM_LEFT = "BOTTOM_LEFT",
21
+ /** Handle bottom-right; the top-left corner is fixed. Resizes both. */
22
+ BOTTOM_RIGHT = "BOTTOM_RIGHT"
23
+ }
24
+ /** Options for `useResize`. */
6
25
  export interface UseResizeProps {
7
- /**
8
- * Current width of the element
9
- */
26
+ /** Current width of the element in pixels; read when a drag starts. */
10
27
  currentWidth: number;
11
- /**
12
- * Current height of the element
13
- */
28
+ /** Current height of the element in pixels; read when a drag starts. */
14
29
  currentHeight: number;
15
- /**
16
- * Callback when width changes
17
- */
30
+ /** Called with the new width while dragging an edge that resizes width. */
18
31
  onWidthChange?: (width: number) => void;
19
- /**
20
- * Callback when height changes
21
- */
32
+ /** Called with the new height while dragging an edge that resizes height. */
22
33
  onHeightChange?: (height: number) => void;
23
- /**
24
- * Callback when both dimensions change (for corner resizing)
25
- */
34
+ /** Called with both dimensions while dragging; when set it replaces `onWidthChange`/`onHeightChange`. */
26
35
  onSizeChange?: (width: number, height: number) => void;
27
- /**
28
- * Minimum width constraint
29
- */
36
+ /** Minimum width in pixels. @default 0 */
30
37
  minWidth?: number;
31
- /**
32
- * Maximum width constraint
33
- */
38
+ /** Maximum width in pixels. @default Infinity */
34
39
  maxWidth?: number;
35
- /**
36
- * Minimum height constraint
37
- */
40
+ /** Minimum height in pixels. @default 0 */
38
41
  minHeight?: number;
39
- /**
40
- * Maximum height constraint
41
- */
42
+ /** Maximum height in pixels. @default Infinity */
42
43
  maxHeight?: number;
43
- /**
44
- * Which edge(s) are anchored/fixed. The resize handle is on the opposite side.
45
- * - "left": right edge is fixed, handle on left
46
- * - "right": left edge is fixed, handle on right
47
- * - "top": bottom edge is fixed, handle on top
48
- * - "bottom": top edge is fixed, handle on bottom
49
- * - "top-left": bottom-right corner is fixed, handle on top-left
50
- * - "top-right": bottom-left corner is fixed, handle on top-right
51
- * - "bottom-left": top-right corner is fixed, handle on bottom-left
52
- * - "bottom-right": top-left corner is fixed, handle on bottom-right
53
- */
44
+ /** Where the resize handle sits; the opposite edge or corner is fixed. */
54
45
  anchor: ResizeAnchor;
55
46
  }
56
47
  /**
57
- * Unified resize hook that handles horizontal, vertical, and diagonal resizing.
48
+ * Horizontal, vertical, and diagonal drag-resizing. Returns a `mousedown` handler for the resize
49
+ * handle; document listeners attach on mousedown only, so the hook is SSR-safe.
58
50
  *
59
- * The anchor parameter determines which edge(s) are fixed:
60
- * - For edge anchors (left/right/top/bottom), only that dimension is resized
61
- * - For corner anchors (top-left/top-right/bottom-left/bottom-right), both dimensions are resized
51
+ * The anchor determines what resizes:
52
+ * - Edge anchors (`LEFT` / `RIGHT` / `TOP` / `BOTTOM`) resize one dimension.
53
+ * - Corner anchors (`TOP_LEFT` / `TOP_RIGHT` / `BOTTOM_LEFT` / `BOTTOM_RIGHT`) resize both.
62
54
  *
63
55
  * @example
64
- * // Resize from left edge (right edge is fixed)
65
- * const handleResize = useResize({
66
- * currentWidth: width,
67
- * anchor: "left",
68
- * onWidthChange: setWidth,
69
- * minWidth: 100,
70
- * maxWidth: 1000,
71
- * });
72
- *
73
- * @example
74
- * // Resize from top-left corner (bottom-right corner is fixed)
75
- * const handleResize = useResize({
56
+ * // Resize from the left edge (right edge is fixed)
57
+ * const onResizeStart = useResize({
76
58
  * currentWidth: width,
77
59
  * currentHeight: height,
78
- * anchor: "top-left",
79
- * onSizeChange: (w, h) => { setWidth(w); setHeight(h); },
60
+ * anchor: ResizeAnchor.LEFT,
61
+ * onWidthChange: setWidth,
80
62
  * minWidth: 100,
81
63
  * maxWidth: 1000,
82
- * minHeight: 100,
83
- * maxHeight: 1000,
84
64
  * });
85
65
  */
86
- export declare const useResize: ({ currentWidth, currentHeight, onWidthChange, onHeightChange, onSizeChange, minWidth, maxWidth, minHeight, maxHeight, anchor, }: UseResizeProps) => (e: React.MouseEvent) => void;
66
+ export declare function useResize({ currentWidth, currentHeight, onWidthChange, onHeightChange, onSizeChange, minWidth, maxWidth, minHeight, maxHeight, anchor, }: UseResizeProps): (event: ReactMouseEvent) => void;
@@ -1,36 +1,48 @@
1
1
  import { useCallback, useRef } from "react";
2
2
  //#region src/hooks/useResize.ts
3
3
  /**
4
- * Unified resize hook that handles horizontal, vertical, and diagonal resizing.
5
- *
6
- * The anchor parameter determines which edge(s) are fixed:
7
- * - For edge anchors (left/right/top/bottom), only that dimension is resized
8
- * - For corner anchors (top-left/top-right/bottom-left/bottom-right), both dimensions are resized
4
+ * Which edge or corner the resize handle sits on; the opposite edge or corner stays put while
5
+ * dragging. Edge anchors resize one dimension; corner anchors resize both.
6
+ */
7
+ var ResizeAnchor = /* @__PURE__ */ function(ResizeAnchor) {
8
+ /** Handle on the left; the right edge is fixed. Resizes width. */
9
+ ResizeAnchor["LEFT"] = "LEFT";
10
+ /** Handle on the right; the left edge is fixed. Resizes width. */
11
+ ResizeAnchor["RIGHT"] = "RIGHT";
12
+ /** Handle on top; the bottom edge is fixed. Resizes height. */
13
+ ResizeAnchor["TOP"] = "TOP";
14
+ /** Handle on the bottom; the top edge is fixed. Resizes height. */
15
+ ResizeAnchor["BOTTOM"] = "BOTTOM";
16
+ /** Handle top-left; the bottom-right corner is fixed. Resizes both. */
17
+ ResizeAnchor["TOP_LEFT"] = "TOP_LEFT";
18
+ /** Handle top-right; the bottom-left corner is fixed. Resizes both. */
19
+ ResizeAnchor["TOP_RIGHT"] = "TOP_RIGHT";
20
+ /** Handle bottom-left; the top-right corner is fixed. Resizes both. */
21
+ ResizeAnchor["BOTTOM_LEFT"] = "BOTTOM_LEFT";
22
+ /** Handle bottom-right; the top-left corner is fixed. Resizes both. */
23
+ ResizeAnchor["BOTTOM_RIGHT"] = "BOTTOM_RIGHT";
24
+ return ResizeAnchor;
25
+ }({});
26
+ /**
27
+ * Horizontal, vertical, and diagonal drag-resizing. Returns a `mousedown` handler for the resize
28
+ * handle; document listeners attach on mousedown only, so the hook is SSR-safe.
9
29
  *
10
- * @example
11
- * // Resize from left edge (right edge is fixed)
12
- * const handleResize = useResize({
13
- * currentWidth: width,
14
- * anchor: "left",
15
- * onWidthChange: setWidth,
16
- * minWidth: 100,
17
- * maxWidth: 1000,
18
- * });
30
+ * The anchor determines what resizes:
31
+ * - Edge anchors (`LEFT` / `RIGHT` / `TOP` / `BOTTOM`) resize one dimension.
32
+ * - Corner anchors (`TOP_LEFT` / `TOP_RIGHT` / `BOTTOM_LEFT` / `BOTTOM_RIGHT`) resize both.
19
33
  *
20
34
  * @example
21
- * // Resize from top-left corner (bottom-right corner is fixed)
22
- * const handleResize = useResize({
35
+ * // Resize from the left edge (right edge is fixed)
36
+ * const onResizeStart = useResize({
23
37
  * currentWidth: width,
24
38
  * currentHeight: height,
25
- * anchor: "top-left",
26
- * onSizeChange: (w, h) => { setWidth(w); setHeight(h); },
39
+ * anchor: ResizeAnchor.LEFT,
40
+ * onWidthChange: setWidth,
27
41
  * minWidth: 100,
28
42
  * maxWidth: 1000,
29
- * minHeight: 100,
30
- * maxHeight: 1000,
31
43
  * });
32
44
  */
33
- var useResize = ({ currentWidth, currentHeight, onWidthChange, onHeightChange, onSizeChange, minWidth = 0, maxWidth = Infinity, minHeight = 0, maxHeight = Infinity, anchor }) => {
45
+ function useResize({ currentWidth, currentHeight, onWidthChange, onHeightChange, onSizeChange, minWidth = 0, maxWidth = Number.POSITIVE_INFINITY, minHeight = 0, maxHeight = Number.POSITIVE_INFINITY, anchor }) {
34
46
  const isResizingRef = useRef(false);
35
47
  const startXRef = useRef(0);
36
48
  const startYRef = useRef(0);
@@ -43,31 +55,31 @@ var useResize = ({ currentWidth, currentHeight, onWidthChange, onHeightChange, o
43
55
  let widthDelta = 0;
44
56
  let heightDelta = 0;
45
57
  switch (anchor) {
46
- case "left":
58
+ case "LEFT":
47
59
  widthDelta = deltaX;
48
60
  break;
49
- case "right":
61
+ case "RIGHT":
50
62
  widthDelta = -deltaX;
51
63
  break;
52
- case "top":
64
+ case "TOP":
53
65
  heightDelta = deltaY;
54
66
  break;
55
- case "bottom":
67
+ case "BOTTOM":
56
68
  heightDelta = -deltaY;
57
69
  break;
58
- case "top-left":
70
+ case "TOP_LEFT":
59
71
  widthDelta = deltaX;
60
72
  heightDelta = deltaY;
61
73
  break;
62
- case "top-right":
74
+ case "TOP_RIGHT":
63
75
  widthDelta = -deltaX;
64
76
  heightDelta = deltaY;
65
77
  break;
66
- case "bottom-left":
78
+ case "BOTTOM_LEFT":
67
79
  widthDelta = deltaX;
68
80
  heightDelta = -deltaY;
69
81
  break;
70
- case "bottom-right":
82
+ case "BOTTOM_RIGHT":
71
83
  widthDelta = -deltaX;
72
84
  heightDelta = -deltaY;
73
85
  break;
@@ -109,6 +121,6 @@ var useResize = ({ currentWidth, currentHeight, onWidthChange, onHeightChange, o
109
121
  currentHeight,
110
122
  handleMouseMove
111
123
  ]);
112
- };
124
+ }
113
125
  //#endregion
114
- export { useResize };
126
+ export { ResizeAnchor, useResize };