@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,509 @@
1
+ import FocusScope, { FocusScopeAutoFocus } from "../a11y/FocusScope.js";
2
+ import VisuallyHidden from "../a11y/VisuallyHidden.js";
3
+ import Text, { TextSize, TextVariant, TextWeight } from "../text/Text.js";
4
+ import { useControlledOpenState } from "../hooks/useControlledOpenState.js";
5
+ import Flex, { AlignItems } from "../layout/Flex.js";
6
+ import Portal from "../layout/Portal.js";
7
+ import { OverlayLayer, useOverlay } from "../overlay/useOverlay.js";
8
+ import Kbd, { KbdSize, KbdVariant } from "../text/Kbd.js";
9
+ import Divider from "../layout/Divider.js";
10
+ import { OverlayNode } from "../overlay/OverlayProvider.js";
11
+ import ScaleFade from "../transform/ScaleFade.js";
12
+ import { useHotkey } from "../hooks/useHotkey.js";
13
+ import Icon, { IconVariant } from "../icons/Icon.js";
14
+ import Fade from "../transform/Fade.js";
15
+ import { useDebouncedValue } from "../hooks/useDebouncedValue.js";
16
+ import { useLocalStorage } from "../hooks/useLocalStorage.js";
17
+ import { InputSize } from "../inputs/Input.js";
18
+ import SearchInput from "../inputs/SearchInput.js";
19
+ /* empty css */
20
+ import { styled } from "@linaria/react";
21
+ import { forwardRef, useEffect, useId, useRef, useState } from "react";
22
+ import { jsx, jsxs } from "react/jsx-runtime";
23
+ import { cx } from "@linaria/core";
24
+ //#region src/navigation/CommandPalette.tsx
25
+ /**
26
+ * The app-wide "type to do anything" dialog, usually opened with ⌘K: a modal panel near the top of
27
+ * the screen with a search field and a list of commands. Typing filters the list; the arrow keys
28
+ * move a highlight while focus stays in the field; Enter runs the highlighted command and closes
29
+ * the palette. Commands come from the app as data (`items`), each with its own `onSelect`.
30
+ *
31
+ * Built from Modal's primitives (Portal, the overlay stack, Fade, ScaleFade, FocusScope, the
32
+ * backdrop and its scroll lock), not by rendering `Modal`, and its rows copy Menu's `MEDIUM` look
33
+ * in a `role="listbox"` driven by `aria-activedescendant`. It does not route, fetch or rank:
34
+ * `onSearch` hands the term to the app, and commands do the work in `onSelect`.
35
+ *
36
+ * SSR: nothing renders on the server (closed by default; `Portal` renders nothing there).
37
+ * `useHotkey` and `useLocalStorage` are SSR-safe; nothing touches `window`, `document` or
38
+ * `localStorage` at module scope.
39
+ */
40
+ /** Panel width (no width token; the Menu / Tooltip module-constant precedent). */
41
+ /** Distance of the panel from the top of the viewport, at least `space[48]`. */
42
+ /** The list's own cap; the panel's max height caps it further on short screens. */
43
+ /** How many chosen commands recents keep. */
44
+ var COMMAND_PALETTE_RECENT_LIMIT = 5;
45
+ /** Option icon px: the `MEDIUM` rung's icon, one step below III-A.4 (Mitch, 2026-10-04). */
46
+ var COMMAND_PALETTE_ICON_PX = 14;
47
+ /** Quiet period before the result count is announced. */
48
+ var COMMAND_PALETTE_ANNOUNCE_DELAY_MS = 500;
49
+ /** The key `useLocalStorage` gets while recents are off (it reads an in-memory adapter then). */
50
+ var COMMAND_PALETTE_NO_STORAGE_KEY = "gx-command-palette:off";
51
+ /** The default open shortcut. */
52
+ var COMMAND_PALETTE_DEFAULT_HOT_KEYS = ["mod", "k"];
53
+ /** The fixed English strings (Decision 15). */
54
+ var RECENT_HEADING = "Recent";
55
+ var LIST_LABEL = "Commands";
56
+ /** A per-instance in-memory storage, used while `storageKey` is not set. */
57
+ function createMemoryStorage() {
58
+ const values = /* @__PURE__ */ new Map();
59
+ return {
60
+ getItem: (key) => values.get(key) ?? null,
61
+ setItem: (key, value) => {
62
+ values.set(key, value);
63
+ },
64
+ removeItem: (key) => {
65
+ values.delete(key);
66
+ }
67
+ };
68
+ }
69
+ /**
70
+ * Focuses `target` outside the palette while the palette's FocusScope is still mounted for its
71
+ * exit. The exiting panel keeps the props it had while open (ScaleFade freezes them), so its trap
72
+ * would pull this focus back; the one `focusin` this call dispatches is stopped before it reaches
73
+ * the trap's document listener.
74
+ */
75
+ function focusPastExitingTrap(target) {
76
+ const stop = (event) => event.stopImmediatePropagation();
77
+ window.addEventListener("focusin", stop, true);
78
+ try {
79
+ target.focus();
80
+ } finally {
81
+ window.removeEventListener("focusin", stop, true);
82
+ }
83
+ }
84
+ /** Whether an item matches the normalized term (label, description or keywords; `includes`). */
85
+ function matches(item, normalized) {
86
+ if (normalized === "") return true;
87
+ return [
88
+ item.label,
89
+ item.description ?? "",
90
+ ...item.keywords ?? []
91
+ ].some((field) => field.toLocaleLowerCase().includes(normalized));
92
+ }
93
+ /**
94
+ * Scroll lock: while the backdrop is mounted (open or exiting) the page does not scroll. Keyed on
95
+ * this module's backdrop, so it holds until the last modal backdrop is gone.
96
+ */
97
+ var Backdrop = /*#__PURE__*/ styled("div")({
98
+ name: "Backdrop",
99
+ class: "gx-CommandPalette-Backdrop-brnx8g7",
100
+ propsAsIs: false
101
+ });
102
+ /** The backdrop's Fade root: positioned just under the panel. Sets no opacity or visibility. */
103
+ var BACKDROP_FRAME_CSS = "gx-CommandPalette-BACKDROP_FRAME_CSS-bt8eslj";
104
+ /** Top-anchors the panel, so the search field never moves as results change. */
105
+ var Positioner = /*#__PURE__*/ styled("div")({
106
+ name: "Positioner",
107
+ class: "gx-CommandPalette-Positioner-pjnwubt",
108
+ propsAsIs: false
109
+ });
110
+ /** The panel's ScaleFade root: it grows from the top center. */
111
+ var FRAME_CSS = "gx-CommandPalette-FRAME_CSS-f1kamwsl";
112
+ var FOCUS_SCOPE_CSS = "gx-CommandPalette-FOCUS_SCOPE_CSS-fi5b22w";
113
+ var Panel = /*#__PURE__*/ styled("div")({
114
+ name: "Panel",
115
+ class: "gx-CommandPalette-Panel-p1prc77",
116
+ propsAsIs: false
117
+ });
118
+ var SearchRow = /*#__PURE__*/ styled("div")({
119
+ name: "SearchRow",
120
+ class: "gx-CommandPalette-SearchRow-sdnz5av",
121
+ propsAsIs: false
122
+ });
123
+ var List = /*#__PURE__*/ styled("div")({
124
+ name: "List",
125
+ class: "gx-CommandPalette-List-l1g0qafo",
126
+ propsAsIs: false
127
+ });
128
+ var SectionRoot = /*#__PURE__*/ styled("div")({
129
+ name: "SectionRoot",
130
+ class: "gx-CommandPalette-SectionRoot-sdve7ff",
131
+ propsAsIs: false
132
+ });
133
+ /** Menu's `MEDIUM` group label. */
134
+ var GroupLabel = /*#__PURE__*/ styled("div")({
135
+ name: "GroupLabel",
136
+ class: "gx-CommandPalette-GroupLabel-g1ovrvxh",
137
+ propsAsIs: false
138
+ });
139
+ /** A row, with Menu's `MEDIUM` metrics. Declared before the state classes composed onto it. */
140
+ var Option = /*#__PURE__*/ styled("div")({
141
+ name: "Option",
142
+ class: "gx-CommandPalette-Option-o3t756v",
143
+ propsAsIs: false
144
+ });
145
+ /** The highlighted row (state class, not an attribute selector). */
146
+ var ACTIVE_OPTION_CSS = "gx-CommandPalette-ACTIVE_OPTION_CSS-aw5unga";
147
+ /** Press on an enabled row. */
148
+ var ENABLED_OPTION_CSS = "gx-CommandPalette-ENABLED_OPTION_CSS-ee1ftms";
149
+ /** A disabled row: never highlighted, cannot be chosen. */
150
+ var DISABLED_OPTION_CSS = "gx-CommandPalette-DISABLED_OPTION_CSS-dam55s1";
151
+ /** `leading`: never squeezed. */
152
+ var Slot = /*#__PURE__*/ styled("span")({
153
+ name: "Slot",
154
+ class: "gx-CommandPalette-Slot-s1qhom4i",
155
+ propsAsIs: false
156
+ });
157
+ /** Label and description, stacked; the only part that shrinks. */
158
+ var Content = /*#__PURE__*/ styled("span")({
159
+ name: "Content",
160
+ class: "gx-CommandPalette-Content-ch398je",
161
+ propsAsIs: false
162
+ });
163
+ /** Icons and caps never shrink. */
164
+ var NO_SHRINK_CSS = "gx-CommandPalette-NO_SHRINK_CSS-n1x8ztqn";
165
+ var EmptyRow = /*#__PURE__*/ styled("div")({
166
+ name: "EmptyRow",
167
+ class: "gx-CommandPalette-EmptyRow-e102shtd",
168
+ propsAsIs: false
169
+ });
170
+ /** The empty message sits where the first row's label would. */
171
+ var EmptyLine = /*#__PURE__*/ styled("span")({
172
+ name: "EmptyLine",
173
+ class: "gx-CommandPalette-EmptyLine-e10x9e8c",
174
+ propsAsIs: false
175
+ });
176
+ var Hints = /*#__PURE__*/ styled("div")({
177
+ name: "Hints",
178
+ class: "gx-CommandPalette-Hints-h1qfhkvy",
179
+ propsAsIs: false
180
+ });
181
+ /** The key hints in the footer: caps and what they do. */
182
+ var HINTS = [
183
+ {
184
+ keys: [["up"], ["down"]],
185
+ label: "to navigate"
186
+ },
187
+ {
188
+ keys: [["enter"]],
189
+ label: "to select"
190
+ },
191
+ {
192
+ keys: [["esc"]],
193
+ label: "to close"
194
+ }
195
+ ];
196
+ /** A modal search-and-run dialog over a list of commands. */
197
+ var CommandPalette = forwardRef(function CommandPalette({ items, isOpen: isOpenProp, defaultIsOpen = false, onOpenChange, placeholder = "Type a command or search", onSearch, isLoading = false, emptyMessage = "No results", storageKey, hotKeys = COMMAND_PALETTE_DEFAULT_HOT_KEYS, shouldBindHotKey = false, ariaLabel = "Command palette", id, className, style, ...rest }, ref) {
198
+ const generatedId = useId();
199
+ const listId = useId();
200
+ const headingIdBase = useId();
201
+ const { isOpen, setOpen } = useControlledOpenState({
202
+ isOpen: isOpenProp,
203
+ defaultIsOpen,
204
+ onOpenChange
205
+ });
206
+ const close = () => setOpen(false);
207
+ const { zIndex, isTopmost, overlayId } = useOverlay({
208
+ isOpen,
209
+ layer: OverlayLayer.MODAL,
210
+ onEscape: close
211
+ });
212
+ useHotkey(hotKeys.join("+"), () => setOpen(!isOpen), {
213
+ isEnabled: shouldBindHotKey && hotKeys.length > 0,
214
+ shouldPreventDefault: true
215
+ });
216
+ const [memoryStorage] = useState(createMemoryStorage);
217
+ const [recentIds, setRecentIds] = useLocalStorage(storageKey ?? COMMAND_PALETTE_NO_STORAGE_KEY, [], { storage: storageKey === void 0 ? memoryStorage : void 0 });
218
+ const [term, setTerm] = useState("");
219
+ const [activeId, setActiveId] = useState(null);
220
+ const [hasTyped, setHasTyped] = useState(false);
221
+ const [scrollRequest, setScrollRequest] = useState(0);
222
+ const readFocus = () => typeof document === "undefined" ? null : document.activeElement;
223
+ const [focusBeforeOpen, setFocusBeforeOpen] = useState(() => isOpen ? readFocus() : null);
224
+ const [wasOpen, setWasOpen] = useState(isOpen);
225
+ if (wasOpen !== isOpen) {
226
+ setWasOpen(isOpen);
227
+ if (isOpen) {
228
+ setTerm("");
229
+ setActiveId(null);
230
+ setHasTyped(false);
231
+ setFocusBeforeOpen(readFocus());
232
+ }
233
+ }
234
+ const reportedTermRef = useRef("");
235
+ const handleSearch = (next) => {
236
+ reportedTermRef.current = next;
237
+ onSearch?.(next);
238
+ };
239
+ const onSearchRef = useRef(onSearch);
240
+ useEffect(() => {
241
+ onSearchRef.current = onSearch;
242
+ });
243
+ useEffect(() => {
244
+ if (isOpen || reportedTermRef.current === "") return;
245
+ reportedTermRef.current = "";
246
+ onSearchRef.current?.("");
247
+ }, [isOpen]);
248
+ const handleTermChange = (next) => {
249
+ setTerm(next);
250
+ setActiveId(null);
251
+ setHasTyped(true);
252
+ };
253
+ const normalized = term.trim().toLocaleLowerCase();
254
+ const visibleItems = onSearch === void 0 ? items.filter((item) => matches(item, normalized)) : items;
255
+ const recentItems = storageKey !== void 0 && term === "" ? recentIds.flatMap((recentId) => {
256
+ const item = items.find((candidate) => candidate.id === recentId);
257
+ return item !== void 0 && !item.isDisabled ? [item] : [];
258
+ }) : [];
259
+ const recentSet = new Set(recentItems.map((item) => item.id));
260
+ const sections = [];
261
+ if (recentItems.length > 0) sections.push({
262
+ key: "recent",
263
+ heading: RECENT_HEADING,
264
+ items: recentItems
265
+ });
266
+ const ungrouped = [];
267
+ const groups = /* @__PURE__ */ new Map();
268
+ for (const item of visibleItems) {
269
+ if (recentSet.has(item.id)) continue;
270
+ if (item.group === void 0) ungrouped.push(item);
271
+ else {
272
+ const groupItems = groups.get(item.group) ?? [];
273
+ groupItems.push(item);
274
+ groups.set(item.group, groupItems);
275
+ }
276
+ }
277
+ if (ungrouped.length > 0) sections.push({
278
+ key: "ungrouped",
279
+ heading: null,
280
+ items: ungrouped
281
+ });
282
+ for (const [group, groupItems] of groups) sections.push({
283
+ key: `group:${group}`,
284
+ heading: group,
285
+ items: groupItems
286
+ });
287
+ const rows = sections.flatMap((section) => section.items);
288
+ const enabledRows = rows.filter((item) => !item.isDisabled);
289
+ const rowCount = rows.length;
290
+ const resolvedActiveId = enabledRows.some((item) => item.id === activeId) ? activeId : enabledRows[0]?.id ?? null;
291
+ if (isOpen && resolvedActiveId !== activeId) setActiveId(resolvedActiveId);
292
+ const activeIndex = rows.findIndex((item) => item.id === resolvedActiveId);
293
+ const optionId = (index) => `${listId}-${index}`;
294
+ const activeOptionId = activeIndex === -1 ? void 0 : optionId(activeIndex);
295
+ useEffect(() => {
296
+ if (scrollRequest === 0 || activeOptionId === void 0) return;
297
+ document.getElementById(activeOptionId)?.scrollIntoView({ block: "nearest" });
298
+ }, [scrollRequest, activeOptionId]);
299
+ const debouncedCount = useDebouncedValue(rowCount, COMMAND_PALETTE_ANNOUNCE_DELAY_MS);
300
+ const announcement = !hasTyped || isLoading ? "" : debouncedCount === 0 ? emptyMessage : `${debouncedCount} ${debouncedCount === 1 ? "result" : "results"}`;
301
+ const choose = (item) => {
302
+ if (item.isDisabled) return;
303
+ if (storageKey !== void 0) setRecentIds((previous) => [item.id, ...previous.filter((recentId) => recentId !== item.id)].slice(0, COMMAND_PALETTE_RECENT_LIMIT));
304
+ setOpen(false);
305
+ if ((focusBeforeOpen instanceof HTMLElement || focusBeforeOpen instanceof SVGElement) && focusBeforeOpen.isConnected) focusPastExitingTrap(focusBeforeOpen);
306
+ item.onSelect();
307
+ };
308
+ const move = (step) => {
309
+ if (enabledRows.length === 0) return;
310
+ const current = enabledRows.findIndex((item) => item.id === resolvedActiveId);
311
+ const next = enabledRows[current === -1 ? step === 1 ? 0 : enabledRows.length - 1 : (current + step + enabledRows.length) % enabledRows.length];
312
+ if (next === void 0) return;
313
+ setActiveId(next.id);
314
+ setScrollRequest((count) => count + 1);
315
+ };
316
+ const handleKeyDown = (event) => {
317
+ if (event.key === "ArrowDown" || event.key === "ArrowUp") {
318
+ event.preventDefault();
319
+ move(event.key === "ArrowDown" ? 1 : -1);
320
+ return;
321
+ }
322
+ if (event.key === "Enter" && !event.nativeEvent.isComposing) {
323
+ event.preventDefault();
324
+ const item = rows[activeIndex];
325
+ if (item !== void 0) choose(item);
326
+ }
327
+ };
328
+ const [hasOpened, setHasOpened] = useState(isOpen);
329
+ if (isOpen && !hasOpened) setHasOpened(true);
330
+ const [isOpenOnFirstRender] = useState(isOpen);
331
+ const shouldAnimateOnMount = !isOpenOnFirstRender;
332
+ /** Whether the current press started on the backdrop while this palette was topmost. */
333
+ const isBackdropPressRef = useRef(false);
334
+ const handleBackdropPointerDown = (event) => {
335
+ isBackdropPressRef.current = event.target === event.currentTarget && isTopmost;
336
+ };
337
+ const handleBackdropClick = (_event) => {
338
+ const isBackdropPress = isBackdropPressRef.current;
339
+ isBackdropPressRef.current = false;
340
+ if (isBackdropPress) close();
341
+ };
342
+ if (!hasOpened) return null;
343
+ const labelling = rest["aria-labelledby"] !== void 0 ? {} : { "aria-label": ariaLabel };
344
+ const zStyle = { "--gx-command-palette-z": zIndex };
345
+ const hasList = rowCount > 0 || isLoading;
346
+ let rowIndex = 0;
347
+ const renderOption = (item) => {
348
+ const index = rowIndex;
349
+ rowIndex += 1;
350
+ const isActive = item.id === resolvedActiveId;
351
+ const isDisabled = item.isDisabled === true;
352
+ return /* @__PURE__ */ jsxs(Option, {
353
+ id: optionId(index),
354
+ role: "option",
355
+ "aria-selected": isActive,
356
+ "aria-disabled": isDisabled || void 0,
357
+ className: cx(isDisabled ? DISABLED_OPTION_CSS : ENABLED_OPTION_CSS, isActive && ACTIVE_OPTION_CSS),
358
+ onMouseDown: (event) => event.preventDefault(),
359
+ onPointerMove: () => {
360
+ if (!isDisabled && !isActive) setActiveId(item.id);
361
+ },
362
+ onClick: () => choose(item),
363
+ children: [
364
+ item.leading !== void 0 && /* @__PURE__ */ jsx(Slot, { children: item.leading }),
365
+ item.icon !== void 0 && /* @__PURE__ */ jsx(Icon, {
366
+ component: item.icon,
367
+ size: COMMAND_PALETTE_ICON_PX,
368
+ variant: isDisabled ? IconVariant.DISABLED : IconVariant.SECONDARY,
369
+ className: NO_SHRINK_CSS,
370
+ "aria-hidden": true
371
+ }),
372
+ /* @__PURE__ */ jsxs(Content, { children: [/* @__PURE__ */ jsx(Text, {
373
+ as: "span",
374
+ size: TextSize.BODY_MD,
375
+ variant: isDisabled ? TextVariant.DISABLED : TextVariant.PRIMARY,
376
+ lineClamp: 1,
377
+ children: item.label
378
+ }), item.description !== void 0 && /* @__PURE__ */ jsx(Text, {
379
+ as: "span",
380
+ size: TextSize.BODY_SM,
381
+ variant: isDisabled ? TextVariant.DISABLED : TextVariant.TERTIARY,
382
+ lineClamp: 1,
383
+ children: item.description
384
+ })] }),
385
+ item.hotKeys !== void 0 && item.hotKeys.length > 0 && /* @__PURE__ */ jsx(Kbd, {
386
+ hotKeys: item.hotKeys,
387
+ size: KbdSize.MEDIUM,
388
+ variant: KbdVariant.PRIMARY,
389
+ isDisabled,
390
+ className: NO_SHRINK_CSS,
391
+ "aria-hidden": true
392
+ })
393
+ ]
394
+ }, item.id);
395
+ };
396
+ return /* @__PURE__ */ jsx(Portal, { children: /* @__PURE__ */ jsxs(OverlayNode, {
397
+ overlayId,
398
+ children: [/* @__PURE__ */ jsx(Fade, {
399
+ isOpen,
400
+ shouldAnimateOnMount,
401
+ className: BACKDROP_FRAME_CSS,
402
+ style: zStyle,
403
+ children: /* @__PURE__ */ jsx(Backdrop, {
404
+ "aria-hidden": true,
405
+ onPointerDown: handleBackdropPointerDown,
406
+ onClick: handleBackdropClick
407
+ })
408
+ }), /* @__PURE__ */ jsx(Positioner, {
409
+ style: zStyle,
410
+ children: /* @__PURE__ */ jsx(ScaleFade, {
411
+ isOpen,
412
+ shouldAnimateOnMount,
413
+ className: FRAME_CSS,
414
+ children: /* @__PURE__ */ jsx(FocusScope, {
415
+ autoFocus: FocusScopeAutoFocus.FIRST,
416
+ className: FOCUS_SCOPE_CSS,
417
+ children: /* @__PURE__ */ jsxs(Panel, {
418
+ ...rest,
419
+ ...labelling,
420
+ ref,
421
+ id: id ?? generatedId,
422
+ role: "dialog",
423
+ "aria-modal": "true",
424
+ className,
425
+ style,
426
+ children: [
427
+ /* @__PURE__ */ jsx(SearchRow, { children: /* @__PURE__ */ jsx(SearchInput, {
428
+ value: term,
429
+ onChange: handleTermChange,
430
+ ...onSearch === void 0 ? {} : { onSearch: handleSearch },
431
+ isLoading,
432
+ placeholder,
433
+ size: InputSize.LARGE,
434
+ isGhost: true,
435
+ fillWidth: true,
436
+ autoComplete: "off",
437
+ spellCheck: false,
438
+ ariaLabel,
439
+ ...hasList ? { "aria-controls": listId } : {},
440
+ "aria-autocomplete": "list",
441
+ ...activeOptionId === void 0 ? {} : { "aria-activedescendant": activeOptionId },
442
+ onKeyDown: handleKeyDown
443
+ }) }),
444
+ /* @__PURE__ */ jsx(Divider, {}),
445
+ hasList ? /* @__PURE__ */ jsx(List, {
446
+ id: listId,
447
+ role: "listbox",
448
+ "aria-label": LIST_LABEL,
449
+ children: sections.map((section, sectionIndex) => {
450
+ const headingId = `${headingIdBase}-${sectionIndex}`;
451
+ return section.heading === null ? /* @__PURE__ */ jsx(SectionRoot, {
452
+ role: "presentation",
453
+ children: section.items.map(renderOption)
454
+ }, section.key) : /* @__PURE__ */ jsxs(SectionRoot, {
455
+ role: "group",
456
+ "aria-labelledby": headingId,
457
+ children: [/* @__PURE__ */ jsx(GroupLabel, {
458
+ role: "presentation",
459
+ id: headingId,
460
+ children: /* @__PURE__ */ jsx(Text, {
461
+ as: "span",
462
+ size: TextSize.BODY_SM,
463
+ weight: TextWeight.MEDIUM,
464
+ variant: TextVariant.TERTIARY,
465
+ lineClamp: 1,
466
+ children: section.heading
467
+ })
468
+ }), section.items.map(renderOption)]
469
+ }, section.key);
470
+ })
471
+ }) : /* @__PURE__ */ jsx(EmptyRow, { children: /* @__PURE__ */ jsx(EmptyLine, { children: /* @__PURE__ */ jsx(Text, {
472
+ size: TextSize.BODY_MD,
473
+ variant: TextVariant.TERTIARY,
474
+ children: emptyMessage
475
+ }) }) }),
476
+ /* @__PURE__ */ jsx(Divider, {}),
477
+ /* @__PURE__ */ jsx(Hints, {
478
+ "aria-hidden": "true",
479
+ children: HINTS.map((hint) => /* @__PURE__ */ jsxs(Flex, {
480
+ as: "span",
481
+ alignItems: AlignItems.CENTER,
482
+ gap: 4,
483
+ children: [hint.keys.map((keys) => /* @__PURE__ */ jsx(Kbd, {
484
+ hotKeys: keys,
485
+ size: KbdSize.SMALL,
486
+ variant: KbdVariant.PRIMARY
487
+ }, keys.join("+"))), /* @__PURE__ */ jsx(Text, {
488
+ as: "span",
489
+ size: TextSize.BODY_SM,
490
+ variant: TextVariant.TERTIARY,
491
+ children: hint.label
492
+ })]
493
+ }, hint.label))
494
+ }),
495
+ /* @__PURE__ */ jsx(VisuallyHidden, {
496
+ "aria-live": "polite",
497
+ "aria-atomic": "true",
498
+ children: announcement
499
+ })
500
+ ]
501
+ })
502
+ })
503
+ })
504
+ })]
505
+ }) });
506
+ });
507
+ CommandPalette.displayName = "CommandPalette";
508
+ //#endregion
509
+ export { CommandPalette as default };
@@ -0,0 +1,87 @@
1
+ import { type AriaAttributes, type CSSProperties } from "react";
2
+ /** Canonical rungs; Pagination supports all five (the rung of every button and the select). */
3
+ export declare enum PaginationSize {
4
+ /** 20px controls, caption text. */
5
+ X_SMALL = "X_SMALL",
6
+ /** 24px controls, body_sm text. The usual size in a table footer or a Topbar. */
7
+ SMALL = "SMALL",
8
+ /** 32px controls, body_md text. The default. */
9
+ MEDIUM = "MEDIUM",
10
+ /** 36px controls, body_lg text. */
11
+ LARGE = "LARGE",
12
+ /** 40px controls, body_lg text. */
13
+ X_LARGE = "X_LARGE"
14
+ }
15
+ /** Every prop except the page-size pair. */
16
+ interface PaginationBaseProps extends AriaAttributes {
17
+ /** Number of items across all pages. The page count is `ceil(total / pageSize)`, at least 1. */
18
+ total: number;
19
+ /** Controlled current page, 1-based. Values outside `1…pageCount` render as the nearest page. */
20
+ value?: number;
21
+ /**
22
+ * Initial page while uncontrolled.
23
+ * @default 1
24
+ */
25
+ defaultValue?: number;
26
+ /** Called with the page the user picks, and with the page that keeps the first visible item in view when the page size changes. Not called for the current page. */
27
+ onChange?: (page: number) => void;
28
+ /**
29
+ * Items per page. Controlled: the app slices or fetches with it.
30
+ * @default 25
31
+ */
32
+ pageSize?: number;
33
+ /**
34
+ * Shows the range of items on this page, "1–25 of 312", before the controls.
35
+ * @default false
36
+ */
37
+ hasSummary?: boolean;
38
+ /**
39
+ * Replaces the page-number buttons with "3 of 13" between the arrows, for narrow toolbars and panels.
40
+ * @default false
41
+ */
42
+ isCompact?: boolean;
43
+ /**
44
+ * Control rung of every button and the select: 20 / 24 / 32 / 36 / 40px tall.
45
+ * @default PaginationSize.MEDIUM
46
+ */
47
+ size?: PaginationSize;
48
+ /**
49
+ * Disables every control (while a page loads). The summary stays.
50
+ * @default false
51
+ */
52
+ isDisabled?: boolean;
53
+ /**
54
+ * Stretch to the parent's width, with the summary at the start and the controls at the end.
55
+ * @default false
56
+ */
57
+ fillWidth?: boolean;
58
+ /**
59
+ * Name of the `<nav>` landmark. Set it when a page has more than one paginated list ("Runs pagination").
60
+ * @default Pagination
61
+ */
62
+ ariaLabel?: string;
63
+ /** DOM id of the `<nav>`. */
64
+ id?: string;
65
+ /** Any `data-*` attribute, forwarded to the `<nav>`. */
66
+ [dataAttribute: `data-${string}`]: string | number | boolean | undefined;
67
+ /** Extra class on the `<nav>`. */
68
+ className?: string;
69
+ /** Inline style on the `<nav>`; only for setting CSS custom properties. */
70
+ style?: CSSProperties;
71
+ }
72
+ /** The rows-per-page select appears only when its choice can be reported. */
73
+ type PaginationPageSize = {
74
+ /** Shows a "Rows per page" select with these sizes, in this order. Requires `onPageSizeChange`. */
75
+ pageSizeOptions: number[];
76
+ /** Called with the size chosen in the select. */
77
+ onPageSizeChange: (pageSize: number) => void;
78
+ } | {
79
+ /** Shows a "Rows per page" select with these sizes, in this order. Requires `onPageSizeChange`. */
80
+ pageSizeOptions?: undefined;
81
+ /** Called with the size chosen in the select. */
82
+ onPageSizeChange?: (pageSize: number) => void;
83
+ };
84
+ export type PaginationProps = PaginationBaseProps & PaginationPageSize;
85
+ /** Moves between the pages of a list or table, with an optional summary and page-size select. */
86
+ declare const Pagination: import("react").ForwardRefExoticComponent<PaginationProps & import("react").RefAttributes<HTMLElement>>;
87
+ export default Pagination;