@galaxy-io/dls 1.6.1 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (538) hide show
  1. package/README.md +47 -50
  2. package/biome/index.json +74 -0
  3. package/biome/plugins/no-hex-literal.grit +20 -0
  4. package/biome/plugins/no-inline-style.grit +13 -0
  5. package/biome/plugins/no-margin.grit +9 -0
  6. package/biome/plugins/warn/no-hex-literal.grit +23 -0
  7. package/biome/plugins/warn/no-inline-style.grit +13 -0
  8. package/biome/plugins/warn/no-margin.grit +9 -0
  9. package/dist/a11y/FocusScope.d.ts +44 -0
  10. package/dist/a11y/FocusScope.js +229 -0
  11. package/dist/a11y/VisuallyHidden.d.ts +21 -0
  12. package/dist/a11y/VisuallyHidden.js +30 -0
  13. package/dist/avatar/Avatar.d.ts +56 -14
  14. package/dist/avatar/Avatar.js +250 -96
  15. package/dist/avatar/AvatarGroup.d.ts +43 -0
  16. package/dist/avatar/AvatarGroup.js +153 -0
  17. package/dist/backgrounds/GridBackground.d.ts +48 -0
  18. package/dist/backgrounds/GridBackground.js +146 -0
  19. package/dist/beacons/Beacon.d.ts +86 -22
  20. package/dist/beacons/Beacon.js +170 -47
  21. package/dist/brand/GalaxyFilamentWordmark.d.ts +30 -0
  22. package/dist/brand/GalaxyFilamentWordmark.js +39 -0
  23. package/dist/brand/GalaxyLogomark.d.ts +26 -0
  24. package/dist/brand/GalaxyLogomark.js +41 -0
  25. package/dist/brand/GalaxyLogomarkAnimation.d.ts +36 -0
  26. package/dist/brand/GalaxyLogomarkAnimation.js +107 -0
  27. package/dist/brand/GalaxyWordmark.d.ts +30 -0
  28. package/dist/brand/GalaxyWordmark.js +63 -0
  29. package/dist/brand/assets/galaxy-logomark-animation.js +136678 -0
  30. package/dist/brand/brandMark.d.ts +26 -0
  31. package/dist/brand/brandMark.js +35 -0
  32. package/dist/buttons/Button.d.ts +148 -59
  33. package/dist/buttons/Button.js +437 -227
  34. package/dist/buttons/ButtonGroup.d.ts +38 -0
  35. package/dist/buttons/ButtonGroup.js +68 -0
  36. package/dist/buttons/CopyButton.d.ts +77 -0
  37. package/dist/buttons/CopyButton.js +65 -0
  38. package/dist/charts/AreaChart.d.ts +49 -0
  39. package/dist/charts/AreaChart.js +31 -0
  40. package/dist/charts/BarChart.d.ts +54 -67
  41. package/dist/charts/BarChart.js +136 -116
  42. package/dist/charts/ChartAxis.d.ts +35 -40
  43. package/dist/charts/ChartAxis.js +114 -90
  44. package/dist/charts/ChartCategoryTargets.d.ts +12 -26
  45. package/dist/charts/ChartCategoryTargets.js +32 -20
  46. package/dist/charts/ChartFrame.d.ts +69 -116
  47. package/dist/charts/ChartFrame.js +253 -119
  48. package/dist/charts/ChartGroupProvider.d.ts +30 -41
  49. package/dist/charts/ChartGroupProvider.js +20 -7
  50. package/dist/charts/ChartLegend.d.ts +27 -48
  51. package/dist/charts/ChartLegend.js +206 -125
  52. package/dist/charts/ChartMarkTargets.d.ts +12 -28
  53. package/dist/charts/ChartMarkTargets.js +33 -20
  54. package/dist/charts/ChartPrimitives.d.ts +50 -305
  55. package/dist/charts/ChartPrimitives.js +65 -413
  56. package/dist/charts/ChartTooltip.d.ts +20 -26
  57. package/dist/charts/ChartTooltip.js +77 -40
  58. package/dist/charts/Heatmap.d.ts +35 -0
  59. package/dist/charts/Heatmap.js +295 -0
  60. package/dist/charts/LineChart.d.ts +54 -47
  61. package/dist/charts/LineChart.js +159 -117
  62. package/dist/charts/PieChart.d.ts +32 -53
  63. package/dist/charts/PieChart.js +149 -135
  64. package/dist/charts/Sparkline.d.ts +107 -0
  65. package/dist/charts/Sparkline.js +244 -0
  66. package/dist/charts/StatChart.d.ts +37 -13
  67. package/dist/charts/StatChart.js +82 -35
  68. package/dist/charts/barChartGeometry.d.ts +138 -86
  69. package/dist/charts/barChartGeometry.js +122 -101
  70. package/dist/charts/barChartLegend.d.ts +14 -18
  71. package/dist/charts/barChartLegend.js +18 -13
  72. package/dist/charts/chartFormat.d.ts +12 -18
  73. package/dist/charts/chartFormat.js +20 -52
  74. package/dist/charts/chartPalette.d.ts +33 -0
  75. package/dist/charts/chartPalette.js +68 -0
  76. package/dist/charts/chartScales.d.ts +41 -108
  77. package/dist/charts/chartScales.js +62 -128
  78. package/dist/charts/constants.d.ts +96 -256
  79. package/dist/charts/constants.js +105 -275
  80. package/dist/charts/heatmapGeometry.d.ts +95 -0
  81. package/dist/charts/heatmapGeometry.js +155 -0
  82. package/dist/charts/lineChartGeometry.d.ts +108 -58
  83. package/dist/charts/lineChartGeometry.js +120 -78
  84. package/dist/charts/pieChartGeometry.d.ts +66 -40
  85. package/dist/charts/pieChartGeometry.js +68 -38
  86. package/dist/charts/types.d.ts +197 -466
  87. package/dist/charts/types.js +55 -144
  88. package/dist/charts/useCartesianChartLayout.d.ts +28 -59
  89. package/dist/charts/useCartesianChartLayout.js +47 -32
  90. package/dist/charts/useChartDimensions.d.ts +19 -40
  91. package/dist/charts/useChartDimensions.js +40 -56
  92. package/dist/charts/useChartFormatters.d.ts +6 -15
  93. package/dist/charts/useChartFormatters.js +4 -9
  94. package/dist/charts/useChartInteraction.d.ts +47 -116
  95. package/dist/charts/useChartInteraction.js +95 -71
  96. package/dist/charts/useChartTooltipPosition.d.ts +29 -39
  97. package/dist/charts/useChartTooltipPosition.js +14 -5
  98. package/dist/charts/useSeriesColorResolver.d.ts +11 -33
  99. package/dist/charts/useSeriesColorResolver.js +19 -12
  100. package/dist/chips/Chip.d.ts +155 -44
  101. package/dist/chips/Chip.js +329 -155
  102. package/dist/chips/ChipGroup.d.ts +53 -0
  103. package/dist/chips/ChipGroup.js +98 -0
  104. package/dist/drawer/Drawer.d.ts +81 -17
  105. package/dist/drawer/Drawer.js +370 -65
  106. package/dist/dropdown/Dropdown.d.ts +80 -63
  107. package/dist/dropdown/Dropdown.js +127 -129
  108. package/dist/editor/CodeEditor.d.ts +119 -40
  109. package/dist/editor/CodeEditor.js +490 -400
  110. package/dist/editor/CodeEditorReactWidget.d.ts +20 -17
  111. package/dist/editor/CodeEditorReactWidget.js +28 -21
  112. package/dist/feedback/Alert.d.ts +49 -0
  113. package/dist/feedback/Alert.js +172 -0
  114. package/dist/feedback/EmptyState.d.ts +39 -0
  115. package/dist/feedback/EmptyState.js +109 -0
  116. package/dist/feedback/ProgressBar.d.ts +125 -0
  117. package/dist/feedback/ProgressBar.js +183 -0
  118. package/dist/feedback/ProgressCircle.d.ts +99 -0
  119. package/dist/feedback/ProgressCircle.js +187 -0
  120. package/dist/feedback/Skeleton.d.ts +69 -0
  121. package/dist/feedback/Skeleton.js +130 -0
  122. package/dist/feedback/Spinner.d.ts +63 -0
  123. package/dist/feedback/Spinner.js +141 -0
  124. package/dist/fonts.css +70 -0
  125. package/dist/hooks/internal/useIsClient.d.ts +2 -0
  126. package/dist/hooks/internal/useIsClient.js +14 -0
  127. package/dist/hooks/useClipboard.d.ts +19 -0
  128. package/dist/hooks/useClipboard.js +45 -0
  129. package/dist/hooks/useControlledOpenState.d.ts +21 -0
  130. package/dist/hooks/useControlledOpenState.js +19 -0
  131. package/dist/hooks/useControlledState.d.ts +19 -0
  132. package/dist/hooks/useControlledState.js +22 -0
  133. package/dist/hooks/useDebouncedValue.d.ts +14 -0
  134. package/dist/hooks/useDebouncedValue.js +33 -0
  135. package/dist/hooks/useDisclosure.d.ts +26 -0
  136. package/dist/hooks/useDisclosure.js +36 -0
  137. package/dist/hooks/useDismiss.d.ts +23 -27
  138. package/dist/hooks/useDismiss.js +39 -27
  139. package/dist/hooks/useElementClientSize.d.ts +10 -10
  140. package/dist/hooks/useElementClientSize.js +8 -11
  141. package/dist/hooks/useElementWidth.d.ts +6 -13
  142. package/dist/hooks/useElementWidth.js +6 -14
  143. package/dist/hooks/useField.d.ts +47 -0
  144. package/dist/hooks/useField.js +40 -0
  145. package/dist/hooks/useHotkey.d.ts +77 -0
  146. package/dist/hooks/useHotkey.js +246 -0
  147. package/dist/hooks/useIsMac.d.ts +12 -0
  148. package/dist/hooks/useIsMac.js +27 -0
  149. package/dist/hooks/useIsomorphicLayoutEffect.d.ts +17 -0
  150. package/dist/hooks/useIsomorphicLayoutEffect.js +20 -0
  151. package/dist/hooks/useLocalStorage.d.ts +28 -0
  152. package/dist/hooks/useLocalStorage.js +145 -0
  153. package/dist/hooks/useMediaQuery.d.ts +11 -0
  154. package/dist/hooks/useMediaQuery.js +23 -0
  155. package/dist/hooks/usePrefersReducedMotion.d.ts +12 -0
  156. package/dist/hooks/usePrefersReducedMotion.js +25 -0
  157. package/dist/hooks/useResize.d.ts +42 -62
  158. package/dist/hooks/useResize.js +43 -31
  159. package/dist/icons/Icon.d.ts +64 -37
  160. package/dist/icons/Icon.js +96 -37
  161. package/dist/icons/internal/IconSlot.d.ts +10 -0
  162. package/dist/icons/internal/IconSlot.js +32 -0
  163. package/dist/inputs/CheckboxGroup.d.ts +115 -0
  164. package/dist/inputs/CheckboxGroup.js +183 -0
  165. package/dist/inputs/CheckboxInput.d.ts +98 -28
  166. package/dist/inputs/CheckboxInput.js +218 -88
  167. package/dist/inputs/ColorInput.d.ts +115 -29
  168. package/dist/inputs/ColorInput.js +748 -326
  169. package/dist/inputs/CopyInput.d.ts +49 -20
  170. package/dist/inputs/CopyInput.js +57 -49
  171. package/dist/inputs/CronInput.d.ts +94 -0
  172. package/dist/inputs/CronInput.js +618 -0
  173. package/dist/inputs/DateInput.d.ts +175 -28
  174. package/dist/inputs/DateInput.js +1109 -451
  175. package/dist/inputs/DurationInput.d.ts +101 -0
  176. package/dist/inputs/DurationInput.js +441 -0
  177. package/dist/inputs/Field.d.ts +75 -0
  178. package/dist/inputs/Field.js +247 -0
  179. package/dist/inputs/Fieldset.d.ts +53 -0
  180. package/dist/inputs/Fieldset.js +149 -0
  181. package/dist/inputs/FileInput.d.ts +110 -0
  182. package/dist/inputs/FileInput.js +476 -0
  183. package/dist/inputs/Input.d.ts +148 -187
  184. package/dist/inputs/Input.js +339 -259
  185. package/dist/inputs/KeyValueInput.d.ts +120 -0
  186. package/dist/inputs/KeyValueInput.js +383 -0
  187. package/dist/inputs/MultiSelectInput.d.ts +165 -54
  188. package/dist/inputs/MultiSelectInput.js +175 -559
  189. package/dist/inputs/NumberInput.d.ts +65 -9
  190. package/dist/inputs/NumberInput.js +197 -40
  191. package/dist/inputs/PasswordInput.d.ts +17 -12
  192. package/dist/inputs/PasswordInput.js +33 -33
  193. package/dist/inputs/PinInput.d.ts +117 -0
  194. package/dist/inputs/PinInput.js +364 -0
  195. package/dist/inputs/RadioGroup.d.ts +115 -0
  196. package/dist/inputs/RadioGroup.js +179 -0
  197. package/dist/inputs/RadioInput.d.ts +87 -24
  198. package/dist/inputs/RadioInput.js +182 -95
  199. package/dist/inputs/SearchInput.d.ts +66 -0
  200. package/dist/inputs/SearchInput.js +156 -0
  201. package/dist/inputs/SelectInput.d.ts +195 -55
  202. package/dist/inputs/SelectInput.js +1308 -446
  203. package/dist/inputs/SliderInput.d.ts +150 -30
  204. package/dist/inputs/SliderInput.js +441 -186
  205. package/dist/inputs/SwitchInput.d.ts +109 -0
  206. package/dist/inputs/SwitchInput.js +248 -0
  207. package/dist/inputs/TagInput.d.ts +117 -0
  208. package/dist/inputs/TagInput.js +408 -0
  209. package/dist/inputs/TextAreaInput.d.ts +146 -44
  210. package/dist/inputs/TextAreaInput.js +292 -198
  211. package/dist/inputs/TextInput.d.ts +4 -13
  212. package/dist/inputs/TextInput.js +13 -48
  213. package/dist/inputs/ToggleInput.d.ts +120 -22
  214. package/dist/inputs/ToggleInput.js +262 -116
  215. package/dist/inputs/internal/bareField.d.ts +18 -0
  216. package/dist/inputs/internal/bareField.js +38 -0
  217. package/dist/inputs/internal/devWarn.d.ts +7 -0
  218. package/dist/inputs/internal/devWarn.js +30 -0
  219. package/dist/inputs/internal/fieldFrame.d.ts +34 -0
  220. package/dist/inputs/internal/fieldFrame.js +64 -0
  221. package/dist/inputs/internal/fieldWiring.d.ts +50 -0
  222. package/dist/inputs/internal/fieldWiring.js +38 -0
  223. package/dist/inputs/internal/innerButton.d.ts +2 -0
  224. package/dist/inputs/internal/innerButton.js +24 -0
  225. package/dist/inputs/internal/ownField.d.ts +45 -0
  226. package/dist/inputs/internal/ownField.js +58 -0
  227. package/dist/inputs/internal/predicates.d.ts +9 -0
  228. package/dist/inputs/internal/predicates.js +11 -0
  229. package/dist/inputs/internal/useComboboxPopover.d.ts +46 -0
  230. package/dist/inputs/internal/useComboboxPopover.js +92 -0
  231. package/dist/json/JsonViewer.d.ts +62 -0
  232. package/dist/json/JsonViewer.js +483 -0
  233. package/dist/layout/Box.d.ts +87 -0
  234. package/dist/layout/Box.js +109 -0
  235. package/dist/layout/Divider.d.ts +25 -0
  236. package/dist/layout/Divider.js +70 -0
  237. package/dist/layout/Flex.d.ts +139 -0
  238. package/dist/layout/Flex.js +165 -0
  239. package/dist/layout/FlexItem.d.ts +72 -0
  240. package/dist/layout/FlexItem.js +84 -0
  241. package/dist/layout/Grid.d.ts +140 -0
  242. package/dist/layout/Grid.js +178 -0
  243. package/dist/layout/Portal.d.ts +29 -0
  244. package/dist/layout/Portal.js +27 -0
  245. package/dist/layout/ResizablePanels.d.ts +88 -0
  246. package/dist/layout/ResizablePanels.js +198 -0
  247. package/dist/layout/ResizeHandle.d.ts +48 -0
  248. package/dist/layout/ResizeHandle.js +143 -0
  249. package/dist/layout/ScrollArea.d.ts +30 -0
  250. package/dist/layout/ScrollArea.js +138 -0
  251. package/dist/links/Link.d.ts +101 -1
  252. package/dist/links/Link.js +166 -4
  253. package/dist/lists/BulletedList.d.ts +25 -7
  254. package/dist/lists/BulletedList.js +72 -27
  255. package/dist/lists/DescriptionList.d.ts +91 -0
  256. package/dist/lists/DescriptionList.js +147 -0
  257. package/dist/menu/ContextMenu.d.ts +64 -0
  258. package/dist/menu/ContextMenu.js +34 -0
  259. package/dist/menu/Menu.d.ts +280 -0
  260. package/dist/menu/Menu.js +1003 -0
  261. package/dist/modal/ConfirmDialog.d.ts +55 -0
  262. package/dist/modal/ConfirmDialog.js +151 -0
  263. package/dist/modal/Modal.d.ts +64 -14
  264. package/dist/modal/Modal.js +189 -48
  265. package/dist/navigation/Breadcrumbs.d.ts +65 -0
  266. package/dist/navigation/Breadcrumbs.js +243 -0
  267. package/dist/navigation/CommandPalette.d.ts +83 -0
  268. package/dist/navigation/CommandPalette.js +509 -0
  269. package/dist/navigation/Pagination.d.ts +87 -0
  270. package/dist/navigation/Pagination.js +300 -0
  271. package/dist/navigation/SidebarNav.d.ts +107 -0
  272. package/dist/navigation/SidebarNav.js +341 -0
  273. package/dist/navigation/Stepper.d.ts +52 -0
  274. package/dist/navigation/Stepper.js +207 -0
  275. package/dist/navigation/Tabs.d.ts +113 -0
  276. package/dist/navigation/Tabs.js +543 -0
  277. package/dist/navigation/Topbar.d.ts +20 -0
  278. package/dist/navigation/Topbar.js +62 -0
  279. package/dist/overlay/OverlayProvider.d.ts +28 -32
  280. package/dist/overlay/OverlayProvider.js +42 -93
  281. package/dist/overlay/useOverlay.d.ts +88 -12
  282. package/dist/overlay/useOverlay.js +220 -43
  283. package/dist/overlays/Popover.d.ts +114 -0
  284. package/dist/overlays/Popover.js +389 -0
  285. package/dist/shapes/Circle.d.ts +84 -8
  286. package/dist/shapes/Circle.js +122 -20
  287. package/dist/shapes/Square.d.ts +84 -8
  288. package/dist/shapes/Square.js +123 -20
  289. package/dist/styles/mixins.d.ts +35 -0
  290. package/dist/styles/mixins.js +60 -0
  291. package/dist/styles.css +1 -202
  292. package/dist/table/InfiniteSpreadsheet.d.ts +140 -10
  293. package/dist/table/InfiniteSpreadsheet.js +762 -225
  294. package/dist/table/InfiniteTable.d.ts +116 -14
  295. package/dist/table/InfiniteTable.js +287 -429
  296. package/dist/table/SpreadsheetCellEditor.d.ts +54 -6
  297. package/dist/table/SpreadsheetCellEditor.js +163 -84
  298. package/dist/table/TableCore.d.ts +252 -0
  299. package/dist/table/TableCore.js +1077 -0
  300. package/dist/table/VirtualizedInfiniteTable.d.ts +104 -14
  301. package/dist/table/VirtualizedInfiniteTable.js +280 -219
  302. package/dist/table/types.d.ts +66 -244
  303. package/dist/table/types.js +0 -51
  304. package/dist/table/useInfiniteScrollSentinel.d.ts +25 -21
  305. package/dist/table/useInfiniteScrollSentinel.js +38 -30
  306. package/dist/table/useSpreadsheetCellNavigation.d.ts +44 -0
  307. package/dist/table/useSpreadsheetCellNavigation.js +141 -0
  308. package/dist/table/useTableColumnLayout.d.ts +90 -25
  309. package/dist/table/useTableColumnLayout.js +255 -50
  310. package/dist/table/useTableKeyboardNavigation.d.ts +32 -21
  311. package/dist/table/useTableKeyboardNavigation.js +95 -71
  312. package/dist/table/useTableRowSelection.d.ts +24 -25
  313. package/dist/table/useTableRowSelection.js +57 -84
  314. package/dist/table/useTableVirtualizer.d.ts +20 -0
  315. package/dist/table/useTableVirtualizer.js +48 -0
  316. package/dist/text/Bold.d.ts +5 -6
  317. package/dist/text/Bold.js +16 -15
  318. package/dist/text/Code.d.ts +5 -6
  319. package/dist/text/Code.js +16 -25
  320. package/dist/text/CodeBlock.d.ts +77 -0
  321. package/dist/text/CodeBlock.js +373 -0
  322. package/dist/text/EditableText.d.ts +55 -15
  323. package/dist/text/EditableText.js +153 -135
  324. package/dist/text/Ellipsis.d.ts +34 -8
  325. package/dist/text/Ellipsis.js +55 -23
  326. package/dist/text/Kbd.d.ts +72 -0
  327. package/dist/text/Kbd.js +284 -0
  328. package/dist/text/MarkdownText.d.ts +27 -10
  329. package/dist/text/MarkdownText.js +317 -300
  330. package/dist/text/RequiredMarker.d.ts +17 -5
  331. package/dist/text/RequiredMarker.js +34 -36
  332. package/dist/text/Selectable.d.ts +5 -6
  333. package/dist/text/Selectable.js +16 -13
  334. package/dist/text/Span.d.ts +82 -0
  335. package/dist/text/Span.js +115 -0
  336. package/dist/text/Text.d.ts +128 -41
  337. package/dist/text/Text.js +209 -76
  338. package/dist/theme/GalaxyProvider.d.ts +75 -0
  339. package/dist/theme/GalaxyProvider.js +223 -0
  340. package/dist/theme/ThemeSwitcher.d.ts +52 -0
  341. package/dist/theme/ThemeSwitcher.js +94 -0
  342. package/dist/theme/enums.d.ts +118 -0
  343. package/dist/theme/enums.js +144 -0
  344. package/dist/theme/tokens/dark.d.ts +2 -0
  345. package/dist/theme/tokens/dark.js +275 -0
  346. package/dist/theme/tokens/generate.d.ts +15 -0
  347. package/dist/theme/tokens/generate.js +47 -0
  348. package/dist/theme/tokens/light.d.ts +2 -0
  349. package/dist/theme/tokens/light.js +274 -0
  350. package/dist/theme/tokens/palette.d.ts +14 -0
  351. package/dist/theme/tokens/palette.js +153 -0
  352. package/dist/theme/tokens/scales.d.ts +26 -0
  353. package/dist/theme/tokens/scales.js +154 -0
  354. package/dist/theme/tokens/t.d.ts +3 -0
  355. package/dist/theme/tokens/t.js +25 -0
  356. package/dist/theme/tokens/types.d.ts +189 -0
  357. package/dist/theme/tokens/types.js +0 -0
  358. package/dist/theme/useGalaxyTheme.d.ts +46 -0
  359. package/dist/theme/useGalaxyTheme.js +36 -0
  360. package/dist/theme/useInverseScope.d.ts +18 -0
  361. package/dist/theme/useInverseScope.js +33 -0
  362. package/dist/three/GalaxyLogomark3D.d.ts +46 -0
  363. package/dist/three/GalaxyLogomark3D.js +134 -0
  364. package/dist/three/assets/galaxy-logomark.js +4 -0
  365. package/dist/three/galaxyLogomark3DScene.d.ts +27 -0
  366. package/dist/three/galaxyLogomark3DScene.js +165 -0
  367. package/dist/timeline/Timeline.d.ts +99 -0
  368. package/dist/timeline/Timeline.js +269 -0
  369. package/dist/toast/Toast.d.ts +43 -19
  370. package/dist/toast/Toast.js +130 -89
  371. package/dist/toast/ToastProvider.d.ts +23 -23
  372. package/dist/toast/ToastProvider.js +298 -101
  373. package/dist/toast/ToastViewport.d.ts +12 -0
  374. package/dist/toast/ToastViewport.js +210 -0
  375. package/dist/toast/useToast.d.ts +139 -5
  376. package/dist/toast/useToast.js +15 -13
  377. package/dist/tokens.css +654 -0
  378. package/dist/tooltip/Tooltip.d.ts +64 -44
  379. package/dist/tooltip/Tooltip.js +280 -73
  380. package/dist/tooltip/internal/LazyTooltip.d.ts +7 -0
  381. package/dist/tooltip/internal/LazyTooltip.js +53 -0
  382. package/dist/transform/Fade.d.ts +33 -11
  383. package/dist/transform/Fade.js +71 -19
  384. package/dist/transform/Flasher.d.ts +25 -0
  385. package/dist/transform/Flasher.js +39 -0
  386. package/dist/transform/Rotate.d.ts +24 -12
  387. package/dist/transform/Rotate.js +36 -22
  388. package/dist/transform/ScaleFade.d.ts +36 -11
  389. package/dist/transform/ScaleFade.js +86 -28
  390. package/dist/transform/internal/CollapseMotion.d.ts +10 -0
  391. package/dist/transform/internal/CollapseMotion.js +65 -0
  392. package/dist/tree/Tree.d.ts +85 -0
  393. package/dist/tree/Tree.js +387 -0
  394. package/dist/tree/treeRow.d.ts +39 -0
  395. package/dist/tree/treeRow.js +75 -0
  396. package/dist/utils/colors.d.ts +46 -13
  397. package/dist/utils/colors.js +92 -34
  398. package/dist/utils/css.d.ts +23 -0
  399. package/dist/utils/css.js +30 -0
  400. package/dist/utils/format.d.ts +58 -0
  401. package/dist/utils/format.js +220 -0
  402. package/dist/vite/index.d.ts +16 -0
  403. package/dist/vite/index.js +52 -0
  404. package/dist/widget/Widget.d.ts +164 -48
  405. package/dist/widget/Widget.js +335 -96
  406. package/dist/widget/WidgetGroup.d.ts +36 -0
  407. package/dist/widget/WidgetGroup.js +103 -0
  408. package/package.json +851 -157
  409. package/dist/accordion/Accordion.d.ts +0 -54
  410. package/dist/accordion/Accordion.js +0 -183
  411. package/dist/assets/components/GalaxyFilamentWordmarkDark.d.ts +0 -3
  412. package/dist/assets/components/GalaxyFilamentWordmarkDark.js +0 -14
  413. package/dist/assets/components/GalaxyFilamentWordmarkLight.d.ts +0 -3
  414. package/dist/assets/components/GalaxyFilamentWordmarkLight.js +0 -14
  415. package/dist/assets/components/GalaxyLogomarkDark.d.ts +0 -3
  416. package/dist/assets/components/GalaxyLogomarkDark.js +0 -11
  417. package/dist/assets/components/GalaxyLogomarkLight.d.ts +0 -3
  418. package/dist/assets/components/GalaxyLogomarkLight.js +0 -17
  419. package/dist/assets/components/GalaxyWordmarkDark.d.ts +0 -3
  420. package/dist/assets/components/GalaxyWordmarkDark.js +0 -15
  421. package/dist/assets/components/GalaxyWordmarkLight.d.ts +0 -3
  422. package/dist/assets/components/GalaxyWordmarkLight.js +0 -28
  423. package/dist/assets/models/galaxy-animation.js +0 -136666
  424. package/dist/assets/models/galaxy-logomark.js +0 -4
  425. package/dist/avatar/AvatarShimmer.d.ts +0 -30
  426. package/dist/avatar/AvatarShimmer.js +0 -22
  427. package/dist/backgrounds/CellGridBackground.d.ts +0 -24
  428. package/dist/backgrounds/CellGridBackground.js +0 -44
  429. package/dist/backgrounds/CrossGridBackground.d.ts +0 -26
  430. package/dist/backgrounds/CrossGridBackground.js +0 -49
  431. package/dist/backgrounds/DotGridBackground.d.ts +0 -24
  432. package/dist/backgrounds/DotGridBackground.js +0 -47
  433. package/dist/badge/Badge.d.ts +0 -42
  434. package/dist/badge/Badge.js +0 -99
  435. package/dist/charts/ChartEmptyState.d.ts +0 -17
  436. package/dist/charts/ChartEmptyState.js +0 -29
  437. package/dist/charts/ProgressBar.d.ts +0 -29
  438. package/dist/charts/ProgressBar.js +0 -65
  439. package/dist/charts/chartTheme.d.ts +0 -18
  440. package/dist/charts/chartTheme.js +0 -26
  441. package/dist/containers/FlexItem.d.ts +0 -50
  442. package/dist/containers/FlexItem.js +0 -91
  443. package/dist/containers/FlexWrapper.d.ts +0 -96
  444. package/dist/containers/FlexWrapper.js +0 -143
  445. package/dist/containers/GridWrapper.d.ts +0 -79
  446. package/dist/containers/GridWrapper.js +0 -125
  447. package/dist/containers/Spacing.d.ts +0 -23
  448. package/dist/containers/Spacing.js +0 -59
  449. package/dist/containers/Wrapper.d.ts +0 -26
  450. package/dist/containers/Wrapper.js +0 -54
  451. package/dist/dividers/HorizontalDivider.d.ts +0 -7
  452. package/dist/dividers/HorizontalDivider.js +0 -39
  453. package/dist/dividers/VerticalDivider.d.ts +0 -6
  454. package/dist/dividers/VerticalDivider.js +0 -21
  455. package/dist/icons/GalaxyFilamentWordmark.d.ts +0 -11
  456. package/dist/icons/GalaxyFilamentWordmark.js +0 -25
  457. package/dist/icons/GalaxyLogomark.d.ts +0 -13
  458. package/dist/icons/GalaxyLogomark.js +0 -27
  459. package/dist/icons/GalaxyLogomark3D.d.ts +0 -56
  460. package/dist/icons/GalaxyLogomark3D.js +0 -319
  461. package/dist/icons/GalaxyLogomarkAnimation.d.ts +0 -18
  462. package/dist/icons/GalaxyLogomarkAnimation.js +0 -48
  463. package/dist/icons/GalaxyWordmark.d.ts +0 -11
  464. package/dist/icons/GalaxyWordmark.js +0 -25
  465. package/dist/inputs/MultiTextInput.d.ts +0 -32
  466. package/dist/inputs/MultiTextInput.js +0 -180
  467. package/dist/inputs/SwitcherInput.d.ts +0 -30
  468. package/dist/inputs/SwitcherInput.js +0 -81
  469. package/dist/inputs/hooks.d.ts +0 -10
  470. package/dist/inputs/hooks.js +0 -22
  471. package/dist/overlay/constants.d.ts +0 -28
  472. package/dist/overlay/constants.js +0 -37
  473. package/dist/resizable/HorizontalResizeHandle.d.ts +0 -17
  474. package/dist/resizable/HorizontalResizeHandle.js +0 -38
  475. package/dist/resizable/VerticalResizeHandle.d.ts +0 -18
  476. package/dist/resizable/VerticalResizeHandle.js +0 -39
  477. package/dist/table/SpreadsheetCell.d.ts +0 -21
  478. package/dist/table/SpreadsheetCell.js +0 -71
  479. package/dist/table/SpreadsheetHeaderCell.d.ts +0 -23
  480. package/dist/table/SpreadsheetHeaderCell.js +0 -91
  481. package/dist/table/SpreadsheetMenuItem.d.ts +0 -14
  482. package/dist/table/SpreadsheetMenuItem.js +0 -33
  483. package/dist/table/SpreadsheetPrimitives.d.ts +0 -172
  484. package/dist/table/SpreadsheetPrimitives.js +0 -105
  485. package/dist/table/SpreadsheetRow.d.ts +0 -33
  486. package/dist/table/SpreadsheetRow.js +0 -73
  487. package/dist/table/SpreadsheetRowActionCell.d.ts +0 -14
  488. package/dist/table/SpreadsheetRowActionCell.js +0 -51
  489. package/dist/table/TableExpandCell.d.ts +0 -11
  490. package/dist/table/TableExpandCell.js +0 -24
  491. package/dist/table/TableExpandedRow.d.ts +0 -16
  492. package/dist/table/TableExpandedRow.js +0 -77
  493. package/dist/table/TableHeaderCellContent.d.ts +0 -30
  494. package/dist/table/TableHeaderCellContent.js +0 -48
  495. package/dist/table/TablePrimitives.d.ts +0 -313
  496. package/dist/table/TablePrimitives.js +0 -302
  497. package/dist/table/TableSelectCell.d.ts +0 -18
  498. package/dist/table/TableSelectCell.js +0 -27
  499. package/dist/table/TableStatusRow.d.ts +0 -18
  500. package/dist/table/TableStatusRow.js +0 -50
  501. package/dist/table/useSpreadsheetEditing.d.ts +0 -13
  502. package/dist/table/useSpreadsheetEditing.js +0 -41
  503. package/dist/table/useTableColumnResize.d.ts +0 -38
  504. package/dist/table/useTableColumnResize.js +0 -155
  505. package/dist/table/useTableRowExpansion.d.ts +0 -24
  506. package/dist/table/useTableRowExpansion.js +0 -62
  507. package/dist/table/utils.d.ts +0 -50
  508. package/dist/table/utils.js +0 -78
  509. package/dist/text/HotKeys.d.ts +0 -30
  510. package/dist/text/HotKeys.js +0 -74
  511. package/dist/text/Paragraph.d.ts +0 -33
  512. package/dist/text/Paragraph.js +0 -83
  513. package/dist/text/TextShimmer.d.ts +0 -14
  514. package/dist/text/TextShimmer.js +0 -34
  515. package/dist/theme/GalaxyTheme.d.ts +0 -67
  516. package/dist/theme/GalaxyTheme.js +0 -119
  517. package/dist/theme/constants.d.ts +0 -8
  518. package/dist/theme/constants.js +0 -38
  519. package/dist/theme/index.d.ts +0 -6
  520. package/dist/theme/index.js +0 -7
  521. package/dist/theme/types.d.ts +0 -195
  522. package/dist/theme/types.js +0 -10
  523. package/dist/theme/typography.d.ts +0 -2
  524. package/dist/theme/typography.js +0 -73
  525. package/dist/theme/variants/dark.d.ts +0 -2
  526. package/dist/theme/variants/dark.js +0 -125
  527. package/dist/theme/variants/light.d.ts +0 -2
  528. package/dist/theme/variants/light.js +0 -125
  529. package/dist/toast/ToastContainer.d.ts +0 -10
  530. package/dist/toast/ToastContainer.js +0 -31
  531. package/dist/toast/ToastWrapper.d.ts +0 -6
  532. package/dist/toast/ToastWrapper.js +0 -27
  533. package/dist/transform/Flash.d.ts +0 -7
  534. package/dist/transform/Flash.js +0 -18
  535. package/dist/transform/Spin.d.ts +0 -14
  536. package/dist/transform/Spin.js +0 -25
  537. package/dist/utils/linaria.d.ts +0 -1
  538. package/dist/utils/linaria.js +0 -8
