@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
@@ -1,443 +1,533 @@
1
- import { GalaxyTheme } from "../theme/types.js";
2
- import { useGalaxyTheme, withTheme } from "../theme/GalaxyTheme.js";
3
- import { getCssSizeValue } from "../utils/linaria.js";
1
+ import { useControlledState } from "../hooks/useControlledState.js";
2
+ import { t } from "../theme/tokens/t.js";
3
+ import { GalaxyThemeContext } from "../theme/useGalaxyTheme.js";
4
+ import { useField } from "../hooks/useField.js";
5
+ import { hexToRgb, rgbToHsl } from "../utils/colors.js";
4
6
  /* empty css */
5
7
  import { styled } from "@linaria/react";
6
- import { match } from "ts-pattern";
7
- import { useMemo } from "react";
8
+ import { forwardRef, useCallback, useContext, useEffect, useMemo, useRef, useState } from "react";
8
9
  import { jsx } from "react/jsx-runtime";
10
+ import { cx } from "@linaria/core";
11
+ import { Prec } from "@codemirror/state";
9
12
  import { EditorView, keymap } from "@codemirror/view";
10
13
  import { tags } from "@lezer/highlight";
11
- import { langs, loadLanguage } from "@uiw/codemirror-extensions-langs";
12
14
  import { createTheme } from "@uiw/codemirror-themes";
13
15
  import CodeMirror from "@uiw/react-codemirror";
14
16
  //#region src/editor/CodeEditor.tsx
15
- /** Background treatment of the editor surface. */
17
+ /** Resting fill of the editor frame (Constitution V-A surface set; 1.x members). 1.x `noBorder` is `isGhost`. */
16
18
  var CodeEditorVariant = /* @__PURE__ */ function(CodeEditorVariant) {
19
+ /** `background.base`. */
17
20
  CodeEditorVariant["BASE"] = "BASE";
21
+ /** `background.primary`. The default. */
18
22
  CodeEditorVariant["PRIMARY"] = "PRIMARY";
23
+ /** `background.secondary`. */
19
24
  CodeEditorVariant["SECONDARY"] = "SECONDARY";
25
+ /** `background.tertiary`. */
20
26
  CodeEditorVariant["TERTIARY"] = "TERTIARY";
21
27
  return CodeEditorVariant;
22
28
  }({});
