@galaxy-io/dls 1.6.1 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (540) hide show
  1. package/README.md +47 -50
  2. package/biome/index.json +74 -0
  3. package/biome/plugins/no-hex-literal.grit +20 -0
  4. package/biome/plugins/no-inline-style.grit +13 -0
  5. package/biome/plugins/no-margin.grit +9 -0
  6. package/biome/plugins/warn/no-hex-literal.grit +23 -0
  7. package/biome/plugins/warn/no-inline-style.grit +13 -0
  8. package/biome/plugins/warn/no-margin.grit +9 -0
  9. package/dist/a11y/FocusScope.d.ts +44 -0
  10. package/dist/a11y/FocusScope.js +229 -0
  11. package/dist/a11y/VisuallyHidden.d.ts +21 -0
  12. package/dist/a11y/VisuallyHidden.js +30 -0
  13. package/dist/avatar/Avatar.d.ts +56 -14
  14. package/dist/avatar/Avatar.js +250 -96
  15. package/dist/avatar/AvatarGroup.d.ts +43 -0
  16. package/dist/avatar/AvatarGroup.js +153 -0
  17. package/dist/backgrounds/GridBackground.d.ts +48 -0
  18. package/dist/backgrounds/GridBackground.js +146 -0
  19. package/dist/beacons/Beacon.d.ts +86 -22
  20. package/dist/beacons/Beacon.js +170 -47
  21. package/dist/brand/GalaxyFilamentWordmark.d.ts +30 -0
  22. package/dist/brand/GalaxyFilamentWordmark.js +39 -0
  23. package/dist/brand/GalaxyLogomark.d.ts +26 -0
  24. package/dist/brand/GalaxyLogomark.js +41 -0
  25. package/dist/brand/GalaxyLogomarkAnimation.d.ts +36 -0
  26. package/dist/brand/GalaxyLogomarkAnimation.js +107 -0
  27. package/dist/brand/GalaxyWordmark.d.ts +30 -0
  28. package/dist/brand/GalaxyWordmark.js +63 -0
  29. package/dist/brand/assets/galaxy-logomark-animation.js +136678 -0
  30. package/dist/brand/brandMark.d.ts +26 -0
  31. package/dist/brand/brandMark.js +35 -0
  32. package/dist/buttons/Button.d.ts +148 -59
  33. package/dist/buttons/Button.js +437 -227
  34. package/dist/buttons/ButtonGroup.d.ts +38 -0
  35. package/dist/buttons/ButtonGroup.js +68 -0
  36. package/dist/buttons/CopyButton.d.ts +77 -0
  37. package/dist/buttons/CopyButton.js +65 -0
  38. package/dist/charts/AreaChart.d.ts +49 -0
  39. package/dist/charts/AreaChart.js +31 -0
  40. package/dist/charts/BarChart.d.ts +54 -67
  41. package/dist/charts/BarChart.js +160 -124
  42. package/dist/charts/ChartAxis.d.ts +35 -40
  43. package/dist/charts/ChartAxis.js +114 -90
  44. package/dist/charts/ChartCategoryTargets.d.ts +12 -26
  45. package/dist/charts/ChartCategoryTargets.js +33 -20
  46. package/dist/charts/ChartFrame.d.ts +71 -116
  47. package/dist/charts/ChartFrame.js +306 -97
  48. package/dist/charts/ChartGroupProvider.d.ts +30 -41
  49. package/dist/charts/ChartGroupProvider.js +20 -7
  50. package/dist/charts/ChartLegend.d.ts +37 -48
  51. package/dist/charts/ChartLegend.js +243 -125
  52. package/dist/charts/ChartMarkTargets.d.ts +12 -28
  53. package/dist/charts/ChartMarkTargets.js +34 -20
  54. package/dist/charts/ChartPrimitives.d.ts +50 -305
  55. package/dist/charts/ChartPrimitives.js +65 -413
  56. package/dist/charts/ChartTooltip.d.ts +20 -26
  57. package/dist/charts/ChartTooltip.js +77 -40
  58. package/dist/charts/Heatmap.d.ts +35 -0
  59. package/dist/charts/Heatmap.js +307 -0
  60. package/dist/charts/LineChart.d.ts +54 -47
  61. package/dist/charts/LineChart.js +174 -121
  62. package/dist/charts/PieChart.d.ts +32 -53
  63. package/dist/charts/PieChart.js +159 -136
  64. package/dist/charts/Sparkline.d.ts +107 -0
  65. package/dist/charts/Sparkline.js +244 -0
  66. package/dist/charts/StatChart.d.ts +37 -13
  67. package/dist/charts/StatChart.js +82 -35
  68. package/dist/charts/barChartGeometry.d.ts +138 -86
  69. package/dist/charts/barChartGeometry.js +122 -101
  70. package/dist/charts/barChartLegend.d.ts +14 -18
  71. package/dist/charts/barChartLegend.js +18 -13
  72. package/dist/charts/chartFormat.d.ts +12 -18
  73. package/dist/charts/chartFormat.js +20 -52
  74. package/dist/charts/chartPalette.d.ts +33 -0
  75. package/dist/charts/chartPalette.js +68 -0
  76. package/dist/charts/chartScales.d.ts +41 -108
  77. package/dist/charts/chartScales.js +62 -128
  78. package/dist/charts/chartSelection.d.ts +15 -0
  79. package/dist/charts/chartSelection.js +22 -0
  80. package/dist/charts/constants.d.ts +100 -256
  81. package/dist/charts/constants.js +109 -275
  82. package/dist/charts/heatmapGeometry.d.ts +95 -0
  83. package/dist/charts/heatmapGeometry.js +155 -0
  84. package/dist/charts/lineChartGeometry.d.ts +108 -58
  85. package/dist/charts/lineChartGeometry.js +120 -78
  86. package/dist/charts/pieChartGeometry.d.ts +66 -40
  87. package/dist/charts/pieChartGeometry.js +68 -38
  88. package/dist/charts/types.d.ts +206 -466
  89. package/dist/charts/types.js +55 -144
  90. package/dist/charts/useCartesianChartLayout.d.ts +28 -59
  91. package/dist/charts/useCartesianChartLayout.js +47 -32
  92. package/dist/charts/useChartDimensions.d.ts +19 -40
  93. package/dist/charts/useChartDimensions.js +40 -56
  94. package/dist/charts/useChartFormatters.d.ts +6 -15
  95. package/dist/charts/useChartFormatters.js +4 -9
  96. package/dist/charts/useChartInteraction.d.ts +69 -116
  97. package/dist/charts/useChartInteraction.js +148 -78
  98. package/dist/charts/useChartTooltipPosition.d.ts +29 -39
  99. package/dist/charts/useChartTooltipPosition.js +14 -5
  100. package/dist/charts/useSeriesColorResolver.d.ts +11 -33
  101. package/dist/charts/useSeriesColorResolver.js +19 -12
  102. package/dist/chips/Chip.d.ts +155 -44
  103. package/dist/chips/Chip.js +329 -155
  104. package/dist/chips/ChipGroup.d.ts +53 -0
  105. package/dist/chips/ChipGroup.js +98 -0
  106. package/dist/drawer/Drawer.d.ts +83 -17
  107. package/dist/drawer/Drawer.js +399 -65
  108. package/dist/dropdown/Dropdown.d.ts +80 -63
  109. package/dist/dropdown/Dropdown.js +127 -129
  110. package/dist/editor/CodeEditor.d.ts +119 -40
  111. package/dist/editor/CodeEditor.js +490 -400
  112. package/dist/editor/CodeEditorReactWidget.d.ts +20 -17
  113. package/dist/editor/CodeEditorReactWidget.js +28 -21
  114. package/dist/feedback/Alert.d.ts +49 -0
  115. package/dist/feedback/Alert.js +172 -0
  116. package/dist/feedback/EmptyState.d.ts +39 -0
  117. package/dist/feedback/EmptyState.js +109 -0
  118. package/dist/feedback/ProgressBar.d.ts +125 -0
  119. package/dist/feedback/ProgressBar.js +183 -0
  120. package/dist/feedback/ProgressCircle.d.ts +99 -0
  121. package/dist/feedback/ProgressCircle.js +187 -0
  122. package/dist/feedback/Skeleton.d.ts +69 -0
  123. package/dist/feedback/Skeleton.js +130 -0
  124. package/dist/feedback/Spinner.d.ts +63 -0
  125. package/dist/feedback/Spinner.js +141 -0
  126. package/dist/fonts.css +70 -0
  127. package/dist/hooks/internal/useIsClient.d.ts +2 -0
  128. package/dist/hooks/internal/useIsClient.js +14 -0
  129. package/dist/hooks/useClipboard.d.ts +19 -0
  130. package/dist/hooks/useClipboard.js +45 -0
  131. package/dist/hooks/useControlledOpenState.d.ts +21 -0
  132. package/dist/hooks/useControlledOpenState.js +19 -0
  133. package/dist/hooks/useControlledState.d.ts +19 -0
  134. package/dist/hooks/useControlledState.js +22 -0
  135. package/dist/hooks/useDebouncedValue.d.ts +14 -0
  136. package/dist/hooks/useDebouncedValue.js +33 -0
  137. package/dist/hooks/useDisclosure.d.ts +26 -0
  138. package/dist/hooks/useDisclosure.js +36 -0
  139. package/dist/hooks/useDismiss.d.ts +23 -27
  140. package/dist/hooks/useDismiss.js +39 -27
  141. package/dist/hooks/useElementClientSize.d.ts +10 -10
  142. package/dist/hooks/useElementClientSize.js +8 -11
  143. package/dist/hooks/useElementWidth.d.ts +6 -13
  144. package/dist/hooks/useElementWidth.js +6 -14
  145. package/dist/hooks/useField.d.ts +47 -0
  146. package/dist/hooks/useField.js +40 -0
  147. package/dist/hooks/useHotkey.d.ts +77 -0
  148. package/dist/hooks/useHotkey.js +246 -0
  149. package/dist/hooks/useIsMac.d.ts +12 -0
  150. package/dist/hooks/useIsMac.js +27 -0
  151. package/dist/hooks/useIsomorphicLayoutEffect.d.ts +17 -0
  152. package/dist/hooks/useIsomorphicLayoutEffect.js +20 -0
  153. package/dist/hooks/useLocalStorage.d.ts +28 -0
  154. package/dist/hooks/useLocalStorage.js +145 -0
  155. package/dist/hooks/useMediaQuery.d.ts +11 -0
  156. package/dist/hooks/useMediaQuery.js +23 -0
  157. package/dist/hooks/usePrefersReducedMotion.d.ts +12 -0
  158. package/dist/hooks/usePrefersReducedMotion.js +25 -0
  159. package/dist/hooks/useResize.d.ts +42 -62
  160. package/dist/hooks/useResize.js +43 -31
  161. package/dist/icons/Icon.d.ts +64 -37
  162. package/dist/icons/Icon.js +96 -37
  163. package/dist/icons/internal/IconSlot.d.ts +10 -0
  164. package/dist/icons/internal/IconSlot.js +32 -0
  165. package/dist/inputs/CheckboxGroup.d.ts +115 -0
  166. package/dist/inputs/CheckboxGroup.js +183 -0
  167. package/dist/inputs/CheckboxInput.d.ts +98 -28
  168. package/dist/inputs/CheckboxInput.js +218 -88
  169. package/dist/inputs/ColorInput.d.ts +115 -29
  170. package/dist/inputs/ColorInput.js +748 -326
  171. package/dist/inputs/CopyInput.d.ts +49 -20
  172. package/dist/inputs/CopyInput.js +57 -49
  173. package/dist/inputs/CronInput.d.ts +94 -0
  174. package/dist/inputs/CronInput.js +618 -0
  175. package/dist/inputs/DateInput.d.ts +175 -28
  176. package/dist/inputs/DateInput.js +1109 -451
  177. package/dist/inputs/DurationInput.d.ts +101 -0
  178. package/dist/inputs/DurationInput.js +441 -0
  179. package/dist/inputs/Field.d.ts +75 -0
  180. package/dist/inputs/Field.js +247 -0
  181. package/dist/inputs/Fieldset.d.ts +53 -0
  182. package/dist/inputs/Fieldset.js +149 -0
  183. package/dist/inputs/FileInput.d.ts +110 -0
  184. package/dist/inputs/FileInput.js +476 -0
  185. package/dist/inputs/Input.d.ts +148 -187
  186. package/dist/inputs/Input.js +339 -259
  187. package/dist/inputs/KeyValueInput.d.ts +120 -0
  188. package/dist/inputs/KeyValueInput.js +383 -0
  189. package/dist/inputs/MultiSelectInput.d.ts +165 -54
  190. package/dist/inputs/MultiSelectInput.js +175 -559
  191. package/dist/inputs/NumberInput.d.ts +65 -9
  192. package/dist/inputs/NumberInput.js +197 -40
  193. package/dist/inputs/PasswordInput.d.ts +17 -12
  194. package/dist/inputs/PasswordInput.js +33 -33
  195. package/dist/inputs/PinInput.d.ts +117 -0
  196. package/dist/inputs/PinInput.js +364 -0
  197. package/dist/inputs/RadioGroup.d.ts +115 -0
  198. package/dist/inputs/RadioGroup.js +179 -0
  199. package/dist/inputs/RadioInput.d.ts +87 -24
  200. package/dist/inputs/RadioInput.js +182 -95
  201. package/dist/inputs/SearchInput.d.ts +66 -0
  202. package/dist/inputs/SearchInput.js +156 -0
  203. package/dist/inputs/SelectInput.d.ts +195 -55
  204. package/dist/inputs/SelectInput.js +1308 -446
  205. package/dist/inputs/SliderInput.d.ts +150 -30
  206. package/dist/inputs/SliderInput.js +441 -186
  207. package/dist/inputs/SwitchInput.d.ts +109 -0
  208. package/dist/inputs/SwitchInput.js +248 -0
  209. package/dist/inputs/TagInput.d.ts +117 -0
  210. package/dist/inputs/TagInput.js +408 -0
  211. package/dist/inputs/TextAreaInput.d.ts +146 -44
  212. package/dist/inputs/TextAreaInput.js +298 -198
  213. package/dist/inputs/TextInput.d.ts +4 -13
  214. package/dist/inputs/TextInput.js +13 -48
  215. package/dist/inputs/ToggleInput.d.ts +120 -22
  216. package/dist/inputs/ToggleInput.js +262 -116
  217. package/dist/inputs/internal/bareField.d.ts +18 -0
  218. package/dist/inputs/internal/bareField.js +38 -0
  219. package/dist/inputs/internal/devWarn.d.ts +7 -0
  220. package/dist/inputs/internal/devWarn.js +30 -0
  221. package/dist/inputs/internal/fieldFrame.d.ts +34 -0
  222. package/dist/inputs/internal/fieldFrame.js +64 -0
  223. package/dist/inputs/internal/fieldWiring.d.ts +50 -0
  224. package/dist/inputs/internal/fieldWiring.js +38 -0
  225. package/dist/inputs/internal/innerButton.d.ts +2 -0
  226. package/dist/inputs/internal/innerButton.js +24 -0
  227. package/dist/inputs/internal/ownField.d.ts +45 -0
  228. package/dist/inputs/internal/ownField.js +58 -0
  229. package/dist/inputs/internal/predicates.d.ts +9 -0
  230. package/dist/inputs/internal/predicates.js +11 -0
  231. package/dist/inputs/internal/useComboboxPopover.d.ts +46 -0
  232. package/dist/inputs/internal/useComboboxPopover.js +92 -0
  233. package/dist/json/JsonViewer.d.ts +62 -0
  234. package/dist/json/JsonViewer.js +483 -0
  235. package/dist/layout/Box.d.ts +87 -0
  236. package/dist/layout/Box.js +109 -0
  237. package/dist/layout/Divider.d.ts +25 -0
  238. package/dist/layout/Divider.js +70 -0
  239. package/dist/layout/Flex.d.ts +139 -0
  240. package/dist/layout/Flex.js +165 -0
  241. package/dist/layout/FlexItem.d.ts +72 -0
  242. package/dist/layout/FlexItem.js +84 -0
  243. package/dist/layout/Grid.d.ts +140 -0
  244. package/dist/layout/Grid.js +178 -0
  245. package/dist/layout/Portal.d.ts +29 -0
  246. package/dist/layout/Portal.js +27 -0
  247. package/dist/layout/ResizablePanels.d.ts +88 -0
  248. package/dist/layout/ResizablePanels.js +198 -0
  249. package/dist/layout/ResizeHandle.d.ts +48 -0
  250. package/dist/layout/ResizeHandle.js +143 -0
  251. package/dist/layout/ScrollArea.d.ts +30 -0
  252. package/dist/layout/ScrollArea.js +138 -0
  253. package/dist/links/Link.d.ts +101 -1
  254. package/dist/links/Link.js +166 -4
  255. package/dist/lists/BulletedList.d.ts +25 -7
  256. package/dist/lists/BulletedList.js +72 -27
  257. package/dist/lists/DescriptionList.d.ts +91 -0
  258. package/dist/lists/DescriptionList.js +147 -0
  259. package/dist/menu/ContextMenu.d.ts +64 -0
  260. package/dist/menu/ContextMenu.js +34 -0
  261. package/dist/menu/Menu.d.ts +280 -0
  262. package/dist/menu/Menu.js +1003 -0
  263. package/dist/modal/ConfirmDialog.d.ts +55 -0
  264. package/dist/modal/ConfirmDialog.js +151 -0
  265. package/dist/modal/Modal.d.ts +64 -14
  266. package/dist/modal/Modal.js +189 -48
  267. package/dist/navigation/Breadcrumbs.d.ts +65 -0
  268. package/dist/navigation/Breadcrumbs.js +243 -0
  269. package/dist/navigation/CommandPalette.d.ts +83 -0
  270. package/dist/navigation/CommandPalette.js +509 -0
  271. package/dist/navigation/Pagination.d.ts +87 -0
  272. package/dist/navigation/Pagination.js +300 -0
  273. package/dist/navigation/SidebarNav.d.ts +107 -0
  274. package/dist/navigation/SidebarNav.js +341 -0
  275. package/dist/navigation/Stepper.d.ts +52 -0
  276. package/dist/navigation/Stepper.js +207 -0
  277. package/dist/navigation/Tabs.d.ts +113 -0
  278. package/dist/navigation/Tabs.js +543 -0
  279. package/dist/navigation/Topbar.d.ts +20 -0
  280. package/dist/navigation/Topbar.js +62 -0
  281. package/dist/overlay/OverlayProvider.d.ts +28 -32
  282. package/dist/overlay/OverlayProvider.js +42 -93
  283. package/dist/overlay/useOverlay.d.ts +88 -12
  284. package/dist/overlay/useOverlay.js +220 -43
  285. package/dist/overlays/Popover.d.ts +114 -0
  286. package/dist/overlays/Popover.js +389 -0
  287. package/dist/shapes/Circle.d.ts +84 -8
  288. package/dist/shapes/Circle.js +122 -20
  289. package/dist/shapes/Square.d.ts +84 -8
  290. package/dist/shapes/Square.js +123 -20
  291. package/dist/styles/mixins.d.ts +35 -0
  292. package/dist/styles/mixins.js +60 -0
  293. package/dist/styles.css +1 -202
  294. package/dist/table/InfiniteSpreadsheet.d.ts +140 -10
  295. package/dist/table/InfiniteSpreadsheet.js +762 -225
  296. package/dist/table/InfiniteTable.d.ts +116 -14
  297. package/dist/table/InfiniteTable.js +287 -429
  298. package/dist/table/SpreadsheetCellEditor.d.ts +54 -6
  299. package/dist/table/SpreadsheetCellEditor.js +163 -84
  300. package/dist/table/TableCore.d.ts +252 -0
  301. package/dist/table/TableCore.js +1082 -0
  302. package/dist/table/VirtualizedInfiniteTable.d.ts +104 -14
  303. package/dist/table/VirtualizedInfiniteTable.js +280 -219
  304. package/dist/table/types.d.ts +66 -244
  305. package/dist/table/types.js +0 -51
  306. package/dist/table/useInfiniteScrollSentinel.d.ts +25 -21
  307. package/dist/table/useInfiniteScrollSentinel.js +38 -30
  308. package/dist/table/useSpreadsheetCellNavigation.d.ts +44 -0
  309. package/dist/table/useSpreadsheetCellNavigation.js +141 -0
  310. package/dist/table/useTableColumnLayout.d.ts +90 -25
  311. package/dist/table/useTableColumnLayout.js +255 -50
  312. package/dist/table/useTableKeyboardNavigation.d.ts +32 -21
  313. package/dist/table/useTableKeyboardNavigation.js +95 -71
  314. package/dist/table/useTableRowSelection.d.ts +24 -25
  315. package/dist/table/useTableRowSelection.js +57 -84
  316. package/dist/table/useTableVirtualizer.d.ts +20 -0
  317. package/dist/table/useTableVirtualizer.js +48 -0
  318. package/dist/text/Bold.d.ts +5 -6
  319. package/dist/text/Bold.js +16 -15
  320. package/dist/text/Code.d.ts +5 -6
  321. package/dist/text/Code.js +16 -25
  322. package/dist/text/CodeBlock.d.ts +77 -0
  323. package/dist/text/CodeBlock.js +373 -0
  324. package/dist/text/EditableText.d.ts +55 -15
  325. package/dist/text/EditableText.js +153 -135
  326. package/dist/text/Ellipsis.d.ts +34 -8
  327. package/dist/text/Ellipsis.js +55 -23
  328. package/dist/text/Kbd.d.ts +72 -0
  329. package/dist/text/Kbd.js +284 -0
  330. package/dist/text/MarkdownText.d.ts +27 -10
  331. package/dist/text/MarkdownText.js +317 -300
  332. package/dist/text/RequiredMarker.d.ts +17 -5
  333. package/dist/text/RequiredMarker.js +34 -36
  334. package/dist/text/Selectable.d.ts +5 -6
  335. package/dist/text/Selectable.js +16 -13
  336. package/dist/text/Span.d.ts +82 -0
  337. package/dist/text/Span.js +115 -0
  338. package/dist/text/Text.d.ts +128 -41
  339. package/dist/text/Text.js +209 -76
  340. package/dist/theme/GalaxyProvider.d.ts +75 -0
  341. package/dist/theme/GalaxyProvider.js +223 -0
  342. package/dist/theme/ThemeSwitcher.d.ts +52 -0
  343. package/dist/theme/ThemeSwitcher.js +94 -0
  344. package/dist/theme/enums.d.ts +118 -0
  345. package/dist/theme/enums.js +144 -0
  346. package/dist/theme/tokens/dark.d.ts +2 -0
  347. package/dist/theme/tokens/dark.js +275 -0
  348. package/dist/theme/tokens/generate.d.ts +15 -0
  349. package/dist/theme/tokens/generate.js +47 -0
  350. package/dist/theme/tokens/light.d.ts +2 -0
  351. package/dist/theme/tokens/light.js +274 -0
  352. package/dist/theme/tokens/palette.d.ts +14 -0
  353. package/dist/theme/tokens/palette.js +153 -0
  354. package/dist/theme/tokens/scales.d.ts +26 -0
  355. package/dist/theme/tokens/scales.js +154 -0
  356. package/dist/theme/tokens/t.d.ts +3 -0
  357. package/dist/theme/tokens/t.js +25 -0
  358. package/dist/theme/tokens/types.d.ts +189 -0
  359. package/dist/theme/tokens/types.js +0 -0
  360. package/dist/theme/useGalaxyTheme.d.ts +46 -0
  361. package/dist/theme/useGalaxyTheme.js +36 -0
  362. package/dist/theme/useInverseScope.d.ts +18 -0
  363. package/dist/theme/useInverseScope.js +33 -0
  364. package/dist/three/GalaxyLogomark3D.d.ts +46 -0
  365. package/dist/three/GalaxyLogomark3D.js +134 -0
  366. package/dist/three/assets/galaxy-logomark.js +4 -0
  367. package/dist/three/galaxyLogomark3DScene.d.ts +27 -0
  368. package/dist/three/galaxyLogomark3DScene.js +165 -0
  369. package/dist/timeline/Timeline.d.ts +120 -0
  370. package/dist/timeline/Timeline.js +301 -0
  371. package/dist/toast/Toast.d.ts +43 -19
  372. package/dist/toast/Toast.js +130 -89
  373. package/dist/toast/ToastProvider.d.ts +23 -23
  374. package/dist/toast/ToastProvider.js +298 -101
  375. package/dist/toast/ToastViewport.d.ts +12 -0
  376. package/dist/toast/ToastViewport.js +210 -0
  377. package/dist/toast/useToast.d.ts +139 -5
  378. package/dist/toast/useToast.js +15 -13
  379. package/dist/tokens.css +654 -0
  380. package/dist/tooltip/Tooltip.d.ts +64 -44
  381. package/dist/tooltip/Tooltip.js +280 -73
  382. package/dist/tooltip/internal/LazyTooltip.d.ts +7 -0
  383. package/dist/tooltip/internal/LazyTooltip.js +53 -0
  384. package/dist/transform/Fade.d.ts +33 -11
  385. package/dist/transform/Fade.js +71 -19
  386. package/dist/transform/Flasher.d.ts +25 -0
  387. package/dist/transform/Flasher.js +39 -0
  388. package/dist/transform/Rotate.d.ts +24 -12
  389. package/dist/transform/Rotate.js +36 -22
  390. package/dist/transform/ScaleFade.d.ts +36 -11
  391. package/dist/transform/ScaleFade.js +86 -28
  392. package/dist/transform/internal/CollapseMotion.d.ts +10 -0
  393. package/dist/transform/internal/CollapseMotion.js +65 -0
  394. package/dist/tree/Tree.d.ts +85 -0
  395. package/dist/tree/Tree.js +387 -0
  396. package/dist/tree/treeRow.d.ts +39 -0
  397. package/dist/tree/treeRow.js +75 -0
  398. package/dist/utils/colors.d.ts +46 -13
  399. package/dist/utils/colors.js +92 -34
  400. package/dist/utils/css.d.ts +23 -0
  401. package/dist/utils/css.js +30 -0
  402. package/dist/utils/format.d.ts +58 -0
  403. package/dist/utils/format.js +220 -0
  404. package/dist/vite/index.d.ts +16 -0
  405. package/dist/vite/index.js +52 -0
  406. package/dist/widget/Widget.d.ts +164 -48
  407. package/dist/widget/Widget.js +335 -96
  408. package/dist/widget/WidgetGroup.d.ts +36 -0
  409. package/dist/widget/WidgetGroup.js +103 -0
  410. package/package.json +855 -157
  411. package/dist/accordion/Accordion.d.ts +0 -54
  412. package/dist/accordion/Accordion.js +0 -183
  413. package/dist/assets/components/GalaxyFilamentWordmarkDark.d.ts +0 -3
  414. package/dist/assets/components/GalaxyFilamentWordmarkDark.js +0 -14
  415. package/dist/assets/components/GalaxyFilamentWordmarkLight.d.ts +0 -3
  416. package/dist/assets/components/GalaxyFilamentWordmarkLight.js +0 -14
  417. package/dist/assets/components/GalaxyLogomarkDark.d.ts +0 -3
  418. package/dist/assets/components/GalaxyLogomarkDark.js +0 -11
  419. package/dist/assets/components/GalaxyLogomarkLight.d.ts +0 -3
  420. package/dist/assets/components/GalaxyLogomarkLight.js +0 -17
  421. package/dist/assets/components/GalaxyWordmarkDark.d.ts +0 -3
  422. package/dist/assets/components/GalaxyWordmarkDark.js +0 -15
  423. package/dist/assets/components/GalaxyWordmarkLight.d.ts +0 -3
  424. package/dist/assets/components/GalaxyWordmarkLight.js +0 -28
  425. package/dist/assets/models/galaxy-animation.js +0 -136666
  426. package/dist/assets/models/galaxy-logomark.js +0 -4
  427. package/dist/avatar/AvatarShimmer.d.ts +0 -30
  428. package/dist/avatar/AvatarShimmer.js +0 -22
  429. package/dist/backgrounds/CellGridBackground.d.ts +0 -24
  430. package/dist/backgrounds/CellGridBackground.js +0 -44
  431. package/dist/backgrounds/CrossGridBackground.d.ts +0 -26
  432. package/dist/backgrounds/CrossGridBackground.js +0 -49
  433. package/dist/backgrounds/DotGridBackground.d.ts +0 -24
  434. package/dist/backgrounds/DotGridBackground.js +0 -47
  435. package/dist/badge/Badge.d.ts +0 -42
  436. package/dist/badge/Badge.js +0 -99
  437. package/dist/charts/ChartEmptyState.d.ts +0 -17
  438. package/dist/charts/ChartEmptyState.js +0 -29
  439. package/dist/charts/ProgressBar.d.ts +0 -29
  440. package/dist/charts/ProgressBar.js +0 -65
  441. package/dist/charts/chartTheme.d.ts +0 -18
  442. package/dist/charts/chartTheme.js +0 -26
  443. package/dist/containers/FlexItem.d.ts +0 -50
  444. package/dist/containers/FlexItem.js +0 -91
  445. package/dist/containers/FlexWrapper.d.ts +0 -96
  446. package/dist/containers/FlexWrapper.js +0 -143
  447. package/dist/containers/GridWrapper.d.ts +0 -79
  448. package/dist/containers/GridWrapper.js +0 -125
  449. package/dist/containers/Spacing.d.ts +0 -23
  450. package/dist/containers/Spacing.js +0 -59
  451. package/dist/containers/Wrapper.d.ts +0 -26
  452. package/dist/containers/Wrapper.js +0 -54
  453. package/dist/dividers/HorizontalDivider.d.ts +0 -7
  454. package/dist/dividers/HorizontalDivider.js +0 -39
  455. package/dist/dividers/VerticalDivider.d.ts +0 -6
  456. package/dist/dividers/VerticalDivider.js +0 -21
  457. package/dist/icons/GalaxyFilamentWordmark.d.ts +0 -11
  458. package/dist/icons/GalaxyFilamentWordmark.js +0 -25
  459. package/dist/icons/GalaxyLogomark.d.ts +0 -13
  460. package/dist/icons/GalaxyLogomark.js +0 -27
  461. package/dist/icons/GalaxyLogomark3D.d.ts +0 -56
  462. package/dist/icons/GalaxyLogomark3D.js +0 -319
  463. package/dist/icons/GalaxyLogomarkAnimation.d.ts +0 -18
  464. package/dist/icons/GalaxyLogomarkAnimation.js +0 -48
  465. package/dist/icons/GalaxyWordmark.d.ts +0 -11
  466. package/dist/icons/GalaxyWordmark.js +0 -25
  467. package/dist/inputs/MultiTextInput.d.ts +0 -32
  468. package/dist/inputs/MultiTextInput.js +0 -180
  469. package/dist/inputs/SwitcherInput.d.ts +0 -30
  470. package/dist/inputs/SwitcherInput.js +0 -81
  471. package/dist/inputs/hooks.d.ts +0 -10
  472. package/dist/inputs/hooks.js +0 -22
  473. package/dist/overlay/constants.d.ts +0 -28
  474. package/dist/overlay/constants.js +0 -37
  475. package/dist/resizable/HorizontalResizeHandle.d.ts +0 -17
  476. package/dist/resizable/HorizontalResizeHandle.js +0 -38
  477. package/dist/resizable/VerticalResizeHandle.d.ts +0 -18
  478. package/dist/resizable/VerticalResizeHandle.js +0 -39
  479. package/dist/table/SpreadsheetCell.d.ts +0 -21
  480. package/dist/table/SpreadsheetCell.js +0 -71
  481. package/dist/table/SpreadsheetHeaderCell.d.ts +0 -23
  482. package/dist/table/SpreadsheetHeaderCell.js +0 -91
  483. package/dist/table/SpreadsheetMenuItem.d.ts +0 -14
  484. package/dist/table/SpreadsheetMenuItem.js +0 -33
  485. package/dist/table/SpreadsheetPrimitives.d.ts +0 -172
  486. package/dist/table/SpreadsheetPrimitives.js +0 -105
  487. package/dist/table/SpreadsheetRow.d.ts +0 -33
  488. package/dist/table/SpreadsheetRow.js +0 -73
  489. package/dist/table/SpreadsheetRowActionCell.d.ts +0 -14
  490. package/dist/table/SpreadsheetRowActionCell.js +0 -51
  491. package/dist/table/TableExpandCell.d.ts +0 -11
  492. package/dist/table/TableExpandCell.js +0 -24
  493. package/dist/table/TableExpandedRow.d.ts +0 -16
  494. package/dist/table/TableExpandedRow.js +0 -77
  495. package/dist/table/TableHeaderCellContent.d.ts +0 -30
  496. package/dist/table/TableHeaderCellContent.js +0 -48
  497. package/dist/table/TablePrimitives.d.ts +0 -313
  498. package/dist/table/TablePrimitives.js +0 -302
  499. package/dist/table/TableSelectCell.d.ts +0 -18
  500. package/dist/table/TableSelectCell.js +0 -27
  501. package/dist/table/TableStatusRow.d.ts +0 -18
  502. package/dist/table/TableStatusRow.js +0 -50
  503. package/dist/table/useSpreadsheetEditing.d.ts +0 -13
  504. package/dist/table/useSpreadsheetEditing.js +0 -41
  505. package/dist/table/useTableColumnResize.d.ts +0 -38
  506. package/dist/table/useTableColumnResize.js +0 -155
  507. package/dist/table/useTableRowExpansion.d.ts +0 -24
  508. package/dist/table/useTableRowExpansion.js +0 -62
  509. package/dist/table/utils.d.ts +0 -50
  510. package/dist/table/utils.js +0 -78
  511. package/dist/text/HotKeys.d.ts +0 -30
  512. package/dist/text/HotKeys.js +0 -74
  513. package/dist/text/Paragraph.d.ts +0 -33
  514. package/dist/text/Paragraph.js +0 -83
  515. package/dist/text/TextShimmer.d.ts +0 -14
  516. package/dist/text/TextShimmer.js +0 -34
  517. package/dist/theme/GalaxyTheme.d.ts +0 -67
  518. package/dist/theme/GalaxyTheme.js +0 -119
  519. package/dist/theme/constants.d.ts +0 -8
  520. package/dist/theme/constants.js +0 -38
  521. package/dist/theme/index.d.ts +0 -6
  522. package/dist/theme/index.js +0 -7
  523. package/dist/theme/types.d.ts +0 -195
  524. package/dist/theme/types.js +0 -10
  525. package/dist/theme/typography.d.ts +0 -2
  526. package/dist/theme/typography.js +0 -73
  527. package/dist/theme/variants/dark.d.ts +0 -2
  528. package/dist/theme/variants/dark.js +0 -125
  529. package/dist/theme/variants/light.d.ts +0 -2
  530. package/dist/theme/variants/light.js +0 -125
  531. package/dist/toast/ToastContainer.d.ts +0 -10
  532. package/dist/toast/ToastContainer.js +0 -31
  533. package/dist/toast/ToastWrapper.d.ts +0 -6
  534. package/dist/toast/ToastWrapper.js +0 -27
  535. package/dist/transform/Flash.d.ts +0 -7
  536. package/dist/transform/Flash.js +0 -18
  537. package/dist/transform/Spin.d.ts +0 -14
  538. package/dist/transform/Spin.js +0 -25
  539. package/dist/utils/linaria.d.ts +0 -1
  540. package/dist/utils/linaria.js +0 -8