@@ -0,0 +1,63 @@
1
+ import { type AriaAttributes, type CSSProperties, type ReactNode } from "react";
2
+ /** Canonical rungs; the member names the control rung the spinner sits in. */
3
+ export declare enum SpinnerSize {
4
+ /** 20px rung: 12px ring, `caption` label. */
5
+ X_SMALL = "X_SMALL",
6
+ /** 24px rung: 12px ring, `body_sm` label. */
7
+ SMALL = "SMALL",
8
+ /** 32px rung: 14px ring, `body_md` label. The default. */
9
+ MEDIUM = "MEDIUM",
10
+ /** 36px rung: 14px ring, `body_lg` label. */
11
+ LARGE = "LARGE",
12
+ /** 40px rung: 16px ring, `body_lg` label. */
13
+ X_LARGE = "X_LARGE"
14
+ }
15
+ /** Color role of the ring and label (Constitution V-A color set, neutral subset). */
16
+ export declare enum SpinnerVariant {
17
+ /** `text.primary`. */
18
+ PRIMARY = "PRIMARY",
19
+ /** `text.secondary`. The default: loading is quiet, auxiliary chrome. */
20
+ SECONDARY = "SECONDARY",
21
+ /** `text.tertiary`. */
22
+ TERTIARY = "TERTIARY",
23
+ /** The host's color (`currentColor`); used inside Button, Chip and Toast. */
24
+ INHERIT = "INHERIT"
25
+ }
26
+ export interface SpinnerProps extends AriaAttributes {
27
+ /**
28
+ * The control rung the spinner sits in. The ring is that rung's icon size (12 / 12 / 14 / 14 /
29
+ * 16px), so a host maps its own size with an identity map. With `children`, the size sets the
30
+ * line box and the label step; the content keeps its own size (give it the rung's icon px).
31
+ * @default SpinnerSize.MEDIUM
32
+ */
33
+ size?: SpinnerSize;
34
+ /**
35
+ * Color role of the ring and label. `INHERIT` follows the host's `currentColor` (inside Button).
36
+ * Turning `children` take it when they inherit (`Icon variant={IconVariant.INHERIT}`).
37
+ * @default SpinnerVariant.SECONDARY
38
+ */
39
+ variant?: SpinnerVariant;
40
+ /** Visible text after the ring ("Loading results…"); also the live region's text. */
41
+ label?: string;
42
+ /**
43
+ * What screen readers hear when there is no visible `label`. Ignored when `label` is set.
44
+ * @default "Loading"
45
+ */
46
+ ariaLabel?: string;
47
+ /**
48
+ * Content to turn instead of the ring, usually an `Icon` (a refresh glyph while a sync runs).
49
+ * Phrasing content only (it renders inside a `<span>`). Stands still under reduced motion.
50
+ */
51
+ children?: ReactNode;
52
+ /** DOM id on the root `<span>`. */
53
+ id?: string;
54
+ /** Any `data-*` attribute, forwarded to the root `<span>`. */
55
+ [dataAttribute: `data-${string}`]: string | number | boolean | undefined;
56
+ /** Extra class on the root `<span>`. */
57
+ className?: string;
58
+ /** Inline style on the root `<span>`; only for setting CSS custom properties. */
59
+ style?: CSSProperties;
60
+ }
61
+ /** A turning ring (or turning `children`) with a polite live region; optionally a visible label beside it. */
62
+ declare const Spinner: import("react").ForwardRefExoticComponent<SpinnerProps & import("react").RefAttributes<HTMLSpanElement>>;
63
+ export default Spinner;
@@ -0,0 +1,141 @@
1
+ import VisuallyHidden from "../a11y/VisuallyHidden.js";
2
+ import Text, { TextSize, TextVariant } from "../text/Text.js";
3
+ import Icon, { IconVariant } from "../icons/Icon.js";
4
+ /* empty css */
5
+ import { styled } from "@linaria/react";
6
+ import { forwardRef } from "react";
7
+ import { jsx, jsxs } from "react/jsx-runtime";
8
+ import { cx } from "@linaria/core";
9
+ import { CircleNotchIcon } from "@phosphor-icons/react";
10
+ //#region src/feedback/Spinner.tsx
11
+ /**
12
+ * The indeterminate loading indicator: a turning ring for a short, unmeasured wait. A preset over
13
+ * `Icon` (`CircleNotchIcon` + `isSpinning`), so the turn and its reduced-motion handling are the
14
+ * Icon's. Spinner adds a polite `role="status"` live region with an accessible name, a size that
15
+ * matches the control rung it sits in, and an optional visible `label` beside the ring.
16
+ *
17
+ * Hosts that swap their icon for a Spinner (`Button isLoading`) map their size with an identity
18
+ * map (`BUTTON_SIZE_TO_SPINNER_SIZE_MAP`), render `variant={SpinnerVariant.INHERIT}`, pass
19
+ * `aria-hidden`, and set `aria-busy="true"` on themselves, so their accessible name stays their
20
+ * label. A loading region sets `aria-busy="true"` on itself and places a Spinner inside it.
21
+ *
22
+ * With `children`, Spinner turns that content instead of drawing the ring: a refresh glyph while a
23
+ * sync runs, a sync badge, a custom mark (`<Spinner><Icon component={ArrowsClockwiseIcon} /></Spinner>`).
24
+ * The turn is the ring's (one turn per `6 × duration.base`, linear) and stops under reduced
25
+ * motion; the live region, name, size and variant work the same. Render the Spinner only while
26
+ * the work runs and the plain content otherwise.
27
+ *
28
+ * Not progress (`ProgressBar`, `ProgressCircle`) and not the shape of loading content
29
+ * (`Skeleton`).
30
+ */
31
+ /** Canonical rungs; the member names the control rung the spinner sits in. */
32
+ var SpinnerSize = /* @__PURE__ */ function(SpinnerSize) {
33
+ /** 20px rung: 12px ring, `caption` label. */
34
+ SpinnerSize["X_SMALL"] = "X_SMALL";
35
+ /** 24px rung: 12px ring, `body_sm` label. */
36
+ SpinnerSize["SMALL"] = "SMALL";
37
+ /** 32px rung: 14px ring, `body_md` label. The default. */
38
+ SpinnerSize["MEDIUM"] = "MEDIUM";
39
+ /** 36px rung: 14px ring, `body_lg` label. */
40
+ SpinnerSize["LARGE"] = "LARGE";
41
+ /** 40px rung: 16px ring, `body_lg` label. */
42
+ SpinnerSize["X_LARGE"] = "X_LARGE";
43
+ return SpinnerSize;
44
+ }({});
45
+ /** Color role of the ring and label (Constitution V-A color set, neutral subset). */
46
+ var SpinnerVariant = /* @__PURE__ */ function(SpinnerVariant) {
47
+ /** `text.primary`. */
48
+ SpinnerVariant["PRIMARY"] = "PRIMARY";
49
+ /** `text.secondary`. The default: loading is quiet, auxiliary chrome. */
50
+ SpinnerVariant["SECONDARY"] = "SECONDARY";
51
+ /** `text.tertiary`. */
52
+ SpinnerVariant["TERTIARY"] = "TERTIARY";
53
+ /** The host's color (`currentColor`); used inside Button, Chip and Toast. */
54
+ SpinnerVariant["INHERIT"] = "INHERIT";
55
+ return SpinnerVariant;
56
+ }({});
57
+ /**
58
+ * Phrasing content only (`span`, `svg`), so a Spinner is valid inside a `<button>`. The root is
59
+ * exactly its rung's text line height and top-aligned, so an inline Spinner beside its paired
60
+ * text step never grows the line box (the Kbd measurement).
61
+ */
62
+ var Root = /*#__PURE__*/ styled("span")({
63
+ name: "Root",
64
+ class: "gx-Spinner-r1ivml5",
65
+ propsAsIs: false
66
+ });
67
+ /** Sets `color` on the root; the ring and label both inherit it, so they always match. */
68
+ var SPINNER_VARIANT_TO_CSS_MAP = {
69
+ ["PRIMARY"]: "gx-Spinner-PRIMARY-p13j7c2o",
70
+ ["SECONDARY"]: "gx-Spinner-SECONDARY-s8zy9wb",
71
+ ["TERTIARY"]: "gx-Spinner-TERTIARY-t5gu4wz",
72
+ ["INHERIT"]: "gx-Spinner-INHERIT-i1rr97gm"
73
+ };
74
+ /** Root height = the line height of the rung's text step; gap = the rung's gap (as Button). */
75
+ var SPINNER_SIZE_TO_CSS_MAP = {
76
+ ["X_SMALL"]: "gx-Spinner-X_SMALL-xq5lz1a",
77
+ ["SMALL"]: "gx-Spinner-SMALL-s1yd7rf9",
78
+ ["MEDIUM"]: "gx-Spinner-MEDIUM-mvjisul",
79
+ ["LARGE"]: "gx-Spinner-LARGE-lo34ltu",
80
+ ["X_LARGE"]: "gx-Spinner-X_LARGE-x1ml6nkc"
81
+ };
82
+ /** Turns `children` about their center: inline, centered, never squeezed. */
83
+ var Turn = /*#__PURE__*/ styled("span")({
84
+ name: "Turn",
85
+ class: "gx-Spinner-Turn-txbcxfl",
86
+ propsAsIs: false
87
+ });
88
+ /**
89
+ * One turn every six `duration.base` steps (900ms), linear, forever: the `Icon isSpinning` period,
90
+ * so a turning child and the ring move alike. The keyframes are global, so the name is `gx-`
91
+ * prefixed. `REDUCED_MOTION` stops it.
92
+ */
93
+ var TURNING_CSS = "gx-Spinner-TURNING_CSS-t19924lc";
94
+ /** The ring is the rung's icon px, one step below III-A.4 (Mitch, 2026-10-04). Button draws its own ring at its icon px (13 / 13 / 15 / 15 / 17). */
95
+ var SPINNER_SIZE_TO_ICON_PX_MAP = {
96
+ ["X_SMALL"]: 12,
97
+ ["SMALL"]: 12,
98
+ ["MEDIUM"]: 14,
99
+ ["LARGE"]: 14,
100
+ ["X_LARGE"]: 16
101
+ };
102
+ /** The label is the rung's text step (Constitution III-A.4). */
103
+ var SPINNER_SIZE_TO_TEXT_SIZE_MAP = {
104
+ ["X_SMALL"]: TextSize.CAPTION,
105
+ ["SMALL"]: TextSize.BODY_SM,
106
+ ["MEDIUM"]: TextSize.BODY_MD,
107
+ ["LARGE"]: TextSize.BODY_LG,
108
+ ["X_LARGE"]: TextSize.BODY_LG
109
+ };
110
+ /** Whether `children` render anything; `undefined`, `null`, `false` and `""` draw the ring. */
111
+ function hasContent(children) {
112
+ return children !== void 0 && children !== null && children !== false && children !== "";
113
+ }
114
+ /** A turning ring (or turning `children`) with a polite live region; optionally a visible label beside it. */
115
+ var Spinner = forwardRef(function Spinner({ size = "MEDIUM", variant = "SECONDARY", label, ariaLabel = "Loading", children, id, className, style, ...rest }, ref) {
116
+ return /* @__PURE__ */ jsxs(Root, {
117
+ role: "status",
118
+ ...rest,
119
+ ref,
120
+ id,
121
+ className: cx(SPINNER_VARIANT_TO_CSS_MAP[variant], SPINNER_SIZE_TO_CSS_MAP[size], className),
122
+ style,
123
+ children: [hasContent(children) ? /* @__PURE__ */ jsx(Turn, {
124
+ className: TURNING_CSS,
125
+ children
126
+ }) : /* @__PURE__ */ jsx(Icon, {
127
+ component: CircleNotchIcon,
128
+ isSpinning: true,
129
+ size: SPINNER_SIZE_TO_ICON_PX_MAP[size],
130
+ variant: IconVariant.INHERIT
131
+ }), label === void 0 ? /* @__PURE__ */ jsx(VisuallyHidden, { children: ariaLabel }) : /* @__PURE__ */ jsx(Text, {
132
+ as: "span",
133
+ size: SPINNER_SIZE_TO_TEXT_SIZE_MAP[size],
134
+ variant: TextVariant.INHERIT,
135
+ children: label
136
+ })]
137
+ });
138
+ });
139
+ Spinner.displayName = "Spinner";
140
+ //#endregion
141
+ export { SpinnerSize, SpinnerVariant, Spinner as default };
package/dist/fonts.css ADDED
@@ -0,0 +1,70 @@
1
+ /*
2
+ * @galaxy-io/dls/fonts.css — the DLS font faces. Import once at the app root, beside
3
+ * styles.css and tokens.css. Families match `t.font.<family>.family`:
4
+ * sans → "ABC Diatype" 400, 500
5
+ * mono → "Berkeley Mono" 400, 500 (no Medium cut exists; 500 is Bold, as in 1.x)
6
+ * serif → "Cardo" 400, 400 italic, 700 (editorial only)
7
+ * Not part of styles.css, so apps that self-host the files can skip it.
8
+ */
9
+
10
+ @font-face {
11
+ font-family: "ABC Diatype";
12
+ font-style: normal;
13
+ font-weight: 400;
14
+ font-display: swap;
15
+ src: url("https://cdn.getgalaxy.io/fonts/Diatype/ABCDiatype-Regular.otf") format("opentype");
16
+ }
17
+
18
+ @font-face {
19
+ font-family: "ABC Diatype";
20
+ font-style: normal;
21
+ font-weight: 500;
22
+ font-display: swap;
23
+ src: url("https://cdn.getgalaxy.io/fonts/Diatype/ABCDiatype-Medium.otf") format("opentype");
24
+ }
25
+
26
+ @font-face {
27
+ font-family: "Berkeley Mono";
28
+ font-style: normal;
29
+ font-weight: 400;
30
+ font-display: swap;
31
+ src: url("https://cdn.getgalaxy.io/fonts/BerkeleyMono/BerkeleyMono-Regular.otf")
32
+ format("opentype");
33
+ }
34
+
35
+ @font-face {
36
+ font-family: "Berkeley Mono";
37
+ font-style: normal;
38
+ font-weight: 500;
39
+ font-display: swap;
40
+ src: url("https://cdn.getgalaxy.io/fonts/BerkeleyMono/BerkeleyMono-Bold.otf") format("opentype");
41
+ }
42
+
43
+ /*
44
+ * TODO: move Cardo to cdn.getgalaxy.io (`fonts/Cardo/Cardo-{Regular,Italic,Bold}.ttf`).
45
+ * Temporary: Google Fonts' static Cardo v21 files (OFL), whole-font TTFs so no unicode-range.
46
+ */
47
+
48
+ @font-face {
49
+ font-family: "Cardo";
50
+ font-style: normal;
51
+ font-weight: 400;
52
+ font-display: swap;
53
+ src: url("https://fonts.gstatic.com/s/cardo/v21/wlp_gwjKBV1pqiv_.ttf") format("truetype");
54
+ }
55
+
56
+ @font-face {
57
+ font-family: "Cardo";
58
+ font-style: italic;
59
+ font-weight: 400;
60
+ font-display: swap;
61
+ src: url("https://fonts.gstatic.com/s/cardo/v21/wlpxgwjKBV1pqhv93IQ.ttf") format("truetype");
62
+ }
63
+
64
+ @font-face {
65
+ font-family: "Cardo";
66
+ font-style: normal;
67
+ font-weight: 700;
68
+ font-display: swap;
69
+ src: url("https://fonts.gstatic.com/s/cardo/v21/wlpygwjKBV1pqhND-aQR.ttf") format("truetype");
70
+ }
@@ -0,0 +1,2 @@
1
+ /** @internal Whether this render is a client render after hydration. */
2
+ export declare const useIsClient: () => boolean;
@@ -0,0 +1,14 @@
1
+ import { useSyncExternalStore } from "react";
2
+ //#region src/hooks/internal/useIsClient.ts
3
+ /**
4
+ * @internal `false` on the server and during hydration, `true` after (and on a plain client
5
+ * render). Components that render something only a browser can (a portal, a lazily imported
6
+ * module) return the server markup until this flips, so the hydrated tree matches the server's.
7
+ */
8
+ var subscribeToNothing = () => () => {};
9
+ var getClientSnapshot = () => true;
10
+ var getServerSnapshot = () => false;
11
+ /** @internal Whether this render is a client render after hydration. */
12
+ var useIsClient = () => useSyncExternalStore(subscribeToNothing, getClientSnapshot, getServerSnapshot);
13
+ //#endregion
14
+ export { useIsClient };
@@ -0,0 +1,19 @@
1
+ /** What `useClipboard` returns. */
2
+ export interface UseClipboardReturn {
3
+ /** Writes `text` to the clipboard. Resolves `true` on success, `false` when the API is missing or refuses. */
4
+ copy: (text: string) => Promise<boolean>;
5
+ /** `true` for `timeoutMs` after a successful copy. */
6
+ hasCopied: boolean;
7
+ }
8
+ /**
9
+ * Copies text with `navigator.clipboard.writeText` and reports `hasCopied` for `timeoutMs` after
10
+ * a success. Each copy restarts the timer. There is no `execCommand` fallback.
11
+ *
12
+ * @param timeoutMs - How long `hasCopied` stays `true` after a success, in milliseconds (default `1500`)
13
+ * @returns `copy(text)` and `hasCopied`
14
+ *
15
+ * @example
16
+ * const { copy, hasCopied } = useClipboard();
17
+ * <Button icon={hasCopied ? Check : Copy} onClick={() => copy(apiKey)} ariaLabel="Copy" />
18
+ */
19
+ export declare function useClipboard(timeoutMs?: number): UseClipboardReturn;
@@ -0,0 +1,45 @@
1
+ import { useCallback, useEffect, useMemo, useRef, useState } from "react";
2
+ //#region src/hooks/useClipboard.ts
3
+ /**
4
+ * Copies text with `navigator.clipboard.writeText` and reports `hasCopied` for `timeoutMs` after
5
+ * a success. Each copy restarts the timer. There is no `execCommand` fallback.
6
+ *
7
+ * @param timeoutMs - How long `hasCopied` stays `true` after a success, in milliseconds (default `1500`)
8
+ * @returns `copy(text)` and `hasCopied`
9
+ *
10
+ * @example
11
+ * const { copy, hasCopied } = useClipboard();
12
+ * <Button icon={hasCopied ? Check : Copy} onClick={() => copy(apiKey)} ariaLabel="Copy" />
13
+ */
14
+ function useClipboard(timeoutMs = 1500) {
15
+ const [hasCopied, setHasCopied] = useState(false);
16
+ const timeoutRef = useRef(void 0);
17
+ const isMountedRef = useRef(false);
18
+ useEffect(() => {
19
+ isMountedRef.current = true;
20
+ return () => {
21
+ isMountedRef.current = false;
22
+ clearTimeout(timeoutRef.current);
23
+ };
24
+ }, []);
25
+ const copy = useCallback(async (text) => {
26
+ if (typeof navigator === "undefined" || typeof navigator.clipboard?.writeText !== "function") return false;
27
+ try {
28
+ await navigator.clipboard.writeText(text);
29
+ } catch {
30
+ return false;
31
+ }
32
+ if (isMountedRef.current) {
33
+ clearTimeout(timeoutRef.current);
34
+ setHasCopied(true);
35
+ timeoutRef.current = setTimeout(() => setHasCopied(false), timeoutMs);
36
+ }
37
+ return true;
38
+ }, [timeoutMs]);
39
+ return useMemo(() => ({
40
+ copy,
41
+ hasCopied
42
+ }), [copy, hasCopied]);
43
+ }
44
+ //#endregion
45
+ export { useClipboard };
@@ -0,0 +1,21 @@
1
+ /** Options for `useControlledOpenState`; the `isOpen` / `defaultIsOpen` / `onOpenChange` triple (Constitution V). */
2
+ export interface UseControlledOpenStateOptions {
3
+ /** Controlled open state. When not `undefined` the hook is controlled. */
4
+ isOpen?: boolean | undefined;
5
+ /** Initial open state while uncontrolled. @default false */
6
+ defaultIsOpen?: boolean | undefined;
7
+ /** Called with the next open state on every `setOpen`, controlled or not. */
8
+ onOpenChange?: ((isOpen: boolean) => void) | undefined;
9
+ }
10
+ /** What `useControlledOpenState` returns. */
11
+ export interface ControlledOpenState {
12
+ /** Whether the overlay or disclosure is open. */
13
+ isOpen: boolean;
14
+ /** Request a new open state; calls `onOpenChange` and updates internal state while uncontrolled. */
15
+ setOpen: (isOpen: boolean) => void;
16
+ }
17
+ /**
18
+ * `useControlledState` for overlays and disclosures, named for readability. Returns
19
+ * `{ isOpen, setOpen }`.
20
+ */
21
+ export declare function useControlledOpenState({ isOpen, defaultIsOpen, onOpenChange, }: UseControlledOpenStateOptions): ControlledOpenState;
@@ -0,0 +1,19 @@
1
+ import { useControlledState } from "./useControlledState.js";
2
+ //#region src/hooks/useControlledOpenState.ts
3
+ /**
4
+ * `useControlledState` for overlays and disclosures, named for readability. Returns
5
+ * `{ isOpen, setOpen }`.
6
+ */
7
+ function useControlledOpenState({ isOpen, defaultIsOpen = false, onOpenChange }) {
8
+ const [value, setOpen] = useControlledState({
9
+ value: isOpen,
10
+ defaultValue: defaultIsOpen,
11
+ onChange: onOpenChange
12
+ });
13
+ return {
14
+ isOpen: value,
15
+ setOpen
16
+ };
17
+ }
18
+ //#endregion
19
+ export { useControlledOpenState };
@@ -0,0 +1,19 @@
1
+ /** Options for `useControlledState`; the `value` / `defaultValue` / `onChange` triple (Constitution V). */
2
+ export interface UseControlledStateOptions<T> {
3
+ /** Controlled value. When not `undefined` the hook is controlled; use `null`, not `undefined`, for "no value". */
4
+ value?: T | undefined;
5
+ /** Initial value while uncontrolled. */
6
+ defaultValue: T;
7
+ /** Called with the next value on every `setValue`, controlled or not. */
8
+ onChange?: ((value: T) => void) | undefined;
9
+ }
10
+ /**
11
+ * State that is controlled when `value` is passed and uncontrolled otherwise, like a native
12
+ * input. Returns `[value, setValue]`. `setValue(next)` always calls `onChange(next)` and updates
13
+ * internal state only while uncontrolled. There is no updater-function form: `onChange` receives
14
+ * the value (Constitution V).
15
+ *
16
+ * @example
17
+ * const [value, setValue] = useControlledState({ value: props.value, defaultValue: props.defaultValue ?? "", onChange: props.onChange });
18
+ */
19
+ export declare function useControlledState<T>({ value, defaultValue, onChange, }: UseControlledStateOptions<T>): [value: T, setValue: (next: T) => void];
@@ -0,0 +1,22 @@
1
+ import { useCallback, useState } from "react";
2
+ //#region src/hooks/useControlledState.ts
3
+ /**
4
+ * State that is controlled when `value` is passed and uncontrolled otherwise, like a native
5
+ * input. Returns `[value, setValue]`. `setValue(next)` always calls `onChange(next)` and updates
6
+ * internal state only while uncontrolled. There is no updater-function form: `onChange` receives
7
+ * the value (Constitution V).
8
+ *
9
+ * @example
10
+ * const [value, setValue] = useControlledState({ value: props.value, defaultValue: props.defaultValue ?? "", onChange: props.onChange });
11
+ */
12
+ function useControlledState({ value, defaultValue, onChange }) {
13
+ const [internalValue, setInternalValue] = useState(defaultValue);
14
+ const isControlled = value !== void 0;
15
+ const setValue = useCallback((next) => {
16
+ if (!isControlled) setInternalValue(() => next);
17
+ onChange?.(next);
18
+ }, [isControlled, onChange]);
19
+ return [isControlled ? value : internalValue, setValue];
20
+ }
21
+ //#endregion
22
+ export { useControlledState };
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Returns `value` once it has stopped changing for `delayMs`. Changing `delayMs` restarts the
3
+ * timer. While `isEnabled` is false the current `value` is returned immediately. SSR-safe: the
4
+ * timer runs in an effect, so the server renders the initial `value`.
5
+ *
6
+ * @param value - The value to debounce
7
+ * @param delayMs - Quiet period in milliseconds before the value is taken
8
+ * @param isEnabled - Whether to debounce at all (default `true`)
9
+ * @returns The debounced value
10
+ *
11
+ * @example
12
+ * const debouncedQuery = useDebouncedValue(query, 250);
13
+ */
14
+ export declare function useDebouncedValue<T>(value: T, delayMs: number, isEnabled?: boolean): T;
@@ -0,0 +1,33 @@
1
+ import { useEffect, useState } from "react";
2
+ //#region src/hooks/useDebouncedValue.ts
3
+ /**
4
+ * Returns `value` once it has stopped changing for `delayMs`. Changing `delayMs` restarts the
5
+ * timer. While `isEnabled` is false the current `value` is returned immediately. SSR-safe: the
6
+ * timer runs in an effect, so the server renders the initial `value`.
7
+ *
8
+ * @param value - The value to debounce
9
+ * @param delayMs - Quiet period in milliseconds before the value is taken
10
+ * @param isEnabled - Whether to debounce at all (default `true`)
11
+ * @returns The debounced value
12
+ *
13
+ * @example
14
+ * const debouncedQuery = useDebouncedValue(query, 250);
15
+ */
16
+ function useDebouncedValue(value, delayMs, isEnabled = true) {
17
+ const [debouncedValue, setDebouncedValue] = useState(value);
18
+ useEffect(() => {
19
+ if (!isEnabled) {
20
+ setDebouncedValue(() => value);
21
+ return;
22
+ }
23
+ const timeout = setTimeout(() => setDebouncedValue(() => value), delayMs);
24
+ return () => clearTimeout(timeout);
25
+ }, [
26
+ value,
27
+ delayMs,
28
+ isEnabled
29
+ ]);
30
+ return isEnabled ? debouncedValue : value;
31
+ }
32
+ //#endregion
33
+ export { useDebouncedValue };
@@ -0,0 +1,26 @@
1
+ /** What `useDisclosure` returns. Every function keeps a stable identity. */
2
+ export interface UseDisclosureReturn {
3
+ /** Whether the disclosure is open. */
4
+ isOpen: boolean;
5
+ /** Opens it. */
6
+ open: () => void;
7
+ /** Closes it. */
8
+ close: () => void;
9
+ /** Flips it. */
10
+ toggle: () => void;
11
+ /** Sets it; fits an overlay's `onOpenChange` directly. */
12
+ setIsOpen: (isOpen: boolean) => void;
13
+ }
14
+ /**
15
+ * Open/closed state for a modal, drawer, popover or disclosure, with stable `open`, `close`,
16
+ * `toggle` and `setIsOpen`.
17
+ *
18
+ * @param defaultIsOpen - Whether it starts open (default `false`)
19
+ * @returns `isOpen` and the stable `open`, `close`, `toggle`, `setIsOpen`
20
+ *
21
+ * @example
22
+ * const { isOpen, open, setIsOpen } = useDisclosure();
23
+ * <Button onClick={open}>Edit</Button>
24
+ * <Modal isOpen={isOpen} onOpenChange={setIsOpen}>…</Modal>
25
+ */
26
+ export declare function useDisclosure(defaultIsOpen?: boolean): UseDisclosureReturn;
@@ -0,0 +1,36 @@
1
+ import { useCallback, useMemo, useState } from "react";
2
+ //#region src/hooks/useDisclosure.ts
3
+ /**
4
+ * Open/closed state for a modal, drawer, popover or disclosure, with stable `open`, `close`,
5
+ * `toggle` and `setIsOpen`.
6
+ *
7
+ * @param defaultIsOpen - Whether it starts open (default `false`)
8
+ * @returns `isOpen` and the stable `open`, `close`, `toggle`, `setIsOpen`
9
+ *
10
+ * @example
11
+ * const { isOpen, open, setIsOpen } = useDisclosure();
12
+ * <Button onClick={open}>Edit</Button>
13
+ * <Modal isOpen={isOpen} onOpenChange={setIsOpen}>…</Modal>
14
+ */
15
+ function useDisclosure(defaultIsOpen = false) {
16
+ const [isOpen, setIsOpenState] = useState(defaultIsOpen);
17
+ const open = useCallback(() => setIsOpenState(true), []);
18
+ const close = useCallback(() => setIsOpenState(false), []);
19
+ const toggle = useCallback(() => setIsOpenState((previous) => !previous), []);
20
+ const setIsOpen = useCallback((next) => setIsOpenState(next), []);
21
+ return useMemo(() => ({
22
+ isOpen,
23
+ open,
24
+ close,
25
+ toggle,
26
+ setIsOpen
27
+ }), [
28
+ isOpen,
29
+ open,
30
+ close,
31
+ toggle,
32
+ setIsOpen
33
+ ]);
34
+ }
35
+ //#endregion
36
+ export { useDisclosure };
@@ -1,33 +1,29 @@
1
- import { RefObject } from "react";
1
+ import { type RefObject } from "react";
2
+ /** Options for `useDismiss`. */
2
3
  export interface UseDismissOptions {
3
- /**
4
- * Refs to exclude from click outside detection (e.g., dropdowns, tooltips)
5
- */
6
- excludeRefs?: RefObject<HTMLElement>[];
7
- /**
8
- * Whether to enable ESC key support
9
- * @default true
10
- */
11
- enableEscape?: boolean;
12
- /**
13
- * Whether to enable click outside detection
14
- * @default true
15
- */
16
- enableClickOutside?: boolean;
17
- /**
18
- * Whether the hook is enabled
19
- * @default true
20
- */
21
- enabled?: boolean;
22
- /**
23
- * The function to call when the dismiss is triggered
24
- */
4
+ /** Called when Escape is pressed or a mousedown lands outside the element (and outside `excludeRefs`). */
25
5
  onDismiss?: () => void;
6
+ /** Whether the hook listens at all; pass the overlay's `isOpen`. @default true */
7
+ isEnabled?: boolean;
8
+ /** Whether Escape dismisses. Ignored while focus is in an `input`, `textarea`, `select` or `[contenteditable]`. @default true */
9
+ shouldCloseOnEscape?: boolean;
10
+ /** Whether a mousedown outside the element dismisses. @default true */
11
+ shouldCloseOnOutsideClick?: boolean;
12
+ /** Elements that count as inside (e.g. a portalled dropdown or tooltip); clicks in them never dismiss. */
13
+ excludeRefs?: RefObject<HTMLElement | null>[];
26
14
  }