23
- var _exp = () => ({ $noBorder, theme }) => $noBorder ? "none" : `0.5px solid ${theme.color.border.primary}`;
24
- var _exp2 = () => ({ $borderRadius }) => getCssSizeValue($borderRadius);
25
- var CodeEditorWrapper = withTheme(/*#__PURE__*/ styled("div")({
26
- name: "CodeEditorWrapper",
27
- class: "cwfaerb",
28
- propsAsIs: false,
29
- vars: {
30
- "cwfaerb-0": [_exp()],
31
- "cwfaerb-1": [_exp2()]
32
- }
33
- }));
34
- function getBackgroundColorFromVariant(theme, variant) {
35
- return match(variant).with("BASE", () => theme.color.background.base).with("PRIMARY", () => theme.color.background.primary).with("SECONDARY", () => theme.color.background.secondary).with("TERTIARY", () => theme.color.background.tertiary).exhaustive();
29
+ /** Grammar used to highlight and edit the document. The `CodeBlockLanguage` set minus GRAPHQL. */
30
+ var CodeEditorLanguage = /* @__PURE__ */ function(CodeEditorLanguage) {
31
+ /** No grammar: unhighlighted text. */
32
+ CodeEditorLanguage["PLAIN"] = "PLAIN";
33
+ /** Shell scripts and commands. */
34
+ CodeEditorLanguage["BASH"] = "BASH";
35
+ /** CSS. */
36
+ CodeEditorLanguage["CSS"] = "CSS";
37
+ /** Go. */
38
+ CodeEditorLanguage["GO"] = "GO";
39
+ /** HTML. */
40
+ CodeEditorLanguage["HTML"] = "HTML";
41
+ /** JavaScript. */
42
+ CodeEditorLanguage["JAVASCRIPT"] = "JAVASCRIPT";
43
+ /** JSON. */
44
+ CodeEditorLanguage["JSON"] = "JSON";
45
+ /** JavaScript with JSX. */
46
+ CodeEditorLanguage["JSX"] = "JSX";
47
+ /** Markdown. */
48
+ CodeEditorLanguage["MARKDOWN"] = "MARKDOWN";
49
+ /** Protocol Buffers. */
50
+ CodeEditorLanguage["PROTOBUF"] = "PROTOBUF";
51
+ /** Python. */
52
+ CodeEditorLanguage["PYTHON"] = "PYTHON";
53
+ /** Rust. */
54
+ CodeEditorLanguage["RUST"] = "RUST";
55
+ /** SQL. */
56
+ CodeEditorLanguage["SQL"] = "SQL";
57
+ /** TOML. */
58
+ CodeEditorLanguage["TOML"] = "TOML";
59
+ /** TypeScript with JSX. */
60
+ CodeEditorLanguage["TSX"] = "TSX";
61
+ /** TypeScript. */
62
+ CodeEditorLanguage["TYPESCRIPT"] = "TYPESCRIPT";
63
+ /** YAML. */
64
+ CodeEditorLanguage["YAML"] = "YAML";
65
+ return CodeEditorLanguage;
66
+ }({});
67
+ /** `@uiw/codemirror-extensions-langs` key per language (exhaustive; `PLAIN` loads nothing). */
68
+ var CODE_EDITOR_LANGUAGE_TO_LANG_NAME_MAP = {
69
+ ["BASH"]: "bash",
70
+ ["CSS"]: "css",
71
+ ["GO"]: "go",
72
+ ["HTML"]: "html",
73
+ ["JAVASCRIPT"]: "js",
74
+ ["JSON"]: "json",
75
+ ["JSX"]: "jsx",
76
+ ["MARKDOWN"]: "markdown",
77
+ ["PROTOBUF"]: "proto",
78
+ ["PYTHON"]: "python",
79
+ ["RUST"]: "rs",
80
+ ["SQL"]: "sql",
81
+ ["TOML"]: "toml",
82
+ ["TSX"]: "tsx",
83
+ ["TYPESCRIPT"]: "ts",
84
+ ["YAML"]: "yaml"
85
+ };
86
+ /**
87
+ * The frame: surface, hairline and radius; CodeMirror fills it. Focus does not change the frame
88
+ * (no focus border, no inset line): the editor usually sits in a form between a header and a
89
+ * footer, and the caret and selection already show where focus is. Hover does not change it either.
90
+ */
91
+ var Root = /*#__PURE__*/ styled("div")({
92
+ name: "Root",
93
+ class: "gx-CodeEditor-rwfaerb",
94
+ propsAsIs: false
95
+ });
96
+ /**
97
+ * Rest look per variant: fill and hairline color (restated from Input). The fill is
98
+ * `--gx-code-editor-fill`, which the line-number gutter also paints so scrolled code passes under it.
99
+ */
100
+ var CODE_EDITOR_VARIANT_TO_CSS_MAP = {
101
+ ["BASE"]: "gx-CodeEditor-BASE-b1tjlkiu",
102
+ ["PRIMARY"]: "gx-CodeEditor-PRIMARY-p1wy6p36",
103
+ ["SECONDARY"]: "gx-CodeEditor-SECONDARY-s17h1t09",
104
+ ["TERTIARY"]: "gx-CodeEditor-TERTIARY-t2pkkyv"
105
+ };
106
+ /**
107
+ * `isGhost`: no fill and no hairline at rest. Declared after the variant map, which it replaces.
108
+ * The gutter assumes the usual `background.primary` panel behind it; on another surface the app sets
109
+ * `--gx-code-editor-fill` (through `style`) to that surface.
110
+ */
111
+ var GHOST_CSS = "gx-CodeEditor-GHOST_CSS-gxzddl0";
112
+ /** Error border, at rest and while focused (also on a ghost frame). */
113
+ var ERROR_CSS = "gx-CodeEditor-ERROR_CSS-e16ii38u";
114
+ /** CodeBlock's token table mapped onto `@lezer/highlight` tags, so read-only and editable code match. */
115
+ function getHighlightStyles() {
116
+ return [
117
+ {
118
+ tag: [
119
+ tags.comment,
120
+ tags.lineComment,
121
+ tags.blockComment,
122
+ tags.docComment,
123
+ tags.meta,
124
+ tags.annotation,
125
+ tags.processingInstruction
126
+ ],
127
+ color: t.color.text.tertiary,
128
+ fontStyle: "italic"
129
+ },
130
+ {
131
+ tag: [
132
+ tags.punctuation,
133
+ tags.operator,
134
+ tags.separator,
135
+ tags.bracket,
136
+ tags.angleBracket,
137
+ tags.squareBracket,
138
+ tags.paren,
139
+ tags.brace,
140
+ tags.derefOperator
141
+ ],
142
+ color: t.color.text.secondary
143
+ },
144
+ {
145
+ tag: [
146
+ tags.keyword,
147
+ tags.modifier,
148
+ tags.controlKeyword,
149
+ tags.operatorKeyword,
150
+ tags.definitionKeyword,
151
+ tags.moduleKeyword,
152
+ tags.self,
153
+ tags.bool,
154
+ tags.null,
155
+ tags.atom,
156
+ tags.constant(tags.name)
157
+ ],
158
+ color: t.color.text.purple
159
+ },
160
+ {
161
+ tag: [
162
+ tags.string,
163
+ tags.special(tags.string),
164
+ tags.character,
165
+ tags.escape,
166
+ tags.docString,
167
+ tags.attributeValue,
168
+ tags.regexp,
169
+ tags.url,
170
+ tags.link,
171
+ tags.inserted
172
+ ],
173
+ color: t.color.text.green
174
+ },
175
+ {
176
+ tag: [
177
+ tags.number,
178
+ tags.integer,
179
+ tags.float,
180
+ tags.unit
181
+ ],
182
+ color: t.color.text.orange
183
+ },
184
+ {
185
+ tag: [
186
+ tags.function(tags.variableName),
187
+ tags.function(tags.propertyName),
188
+ tags.definition(tags.function(tags.variableName))
189
+ ],
190
+ color: t.color.text.blue
191
+ },
192
+ {
193
+ tag: [
194
+ tags.className,
195
+ tags.typeName,
196
+ tags.definition(tags.typeName),
197
+ tags.namespace,
198
+ tags.standard(tags.variableName)
199
+ ],
200
+ color: t.color.text.yellow
201
+ },
202
+ {
203
+ tag: [tags.tagName, tags.labelName],
204
+ color: t.color.text.pink
205
+ },
206
+ {
207
+ tag: [tags.attributeName, tags.special(tags.variableName)],
208
+ color: t.color.text.teal
209
+ },
210
+ {
211
+ tag: [tags.deleted, tags.invalid],
212
+ color: t.color.text.red
213
+ },
214
+ {
215
+ tag: [
216
+ tags.heading,
217
+ tags.heading1,
218
+ tags.heading2,
219
+ tags.heading3,
220
+ tags.heading4,
221
+ tags.heading5,
222
+ tags.heading6,
223
+ tags.strong
224
+ ],
225
+ fontWeight: t.font.mono.weight.medium
226
+ },
227
+ {
228
+ tag: tags.emphasis,
229
+ fontStyle: "italic"
230
+ },
231
+ {
232
+ tag: tags.strikethrough,
233
+ color: t.color.text.tertiary,
234
+ textDecoration: "line-through"
235
+ }
236
+ ];
36
237
  }
37
- function createSearchPanelThemeExtension(theme) {
238
+ /** The focus outline, written out for CodeMirror's own buttons (the `FOCUS_RING` values). */
239
+ function getFocusOutline() {
240
+ return {
241
+ borderColor: t.color.border.focused,
242
+ outline: `1px solid ${t.color.border.focused}`,
243
+ outlineOffset: "1px"
244
+ };
245
+ }
246
+ /** Everything that is not syntax: content inset, gutters, popups, the search panel. All `t.*`. */
247
+ function getEditorViewTheme() {
248
+ const hairline = `0.5px solid ${t.color.border.primary}`;
249
+ const sansBodyMd = {
250
+ fontFamily: t.font.sans.family,
251
+ fontSize: t.font.sans.size.body_md
252
+ };
38
253
  return EditorView.theme({
39
- ".cm-panels": { backgroundColor: "transparent" },
40
- ".cm-panels.cm-panels-top": { borderBottom: "none" },
41
- ".cm-panels.cm-panels-bottom": { borderTop: "none" },
254
+ "&.cm-focused": { outline: "none" },
255
+ ".cm-scroller": {
256
+ overflow: "auto",
257
+ fontFamily: t.font.mono.family,
258
+ lineHeight: t.font.mono.height.body_lg,
259
+ letterSpacing: t.font.mono.spacing.body_md
260
+ },
261
+ ".cm-content": { padding: `${t.space[8]} 0` },
262
+ ".cm-line": { padding: `0 ${t.space[12]}` },
263
+ ".cm-gutters": {
264
+ border: "none",
265
+ color: t.color.text.tertiary
266
+ },
267
+ ".cm-lineNumbers .cm-gutterElement": {
268
+ padding: `0 ${t.space[4]} 0 ${t.space[12]}`,
269
+ fontVariantNumeric: "tabular-nums"
270
+ },
271
+ ".cm-foldGutter .cm-gutterElement": {
272
+ padding: `0 ${t.space[4]}`,
273
+ color: t.color.text.tertiary
274
+ },
275
+ ".cm-activeLineGutter": { backgroundColor: "transparent" },
276
+ ".cm-placeholder": { color: t.color.text.tertiary },
277
+ ".cm-matchingBracket": {
278
+ backgroundColor: t.color.opacity.fg12,
279
+ outline: "none"
280
+ },
281
+ ".cm-nonmatchingBracket": {
282
+ color: t.color.text.error,
283
+ backgroundColor: "transparent"
284
+ },
285
+ ".cm-searchMatch": {
286
+ backgroundColor: t.color.background.yellow,
287
+ outline: "none"
288
+ },
289
+ ".cm-searchMatch.cm-searchMatch-selected": { backgroundColor: t.color.background.yellow },
290
+ ".cm-foldPlaceholder": {
291
+ backgroundColor: t.color.background.tertiary,
292
+ border: hairline,
293
+ borderRadius: t.radius.sm,
294
+ color: t.color.text.secondary,
295
+ padding: `0 ${t.space[4]}`
296
+ },
297
+ ".cm-tooltip": {
298
+ backgroundColor: t.color.background.tertiary,
299
+ border: hairline,
300
+ borderRadius: t.radius.md,
301
+ color: t.color.text.primary,
302
+ overflow: "hidden"
303
+ },
304
+ ".cm-tooltip.cm-tooltip-autocomplete > ul": {
305
+ fontFamily: t.font.mono.family,
306
+ fontSize: t.font.mono.size.body_md
307
+ },
308
+ ".cm-tooltip.cm-tooltip-autocomplete > ul > li": {
309
+ padding: `${t.space[2]} ${t.space[8]}`,
310
+ lineHeight: t.font.mono.height.body_md
311
+ },
312
+ ".cm-tooltip.cm-tooltip-autocomplete > ul > li[aria-selected]": {
313
+ backgroundColor: t.color.background.pressed,
314
+ color: t.color.text.primary
315
+ },
316
+ ".cm-completionDetail": {
317
+ color: t.color.text.tertiary,
318
+ fontStyle: "normal"
319
+ },
320
+ ".cm-completionMatchedText": {
321
+ textDecoration: "none",
322
+ fontWeight: t.font.mono.weight.medium
323
+ },
324
+ ".cm-panels": {
325
+ backgroundColor: "transparent",
326
+ color: t.color.text.primary
327
+ },
328
+ ".cm-panels.cm-panels-top": {
329
+ borderBottom: "none",
330
+ padding: t.space[8]
331
+ },
332
+ ".cm-panels.cm-panels-bottom": {
333
+ borderTop: "none",
334
+ padding: t.space[8]
335
+ },
42
336
  ".cm-panel.cm-search": {
43
- margin: "6px",
44
- padding: "6px",
337
+ display: "flex",
338
+ alignItems: "center",
339
+ gap: t.space[4],
45
340
  width: "fit-content",
46
- maxWidth: "calc(100% - 12px)",
47
- borderRadius: "5px",
48
- border: `0.5px solid ${theme.color.border.primary}`,
49
- backgroundColor: theme.color.background.primary,
50
- color: theme.color.text.primary,
51
- fontFamily: theme.font.sans.family,
52
- fontSize: theme.font.sans.size.body_md
53
- },
54
- ".cm-panel.cm-search input, .cm-panel.cm-search button, .cm-panel.cm-search label": { margin: 0 },
55
- ".cm-panel.cm-search .cm-textfield[name=replace], .cm-panel.cm-search .cm-button[name=replace], .cm-panel.cm-search .cm-button[name=replaceAll], .cm-panel.cm-search label:has(input[name=case]), .cm-panel.cm-search label:has(input[name=re]), .cm-panel.cm-search label:has(input[name=word]), .cm-panel.cm-search [name=close], .cm-panel.cm-search br": { display: "none" },
341
+ maxWidth: "100%",
342
+ boxSizing: "border-box",
343
+ padding: t.space[4],
344
+ backgroundColor: t.color.background.tertiary,
345
+ border: hairline,
346
+ borderRadius: t.radius.md,
347
+ ...sansBodyMd
348
+ },
349
+ ".cm-panel.cm-search .cm-textfield[name=replace], .cm-panel.cm-search .cm-button[name=replace], .cm-panel.cm-search .cm-button[name=replaceAll], .cm-panel.cm-search label, .cm-panel.cm-search [name=close], .cm-panel.cm-search br": { display: "none" },
56
350
  ".cm-panel.cm-search .cm-textfield": {
57
- height: "24px",
58
- minHeight: "24px",
59
- maxHeight: "24px",
60
- padding: "0 6px",
61
- margin: 0,
351
+ height: t.size.control.small,
62
352
  boxSizing: "border-box",
63
- alignSelf: "center",
64
- verticalAlign: "middle",
65
- borderRadius: "5px",
66
- border: `0.5px solid ${theme.color.border.primary}`,
67
- background: theme.color.background.primary,
68
- color: theme.color.text.primary,
69
- fontFamily: theme.font.sans.family,
70
- fontSize: theme.font.sans.size.body_md,
71
- lineHeight: "24px",
72
- fontWeight: theme.font.sans.weight.regular,
353
+ margin: 0,
354
+ padding: `0 ${t.space[8]}`,
355
+ border: hairline,
356
+ borderRadius: t.radius.md,
357
+ backgroundColor: t.color.background.primary,
358
+ color: t.color.text.primary,
359
+ ...sansBodyMd,
73
360
  outline: "none",
74
- "&::placeholder": { color: theme.color.text.tertiary },
75
- "&:focus": { borderColor: theme.color.border.selected }
361
+ transition: `border-color ${t.duration.fast} ease-in-out`,
362
+ "&::placeholder": { color: t.color.text.tertiary },
363
+ "&:focus": { borderColor: t.color.border.focused }
76
364
  },
77
365
  ".cm-panel.cm-search .cm-button": {
78
- height: "24px",
79
- minHeight: "24px",
80
- maxHeight: "24px",
81
- padding: "0 10px",
82
- margin: 0,
366
+ height: t.size.control.small,
83
367
  boxSizing: "border-box",
84
- alignSelf: "center",
85
- borderRadius: "5px",
368
+ margin: 0,
369
+ padding: `0 ${t.space[8]}`,
86
370
  border: "0.5px solid transparent",
371
+ borderRadius: t.radius.md,
87
372
  background: "transparent",
88
373
  backgroundImage: "none",
89
- color: theme.color.text.primary,
90
- fontFamily: theme.font.sans.family,
91
- fontSize: theme.font.sans.size.body_md,
92
- lineHeight: "24px",
93
- fontWeight: theme.font.sans.weight.medium,
374
+ color: t.color.text.primary,
375
+ ...sansBodyMd,
376
+ fontWeight: t.font.sans.weight.medium,
94
377
  textTransform: "capitalize",
95
378
  cursor: "pointer",
96
- display: "inline-flex",
97
- alignItems: "center",
98
- justifyContent: "center",
99
- verticalAlign: "middle",
100
- whiteSpace: "nowrap",
101
- appearance: "none",
102
- WebkitAppearance: "none",
103
- boxShadow: "none",
104
- filter: "none",
105
- transition: "background-color 0.075s ease-in-out, border 0.075s ease-in-out",
106
- "&:hover": {
107
- backgroundColor: theme.color.background.secondary,
108
- borderColor: theme.color.border.primary
109
- }
379
+ transition: `background-color ${t.duration.fast} ease-in-out`,
380
+ "&:hover": { backgroundColor: t.color.background.hovered },
381
+ "&:focus-visible": getFocusOutline()
110
382
  }
111
383
  });
112
384
  }
113
- function createCodeMirrorThemeExtension(theme, activeTheme, variant, isReadOnly) {
114
- const codeMirrorTheme = match(activeTheme).returnType().with(GalaxyTheme.DARK, () => "dark").with(GalaxyTheme.LIGHT, () => "light").exhaustive();
115
- const settingsBackgroundColor = getBackgroundColorFromVariant(theme, variant);
116
- const settingsSelectionColor = isReadOnly ? theme.color.opacity.bw0 : theme.color.opacity.bw16Alt;
117
- const settingsSelectionMatchColor = getBackgroundColorFromVariant(theme, variant);
118
- const settingsGutterBackgroundColor = getBackgroundColorFromVariant(theme, variant);
119
- const settingsGutterActiveForegroundColor = isReadOnly ? theme.color.text.tertiary : theme.color.text.primary;
120
- return createTheme({
121
- theme: codeMirrorTheme,
385
+ /** The DLS CodeMirror theme per `isDark` × `isReadOnly`, built on first use (never at module scope). */
386
+ var THEME_CACHE = /* @__PURE__ */ new Map();
387
+ /** CodeMirror's theme from tokens; `isDark` only sets CodeMirror's own `dark` flag. */
388
+ function getCodeEditorTheme(isDark, isReadOnly) {
389
+ const key = `${isDark}:${isReadOnly}`;
390
+ const cached = THEME_CACHE.get(key);
391
+ if (cached !== void 0) return cached;
392
+ const theme = [createTheme({
393
+ theme: isDark ? "dark" : "light",
122
394
  settings: {
123
- background: settingsBackgroundColor,
124
- foreground: theme.color.text.primary,
125
- caret: theme.color.text.primary,
126
- selection: settingsSelectionColor,
127
- selectionMatch: settingsSelectionMatchColor,
395
+ background: "transparent",
396
+ foreground: t.color.text.primary,
397
+ caret: t.color.text.primary,
398
+ selection: t.color.opacity.fg16,
399
+ selectionMatch: "transparent",
128
400
  lineHighlight: "transparent",
129
- gutterBackground: settingsGutterBackgroundColor,
130
- gutterForeground: theme.color.text.tertiary,
131
- gutterActiveForeground: settingsGutterActiveForegroundColor,
401
+ gutterBackground: `var(--gx-code-editor-fill, ${t.color.background.primary})`,
402
+ gutterForeground: t.color.text.tertiary,
403
+ gutterActiveForeground: isReadOnly ? t.color.text.tertiary : t.color.text.primary,
132
404
  gutterBorder: "transparent",
133
- fontFamily: theme.font.mono.family,
134
- fontSize: theme.font.mono.size.body_md
135
- },
136
- styles: [
137
- {
138
- tag: tags.comment,
139
- color: theme.color.text.tertiary,
140
- fontStyle: "italic"
141
- },
142
- {
143
- tag: tags.lineComment,
144
- color: theme.color.text.tertiary,
145
- fontStyle: "italic"
146
- },
147
- {
148
- tag: tags.blockComment,
149
- color: theme.color.text.tertiary,
150
- fontStyle: "italic"
151
- },
152
- {
153
- tag: tags.variableName,
154
- color: theme.color.text.primary
155
- },
156
- {
157
- tag: tags.definition(tags.variableName),
158
- color: theme.color.text.primary
159
- },
160
- {
161
- tag: tags.propertyName,
162
- color: theme.color.text.purple
163
- },
164
- {
165
- tag: tags.definition(tags.propertyName),
166
- color: theme.color.text.purple
167
- },
168
- {
169
- tag: tags.string,
170
- color: theme.color.text.primary
171
- },
172
- {
173
- tag: tags.special(tags.string),
174
- color: theme.color.text.primary
175
- },
176
- {
177
- tag: tags.character,
178
- color: theme.color.text.primary
179
- },
180
- {
181
- tag: tags.escape,
182
- color: theme.color.text.primary
183
- },
184
- {
185
- tag: tags.number,
186
- color: theme.color.text.pink
187
- },
188
- {
189
- tag: tags.integer,
190
- color: theme.color.text.pink
191
- },
192
- {
193
- tag: tags.float,
194
- color: theme.color.text.pink
195
- },
196
- {
197
- tag: tags.bool,
198
- color: theme.color.text.pink
199
- },
200
- {
201
- tag: tags.null,
202
- color: theme.color.text.pink
203
- },
204
- {
205
- tag: tags.atom,
206
- color: theme.color.text.pink
207
- },
208
- {
209
- tag: tags.keyword,
210
- color: theme.color.text.blue,
211
- fontWeight: "500"
212
- },
213
- {
214
- tag: tags.modifier,
215
- color: theme.color.text.blue
216
- },
217
- {
218
- tag: tags.self,
219
- color: theme.color.text.blue
220
- },
221
- {
222
- tag: tags.operator,
223
- color: theme.color.text.tertiary
224
- },
225
- {
226
- tag: tags.punctuation,
227
- color: theme.color.text.tertiary
228
- },
229
- {
230
- tag: tags.separator,
231
- color: theme.color.text.tertiary
232
- },
233
- {
234
- tag: tags.bracket,
235
- color: theme.color.text.tertiary
236
- },
237
- {
238
- tag: tags.angleBracket,
239
- color: theme.color.text.tertiary
240
- },
241
- {
242
- tag: tags.squareBracket,
243
- color: theme.color.text.tertiary
244
- },
245
- {
246
- tag: tags.paren,
247
- color: theme.color.text.tertiary
248
- },
249
- {
250
- tag: tags.brace,
251
- color: theme.color.text.tertiary
252
- },
253
- {
254
- tag: tags.special(tags.brace),
255
- color: theme.color.text.teal
256
- },
257
- {
258
- tag: tags.className,
259
- color: theme.color.text.purple
260
- },
261
- {
262
- tag: tags.typeName,
263
- color: theme.color.text.purple
264
- },
265
- {
266
- tag: tags.definition(tags.typeName),
267
- color: theme.color.text.purple
268
- },
269
- {
270
- tag: tags.namespace,
271
- color: theme.color.text.teal
272
- },
273
- {
274
- tag: tags.function(tags.variableName),
275
- color: theme.color.text.blue
276
- },
277
- {
278
- tag: tags.definition(tags.function(tags.variableName)),
279
- color: theme.color.text.blue
280
- },
281
- {
282
- tag: tags.function(tags.propertyName),
283
- color: theme.color.text.teal
284
- },
285
- {
286
- tag: tags.tagName,
287
- color: theme.color.text.pink
288
- },
289
- {
290
- tag: tags.attributeName,
291
- color: theme.color.text.blue
292
- },
293
- {
294
- tag: tags.attributeValue,
295
- color: theme.color.text.green
296
- },
297
- {
298
- tag: tags.heading,
299
- color: theme.color.text.pink,
300
- fontWeight: "bold"
301
- },
302
- {
303
- tag: tags.heading1,
304
- color: theme.color.text.pink,
305
- fontWeight: "bold"
306
- },
307
- {
308
- tag: tags.heading2,
309
- color: theme.color.text.orange,
310
- fontWeight: "bold"
311
- },
312
- {
313
- tag: tags.heading3,
314
- color: theme.color.text.teal,
315
- fontWeight: "bold"
316
- },
317
- {
318
- tag: tags.link,
319
- color: theme.color.text.blue,
320
- textDecoration: "underline"
321
- },
322
- {
323
- tag: tags.url,
324
- color: theme.color.text.teal,
325
- textDecoration: "underline"
326
- },
327
- {
328
- tag: tags.emphasis,
329
- color: theme.color.text.lime,
330
- fontStyle: "italic"
331
- },
332
- {
333
- tag: tags.strong,
334
- color: theme.color.text.purple,
335
- fontWeight: "bold"
336
- },
337
- {
338
- tag: tags.strikethrough,
339
- color: theme.color.text.tertiary,
340
- textDecoration: "line-through"
341
- },
342
- {
343
- tag: tags.regexp,
344
- color: theme.color.text.yellow
345
- },
346
- {
347
- tag: tags.labelName,
348
- color: theme.color.text.lime
349
- },
350
- {
351
- tag: tags.meta,
352
- color: theme.color.text.tertiary
353
- },
354
- {
355
- tag: tags.annotation,
356
- color: theme.color.text.tertiary
357
- },
358
- {
359
- tag: tags.processingInstruction,
360
- color: theme.color.text.tertiary
361
- },
362
- {
363
- tag: tags.invalid,
364
- color: theme.color.text.error
365
- }
366
- ]
367
- });
405
+ fontFamily: t.font.mono.family,
406
+ fontSize: t.font.mono.size.body_md
407
+ },
408
+ styles: getHighlightStyles()
409
+ }), getEditorViewTheme()];
410
+ THEME_CACHE.set(key, theme);
411
+ return theme;
368
412
  }
369
- /**
370
- * A CodeMirror 6 editor themed to match DLS — Berkeley Mono, theme-aware syntax
371
- * colors, hairline border.
372
- *
373
- * Controlled: `content` is the document and `onChange` fires per keystroke.
374
- * Extend it through `customExtensions` rather than forking the component.
375
- */
376
- var CodeEditor = ({ content, placeholder, lang, customExtensions = [], onChange, onExecute, borderRadius, noBorder, isReadOnly, noLineNumbers, padding, variant = "PRIMARY" }) => {
377
- const { theme, activeTheme } = useGalaxyTheme();
378
- const codeMirrorTheme = useMemo(() => createCodeMirrorThemeExtension(theme, activeTheme, variant, isReadOnly), [
379
- theme,
380
- activeTheme,
381
- variant,
382
- isReadOnly
383
- ]);
384
- const langExtensions = useMemo(() => {
385
- if (!lang) return [];
386
- loadLanguage(lang);
387
- const langExtension = langs[lang];
388
- if (langExtension) return [langExtension()];
389
- return [];
390
- }, [lang]);
391
- const keymapExtensions = useMemo(() => {
392
- if (!onExecute) return [];
393
- return [keymap.of([{
394
- key: "Mod-Enter",
395
- run: () => {
396
- onExecute();
397
- return true;
398
- }
399
- }])];
400
- }, [onExecute]);
401
- const searchPanelTheme = useMemo(() => createSearchPanelThemeExtension(theme), [theme]);
402
- const noLineNumbersTheme = useMemo(() => {
403
- if (!noLineNumbers) return [];
404
- return [EditorView.theme({ ".cm-gutters": { display: "none" } })];
405
- }, [noLineNumbers]);
406
- const paddingTheme = useMemo(() => {
407
- return [EditorView.theme({ ".cm-content": { padding: getCssSizeValue(padding ?? 4) } })];
408
- }, [padding]);
409
- const extensions = useMemo(() => {
410
- return [
411
- ...langExtensions,
412
- ...keymapExtensions,
413
- searchPanelTheme,
414
- ...noLineNumbersTheme,
415
- ...paddingTheme,
416
- ...customExtensions
417
- ];
418
- }, [
419
- langExtensions,
420
- keymapExtensions,
421
- searchPanelTheme,
422
- noLineNumbersTheme,
423
- paddingTheme,
424
- customExtensions
413
+ /** The pending or settled import of the grammar package (set lazily, never at module scope). */
414
+ var langsModulePromise;
415
+ /** One stable `Extension` per language, shared by every editor. */
416
+ var LANGUAGE_CACHE = /* @__PURE__ */ new Map();
417
+ /** Loads a grammar (the package is its own lazy chunk); resolves `undefined` for `PLAIN`. */
418
+ async function loadCodeEditorLanguage(language) {
419
+ if (language === "PLAIN") return void 0;
420
+ const cached = LANGUAGE_CACHE.get(language);
421
+ if (cached !== void 0) return cached;
422
+ langsModulePromise ??= import("@uiw/codemirror-extensions-langs");
423
+ const { langs } = await langsModulePromise;
424
+ const extension = langs[CODE_EDITOR_LANGUAGE_TO_LANG_NAME_MAP[language]]();
425
+ LANGUAGE_CACHE.set(language, extension);
426
+ return extension;
427
+ }
428
+ /** True for a non-empty string. */
429
+ function isFilled(text) {
430
+ return text !== void 0 && text !== "";
431
+ }
432
+ /** The multi-line code editor: CodeMirror 6 in the DLS input frame. */
433
+ var CodeEditor = forwardRef(function CodeEditor({ value, defaultValue = "", onChange, onExecute, language = "PLAIN", placeholder, variant = "PRIMARY", isGhost = false, hasLineNumbers = false, isReadOnly = false, isError = false, extensions, ariaLabel, id, className, style, ...rest }, ref) {
434
+ const field = useField();
435
+ const themeContext = useContext(GalaxyThemeContext);
436
+ const [currentValue, setValue] = useControlledState({
437
+ value,
438
+ defaultValue,
439
+ onChange
440
+ });
441
+ const hasError = isError || field?.isError === true;
442
+ const isEditable = !isReadOnly;
443
+ const ariaPassthrough = {};
444
+ const dataPassthrough = {};
445
+ for (const [key, attribute] of Object.entries(rest)) if (key.startsWith("data-")) dataPassthrough[key] = attribute;
446
+ else if (key.startsWith("aria-") && attribute !== void 0 && attribute !== null) ariaPassthrough[key] = String(attribute);
447
+ const { "aria-label": passedAriaLabel, "aria-describedby": passedDescribedBy, ...otherAria } = ariaPassthrough;
448
+ const contentAttributeMap = {};
449
+ const contentId = field?.controlId ?? id;
450
+ if (isFilled(contentId)) contentAttributeMap.id = contentId;
451
+ const accessibleName = ariaLabel ?? passedAriaLabel;
452
+ if (isFilled(accessibleName)) contentAttributeMap["aria-label"] = accessibleName;
453
+ if (field?.labelId !== void 0) contentAttributeMap["aria-labelledby"] = field.labelId;
454
+ const describedBy = [field?.describedBy, passedDescribedBy].filter(isFilled).join(" ");
455
+ if (describedBy !== "") contentAttributeMap["aria-describedby"] = describedBy;
456
+ if (hasError) contentAttributeMap["aria-invalid"] = "true";
457
+ if (field?.isRequired === true) contentAttributeMap["aria-required"] = "true";
458
+ if (isReadOnly) contentAttributeMap["aria-readonly"] = "true";
459
+ Object.assign(contentAttributeMap, otherAria);
460
+ const contentAttributesKey = JSON.stringify(contentAttributeMap);
461
+ const contentAttributes = useMemo(() => EditorView.contentAttributes.of(JSON.parse(contentAttributesKey)), [contentAttributesKey]);
462
+ const onExecuteRef = useRef(onExecute);
463
+ onExecuteRef.current = onExecute;
464
+ const executeKeymap = useMemo(() => Prec.highest(keymap.of([{
465
+ key: "Mod-Enter",
466
+ run: (view) => {
467
+ const handler = onExecuteRef.current;
468
+ if (view.state.readOnly || handler === void 0) return false;
469
+ handler(view.state.doc.toString());
470
+ return true;
471
+ }
472
+ }])), []);
473
+ const [loadedLanguage, setLoadedLanguage] = useState();
474
+ useEffect(() => {
475
+ if (language === "PLAIN") return;
476
+ let isCurrent = true;
477
+ loadCodeEditorLanguage(language).then((extension) => {
478
+ if (isCurrent && extension !== void 0) setLoadedLanguage({
479
+ language,
480
+ extension
481
+ });
482
+ }, () => {});
483
+ return () => {
484
+ isCurrent = false;
485
+ };
486
+ }, [language]);
487
+ const languageExtension = loadedLanguage !== void 0 && loadedLanguage.language === language ? loadedLanguage.extension : void 0;
488
+ const baseColor = themeContext?.theme.color.background.base;
489
+ const themeExtension = getCodeEditorTheme(baseColor === void 0 ? false : rgbToHsl(hexToRgb(baseColor)).l < .5, isReadOnly);
490
+ const allExtensions = useMemo(() => [
491
+ contentAttributes,
492
+ executeKeymap,
493
+ ...languageExtension === void 0 ? [] : [languageExtension],
494
+ ...extensions ?? []
495
+ ], [
496
+ contentAttributes,
497
+ executeKeymap,
498
+ languageExtension,
499
+ extensions
425
500
  ]);
426
- return /* @__PURE__ */ jsx(CodeEditorWrapper, {
427
- $borderRadius: borderRadius,
428
- $noBorder: noBorder,
501
+ const basicSetup = useMemo(() => ({
502
+ lineNumbers: hasLineNumbers,
503
+ foldGutter: hasLineNumbers,
504
+ highlightActiveLine: false,
505
+ highlightActiveLineGutter: false,
506
+ highlightSelectionMatches: false
507
+ }), [hasLineNumbers]);
508
+ const setValueRef = useRef(setValue);
509
+ setValueRef.current = setValue;
510
+ const handleChange = useCallback((next) => setValueRef.current(next), []);
511
+ return /* @__PURE__ */ jsx(Root, {
512
+ ref,
513
+ ...dataPassthrough,
514
+ className: cx(isGhost ? GHOST_CSS : CODE_EDITOR_VARIANT_TO_CSS_MAP[variant], hasError && ERROR_CSS, className),
515
+ style,
429
516
  children: /* @__PURE__ */ jsx(CodeMirror, {
430
- value: content,
431
- placeholder,
432
- width: "100%",
517
+ value: currentValue,
518
+ onChange: handleChange,
519
+ theme: themeExtension,
520
+ basicSetup,
521
+ readOnly: isReadOnly,
522
+ editable: true,
523
+ indentWithTab: isEditable,
524
+ placeholder: placeholder ?? "",
433
525
  height: "100%",
434
- theme: codeMirrorTheme,
435
- editable: !isReadOnly,
436
- basicSetup: { lineNumbers: !noLineNumbers },
437
- extensions,
438
- onChange
526
+ width: "100%",
527
+ extensions: allExtensions
439
528
  })
440
529
  });
441
- };
530
+ });
531
+ CodeEditor.displayName = "CodeEditor";
442
532
  //#endregion
443
- export { CodeEditorVariant, createCodeMirrorThemeExtension, createSearchPanelThemeExtension, CodeEditor as default };
533
+ export { CodeEditorLanguage, CodeEditorVariant, CodeEditor as default };