@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,483 @@
1
+ import VisuallyHidden from "../a11y/VisuallyHidden.js";
2
+ import { FontFamily } from "../theme/enums.js";
3
+ import Text, { TextSize, TextVariant } from "../text/Text.js";
4
+ import Icon, { IconVariant } from "../icons/Icon.js";
5
+ import Rotate from "../transform/Rotate.js";
6
+ import { ButtonSize, ButtonVariant } from "../buttons/Button.js";
7
+ import CopyButton from "../buttons/CopyButton.js";
8
+ import Span, { SpanVariant } from "../text/Span.js";
9
+ import { InputSize, InputVariant } from "../inputs/Input.js";
10
+ import SearchInput from "../inputs/SearchInput.js";
11
+ import CollapseMotion from "../transform/internal/CollapseMotion.js";
12
+ import { TREE_ROW_CSS, TREE_ROW_LABEL_CSS, TREE_ROW_LEVEL_VARIABLE, TREE_ROW_SIZE_TO_CARET_PX_MAP, TREE_ROW_SIZE_TO_CSS_MAP, TREE_ROW_SIZE_TO_TEXT_SIZE_MAP, TreeRowCaretSlot, TreeRowSize } from "../tree/treeRow.js";
13
+ /* empty css */
14
+ import { styled } from "@linaria/react";
15
+ import { Fragment, forwardRef, useCallback, useEffect, useMemo, useRef, useState } from "react";
16
+ import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
17
+ import { cx } from "@linaria/core";
18
+ import { CaretRightIcon } from "@phosphor-icons/react";
19
+ //#region src/json/JsonViewer.tsx
20
+ /**
21
+ * A JSON value as an explorable tree: one row per key or array item, objects and arrays expand
22
+ * and collapse, primitive values are colored by type (strings green, numbers orange, booleans and
23
+ * `null` purple, structure tertiary), an optional search field highlights matching keys and values
24
+ * and opens their ancestors, and an optional footer shows the focused row's JSONPath with buttons
25
+ * to copy the path or the value as JSON.
26
+ *
27
+ * Its rows are Tree's rows: one shared geometry module (`tree/treeRow.ts`: height, padding,
28
+ * indent, caret slot and size, type step), the same roles and keys (flat `role="treeitem"` rows,
29
+ * roving tab stop, arrows / Home / End / Enter / type-ahead), without composing Tree. It has no
30
+ * selection: the footer follows focus. Read-only. Raw JSON to copy whole is `CodeBlock`; editing is `CodeEditor`.
31
+ */
32
+ /** Row rung: the same two rungs, with the same row geometry, as `TreeSize`. */
33
+ var JsonViewerSize = /* @__PURE__ */ function(JsonViewerSize) {
34
+ /** Tree's SMALL row: 24px, mono `body_sm`, 10px caret, 14px per level; `SMALL` search field, `X_SMALL` copy buttons. */
35
+ JsonViewerSize["SMALL"] = "SMALL";
36
+ /** Tree's MEDIUM row: 28px, mono `body_md`, 12px caret, 16px per level; `MEDIUM` search field, `SMALL` copy buttons. The default. */
37
+ JsonViewerSize["MEDIUM"] = "MEDIUM";
38
+ return JsonViewerSize;
39
+ }({});
40
+ /**
41
+ * Tones per JSON type: CodeBlock's token hues for the same kinds (spec Decision 3). A typed css map
42
+ * on an `INHERIT` `Span`, since Span's `variant` carries meaning only and has no palette members.
43
+ */
44
+ var JSON_VALUE_KIND_TO_CSS_MAP = {
45
+ ["OBJECT"]: "gx-JsonViewer-OBJECT-o12kbvy5",
46
+ ["ARRAY"]: "gx-JsonViewer-ARRAY-auj7crq",
47
+ ["STRING"]: "gx-JsonViewer-STRING-sd1e3sf",
48
+ ["NUMBER"]: "gx-JsonViewer-NUMBER-nyuj9qk",
49
+ ["BOOLEAN"]: "gx-JsonViewer-BOOLEAN-b977xl5",
50
+ ["NULL"]: "gx-JsonViewer-NULL-nv25tp1"
51
+ };
52
+ /** Identity: the viewer's rungs are Tree's row rungs (`tree/treeRow.ts`), so the rows match exactly. */
53
+ var JSON_VIEWER_SIZE_TO_ROW_SIZE_MAP = {
54
+ ["SMALL"]: TreeRowSize.SMALL,
55
+ ["MEDIUM"]: TreeRowSize.MEDIUM
56
+ };
57
+ var JSON_VIEWER_SIZE_TO_INPUT_SIZE_MAP = {
58
+ ["SMALL"]: InputSize.SMALL,
59
+ ["MEDIUM"]: InputSize.MEDIUM
60
+ };
61
+ var JSON_VIEWER_SIZE_TO_BUTTON_SIZE_MAP = {
62
+ ["SMALL"]: ButtonSize.X_SMALL,
63
+ ["MEDIUM"]: ButtonSize.SMALL
64
+ };
65
+ /** Printable keys typed within this window build one type-ahead query (logic, not motion). */
66
+ var TYPEAHEAD_TIMEOUT_MS = 500;
67
+ /** Keys that need no bracket notation in a JSONPath. */
68
+ var IDENTIFIER = /^[A-Za-z_$][A-Za-z0-9_$]*$/;
69
+ /** The viewer: search field, rows, footer, stacked. No surface of its own (spec Decision 7). */
70
+ var Root = /*#__PURE__*/ styled("div")({
71
+ name: "Root",
72
+ class: "gx-JsonViewer-rv7ru98",
73
+ propsAsIs: false
74
+ });
75
+ /** The `role="tree"` column of rows. */
76
+ var TREE_CSS = "gx-JsonViewer-TREE_CSS-texbj7a";
77
+ /** Hover and press fills on top of Tree's shared row (`TREE_ROW_CSS`); the viewer has no selection. */
78
+ var ROW_INTERACTIVE_CSS = "gx-JsonViewer-ROW_INTERACTIVE_CSS-rrsy1zk";
79
+ /** A search match: a categorical highlight, not selection (so not `background.selected`). */
80
+ var MARK_CSS = "gx-JsonViewer-MARK_CSS-me67haa";
81
+ /** The footer: the focused path and the two copy buttons, under a hairline rule. */
82
+ var FOOTER_CSS = "gx-JsonViewer-FOOTER_CSS-f1rapjox";
83
+ /** The footer's path takes the free width and truncates. */
84
+ var FOOTER_PATH_CSS = "gx-JsonViewer-FOOTER_PATH_CSS-f3yxl0";
85
+ var kindOf = (value) => {
86
+ if (value === null) return "NULL";
87
+ if (Array.isArray(value)) return "ARRAY";
88
+ switch (typeof value) {
89
+ case "string": return "STRING";
90
+ case "number": return "NUMBER";
91
+ case "boolean": return "BOOLEAN";
92
+ default: return "OBJECT";
93
+ }
94
+ };
95
+ /** The entries of a container as `[key, value]` pairs, in order. */
96
+ var entriesOf = (value) => {
97
+ if (Array.isArray(value)) return value.map((item, index) => [index, item]);
98
+ if (value !== null && typeof value === "object") return Object.entries(value);
99
+ return [];
100
+ };
101
+ var childPath = (parent, key) => typeof key === "number" ? `${parent}[${key}]` : IDENTIFIER.test(key) ? `${parent}.${key}` : `${parent}[${JSON.stringify(key)}]`;
102
+ var plural = (count, one, many) => `${count} ${count === 1 ? one : many}`;
103
+ /** What a value shows on its row: a primitive as JSON, a container as a summary. */
104
+ var displayOf = (value, kind) => {
105
+ switch (kind) {
106
+ case "OBJECT": {
107
+ const count = entriesOf(value).length;
108
+ return count === 0 ? "{}" : `{${plural(count, "key", "keys")}}`;
109
+ }
110
+ case "ARRAY": {
111
+ const count = entriesOf(value).length;
112
+ return count === 0 ? "[]" : `[${plural(count, "item", "items")}]`;
113
+ }
114
+ case "STRING": return JSON.stringify(value);
115
+ default: return String(value);
116
+ }
117
+ };
118
+ /** The rows of `data` under its root: the root's entries, or one row for a primitive / empty root. */
119
+ function getRootNodes(data) {
120
+ const kind = kindOf(data);
121
+ const entries = entriesOf(data);
122
+ if (entries.length === 0) return [{
123
+ path: "$",
124
+ key: null,
125
+ value: data,
126
+ kind,
127
+ isContainer: false,
128
+ level: 1,
129
+ parentPath: null
130
+ }];
131
+ return entries.map(([key, value]) => toNode(key, value, "$", 1, null));
132
+ }
133
+ function toNode(key, value, parent, level, parentPath) {
134
+ const kind = kindOf(value);
135
+ return {
136
+ path: childPath(parent, key),
137
+ key,
138
+ value,
139
+ kind,
140
+ isContainer: entriesOf(value).length > 0,
141
+ level,
142
+ parentPath
143
+ };
144
+ }
145
+ var childrenOf = (node) => entriesOf(node.value).map(([key, value]) => toNode(key, value, node.path, node.level + 1, node.path));
146
+ /** Every node, depth first (for paths, values, search and the initial expansion). */
147
+ function getAllNodes(data) {
148
+ const nodes = [];
149
+ const walk = (list) => {
150
+ for (const node of list) {
151
+ nodes.push(node);
152
+ if (node.isContainer) walk(childrenOf(node));
153
+ }
154
+ };
155
+ walk(getRootNodes(data));
156
+ return nodes;
157
+ }
158
+ /** The searchable text of a node's value: a primitive's display without quotes; containers none. */
159
+ var searchTextOf = (node) => {
160
+ if (node.kind === "OBJECT" || node.kind === "ARRAY") return null;
161
+ const display = displayOf(node.value, node.kind);
162
+ return node.kind === "STRING" ? display.slice(1, -1) : display;
163
+ };
164
+ /** Whether a node's key (not an index) or primitive value contains the lower-cased term. */
165
+ var isMatch = (node, term) => typeof node.key === "string" && node.key.toLowerCase().includes(term) || (searchTextOf(node)?.toLowerCase().includes(term) ?? false);
166
+ /** Splits `text` around case-insensitive occurrences of `term`, marking each. */
167
+ function highlight(text, term) {
168
+ if (term === "") return text;
169
+ const lower = text.toLowerCase();
170
+ const parts = [];
171
+ let from = 0;
172
+ let at = lower.indexOf(term, from);
173
+ if (at === -1) return text;
174
+ while (at !== -1) {
175
+ if (at > from) parts.push(text.slice(from, at));
176
+ parts.push(/* @__PURE__ */ jsx("mark", {
177
+ className: MARK_CSS,
178
+ children: text.slice(at, at + term.length)
179
+ }, `m${at}`));
180
+ from = at + term.length;
181
+ at = lower.indexOf(term, from);
182
+ }
183
+ if (from < text.length) parts.push(text.slice(from));
184
+ return parts;
185
+ }
186
+ var matchLabelOf = (count) => count === 0 ? "No matches" : plural(count, "match", "matches");
187
+ /** A row's depth as the `--gx-json-viewer-level` custom property (0 at the top level). */
188
+ var levelStyle = (level) => ({ [TREE_ROW_LEVEL_VARIABLE]: String(level - 1) });
189
+ /** Collapsible, type-colored JSON with search and path copy. */
190
+ var JsonViewer = forwardRef(function JsonViewer(props, ref) {
191
+ const { data, defaultExpandedDepth = 1, canSearch = false, canCopy = false, size = "MEDIUM", ariaLabel, "aria-label": ariaLabelAttribute, "aria-labelledby": labelledBy, id, className, style, ...rest } = props;
192
+ const rowSize = JSON_VIEWER_SIZE_TO_ROW_SIZE_MAP[size];
193
+ const textSize = TREE_ROW_SIZE_TO_TEXT_SIZE_MAP[rowSize];
194
+ const caretPx = TREE_ROW_SIZE_TO_CARET_PX_MAP[rowSize];
195
+ const treeName = ariaLabel ?? ariaLabelAttribute;
196
+ const allNodes = useMemo(() => getAllNodes(data), [data]);
197
+ const nodeByPath = useMemo(() => new Map(allNodes.map((node) => [node.path, node])), [allNodes]);
198
+ const [expanded, setExpanded] = useState(() => new Set(allNodes.filter((node) => node.isContainer && node.level <= defaultExpandedDepth).map((node) => node.path)));
199
+ const [term, setTerm] = useState("");
200
+ const preSearchExpanded = useRef(null);
201
+ const lowerTerm = term.toLowerCase();
202
+ const matchCount = useMemo(() => lowerTerm === "" ? 0 : allNodes.filter((node) => isMatch(node, lowerTerm)).length, [allNodes, lowerTerm]);
203
+ /** Search drives expansion: the ancestors of every match open; clearing restores the set. */
204
+ const handleSearch = (next) => {
205
+ const lower = next.toLowerCase();
206
+ if (lower === "") {
207
+ if (preSearchExpanded.current !== null) setExpanded(preSearchExpanded.current);
208
+ preSearchExpanded.current = null;
209
+ setTerm("");
210
+ return;
211
+ }
212
+ if (preSearchExpanded.current === null) preSearchExpanded.current = expanded;
213
+ const ancestors = /* @__PURE__ */ new Set();
214
+ for (const node of allNodes) {
215
+ if (!isMatch(node, lower)) continue;
216
+ let parent = node.parentPath;
217
+ while (parent !== null && !ancestors.has(parent)) {
218
+ ancestors.add(parent);
219
+ parent = nodeByPath.get(parent)?.parentPath ?? null;
220
+ }
221
+ }
222
+ setExpanded(ancestors);
223
+ setTerm(next);
224
+ };
225
+ const visible = useMemo(() => {
226
+ const rows = [];
227
+ const walk = (list) => {
228
+ for (const node of list) {
229
+ rows.push(node);
230
+ if (node.isContainer && expanded.has(node.path)) walk(childrenOf(node));
231
+ }
232
+ };
233
+ walk(getRootNodes(data));
234
+ return rows;
235
+ }, [data, expanded]);
236
+ const visibleIndex = useMemo(() => new Map(visible.map((node, index) => [node.path, index])), [visible]);
237
+ const [focusedPath, setFocusedPath] = useState(null);
238
+ /** The roving tab stop: the last focused row, its nearest visible ancestor, else the first row. */
239
+ const tabStopPath = useMemo(() => {
240
+ let path = focusedPath;
241
+ while (path !== null) {
242
+ if (visibleIndex.has(path)) return path;
243
+ path = nodeByPath.get(path)?.parentPath ?? null;
244
+ }
245
+ return visible[0]?.path ?? null;
246
+ }, [
247
+ focusedPath,
248
+ visible,
249
+ visibleIndex,
250
+ nodeByPath
251
+ ]);
252
+ const rowElements = useRef(/* @__PURE__ */ new Map());
253
+ const rowRefCallbacks = useRef(/* @__PURE__ */ new Map());
254
+ const shouldRestoreFocus = useRef(false);
255
+ const setRowElement = (path) => {
256
+ let callback = rowRefCallbacks.current.get(path);
257
+ if (callback === void 0) {
258
+ callback = (element) => {
259
+ if (element) {
260
+ rowElements.current.set(path, element);
261
+ return;
262
+ }
263
+ const previous = rowElements.current.get(path);
264
+ if (previous !== void 0 && previous === previous.ownerDocument.activeElement) shouldRestoreFocus.current = true;
265
+ rowElements.current.delete(path);
266
+ rowRefCallbacks.current.delete(path);
267
+ };
268
+ rowRefCallbacks.current.set(path, callback);
269
+ }
270
+ return callback;
271
+ };
272
+ useEffect(() => {
273
+ if (!shouldRestoreFocus.current) return;
274
+ shouldRestoreFocus.current = false;
275
+ if (tabStopPath !== null) rowElements.current.get(tabStopPath)?.focus();
276
+ });
277
+ const typeahead = useRef({
278
+ query: "",
279
+ timer: void 0
280
+ });
281
+ useEffect(() => {
282
+ const state = typeahead.current;
283
+ return () => clearTimeout(state.timer);
284
+ }, []);
285
+ const focusRow = useCallback((path) => {
286
+ if (path === null || path === void 0) return;
287
+ rowElements.current.get(path)?.focus();
288
+ }, []);
289
+ const toggle = (path) => {
290
+ const next = new Set(expanded);
291
+ if (next.has(path)) next.delete(path);
292
+ else next.add(path);
293
+ setExpanded(next);
294
+ };
295
+ /** Moves focus to the next visible row whose key text starts with the typed query. */
296
+ const handleTypeahead = (fromIndex, character) => {
297
+ const state = typeahead.current;
298
+ clearTimeout(state.timer);
299
+ state.query += character.toLowerCase();
300
+ state.timer = setTimeout(() => {
301
+ state.query = "";
302
+ }, TYPEAHEAD_TIMEOUT_MS);
303
+ const isRepeat = [...state.query].every((entry) => entry === state.query[0]);
304
+ const query = isRepeat ? state.query.charAt(0) : state.query;
305
+ const start = isRepeat ? fromIndex + 1 : fromIndex;
306
+ for (let offset = 0; offset < visible.length; offset += 1) {
307
+ const node = visible[(start + offset) % visible.length];
308
+ if (node !== void 0 && node.key !== null && String(node.key).toLowerCase().startsWith(query)) {
309
+ focusRow(node.path);
310
+ return;
311
+ }
312
+ }
313
+ };
314
+ const handleKeyDown = (event, node) => {
315
+ if (event.target !== event.currentTarget) return;
316
+ const index = visibleIndex.get(node.path) ?? 0;
317
+ const isExpanded = node.isContainer && expanded.has(node.path);
318
+ let isHandled = true;
319
+ switch (event.key) {
320
+ case "ArrowDown":
321
+ focusRow(visible[index + 1]?.path);
322
+ break;
323
+ case "ArrowUp":
324
+ focusRow(visible[index - 1]?.path);
325
+ break;
326
+ case "Home":
327
+ focusRow(visible[0]?.path);
328
+ break;
329
+ case "End":
330
+ focusRow(visible[visible.length - 1]?.path);
331
+ break;
332
+ case "ArrowRight":
333
+ if (node.isContainer) if (!isExpanded) toggle(node.path);
334
+ else focusRow(visible[index + 1]?.path);
335
+ break;
336
+ case "ArrowLeft":
337
+ if (isExpanded) toggle(node.path);
338
+ else focusRow(node.parentPath);
339
+ break;
340
+ case "Enter":
341
+ if (node.isContainer) toggle(node.path);
342
+ break;
343
+ case " ": break;
344
+ default: if (event.key.length === 1 && !event.ctrlKey && !event.metaKey && !event.altKey) handleTypeahead(index, event.key);
345
+ else isHandled = false;
346
+ }
347
+ if (isHandled) event.preventDefault();
348
+ };
349
+ /** One level of rows, each container followed by its animated group. */
350
+ const renderNodes = (list) => list.map((node, position) => {
351
+ const isExpanded = node.isContainer && expanded.has(node.path);
352
+ const display = displayOf(node.value, node.kind);
353
+ const isContainerKind = node.kind === "OBJECT" || node.kind === "ARRAY";
354
+ const valueText = node.kind === "STRING" ? /* @__PURE__ */ jsxs(Fragment$1, { children: [
355
+ "\"",
356
+ highlight(display.slice(1, -1), lowerTerm),
357
+ "\""
358
+ ] }) : isContainerKind ? display : highlight(display, lowerTerm);
359
+ const handleCaretClick = (event) => {
360
+ event.stopPropagation();
361
+ rowElements.current.get(node.path)?.focus();
362
+ toggle(node.path);
363
+ };
364
+ return /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsxs("div", {
365
+ ref: setRowElement(node.path),
366
+ role: "treeitem",
367
+ "aria-level": node.level,
368
+ "aria-setsize": list.length,
369
+ "aria-posinset": position + 1,
370
+ "aria-expanded": node.isContainer ? isExpanded : void 0,
371
+ tabIndex: tabStopPath === node.path ? 0 : -1,
372
+ className: cx(TREE_ROW_CSS, TREE_ROW_SIZE_TO_CSS_MAP[rowSize], ROW_INTERACTIVE_CSS),
373
+ style: levelStyle(node.level),
374
+ onFocus: () => setFocusedPath(node.path),
375
+ onClick: () => {
376
+ if (node.isContainer) toggle(node.path);
377
+ },
378
+ onKeyDown: (event) => handleKeyDown(event, node),
379
+ children: [/* @__PURE__ */ jsx(TreeRowCaretSlot, {
380
+ "aria-hidden": true,
381
+ onClick: node.isContainer ? handleCaretClick : void 0,
382
+ children: node.isContainer && /* @__PURE__ */ jsx(Rotate, {
383
+ isRotated: isExpanded,
384
+ deg: 90,
385
+ children: /* @__PURE__ */ jsx(Icon, {
386
+ component: CaretRightIcon,
387
+ size: caretPx,
388
+ variant: IconVariant.TERTIARY
389
+ })
390
+ })
391
+ }), /* @__PURE__ */ jsxs(Text, {
392
+ as: "span",
393
+ family: FontFamily.MONO,
394
+ size: textSize,
395
+ lineClamp: 1,
396
+ shouldTooltipOnOverflow: true,
397
+ className: TREE_ROW_LABEL_CSS,
398
+ children: [node.key !== null && /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(Span, {
399
+ variant: typeof node.key === "number" ? SpanVariant.TERTIARY : SpanVariant.PRIMARY,
400
+ children: typeof node.key === "number" ? String(node.key) : highlight(node.key, lowerTerm)
401
+ }), /* @__PURE__ */ jsx(Span, {
402
+ variant: SpanVariant.SECONDARY,
403
+ children: ": "
404
+ })] }), /* @__PURE__ */ jsx(Span, {
405
+ variant: SpanVariant.INHERIT,
406
+ className: JSON_VALUE_KIND_TO_CSS_MAP[node.kind],
407
+ children: valueText
408
+ })]
409
+ })]
410
+ }), node.isContainer && /* @__PURE__ */ jsx(CollapseMotion, {
411
+ isOpen: isExpanded,
412
+ children: isExpanded && renderNodes(childrenOf(node))
413
+ })] }, node.path);
414
+ });
415
+ const footerNode = nodeByPath.get(focusedPath ?? "$");
416
+ const footerPath = focusedPath ?? "$";
417
+ const footerValue = JSON.stringify(footerNode?.value ?? data, null, 2);
418
+ const matchLabel = matchLabelOf(matchCount);
419
+ const buttonSize = JSON_VIEWER_SIZE_TO_BUTTON_SIZE_MAP[size];
420
+ return /* @__PURE__ */ jsxs(Root, {
421
+ ...rest,
422
+ ref,
423
+ id,
424
+ className,
425
+ style,
426
+ children: [
427
+ canSearch && /* @__PURE__ */ jsx(SearchInput, {
428
+ size: JSON_VIEWER_SIZE_TO_INPUT_SIZE_MAP[size],
429
+ variant: InputVariant.PRIMARY,
430
+ fillWidth: true,
431
+ ariaLabel: `Search ${treeName ?? "JSON"}`,
432
+ onSearch: handleSearch,
433
+ trailing: term !== "" && /* @__PURE__ */ jsx(Text, {
434
+ as: "span",
435
+ size: TextSize.BODY_SM,
436
+ variant: TextVariant.TERTIARY,
437
+ children: matchLabel
438
+ })
439
+ }),
440
+ /* @__PURE__ */ jsx("div", {
441
+ role: "tree",
442
+ "aria-label": treeName,
443
+ "aria-labelledby": labelledBy,
444
+ className: TREE_CSS,
445
+ children: renderNodes(getRootNodes(data))
446
+ }),
447
+ canCopy && /* @__PURE__ */ jsxs("div", {
448
+ className: FOOTER_CSS,
449
+ children: [
450
+ /* @__PURE__ */ jsx(Text, {
451
+ as: "span",
452
+ family: FontFamily.MONO,
453
+ size: textSize,
454
+ variant: TextVariant.SECONDARY,
455
+ lineClamp: 1,
456
+ shouldTooltipOnOverflow: true,
457
+ className: FOOTER_PATH_CSS,
458
+ children: footerPath
459
+ }),
460
+ /* @__PURE__ */ jsx(CopyButton, {
461
+ value: footerPath,
462
+ label: "Copy path",
463
+ size: buttonSize,
464
+ variant: ButtonVariant.TERTIARY
465
+ }),
466
+ /* @__PURE__ */ jsx(CopyButton, {
467
+ value: footerValue,
468
+ label: "Copy value",
469
+ size: buttonSize,
470
+ variant: ButtonVariant.TERTIARY
471
+ })
472
+ ]
473
+ }),
474
+ /* @__PURE__ */ jsx(VisuallyHidden, {
475
+ "aria-live": "polite",
476
+ children: term === "" ? "" : matchLabel
477
+ })
478
+ ]
479
+ });
480
+ });
481
+ JsonViewer.displayName = "JsonViewer";
482
+ //#endregion
483
+ export { JsonViewerSize, JsonViewer as default };
@@ -0,0 +1,87 @@
1
+ import { type AriaAttributes, type CSSProperties, type ElementType, type ReactNode } from "react";
2
+ import { Radius, type SpaceShorthand } from "../theme/enums.js";
3
+ /** Surface step the box fills with (surface set, Constitution V-A). Leave `variant` unset for no fill. */
4
+ export declare enum BoxVariant {
5
+ /** The canvas, `background.base`. */
6
+ BASE = "BASE",
7
+ /** A panel, `background.primary`. */
8
+ PRIMARY = "PRIMARY",
9
+ /** A raised surface, `background.secondary`. */
10
+ SECONDARY = "SECONDARY",
11
+ /** The most elevated surface, `background.tertiary`. */
12
+ TERTIARY = "TERTIARY"
13
+ }
14
+ /** Offsets for a positioned box. A number is px; a string is any CSS length. */
15
+ export type BoxInset = {
16
+ /** CSS `top`. */
17
+ top?: number | string;
18
+ /** CSS `right`. */
19
+ right?: number | string;
20
+ /** CSS `bottom`. */
21
+ bottom?: number | string;
22
+ /** CSS `left`. */
23
+ left?: number | string;
24
+ };
25
+ export interface BoxProps extends AriaAttributes {
26
+ /** Content of the box. */
27
+ children?: ReactNode;
28
+ /**
29
+ * Surface step the box fills with. Unset draws no fill: the parent shows through.
30
+ * @default undefined (no fill)
31
+ */
32
+ variant?: BoxVariant;
33
+ /**
34
+ * Draw the `0.5px` hairline border (`border.primary`).
35
+ * @default false
36
+ */
37
+ hasBorder?: boolean;
38
+ /** Corner radius from the scale. Square corners when omitted. */
39
+ radius?: Radius;
40
+ /** Padding from the space scale: one value, or 2–4 in CSS shorthand order (`[12, 16]`). */
41
+ padding?: SpaceShorthand;
42
+ /** CSS `width`. A number is px. `fillWidth` wins over it. */
43
+ width?: number | string;
44
+ /** CSS `height`. A number is px. Use `"100%"` to fill the parent (1.x `fillHeight`). */
45
+ height?: number | string;
46
+ /** CSS `min-width`. A number is px. */
47
+ minWidth?: number | string;
48
+ /** CSS `max-width`. A number is px. (1.x `Wrapper maxWidth` set `width`; use `width` for that.) */
49
+ maxWidth?: number | string;
50
+ /** CSS `min-height`. A number is px. */
51
+ minHeight?: number | string;
52
+ /** CSS `max-height`. A number is px. */
53
+ maxHeight?: number | string;
54
+ /**
55
+ * Stretch to the parent's full width (`width: 100%`). Wins over `width`.
56
+ * @default false
57
+ */
58
+ fillWidth?: boolean;
59
+ /**
60
+ * CSS `overflow`.
61
+ * @default "visible"
62
+ */
63
+ overflow?: CSSProperties["overflow"];
64
+ /**
65
+ * CSS `position`.
66
+ * @default static
67
+ */
68
+ position?: CSSProperties["position"];
69
+ /** `top` / `right` / `bottom` / `left` offsets; they apply once `position` is not `static`. */
70
+ inset?: BoxInset;
71
+ /**
72
+ * Element or component to render (`"section"`, `"aside"`, a router link).
73
+ * @default "div"
74
+ */
75
+ as?: ElementType;
76
+ /** DOM id on the root element. */
77
+ id?: string;
78
+ /** Any `data-*` attribute, forwarded to the root element. */
79
+ [dataAttribute: `data-${string}`]: string | number | boolean | undefined;
80
+ /** Extra class on the root element. */
81
+ className?: string;
82
+ /** Inline style on the root element; only for setting CSS custom properties. */
83
+ style?: CSSProperties;
84
+ }
85
+ /** A block container with a surface, an optional hairline border, a radius and padding. */
86
+ declare const Box: import("react").ForwardRefExoticComponent<BoxProps & import("react").RefAttributes<HTMLElement>>;
87
+ export default Box;
@@ -0,0 +1,109 @@
1
+ import { Radius } from "../theme/enums.js";
2
+ import { getCssSizeValue, spaceToCss } from "../utils/css.js";
3
+ /* empty css */
4
+ import { styled } from "@linaria/react";
5
+ import { forwardRef } from "react";
6
+ import { jsx } from "react/jsx-runtime";
7
+ import { cx } from "@linaria/core";
8
+ //#region src/layout/Box.tsx
9
+ /**
10
+ * The generic block container: a surface step, an optional hairline border, a radius, padding,
11
+ * and the sizing / positioning props a layout component may carry (Constitution V). Replaces 1.x
12
+ * `Wrapper` (the positioning box) and `Spacing` (margins are gone; use the parent's `gap` or
13
+ * `padding`).
14
+ *
15
+ * Continuous values (`padding`, sizes, `overflow`, `position`, `inset`) are set as `--gx-box-*`
16
+ * custom properties on the root, and a block that reads each one is switched on only when its prop
17
+ * is set. So a nested `Box` never inherits its parent's values, and nothing extra reaches a custom
18
+ * `as` component (Linaria forwards `$`-props to one).
19
+ */
20
+ /** Surface step the box fills with (surface set, Constitution V-A). Leave `variant` unset for no fill. */
21
+ var BoxVariant = /* @__PURE__ */ function(BoxVariant) {
22
+ /** The canvas, `background.base`. */
23
+ BoxVariant["BASE"] = "BASE";
24
+ /** A panel, `background.primary`. */
25
+ BoxVariant["PRIMARY"] = "PRIMARY";
26
+ /** A raised surface, `background.secondary`. */
27
+ BoxVariant["SECONDARY"] = "SECONDARY";
28
+ /** The most elevated surface, `background.tertiary`. */
29
+ BoxVariant["TERTIARY"] = "TERTIARY";
30
+ return BoxVariant;
31
+ }({});
32
+ var Root = /*#__PURE__*/ styled("div")({
33
+ name: "Root",
34
+ class: "gx-Box-rcu11uw",
35
+ propsAsIs: false
36
+ });
37
+ var BOX_VARIANT_TO_CSS_MAP = {
38
+ ["BASE"]: "gx-Box-BASE-bn7d3r",
39
+ ["PRIMARY"]: "gx-Box-PRIMARY-p1tb0t1s",
40
+ ["SECONDARY"]: "gx-Box-SECONDARY-sngj0ew",
41
+ ["TERTIARY"]: "gx-Box-TERTIARY-t1vd7izj"
42
+ };
43
+ var RADIUS_TO_CSS_MAP = {
44
+ [Radius.SM]: "gx-Box-Radius_SM-r1duzr06",
45
+ [Radius.MD]: "gx-Box-Radius_MD-r501792",
46
+ [Radius.LG]: "gx-Box-Radius_LG-rxydgx9",
47
+ [Radius.PILL]: "gx-Box-Radius_PILL-rrn38q3"
48
+ };
49
+ var BORDER_CSS = "gx-Box-BORDER_CSS-b1aq7688";
50
+ var FILL_WIDTH_CSS = "gx-Box-FILL_WIDTH_CSS-f1nw7r38";
51
+ /** Each block reads the `--gx-box-<property>` custom property the component sets beside it. */
52
+ var BOX_CSS_PROPERTY_TO_CSS_MAP = {
53
+ padding: "gx-Box-padding-poq987s",
54
+ width: "gx-Box-width-w1dvt2z3",
55
+ height: "gx-Box-height-hpkzdg3",
56
+ "min-width": "gx-Box-min-width-m1w4kn1o",
57
+ "max-width": "gx-Box-max-width-morpz05",
58
+ "min-height": "gx-Box-min-height-mwtkiw3",
59
+ "max-height": "gx-Box-max-height-mz7b6w6",
60
+ overflow: "gx-Box-overflow-o1d5jyby",
61
+ position: "gx-Box-position-p1cr9tw3",
62
+ top: "gx-Box-top-t176ib3h",
63
+ right: "gx-Box-right-rjk68mc",
64
+ bottom: "gx-Box-bottom-bqrxdfn",
65
+ left: "gx-Box-left-l1xu1nwn"
66
+ };
67
+ /** A length prop as CSS (number → px), or `undefined` when unset. */
68
+ var toLength = (value) => value === void 0 ? void 0 : getCssSizeValue(value);
69
+ /** A block container with a surface, an optional hairline border, a radius and padding. */
70
+ var Box = forwardRef(function Box({ children, variant, hasBorder = false, radius, padding, width, height, minWidth, maxWidth, minHeight, maxHeight, fillWidth = false, overflow, position, inset, as = "div", id, className, style, ...rest }, ref) {
71
+ const values = {
72
+ padding: padding === void 0 ? void 0 : spaceToCss(padding),
73
+ width: fillWidth ? void 0 : toLength(width),
74
+ height: toLength(height),
75
+ "min-width": toLength(minWidth),
76
+ "max-width": toLength(maxWidth),
77
+ "min-height": toLength(minHeight),
78
+ "max-height": toLength(maxHeight),
79
+ overflow,
80
+ position,
81
+ top: toLength(inset?.top),
82
+ right: toLength(inset?.right),
83
+ bottom: toLength(inset?.bottom),
84
+ left: toLength(inset?.left)
85
+ };
86
+ const classNames = [];
87
+ const variables = {};
88
+ for (const property of Object.keys(values)) {
89
+ const value = values[property];
90
+ if (value === void 0) continue;
91
+ classNames.push(BOX_CSS_PROPERTY_TO_CSS_MAP[property]);
92
+ variables[`--gx-box-${property}`] = value;
93
+ }
94
+ return /* @__PURE__ */ jsx(Root, {
95
+ ...rest,
96
+ as,
97
+ ref,
98
+ id,
99
+ className: cx(variant !== void 0 && BOX_VARIANT_TO_CSS_MAP[variant], hasBorder && BORDER_CSS, radius !== void 0 && RADIUS_TO_CSS_MAP[radius], fillWidth && FILL_WIDTH_CSS, ...classNames, className),
100
+ style: {
101
+ ...variables,
102
+ ...style
103
+ },
104
+ children
105
+ });
106
+ });
107
+ Box.displayName = "Box";
108
+ //#endregion
109
+ export { BoxVariant, Box as default };