27
15
  /**
28
- * Closes a floating element on Escape or a click outside it. Returns the ref to
29
- * attach to the element you want to keep open.
16
+ * Dismisses an app-built floating element on Escape or on a mousedown outside it. Returns the ref
17
+ * to attach to the element that should stay open. DLS overlays (Popover, Modal, Drawer, Menu,
18
+ * Tooltip, Toast) dismiss themselves through the overlay stack and never need this hook.
30
19
  *
31
- * Accepts either a bare handler or an options object as the first argument.
20
+ * Every mounted `useDismiss` hears every Escape (its own `document` listener, no shortcut
21
+ * registry), except one an open DLS overlay has already consumed (the overlay stack calls
22
+ * `preventDefault()`; mount order decides which listener runs first). SSR-safe: listeners attach
23
+ * in effects only.
24
+ *
25
+ * @example
26
+ * const ref = useDismiss<HTMLDivElement>({ onDismiss: () => onOpenChange(false), isEnabled: isOpen });
27
+ * return <div ref={ref}>…</div>;
32
28
  */
33
- export declare const useDismiss: <T extends HTMLElement = HTMLElement>(handlerOrOptions: (() => void) | UseDismissOptions, options?: UseDismissOptions) => RefObject<T>;
29
+ export declare function useDismiss<T extends HTMLElement = HTMLElement>({ onDismiss, isEnabled, shouldCloseOnEscape, shouldCloseOnOutsideClick, excludeRefs, }: UseDismissOptions): RefObject<T | null>;