@@ -0,0 +1,618 @@
1
+ import { FontFamily } from "../theme/enums.js";
2
+ import Text, { TextSize, TextVariant } from "../text/Text.js";
3
+ import { useControlledState } from "../hooks/useControlledState.js";
4
+ import Flex, { AlignItems } from "../layout/Flex.js";
5
+ import Button, { ButtonSize, ButtonVariant } from "../buttons/Button.js";
6
+ import ButtonGroup from "../buttons/ButtonGroup.js";
7
+ import { useDevWarning } from "./internal/devWarn.js";
8
+ import { FieldContext } from "../hooks/useField.js";
9
+ import { useFieldWiring } from "./internal/fieldWiring.js";
10
+ import Field, { FieldSize } from "./Field.js";
11
+ import { rootStyle, useOwnField } from "./internal/ownField.js";
12
+ import { InputSize, InputVariant } from "./Input.js";
13
+ import TextInput from "./TextInput.js";
14
+ import SelectInput, { SelectInputSize, SelectInputVariant } from "./SelectInput.js";
15
+ import ToggleInput, { ToggleInputSize, ToggleInputVariant } from "./ToggleInput.js";
16
+ /* empty css */
17
+ import { styled } from "@linaria/react";
18
+ import { forwardRef, useMemo, useRef, useState } from "react";
19
+ import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
20
+ import { cx } from "@linaria/core";
21
+ import cronstrue from "cronstrue";
22
+ //#region src/inputs/CronInput.tsx
23
+ /**
24
+ * The form control for a recurring schedule written as a five-field cron expression
25
+ * (`minute hour day-of-month month day-of-week`). It shows a small builder: a frequency
26
+ * (Hourly / Daily / Weekly / Monthly / Custom) and the fields that frequency needs (the minute, the
27
+ * time, the weekdays, the day of the month), and writes the expression. Expressions the builder
28
+ * cannot represent open in Custom, where the expression is edited as text. Under the fields a
29
+ * sentence from `cronstrue` reads the schedule back ("Runs at 09:00, Monday through Friday.").
30
+ *
31
+ * The value is the expression string. CronInput never validates (the app passes `error`; the
32
+ * sentence only says when it cannot read an expression), holds no time zone, and does not support
33
+ * seconds or year fields. New in 2.0 (sources: rafa's CronInput and Filament's schedule fields).
34
+ */
35
+ /** Canonical rungs; CronInput supports all five and passes the rung to every control it renders. */
36
+ var CronInputSize = /* @__PURE__ */ function(CronInputSize) {
37
+ /** 20px controls, caption text. */
38
+ CronInputSize["X_SMALL"] = "X_SMALL";
39
+ /** 24px controls, body_sm text. */
40
+ CronInputSize["SMALL"] = "SMALL";
41
+ /** 32px controls, body_md text. The default. */
42
+ CronInputSize["MEDIUM"] = "MEDIUM";
43
+ /** 36px controls, body_lg text. */
44
+ CronInputSize["LARGE"] = "LARGE";
45
+ /** 40px controls, body_lg text. */
46
+ CronInputSize["X_LARGE"] = "X_LARGE";
47
+ return CronInputSize;
48
+ }({});
49
+ /** Resting fill of the builder's controls (Constitution V-A surface set). */
50
+ var CronInputVariant = /* @__PURE__ */ function(CronInputVariant) {
51
+ /** `background.base` fill. */
52
+ CronInputVariant["BASE"] = "BASE";
53
+ /** `background.primary` fill. The default. */
54
+ CronInputVariant["PRIMARY"] = "PRIMARY";
55
+ /** `background.secondary` fill. */
56
+ CronInputVariant["SECONDARY"] = "SECONDARY";
57
+ /** `background.tertiary` fill. */
58
+ CronInputVariant["TERTIARY"] = "TERTIARY";
59
+ return CronInputVariant;
60
+ }({});
61
+ /** The uncontrolled default: daily at 00:00. */
62
+ var CRON_INPUT_DEFAULT_VALUE = "0 0 * * *";
63
+ /** Width of the two-digit selects (minute, hour, day of month). */
64
+ /** Width of the Custom expression field without `fillWidth`. */
65
+ /** The neutral hint shown when `cronstrue` cannot read the expression. */
66
+ var CRON_INPUT_HINT = "Enter five fields: minute, hour, day of month, month, day of week.";
67
+ /** Each builder row's label; the label column is as wide as the longest, whichever rows show. */
68
+ var ROW_LABELS = {
69
+ frequency: "Frequency",
70
+ minute: "At minute",
71
+ time: "At",
72
+ weekdays: "On",
73
+ day: "On day",
74
+ expression: "Expression"
75
+ };
76
+ /** Defaults for a part the builder has not set yet. */
77
+ var DEFAULT_PARTS = {
78
+ minute: 0,
79
+ hour: 0,
80
+ weekdays: [1],
81
+ dayOfMonth: 1
82
+ };
83
+ var FREQUENCY_OPTIONS = [
84
+ {
85
+ id: "HOURLY",
86
+ label: "Hourly"
87
+ },
88
+ {
89
+ id: "DAILY",
90
+ label: "Daily"
91
+ },
92
+ {
93
+ id: "WEEKLY",
94
+ label: "Weekly"
95
+ },
96
+ {
97
+ id: "MONTHLY",
98
+ label: "Monthly"
99
+ },
100
+ {
101
+ id: "CUSTOM",
102
+ label: "Custom"
103
+ }
104
+ ];
105
+ /** Two-digit labels for 0–(count − 1); the id is the plain number. */
106
+ function numberOptions(count, start = 0, isPadded = true) {
107
+ return Array.from({ length: count }, (_, index) => {
108
+ const number = start + index;
109
+ return {
110
+ id: String(number),
111
+ label: isPadded ? String(number).padStart(2, "0") : String(number)
112
+ };
113
+ });
114
+ }
115
+ var MINUTE_OPTIONS = numberOptions(60);
116
+ var HOUR_OPTIONS = numberOptions(24);
117
+ var DAY_OF_MONTH_OPTIONS = numberOptions(31, 1, false);
118
+ /** The weekday toggles, Monday first; `day` is cron's number (Sunday = 0). */
119
+ var WEEKDAYS = [
120
+ {
121
+ day: 1,
122
+ label: "Mon",
123
+ name: "Monday"
124
+ },
125
+ {
126
+ day: 2,
127
+ label: "Tue",
128
+ name: "Tuesday"
129
+ },
130
+ {
131
+ day: 3,
132
+ label: "Wed",
133
+ name: "Wednesday"
134
+ },
135
+ {
136
+ day: 4,
137
+ label: "Thu",
138
+ name: "Thursday"
139
+ },
140
+ {
141
+ day: 5,
142
+ label: "Fri",
143
+ name: "Friday"
144
+ },
145
+ {
146
+ day: 6,
147
+ label: "Sat",
148
+ name: "Saturday"
149
+ },
150
+ {
151
+ day: 0,
152
+ label: "Sun",
153
+ name: "Sunday"
154
+ }
155
+ ];
156
+ /** One integer within `[low, high]`, written without a sign or leading `+`. */
157
+ function parseInteger(field, low, high) {
158
+ if (!/^\d+$/.test(field)) return null;
159
+ const number = Number(field);
160
+ return number >= low && number <= high ? number : null;
161
+ }
162
+ /** A day-of-week list of integers and `a-b` ranges within 0–7 (7 is Sunday), expanded. */
163
+ function parseWeekdays(field) {
164
+ const days = /* @__PURE__ */ new Set();
165
+ for (const item of field.split(",")) {
166
+ const range = item.split("-");
167
+ if (range.length === 1) {
168
+ const day = parseInteger(item, 0, 7);
169
+ if (day === null) return null;
170
+ days.add(day % 7);
171
+ } else if (range.length === 2) {
172
+ const from = parseInteger(range[0] ?? "", 0, 7);
173
+ const to = parseInteger(range[1] ?? "", 0, 7);
174
+ if (from === null || to === null || from > to) return null;
175
+ for (let day = from; day <= to; day += 1) days.add(day % 7);
176
+ } else return null;
177
+ }
178
+ return days.size === 0 ? null : [...days].sort((a, b) => a - b);
179
+ }
180
+ /** What the builder shows for `value`; anything it cannot write back unchanged is Custom. */
181
+ function valueToBuilder(value, previous = DEFAULT_PARTS) {
182
+ const custom = {
183
+ frequency: "CUSTOM",
184
+ parts: previous
185
+ };
186
+ const fields = value.trim().split(/\s+/);
187
+ if (fields.length !== 5) return custom;
188
+ const [minuteField = "", hourField = "", domField = "", monthField = "", dowField = ""] = fields;
189
+ const minute = parseInteger(minuteField, 0, 59);
190
+ if (minute === null || monthField !== "*") return custom;
191
+ if (hourField === "*") {
192
+ if (domField === "*" && dowField === "*") return {
193
+ frequency: "HOURLY",
194
+ parts: {
195
+ ...previous,
196
+ minute
197
+ }
198
+ };
199
+ return custom;
200
+ }
201
+ const hour = parseInteger(hourField, 0, 23);
202
+ if (hour === null) return custom;
203
+ if (domField === "*" && dowField === "*") return {
204
+ frequency: "DAILY",
205
+ parts: {
206
+ ...previous,
207
+ minute,
208
+ hour
209
+ }
210
+ };
211
+ if (domField === "*") {
212
+ const weekdays = parseWeekdays(dowField);
213
+ if (weekdays === null) return custom;
214
+ return {
215
+ frequency: "WEEKLY",
216
+ parts: {
217
+ ...previous,
218
+ minute,
219
+ hour,
220
+ weekdays
221
+ }
222
+ };
223
+ }
224
+ if (dowField === "*") {
225
+ const dayOfMonth = parseInteger(domField, 1, 31);
226
+ if (dayOfMonth === null) return custom;
227
+ return {
228
+ frequency: "MONTHLY",
229
+ parts: {
230
+ ...previous,
231
+ minute,
232
+ hour,
233
+ dayOfMonth
234
+ }
235
+ };
236
+ }
237
+ return custom;
238
+ }
239
+ /** The expression a builder frequency writes. */
240
+ function builderToValue(frequency, parts) {
241
+ const { minute, hour, weekdays, dayOfMonth } = parts;
242
+ switch (frequency) {
243
+ case "HOURLY": return `${minute} * * * *`;
244
+ case "DAILY": return `${minute} ${hour} * * *`;
245
+ case "WEEKLY": return `${minute} ${hour} * * ${[...new Set(weekdays)].sort((a, b) => a - b).join(",")}`;
246
+ case "MONTHLY": return `${minute} ${hour} ${dayOfMonth} * *`;
247
+ }
248
+ }
249
+ /** The sentence under the builder, or `null` when `cronstrue` cannot read the expression. */
250
+ function describe(expression) {
251
+ if (expression.split(/\s+/).length !== 5) return null;
252
+ try {
253
+ const text = cronstrue.toString(expression, {
254
+ use24HourTimeFormat: true,
255
+ throwExceptionOnParseError: true,
256
+ verbose: false
257
+ });
258
+ if (text === "") return null;
259
+ const sentence = `Runs ${text.charAt(0).toLowerCase()}${text.slice(1)}`;
260
+ return sentence.endsWith(".") ? sentence : `${sentence}.`;
261
+ } catch {
262
+ return null;
263
+ }
264
+ }
265
+ var CRON_INPUT_SIZE_TO_TOGGLE_INPUT_SIZE_MAP = {
266
+ ["X_SMALL"]: ToggleInputSize.X_SMALL,
267
+ ["SMALL"]: ToggleInputSize.SMALL,
268
+ ["MEDIUM"]: ToggleInputSize.MEDIUM,
269
+ ["LARGE"]: ToggleInputSize.LARGE,
270
+ ["X_LARGE"]: ToggleInputSize.X_LARGE
271
+ };
272
+ var CRON_INPUT_SIZE_TO_SELECT_INPUT_SIZE_MAP = {
273
+ ["X_SMALL"]: SelectInputSize.X_SMALL,
274
+ ["SMALL"]: SelectInputSize.SMALL,
275
+ ["MEDIUM"]: SelectInputSize.MEDIUM,
276
+ ["LARGE"]: SelectInputSize.LARGE,
277
+ ["X_LARGE"]: SelectInputSize.X_LARGE
278
+ };
279
+ var CRON_INPUT_SIZE_TO_INPUT_SIZE_MAP = {
280
+ ["X_SMALL"]: InputSize.X_SMALL,
281
+ ["SMALL"]: InputSize.SMALL,
282
+ ["MEDIUM"]: InputSize.MEDIUM,
283
+ ["LARGE"]: InputSize.LARGE,
284
+ ["X_LARGE"]: InputSize.X_LARGE
285
+ };
286
+ var CRON_INPUT_SIZE_TO_BUTTON_SIZE_MAP = {
287
+ ["X_SMALL"]: ButtonSize.X_SMALL,
288
+ ["SMALL"]: ButtonSize.SMALL,
289
+ ["MEDIUM"]: ButtonSize.MEDIUM,
290
+ ["LARGE"]: ButtonSize.LARGE,
291
+ ["X_LARGE"]: ButtonSize.X_LARGE
292
+ };
293
+ var CRON_INPUT_SIZE_TO_FIELD_SIZE_MAP = {
294
+ ["X_SMALL"]: FieldSize.X_SMALL,
295
+ ["SMALL"]: FieldSize.SMALL,
296
+ ["MEDIUM"]: FieldSize.MEDIUM,
297
+ ["LARGE"]: FieldSize.LARGE,
298
+ ["X_LARGE"]: FieldSize.X_LARGE
299
+ };
300
+ /** Row labels use the rung's control text. */
301
+ var CRON_INPUT_SIZE_TO_TEXT_SIZE_MAP = {
302
+ ["X_SMALL"]: TextSize.CAPTION,
303
+ ["SMALL"]: TextSize.BODY_SM,
304
+ ["MEDIUM"]: TextSize.BODY_MD,
305
+ ["LARGE"]: TextSize.BODY_LG,
306
+ ["X_LARGE"]: TextSize.BODY_LG
307
+ };
308
+ /** The preview uses Field's help steps. */
309
+ var CRON_INPUT_SIZE_TO_HELP_TEXT_SIZE_MAP = {
310
+ ["X_SMALL"]: TextSize.CAPTION,
311
+ ["SMALL"]: TextSize.CAPTION,
312
+ ["MEDIUM"]: TextSize.BODY_SM,
313
+ ["LARGE"]: TextSize.BODY_SM,
314
+ ["X_LARGE"]: TextSize.BODY_MD
315
+ };
316
+ var CRON_INPUT_VARIANT_TO_TOGGLE_INPUT_VARIANT_MAP = {
317
+ ["BASE"]: ToggleInputVariant.BASE,
318
+ ["PRIMARY"]: ToggleInputVariant.PRIMARY,
319
+ ["SECONDARY"]: ToggleInputVariant.SECONDARY,
320
+ ["TERTIARY"]: ToggleInputVariant.TERTIARY
321
+ };
322
+ var CRON_INPUT_VARIANT_TO_SELECT_INPUT_VARIANT_MAP = {
323
+ ["BASE"]: SelectInputVariant.BASE,
324
+ ["PRIMARY"]: SelectInputVariant.PRIMARY,
325
+ ["SECONDARY"]: SelectInputVariant.SECONDARY,
326
+ ["TERTIARY"]: SelectInputVariant.TERTIARY
327
+ };
328
+ var CRON_INPUT_VARIANT_TO_INPUT_VARIANT_MAP = {
329
+ ["BASE"]: InputVariant.BASE,
330
+ ["PRIMARY"]: InputVariant.PRIMARY,
331
+ ["SECONDARY"]: InputVariant.SECONDARY,
332
+ ["TERTIARY"]: InputVariant.TERTIARY
333
+ };
334
+ /** The group: the builder rows, then the preview sentence. */
335
+ var Group = /*#__PURE__*/ styled("div")({
336
+ name: "Group",
337
+ class: "gx-CronInput-Group-gmu78vg",
338
+ propsAsIs: false
339
+ });
340
+ /**
341
+ * Row labels in the first column, controls in the second. Controls keep their own width
342
+ * (`justify-items: start`), so the wide weekday row never stretches the frequency toggle.
343
+ */
344
+ var Rows = /*#__PURE__*/ styled("div")({
345
+ name: "Rows",
346
+ class: "gx-CronInput-Rows-rvetpyb",
347
+ propsAsIs: false
348
+ });
349
+ /**
350
+ * The frequency row's label cell: the label and every other row label stacked in one grid area.
351
+ * The hidden ones size the label column, so switching frequency never moves the controls.
352
+ */
353
+ var LabelStack = /*#__PURE__*/ styled("span")({
354
+ name: "LabelStack",
355
+ class: "gx-CronInput-LabelStack-lwvebjn",
356
+ propsAsIs: false
357
+ });
358
+ /** A row label that only sizes the label column: not painted, not announced. */
359
+ var LABEL_SIZER_CSS = "gx-CronInput-LABEL_SIZER_CSS-lendsmc";
360
+ /** Holds a two-digit select at its fixed width. */
361
+ var SelectSlot = /*#__PURE__*/ styled("span")({
362
+ name: "SelectSlot",
363
+ class: "gx-CronInput-SelectSlot-s1iubrvv",
364
+ propsAsIs: false
365
+ });
366
+ /** Holds the Custom expression field at its fixed width. */
367
+ var ExpressionSlot = /*#__PURE__*/ styled("span")({
368
+ name: "ExpressionSlot",
369
+ class: "gx-CronInput-ExpressionSlot-e1i5sgim",
370
+ propsAsIs: false
371
+ });
372
+ /** Stretch to the parent's width (group, and the `Field` wrapper when there is one). */
373
+ var FILL_WIDTH_CSS = "gx-CronInput-FILL_WIDTH_CSS-f1xjp6qf";
374
+ /** With `fillWidth`, the control column takes the rest of each row. */
375
+ var ROWS_FILL_CSS = "gx-CronInput-ROWS_FILL_CSS-r73e2ix";
376
+ /** With `fillWidth`, the Custom field fills its cell. */
377
+ var EXPRESSION_FILL_CSS = "gx-CronInput-EXPRESSION_FILL_CSS-e1tyf0oc";
378
+ /** The builder and its preview, wired to the nearest Field (the CronInput's own or the app's). */
379
+ function CronGroup({ cronProps, forwardedRef, isRoot }) {
380
+ const { value, defaultValue = CRON_INPUT_DEFAULT_VALUE, onChange, size = "MEDIUM", variant = "PRIMARY", isGhost = false, label: _label, error, isError = false, isDisabled = false, isReadOnly = false, isRequired = false, fillWidth = false, ariaLabel, id, "aria-describedby": ariaDescribedBy, className, style, ...rest } = cronProps;
381
+ const { field, controlId, describedBy, isInvalid, isRequired: isRequiredState, hasName } = useFieldWiring({
382
+ id,
383
+ ariaLabel,
384
+ ariaLabelAttribute: rest["aria-label"],
385
+ ariaLabelledBy: rest["aria-labelledby"],
386
+ ariaDescribedBy,
387
+ describedByIds: (groupId) => [`${groupId}-preview`],
388
+ error,
389
+ isError,
390
+ isRequired
391
+ });
392
+ const previewId = `${controlId}-preview`;
393
+ const rowLabelId = (row) => `${controlId}-${row}`;
394
+ const [expression, setExpression] = useControlledState({
395
+ value,
396
+ defaultValue,
397
+ onChange
398
+ });
399
+ const lastEmittedRef = useRef(null);
400
+ const [builder, setBuilder] = useState(() => valueToBuilder(expression));
401
+ const [lastSeen, setLastSeen] = useState(expression);
402
+ if (lastSeen !== expression) {
403
+ setLastSeen(expression);
404
+ if (expression !== lastEmittedRef.current) setBuilder((previous) => valueToBuilder(expression, previous.parts));
405
+ }
406
+ const emit = (next) => {
407
+ if (next === expression) return;
408
+ lastEmittedRef.current = next;
409
+ setExpression(next);
410
+ };
411
+ const isEditable = !isDisabled && !isReadOnly;
412
+ const { frequency, parts } = builder;
413
+ /** Applies new parts in the current builder frequency and writes the expression. */
414
+ const updateParts = (next) => {
415
+ if (!isEditable || frequency === "CUSTOM") return;
416
+ const merged = {
417
+ ...parts,
418
+ ...next
419
+ };
420
+ setBuilder({
421
+ frequency,
422
+ parts: merged
423
+ });
424
+ emit(builderToValue(frequency, merged));
425
+ };
426
+ const changeFrequency = (next) => {
427
+ if (!isEditable || next === frequency) return;
428
+ setBuilder({
429
+ frequency: next,
430
+ parts
431
+ });
432
+ if (next !== "CUSTOM") emit(builderToValue(next, parts));
433
+ };
434
+ const toggleWeekday = (day) => {
435
+ if (!isEditable) return;
436
+ const isOn = parts.weekdays.includes(day);
437
+ if (isOn && parts.weekdays.length === 1) return;
438
+ updateParts({ weekdays: isOn ? parts.weekdays.filter((selected) => selected !== day) : [...parts.weekdays, day].sort((a, b) => a - b) });
439
+ };
440
+ const trimmed = expression.trim();
441
+ const sentence = useMemo(() => describe(trimmed), [trimmed]);
442
+ useDevWarning(!hasName, "[@galaxy-io/dls] CronInput has no accessible name. Pass `label`, wrap it in a labelled `Field`, or set `ariaLabel`.");
443
+ const textSize = CRON_INPUT_SIZE_TO_TEXT_SIZE_MAP[size];
444
+ const helpSize = CRON_INPUT_SIZE_TO_HELP_TEXT_SIZE_MAP[size];
445
+ const selectSize = CRON_INPUT_SIZE_TO_SELECT_INPUT_SIZE_MAP[size];
446
+ const selectVariant = CRON_INPUT_VARIANT_TO_SELECT_INPUT_VARIANT_MAP[variant];
447
+ const controlState = {
448
+ isDisabled,
449
+ isReadOnly,
450
+ isError: isInvalid,
451
+ isRequired: isRequiredState
452
+ };
453
+ const rowLabel = (row) => /* @__PURE__ */ jsx(Text, {
454
+ as: "span",
455
+ id: rowLabelId(row),
456
+ size: textSize,
457
+ variant: isDisabled ? TextVariant.DISABLED : TextVariant.SECONDARY,
458
+ children: ROW_LABELS[row]
459
+ });
460
+ /** A two-digit select named by its row label (plus its own name inside a time row). */
461
+ const numberSelect = (row, part, options, ownName) => {
462
+ const selectId = `${rowLabelId(row)}-${part}`;
463
+ return /* @__PURE__ */ jsx(SelectSlot, { children: /* @__PURE__ */ jsx(SelectInput, {
464
+ id: selectId,
465
+ ...ownName === void 0 ? { "aria-labelledby": rowLabelId(row) } : {
466
+ ariaLabel: ownName,
467
+ "aria-labelledby": `${rowLabelId(row)} ${selectId}`
468
+ },
469
+ options,
470
+ value: String(parts[part]),
471
+ onChange: (next) => {
472
+ if (next !== null) updateParts({ [part]: Number(next) });
473
+ },
474
+ size: selectSize,
475
+ variant: selectVariant,
476
+ isGhost,
477
+ fillWidth: true,
478
+ ...controlState
479
+ }) });
480
+ };
481
+ const timeRow = /* @__PURE__ */ jsxs(Fragment$1, { children: [rowLabel("time"), /* @__PURE__ */ jsxs(Flex, {
482
+ alignItems: AlignItems.CENTER,
483
+ gap: 4,
484
+ children: [
485
+ numberSelect("time", "hour", HOUR_OPTIONS, "Hour"),
486
+ /* @__PURE__ */ jsx(Text, {
487
+ as: "span",
488
+ size: textSize,
489
+ variant: TextVariant.TERTIARY,
490
+ "aria-hidden": true,
491
+ children: ":"
492
+ }),
493
+ numberSelect("time", "minute", MINUTE_OPTIONS, "Minute")
494
+ ]
495
+ })] });
496
+ return /* @__PURE__ */ jsxs(Group, {
497
+ ref: forwardedRef,
498
+ role: "group",
499
+ id: controlId,
500
+ "aria-labelledby": field?.labelId,
501
+ "aria-label": ariaLabel,
502
+ "aria-describedby": describedBy,
503
+ ...rest,
504
+ className: cx(fillWidth && FILL_WIDTH_CSS, isRoot ? className : void 0),
505
+ ...rootStyle(isRoot, style),
506
+ children: [/* @__PURE__ */ jsx(FieldContext.Provider, {
507
+ value: null,
508
+ children: /* @__PURE__ */ jsxs(Rows, {
509
+ className: cx(fillWidth && ROWS_FILL_CSS),
510
+ children: [
511
+ /* @__PURE__ */ jsxs(LabelStack, { children: [rowLabel("frequency"), Object.entries(ROW_LABELS).map(([row, text]) => row === "frequency" ? null : /* @__PURE__ */ jsx(Text, {
512
+ as: "span",
513
+ size: textSize,
514
+ className: LABEL_SIZER_CSS,
515
+ "aria-hidden": true,
516
+ children: text
517
+ }, row))] }),
518
+ /* @__PURE__ */ jsx(ToggleInput, {
519
+ options: FREQUENCY_OPTIONS,
520
+ value: frequency,
521
+ onChange: changeFrequency,
522
+ size: CRON_INPUT_SIZE_TO_TOGGLE_INPUT_SIZE_MAP[size],
523
+ variant: CRON_INPUT_VARIANT_TO_TOGGLE_INPUT_VARIANT_MAP[variant],
524
+ isGhost,
525
+ "aria-labelledby": rowLabelId("frequency"),
526
+ fillWidth,
527
+ ...controlState
528
+ }),
529
+ frequency === "HOURLY" && /* @__PURE__ */ jsxs(Fragment$1, { children: [rowLabel("minute"), numberSelect("minute", "minute", MINUTE_OPTIONS)] }),
530
+ frequency === "DAILY" && timeRow,
531
+ frequency === "WEEKLY" && /* @__PURE__ */ jsxs(Fragment$1, { children: [
532
+ rowLabel("weekdays"),
533
+ /* @__PURE__ */ jsx(ButtonGroup, {
534
+ isAttached: true,
535
+ "aria-labelledby": rowLabelId("weekdays"),
536
+ fillWidth,
537
+ children: WEEKDAYS.map(({ day, label, name }) => /* @__PURE__ */ jsx(Button, {
538
+ variant: ButtonVariant.SECONDARY,
539
+ size: CRON_INPUT_SIZE_TO_BUTTON_SIZE_MAP[size],
540
+ label,
541
+ ariaLabel: name,
542
+ isActive: parts.weekdays.includes(day),
543
+ isDisabled,
544
+ fillWidth,
545
+ ...isReadOnly ? { "aria-disabled": true } : {},
546
+ onClick: () => toggleWeekday(day)
547
+ }, day))
548
+ }),
549
+ timeRow
550
+ ] }),
551
+ frequency === "MONTHLY" && /* @__PURE__ */ jsxs(Fragment$1, { children: [
552
+ rowLabel("day"),
553
+ numberSelect("day", "dayOfMonth", DAY_OF_MONTH_OPTIONS),
554
+ timeRow
555
+ ] }),
556
+ frequency === "CUSTOM" && /* @__PURE__ */ jsxs(Fragment$1, { children: [rowLabel("expression"), /* @__PURE__ */ jsx(ExpressionSlot, {
557
+ className: cx(fillWidth && EXPRESSION_FILL_CSS),
558
+ children: /* @__PURE__ */ jsx(TextInput, {
559
+ "aria-labelledby": rowLabelId("expression"),
560
+ family: FontFamily.MONO,
561
+ placeholder: "*/15 * * * *",
562
+ spellCheck: false,
563
+ value: expression,
564
+ onChange: (next) => {
565
+ if (!isEditable) return;
566
+ lastEmittedRef.current = next;
567
+ setExpression(next);
568
+ },
569
+ size: CRON_INPUT_SIZE_TO_INPUT_SIZE_MAP[size],
570
+ variant: CRON_INPUT_VARIANT_TO_INPUT_VARIANT_MAP[variant],
571
+ isGhost,
572
+ fillWidth: true,
573
+ ...controlState
574
+ })
575
+ })] })
576
+ ]
577
+ })
578
+ }), /* @__PURE__ */ jsx(Text, {
579
+ as: "p",
580
+ id: previewId,
581
+ size: helpSize,
582
+ variant: isDisabled ? TextVariant.DISABLED : sentence === null ? TextVariant.TERTIARY : TextVariant.SECONDARY,
583
+ children: sentence ?? CRON_INPUT_HINT
584
+ })]
585
+ });
586
+ }
587
+ /** A five-field cron expression, edited through a frequency builder with a plain-English preview. */
588
+ var CronInput = forwardRef(function CronInput(props, ref) {
589
+ const { label, error, isRequired = false, size = "MEDIUM", fillWidth = false } = props;
590
+ const { id, className, style } = props;
591
+ const ownField = useOwnField({
592
+ componentName: "CronInput",
593
+ label,
594
+ error,
595
+ isRequired,
596
+ size: CRON_INPUT_SIZE_TO_FIELD_SIZE_MAP[size],
597
+ id,
598
+ className,
599
+ style,
600
+ rootClassName: fillWidth && FILL_WIDTH_CSS
601
+ });
602
+ if (ownField !== null) return /* @__PURE__ */ jsx(Field, {
603
+ ...ownField,
604
+ children: /* @__PURE__ */ jsx(CronGroup, {
605
+ cronProps: props,
606
+ forwardedRef: ref,
607
+ isRoot: false
608
+ })
609
+ });
610
+ return /* @__PURE__ */ jsx(CronGroup, {
611
+ cronProps: props,
612
+ forwardedRef: ref,
613
+ isRoot: true
614
+ });
615
+ });
616
+ CronInput.displayName = "CronInput";
617
+ //#endregion
618
+ export { CronInputSize, CronInputVariant, CronInput as default };