@sanity/ui 4.2.0 → 5.0.0-alpha.10

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 (339) hide show
  1. package/README.md +194 -28
  2. package/bin/sanity-ui.js +14 -0
  3. package/dist/_chunks-es/LazyRefractor.js +20 -0
  4. package/dist/_chunks-es/LazyRefractor.js.map +1 -0
  5. package/dist/cli/checks.js +148 -0
  6. package/dist/cli/config.js +23 -0
  7. package/dist/cli/detect.js +181 -0
  8. package/dist/cli/doctor.js +49 -0
  9. package/dist/cli/index.js +69 -0
  10. package/dist/cli/init.js +189 -0
  11. package/dist/cli/install.js +79 -0
  12. package/dist/cli/log.js +66 -0
  13. package/dist/cli/selfPackage.js +11 -0
  14. package/dist/cli/styles.js +185 -0
  15. package/dist/cli/test-utils.js +8 -0
  16. package/dist/cli/tsconfig.js +236 -0
  17. package/dist/cli/types.js +1 -0
  18. package/dist/cli/versions.js +45 -0
  19. package/dist/index.d.ts +1203 -1469
  20. package/dist/index.js +2123 -1989
  21. package/dist/index.js.map +1 -1
  22. package/dist/polyfills.d.ts +1 -0
  23. package/dist/polyfills.js +5 -0
  24. package/dist/polyfills.js.map +1 -0
  25. package/dist/styles.css +1 -547
  26. package/package.json +57 -58
  27. package/src/cli/checks.test.ts +38 -0
  28. package/src/cli/checks.ts +200 -0
  29. package/src/cli/config.ts +44 -0
  30. package/src/cli/detect.test.ts +191 -0
  31. package/src/cli/detect.ts +205 -0
  32. package/src/cli/doctor.test.ts +52 -0
  33. package/src/cli/doctor.ts +65 -0
  34. package/src/cli/index.ts +77 -0
  35. package/src/cli/init.ts +225 -0
  36. package/src/cli/install.test.ts +52 -0
  37. package/src/cli/install.ts +108 -0
  38. package/src/cli/log.ts +79 -0
  39. package/src/cli/selfPackage.ts +14 -0
  40. package/src/cli/styles.test.ts +130 -0
  41. package/src/cli/styles.ts +205 -0
  42. package/src/cli/test-utils.ts +10 -0
  43. package/src/cli/tsconfig.test.ts +174 -0
  44. package/src/cli/tsconfig.ts +282 -0
  45. package/src/cli/types.ts +77 -0
  46. package/src/cli/versions.test.ts +35 -0
  47. package/src/cli/versions.ts +41 -0
  48. package/src/components/badge/Badge.tsx +53 -0
  49. package/src/components/badge/badge.css +6 -0
  50. package/src/components/badge/badge.props.ts +31 -0
  51. package/src/components/box/Box.tsx +30 -0
  52. package/src/components/box/box.css +4 -0
  53. package/src/components/box/box.props.ts +29 -0
  54. package/src/components/button/Button.tsx +78 -0
  55. package/src/components/button/button.css +72 -0
  56. package/src/components/button/button.props.ts +122 -0
  57. package/src/components/card/Card.tsx +31 -0
  58. package/src/components/card/card.css +4 -0
  59. package/src/components/card/card.props.ts +58 -0
  60. package/src/components/checkbox/Checkbox.tsx +64 -0
  61. package/src/components/checkbox/checkbox.css +100 -0
  62. package/src/components/checkbox/checkbox.props.ts +33 -0
  63. package/src/components/code/Code.tsx +38 -0
  64. package/src/components/code/LazyRefractor.tsx +9 -0
  65. package/src/components/code/code.css +40 -0
  66. package/src/components/code/code.props.ts +44 -0
  67. package/src/components/container/Container.tsx +30 -0
  68. package/src/components/container/container.css +4 -0
  69. package/src/components/container/container.props.ts +28 -0
  70. package/src/components/dialog/Dialog.tsx +139 -0
  71. package/src/components/dialog/dialog.css +49 -0
  72. package/src/components/dialog/dialog.props.ts +45 -0
  73. package/src/components/divider/Divider.tsx +23 -0
  74. package/src/components/divider/divider.props.ts +9 -0
  75. package/src/components/eyebrow/Eyebrow.tsx +54 -0
  76. package/src/components/eyebrow/eyebrow.css +11 -0
  77. package/src/components/eyebrow/eyebrow.props.ts +28 -0
  78. package/src/components/flex/Flex.tsx +30 -0
  79. package/src/components/flex/flex.css +4 -0
  80. package/src/components/flex/flex.props.ts +33 -0
  81. package/src/components/grid/Grid.tsx +30 -0
  82. package/src/components/grid/grid.css +4 -0
  83. package/src/components/grid/grid.props.ts +33 -0
  84. package/src/components/h-stack/HStack.tsx +34 -0
  85. package/src/components/h-stack/hStack.props.ts +17 -0
  86. package/src/components/heading/Heading.tsx +54 -0
  87. package/src/components/heading/heading.css +9 -0
  88. package/src/components/heading/heading.props.ts +31 -0
  89. package/src/components/icon/Icon.tsx +24 -0
  90. package/src/components/icon/icon.css +17 -0
  91. package/src/components/icon/icon.props.ts +35 -0
  92. package/src/components/icon-button/IconButton.tsx +32 -0
  93. package/src/components/icon-button/iconButton.props.ts +31 -0
  94. package/src/components/index.css +28 -0
  95. package/src/components/indicator/Indicator.tsx +42 -0
  96. package/src/components/indicator/indicator.css +4 -0
  97. package/src/components/indicator/indicator.props.ts +24 -0
  98. package/src/components/indicator-stack/IndicatorStack.tsx +31 -0
  99. package/src/components/indicator-stack/indicator-stack.css +7 -0
  100. package/src/components/indicator-stack/indicatorStack.props.ts +15 -0
  101. package/src/components/inline/Inline.tsx +38 -0
  102. package/src/components/inline/inline.css +4 -0
  103. package/src/components/inline/inline.props.ts +100 -0
  104. package/src/components/label/Label.tsx +34 -0
  105. package/src/components/label/label.css +3 -0
  106. package/src/components/label/label.props.ts +25 -0
  107. package/src/components/link/Link.tsx +29 -0
  108. package/src/components/link/link.css +12 -0
  109. package/src/components/link/link.props.ts +23 -0
  110. package/src/components/list/List.tsx +167 -0
  111. package/src/components/list/list.css +25 -0
  112. package/src/components/list/list.props.ts +130 -0
  113. package/src/components/popover/Popover.tsx +85 -0
  114. package/src/components/popover/popover.css +21 -0
  115. package/src/components/popover/popover.props.ts +38 -0
  116. package/src/components/press-area/PressArea.tsx +29 -0
  117. package/src/components/press-area/press-area.css +22 -0
  118. package/src/components/press-area/pressArea.props.ts +16 -0
  119. package/src/components/radio/Radio.tsx +48 -0
  120. package/src/components/radio/radio.css +97 -0
  121. package/src/components/radio/radio.props.ts +25 -0
  122. package/src/components/skip-to-content/SkipToContent.tsx +35 -0
  123. package/src/components/skip-to-content/skip-to-content.css +9 -0
  124. package/src/components/skip-to-content/skipToContent.props.ts +25 -0
  125. package/src/components/spinner/Spinner.tsx +28 -0
  126. package/src/components/spinner/spinner.css +10 -0
  127. package/src/components/spinner/spinner.props.ts +19 -0
  128. package/src/components/switch/Switch.tsx +48 -0
  129. package/src/components/switch/switch.css +119 -0
  130. package/src/components/switch/switch.props.ts +25 -0
  131. package/src/components/text/Text.tsx +53 -0
  132. package/src/components/text/text.css +9 -0
  133. package/src/components/text/text.props.ts +28 -0
  134. package/src/components/tooltip/Tooltip.tsx +97 -0
  135. package/src/components/tooltip/tooltip.css +31 -0
  136. package/src/components/tooltip/tooltip.props.ts +36 -0
  137. package/src/components/tooltip-group/TooltipGroup.tsx +64 -0
  138. package/src/components/tooltip-group/tooltipGroup.props.ts +15 -0
  139. package/src/components/v-stack/VStack.tsx +32 -0
  140. package/src/components/v-stack/vStack.props.ts +17 -0
  141. package/src/components/visually-hidden/VisuallyHidden.tsx +29 -0
  142. package/src/components/visually-hidden/visually-hidden.css +9 -0
  143. package/src/components/visually-hidden/visuallyHidden.props.ts +23 -0
  144. package/src/css/classes/dynamic/flex-child.css +5 -0
  145. package/src/css/classes/dynamic/grid-child.css +8 -0
  146. package/src/css/classes/dynamic/grid-parent.css +6 -0
  147. package/src/css/classes/dynamic/height.css +5 -0
  148. package/src/css/classes/dynamic/index.css +7 -0
  149. package/src/css/classes/dynamic/line-clamp.css +5 -0
  150. package/src/css/classes/dynamic/readme.md +3 -0
  151. package/src/css/classes/dynamic/width.css +7 -0
  152. package/src/css/classes/dynamic/z-index.css +3 -0
  153. package/src/css/classes/generic/display.css +10 -0
  154. package/src/css/classes/generic/flex.css +24 -0
  155. package/src/css/classes/generic/grid.css +7 -0
  156. package/src/css/classes/generic/index.css +7 -0
  157. package/src/css/classes/generic/overflow.css +19 -0
  158. package/src/css/classes/generic/placement.css +202 -0
  159. package/src/css/classes/generic/position.css +7 -0
  160. package/src/css/classes/generic/readme.md +3 -0
  161. package/src/css/classes/generic/text-align.css +5 -0
  162. package/src/css/classes/index.css +4 -0
  163. package/src/css/classes/local/animation.css +4 -0
  164. package/src/css/classes/local/border.css +20 -0
  165. package/src/css/classes/local/index.css +6 -0
  166. package/src/css/classes/local/readme.md +3 -0
  167. package/src/css/classes/local/text-overflow.css +5 -0
  168. package/src/css/classes/local/text-trim.css +45 -0
  169. package/src/css/classes/local/tone.css +75 -0
  170. package/src/css/classes/local/top-anchor.css +4 -0
  171. package/src/css/classes/system/color.css +223 -0
  172. package/src/css/classes/system/container.css +8 -0
  173. package/src/css/classes/system/font-family.css +2 -0
  174. package/src/css/classes/system/font-weight.css +4 -0
  175. package/src/css/classes/system/gap.css +37 -0
  176. package/src/css/classes/system/index.css +10 -0
  177. package/src/css/classes/system/inset.css +56 -0
  178. package/src/css/classes/system/margin.css +148 -0
  179. package/src/css/classes/system/padding.css +78 -0
  180. package/src/css/classes/system/radius.css +10 -0
  181. package/src/css/classes/system/readme.md +3 -0
  182. package/src/css/classes/system/shadow.css +6 -0
  183. package/src/css/classes/system/typography.css +31 -0
  184. package/src/css/global/font-face.css +20 -0
  185. package/src/css/global/index.css +2 -0
  186. package/src/css/global/reset.css +76 -0
  187. package/src/css/tokens/index.css +3 -0
  188. package/src/css/tokens/opacity.css +6 -0
  189. package/src/css/tokens/semantic.css +25 -0
  190. package/src/css/tokens/surface.css +27 -0
  191. package/src/hooks/useIsClient.ts +10 -0
  192. package/src/index.css +18 -0
  193. package/src/index.ts +65 -0
  194. package/src/polyfills.ts +15 -0
  195. package/src/props/border.ts +51 -0
  196. package/src/props/flexChild.ts +29 -0
  197. package/src/props/flexParent.ts +47 -0
  198. package/src/props/gap.ts +31 -0
  199. package/src/props/gridChild.ts +50 -0
  200. package/src/props/gridParent.ts +45 -0
  201. package/src/props/height.ts +29 -0
  202. package/src/props/layout.ts +44 -0
  203. package/src/props/margin.ts +59 -0
  204. package/src/props/overflow.ts +30 -0
  205. package/src/props/padding.ts +59 -0
  206. package/src/props/placement.ts +16 -0
  207. package/src/props/position.ts +52 -0
  208. package/src/props/shadow.ts +15 -0
  209. package/src/props/tone.ts +15 -0
  210. package/src/props/typography.ts +62 -0
  211. package/src/props/width.ts +29 -0
  212. package/src/props/zIndex.ts +15 -0
  213. package/src/styles.css.d.ts +1 -0
  214. package/src/styles.css.node.js +2 -0
  215. package/src/styles.css.test.ts +24 -0
  216. package/src/types/Button.ts +8 -0
  217. package/src/types/Code.ts +6 -0
  218. package/src/types/Container.ts +3 -0
  219. package/src/types/Density.ts +3 -0
  220. package/src/types/Display.ts +11 -0
  221. package/src/types/Eyebrow.ts +3 -0
  222. package/src/types/Flex.ts +22 -0
  223. package/src/types/FontWeight.ts +3 -0
  224. package/src/types/Grid.ts +3 -0
  225. package/src/types/Heading.ts +6 -0
  226. package/src/types/Icon.ts +3 -0
  227. package/src/types/Interactive.ts +8 -0
  228. package/src/types/List.ts +2 -0
  229. package/src/types/Overflow.ts +3 -0
  230. package/src/types/Placement.ts +16 -0
  231. package/src/types/Position.ts +3 -0
  232. package/src/types/PropDef.ts +73 -0
  233. package/src/types/Radius.ts +3 -0
  234. package/src/types/Responsive.ts +10 -0
  235. package/src/types/Shadow.ts +3 -0
  236. package/src/types/Space.ts +15 -0
  237. package/src/types/Text.ts +3 -0
  238. package/src/types/TextAlign.ts +3 -0
  239. package/src/types/Tone.ts +3 -0
  240. package/src/utils/getProps.test.ts +156 -0
  241. package/src/utils/getProps.ts +156 -0
  242. package/src/utils/mergeTriggerProps.ts +66 -0
  243. package/src/utils/renderPortal.tsx +14 -0
  244. package/src/utils/suffixClassName.ts +5 -0
  245. package/src/version.ts +3 -0
  246. package/LICENSE +0 -21
  247. package/dist/_system-CTe2lb5l.d.ts +0 -40
  248. package/dist/_system-CTe2lb5l.d.ts.map +0 -1
  249. package/dist/arrow-BmX6qbAS.js +0 -170
  250. package/dist/arrow-BmX6qbAS.js.map +0 -1
  251. package/dist/autocomplete.d.ts +0 -140
  252. package/dist/autocomplete.d.ts.map +0 -1
  253. package/dist/autocomplete.js +0 -470
  254. package/dist/autocomplete.js.map +0 -1
  255. package/dist/breadcrumbs.d.ts +0 -18
  256. package/dist/breadcrumbs.d.ts.map +0 -1
  257. package/dist/breadcrumbs.js +0 -119
  258. package/dist/breadcrumbs.js.map +0 -1
  259. package/dist/button-BNyKSDyA.js +0 -180
  260. package/dist/button-BNyKSDyA.js.map +0 -1
  261. package/dist/button-dnqMFkWg.d.ts +0 -76
  262. package/dist/button-dnqMFkWg.d.ts.map +0 -1
  263. package/dist/card-C0a0wQTc.d.ts +0 -7
  264. package/dist/card-C0a0wQTc.d.ts.map +0 -1
  265. package/dist/code.d.ts +0 -20
  266. package/dist/code.d.ts.map +0 -1
  267. package/dist/code.js +0 -90
  268. package/dist/code.js.map +0 -1
  269. package/dist/codeFontStyle-84SMhFtI.js +0 -11
  270. package/dist/codeFontStyle-84SMhFtI.js.map +0 -1
  271. package/dist/component-DVlwaWB-.d.ts +0 -25
  272. package/dist/component-DVlwaWB-.d.ts.map +0 -1
  273. package/dist/element-BYgCE_iK.js +0 -51
  274. package/dist/element-BYgCE_iK.js.map +0 -1
  275. package/dist/factory-BzXTX8_Q.js +0 -3056
  276. package/dist/factory-BzXTX8_Q.js.map +0 -1
  277. package/dist/flex-DmbDG2ks.js +0 -76
  278. package/dist/flex-DmbDG2ks.js.map +0 -1
  279. package/dist/font-EtfxKPUz.d.ts +0 -49
  280. package/dist/font-EtfxKPUz.d.ts.map +0 -1
  281. package/dist/getElementRef-Jw7gY0eV.js +0 -102
  282. package/dist/getElementRef-Jw7gY0eV.js.map +0 -1
  283. package/dist/getScopedTheme-C-sZsyAz.js +0 -267
  284. package/dist/getScopedTheme-C-sZsyAz.js.map +0 -1
  285. package/dist/getTheme_v2-y09KqtEb.js +0 -487
  286. package/dist/getTheme_v2-y09KqtEb.js.map +0 -1
  287. package/dist/grid-6JSgMj1O.js +0 -115
  288. package/dist/grid-6JSgMj1O.js.map +0 -1
  289. package/dist/helpers-C8xxXAQC.js +0 -63
  290. package/dist/helpers-C8xxXAQC.js.map +0 -1
  291. package/dist/hotkeys-CaHsQlsO.js +0 -168
  292. package/dist/hotkeys-CaHsQlsO.js.map +0 -1
  293. package/dist/index.d.ts.map +0 -1
  294. package/dist/layer-Bl5R3uNR.js +0 -61
  295. package/dist/layer-Bl5R3uNR.js.map +0 -1
  296. package/dist/layer-ChlP9Ik6.d.ts +0 -242
  297. package/dist/layer-ChlP9Ik6.d.ts.map +0 -1
  298. package/dist/menu.d.ts +0 -146
  299. package/dist/menu.d.ts.map +0 -1
  300. package/dist/menu.js +0 -626
  301. package/dist/menu.js.map +0 -1
  302. package/dist/popover-B7-28L8y.js +0 -408
  303. package/dist/popover-B7-28L8y.js.map +0 -1
  304. package/dist/popover-CMlQeKn0.d.ts +0 -96
  305. package/dist/popover-CMlQeKn0.d.ts.map +0 -1
  306. package/dist/popover.d.ts +0 -2
  307. package/dist/popover.js +0 -3
  308. package/dist/refractor-CC48DwHi.js +0 -20
  309. package/dist/refractor-CC48DwHi.js.map +0 -1
  310. package/dist/responsiveFont-CilwaORG.js +0 -55
  311. package/dist/responsiveFont-CilwaORG.js.map +0 -1
  312. package/dist/rgba-BSYaEUW6.d.ts +0 -846
  313. package/dist/rgba-BSYaEUW6.d.ts.map +0 -1
  314. package/dist/selectable-B0GUIL74.d.ts +0 -7
  315. package/dist/selectable-B0GUIL74.d.ts.map +0 -1
  316. package/dist/stack-rsNFPq2-.js +0 -112
  317. package/dist/stack-rsNFPq2-.js.map +0 -1
  318. package/dist/styles-css.d.ts +0 -2
  319. package/dist/styles-css.js +0 -4
  320. package/dist/textInput-pSfQjkmx.js +0 -313
  321. package/dist/textInput-pSfQjkmx.js.map +0 -1
  322. package/dist/theme.d.ts +0 -280
  323. package/dist/theme.d.ts.map +0 -1
  324. package/dist/theme.js +0 -55
  325. package/dist/theme.js.map +0 -1
  326. package/dist/toast.d.ts +0 -73
  327. package/dist/toast.d.ts.map +0 -1
  328. package/dist/toast.js +0 -302
  329. package/dist/toast.js.map +0 -1
  330. package/dist/tooltip.d.ts +0 -88
  331. package/dist/tooltip.d.ts.map +0 -1
  332. package/dist/tooltip.js +0 -435
  333. package/dist/tooltip.js.map +0 -1
  334. package/dist/useClickOutsideEvent-wGLGWBZN.js +0 -36
  335. package/dist/useClickOutsideEvent-wGLGWBZN.js.map +0 -1
  336. package/dist/useElementSize-BJvbGHq8.js +0 -51
  337. package/dist/useElementSize-BJvbGHq8.js.map +0 -1
  338. package/dist/useLayer-D1usxIE0.js +0 -712
  339. package/dist/useLayer-D1usxIE0.js.map +0 -1
package/dist/menu.js DELETED
@@ -1,626 +0,0 @@
1
- "use client";
2
- import { n as _getArrayProp } from "./helpers-C8xxXAQC.js";
3
- import { i as isHTMLButtonElement, r as isHTMLAnchorElement } from "./element-BYgCE_iK.js";
4
- import { t as getTheme_v2 } from "./getTheme_v2-y09KqtEb.js";
5
- import { d as createGlobalScopedContext, h as _cardColorStyle, l as useRootTheme, r as isRecord, t as useLayer, v as responsiveRadiusStyle, y as Box } from "./useLayer-D1usxIE0.js";
6
- import { t as Flex } from "./flex-DmbDG2ks.js";
7
- import { n as Text, t as Stack } from "./stack-rsNFPq2-.js";
8
- import { t as Popover } from "./popover-B7-28L8y.js";
9
- import { t as useClickOutsideEvent } from "./useClickOutsideEvent-wGLGWBZN.js";
10
- import { i as useGlobalKeyDown, t as Hotkeys } from "./hotkeys-CaHsQlsO.js";
11
- import { c } from "react/compiler-runtime";
12
- import { clsx } from "clsx/lite";
13
- import { cloneElement, isValidElement, useContext, useEffect, useImperativeHandle, useRef, useState } from "react";
14
- import { css, styled } from "styled-components";
15
- import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
16
- import { isValidElementType } from "react-is";
17
- import { ChevronRightIcon } from "@sanity/icons/ChevronRight";
18
- const MenuContext = createGlobalScopedContext("@sanity/ui/context/menu", null);
19
- /**
20
- * @internal
21
- */
22
- function _isFocusable(element) {
23
- return isHTMLAnchorElement(element) && element.getAttribute("data-disabled") !== "true" || isHTMLButtonElement(element) && !element.disabled;
24
- }
25
- /**
26
- * @internal
27
- */
28
- function _getFocusableElements(elements) {
29
- return elements.filter(_isFocusable);
30
- }
31
- function _getDOMPath(rootElement, el) {
32
- let path = [], e = el;
33
- for (; e !== rootElement;) {
34
- let parentElement = e.parentElement;
35
- if (!parentElement) return path;
36
- let index = Array.from(parentElement.childNodes).indexOf(e);
37
- if (path.unshift(index), parentElement === rootElement) return path;
38
- e = parentElement;
39
- }
40
- return path;
41
- }
42
- const EMPTY_PATH = [];
43
- /**
44
- * @internal
45
- */
46
- function _sortElements(rootElement, elements) {
47
- if (!rootElement) return;
48
- let map = /* @__PURE__ */ new WeakMap();
49
- for (let el of elements) map.set(el, _getDOMPath(rootElement, el));
50
- let _sort = (a, b) => {
51
- let _a = map.get(a) || EMPTY_PATH, _b = map.get(b) || EMPTY_PATH, len = Math.max(_a.length, _b.length);
52
- for (let i = 0; i < len; i += 1) {
53
- let aIndex = _a[i] || -1, bIndex = _b[i] || -1;
54
- if (aIndex !== bIndex) return aIndex - bIndex;
55
- }
56
- return 0;
57
- };
58
- elements.sort(_sort);
59
- }
60
- /**
61
- * This controller is responsible for controlling UI menu state.
62
- *
63
- * @internal
64
- */
65
- function useMenuController(props) {
66
- let $ = c(23), { onKeyDown, originElement, shouldFocus, rootElementRef } = props, t0;
67
- $[0] === Symbol.for("react.memo_cache_sentinel") ? (t0 = [], $[0] = t0) : t0 = $[0];
68
- let elementsRef = useRef(t0), [activeIndex, _setActiveIndex] = useState(-1), activeIndexRef = useRef(activeIndex), [activeElement, setActiveElement] = useState(null), t1;
69
- $[1] === Symbol.for("react.memo_cache_sentinel") ? (t1 = (nextActiveIndex) => {
70
- _setActiveIndex(nextActiveIndex), activeIndexRef.current = nextActiveIndex, setActiveElement(elementsRef.current[nextActiveIndex] || null);
71
- }, $[1] = t1) : t1 = $[1];
72
- let setActiveIndex = t1, t2;
73
- $[2] === rootElementRef ? t2 = $[3] : (t2 = (element, selected) => {
74
- if (!element) return _temp$2;
75
- if (elementsRef.current.indexOf(element) === -1 && (elementsRef.current.push(element), _sortElements(rootElementRef.current, elementsRef.current)), selected) {
76
- let selectedIndex = elementsRef.current.indexOf(element);
77
- setActiveIndex(selectedIndex);
78
- }
79
- return () => {
80
- let idx = elementsRef.current.indexOf(element);
81
- idx > -1 && elementsRef.current.splice(idx, 1);
82
- };
83
- }, $[2] = rootElementRef, $[3] = t2);
84
- let mount = t2, t3, t4;
85
- $[4] === Symbol.for("react.memo_cache_sentinel") ? (t3 = () => () => setActiveIndex(-1), t4 = [setActiveIndex], $[4] = t3, $[5] = t4) : (t3 = $[4], t4 = $[5]), useEffect(t3, t4);
86
- let t5;
87
- $[6] !== onKeyDown || $[7] !== originElement ? (t5 = (event) => {
88
- if (event.key === "Tab") {
89
- originElement && originElement.focus();
90
- return;
91
- }
92
- if (event.key === "Home") {
93
- event.preventDefault(), event.stopPropagation();
94
- let el = _getFocusableElements(elementsRef.current)[0];
95
- if (!el) return;
96
- let currentIndex = elementsRef.current.indexOf(el);
97
- setActiveIndex(currentIndex);
98
- return;
99
- }
100
- if (event.key === "End") {
101
- event.preventDefault(), event.stopPropagation();
102
- let focusableElements_0 = _getFocusableElements(elementsRef.current), el_0 = focusableElements_0[focusableElements_0.length - 1];
103
- if (!el_0) return;
104
- let currentIndex_0 = elementsRef.current.indexOf(el_0);
105
- setActiveIndex(currentIndex_0);
106
- return;
107
- }
108
- if (event.key === "ArrowUp") {
109
- event.preventDefault(), event.stopPropagation();
110
- let focusableElements_1 = _getFocusableElements(elementsRef.current), focusableLen = focusableElements_1.length;
111
- if (focusableLen === 0) return;
112
- let focusedElement = elementsRef.current[activeIndexRef.current], focusedIndex = focusableElements_1.indexOf(focusedElement);
113
- focusedIndex = (focusedIndex - 1 + focusableLen) % focusableLen;
114
- let el_1 = focusableElements_1[focusedIndex], currentIndex_1 = elementsRef.current.indexOf(el_1);
115
- setActiveIndex(currentIndex_1);
116
- return;
117
- }
118
- if (event.key === "ArrowDown") {
119
- event.preventDefault(), event.stopPropagation();
120
- let focusableElements_2 = _getFocusableElements(elementsRef.current), focusableLen_0 = focusableElements_2.length;
121
- if (focusableLen_0 === 0) return;
122
- let focusedElement_0 = elementsRef.current[activeIndexRef.current], focusedIndex_0 = focusableElements_2.indexOf(focusedElement_0);
123
- focusedIndex_0 = (focusedIndex_0 + 1) % focusableLen_0;
124
- let el_2 = focusableElements_2[focusedIndex_0], currentIndex_2 = elementsRef.current.indexOf(el_2);
125
- setActiveIndex(currentIndex_2);
126
- return;
127
- }
128
- onKeyDown && onKeyDown(event);
129
- }, $[6] = onKeyDown, $[7] = originElement, $[8] = t5) : t5 = $[8];
130
- let handleKeyDown = t5, t6;
131
- $[9] === Symbol.for("react.memo_cache_sentinel") ? (t6 = (event_0) => {
132
- let element_0 = event_0.currentTarget, currentIndex_3 = elementsRef.current.indexOf(element_0);
133
- setActiveIndex(currentIndex_3);
134
- }, $[9] = t6) : t6 = $[9];
135
- let handleItemMouseEnter = t6, t7;
136
- $[10] === rootElementRef ? t7 = $[11] : (t7 = () => {
137
- setActiveIndex(-2), rootElementRef.current?.focus();
138
- }, $[10] = rootElementRef, $[11] = t7);
139
- let handleItemMouseLeave = t7, t8, t9;
140
- $[12] !== activeIndex || $[13] !== rootElementRef || $[14] !== shouldFocus ? (t8 = () => {
141
- if (!rootElementRef.current) return;
142
- let rafId = requestAnimationFrame(() => {
143
- if (activeIndex === -1) {
144
- if (shouldFocus === "first") {
145
- let el_3 = _getFocusableElements(elementsRef.current)[0];
146
- if (el_3) {
147
- let currentIndex_4 = elementsRef.current.indexOf(el_3);
148
- setActiveIndex(currentIndex_4);
149
- }
150
- }
151
- if (shouldFocus === "last") {
152
- let focusableElements_4 = _getFocusableElements(elementsRef.current), el_4 = focusableElements_4[focusableElements_4.length - 1];
153
- if (el_4) {
154
- let currentIndex_5 = elementsRef.current.indexOf(el_4);
155
- setActiveIndex(currentIndex_5);
156
- }
157
- }
158
- return;
159
- }
160
- (elementsRef.current[activeIndex] || null)?.focus();
161
- });
162
- return () => cancelAnimationFrame(rafId);
163
- }, t9 = [
164
- activeIndex,
165
- rootElementRef,
166
- setActiveIndex,
167
- shouldFocus
168
- ], $[12] = activeIndex, $[13] = rootElementRef, $[14] = shouldFocus, $[15] = t8, $[16] = t9) : (t8 = $[15], t9 = $[16]), useEffect(t8, t9);
169
- let t10;
170
- return $[17] !== activeElement || $[18] !== activeIndex || $[19] !== handleItemMouseLeave || $[20] !== handleKeyDown || $[21] !== mount ? (t10 = {
171
- activeElement,
172
- activeIndex,
173
- handleItemMouseEnter,
174
- handleItemMouseLeave,
175
- handleKeyDown,
176
- mount
177
- }, $[17] = activeElement, $[18] = activeIndex, $[19] = handleItemMouseLeave, $[20] = handleKeyDown, $[21] = mount, $[22] = t10) : t10 = $[22], t10;
178
- }
179
- function _temp$2() {}
180
- var menu = "_196sf460";
181
- /**
182
- * The `Menu` component is a building block for application menus.
183
- *
184
- * @public
185
- */
186
- function Menu(props) {
187
- let $ = c(54), children, className, forwardedRef, onClickOutside, onEscape, onItemClick, onItemSelect, onKeyDown, originElement, registerElement, restProps, t0, t1, t2;
188
- $[0] === props ? (children = $[1], className = $[2], forwardedRef = $[3], onClickOutside = $[4], onEscape = $[5], onItemClick = $[6], onItemSelect = $[7], onKeyDown = $[8], originElement = $[9], registerElement = $[10], restProps = $[11], t0 = $[12], t1 = $[13], t2 = $[14]) : ({children, className, onClickOutside, onEscape, onItemClick, onItemSelect, onKeyDown, originElement, padding: t0, ref: forwardedRef, registerElement, shouldFocus: t1, gap: t2, ...restProps} = props, $[0] = props, $[1] = children, $[2] = className, $[3] = forwardedRef, $[4] = onClickOutside, $[5] = onEscape, $[6] = onItemClick, $[7] = onItemSelect, $[8] = onKeyDown, $[9] = originElement, $[10] = registerElement, $[11] = restProps, $[12] = t0, $[13] = t1, $[14] = t2);
189
- let padding = t0 === void 0 ? 1 : t0, shouldFocus = t1 === void 0 ? null : t1, gap = t2 === void 0 ? 1 : t2, ref = useRef(null), t3;
190
- $[15] === Symbol.for("react.memo_cache_sentinel") ? (t3 = () => ref.current, $[15] = t3) : t3 = $[15], useImperativeHandle(forwardedRef, t3);
191
- let { isTopLayer } = useLayer(), t4;
192
- $[16] !== onKeyDown || $[17] !== originElement || $[18] !== shouldFocus ? (t4 = {
193
- onKeyDown,
194
- originElement,
195
- shouldFocus,
196
- rootElementRef: ref
197
- }, $[16] = onKeyDown, $[17] = originElement, $[18] = shouldFocus, $[19] = t4) : t4 = $[19];
198
- let { activeElement, activeIndex, handleItemMouseEnter, handleItemMouseLeave, handleKeyDown, mount } = useMenuController(t4), unregisterElementRef = useRef(null), t5;
199
- $[20] === registerElement ? t5 = $[21] : (t5 = (el) => {
200
- unregisterElementRef.current &&= (unregisterElementRef.current(), null), ref.current = el, ref.current && registerElement && (unregisterElementRef.current = registerElement(ref.current));
201
- }, $[20] = registerElement, $[21] = t5);
202
- let handleRefChange = t5, t6, t7;
203
- $[22] !== activeIndex || $[23] !== onItemSelect ? (t6 = () => {
204
- onItemSelect && onItemSelect(activeIndex);
205
- }, t7 = [activeIndex, onItemSelect], $[22] = activeIndex, $[23] = onItemSelect, $[24] = t6, $[25] = t7) : (t6 = $[24], t7 = $[25]), useEffect(t6, t7);
206
- let t8;
207
- $[26] === Symbol.for("react.memo_cache_sentinel") ? (t8 = () => [ref.current], $[26] = t8) : t8 = $[26], useClickOutsideEvent(isTopLayer && onClickOutside, t8);
208
- let t9;
209
- $[27] !== isTopLayer || $[28] !== onEscape ? (t9 = (event) => {
210
- isTopLayer && event.key === "Escape" && (event.stopPropagation(), onEscape && onEscape());
211
- }, $[27] = isTopLayer, $[28] = onEscape, $[29] = t9) : t9 = $[29], useGlobalKeyDown(t9);
212
- let t10;
213
- $[30] !== activeElement || $[31] !== handleItemMouseEnter || $[32] !== handleItemMouseLeave || $[33] !== mount || $[34] !== onClickOutside || $[35] !== onEscape || $[36] !== onItemClick || $[37] !== registerElement ? (t10 = {
214
- version: 2,
215
- activeElement,
216
- mount,
217
- onClickOutside,
218
- onEscape,
219
- onItemClick,
220
- onItemMouseEnter: handleItemMouseEnter,
221
- onItemMouseLeave: handleItemMouseLeave,
222
- registerElement
223
- }, $[30] = activeElement, $[31] = handleItemMouseEnter, $[32] = handleItemMouseLeave, $[33] = mount, $[34] = onClickOutside, $[35] = onEscape, $[36] = onItemClick, $[37] = registerElement, $[38] = t10) : t10 = $[38];
224
- let value = t10, t11;
225
- $[39] === className ? t11 = $[40] : (t11 = clsx(menu, className), $[39] = className, $[40] = t11);
226
- let t12;
227
- $[41] !== children || $[42] !== gap ? (t12 = /* @__PURE__ */ jsx(Stack, {
228
- gap,
229
- children
230
- }), $[41] = children, $[42] = gap, $[43] = t12) : t12 = $[43];
231
- let t13;
232
- $[44] !== handleKeyDown || $[45] !== handleRefChange || $[46] !== padding || $[47] !== restProps || $[48] !== t11 || $[49] !== t12 ? (t13 = /* @__PURE__ */ jsx(Box, {
233
- className: t11,
234
- "data-ui": "Menu",
235
- ...restProps,
236
- onKeyDown: handleKeyDown,
237
- padding,
238
- ref: handleRefChange,
239
- role: "menu",
240
- tabIndex: -1,
241
- children: t12
242
- }), $[44] = handleKeyDown, $[45] = handleRefChange, $[46] = padding, $[47] = restProps, $[48] = t11, $[49] = t12, $[50] = t13) : t13 = $[50];
243
- let t14;
244
- return $[51] !== t13 || $[52] !== value ? (t14 = /* @__PURE__ */ jsx(MenuContext.Provider, {
245
- value,
246
- children: t13
247
- }), $[51] = t13, $[52] = value, $[53] = t14) : t14 = $[53], t14;
248
- }
249
- /**
250
- * The `MenuButton` component follows the WAI-ARIA specification for menu buttons.
251
- *
252
- * @public
253
- */
254
- function MenuButton(props) {
255
- let $ = c(56), { __unstable_disableRestoreFocusOnClose: t0, button: buttonProp, id, menu: menuProp, onClose, onOpen, popover, ref: forwardedRef } = props, disableRestoreFocusOnClose = t0 !== void 0 && t0, [open, setOpen] = useState(!1), [shouldFocus, setShouldFocus] = useState(null), [buttonElement, setButtonElement] = useState(null), t1;
256
- $[0] === Symbol.for("react.memo_cache_sentinel") ? (t1 = [], $[0] = t1) : t1 = $[0];
257
- let [menuElements, setChildMenuElements] = useState(t1), openRef = useRef(open), t2, t3;
258
- $[1] !== onOpen || $[2] !== open ? (t2 = () => {
259
- onOpen && open && !openRef.current && onOpen();
260
- }, t3 = [onOpen, open], $[1] = onOpen, $[2] = open, $[3] = t2, $[4] = t3) : (t2 = $[3], t3 = $[4]), useEffect(t2, t3);
261
- let t4, t5;
262
- $[5] !== onClose || $[6] !== open ? (t4 = () => {
263
- onClose && !open && openRef.current && onClose();
264
- }, t5 = [onClose, open], $[5] = onClose, $[6] = open, $[7] = t4, $[8] = t5) : (t4 = $[7], t5 = $[8]), useEffect(t4, t5);
265
- let t6, t7;
266
- $[9] === open ? (t6 = $[10], t7 = $[11]) : (t6 = () => {
267
- openRef.current = open;
268
- }, t7 = [open], $[9] = open, $[10] = t6, $[11] = t7), useEffect(t6, t7);
269
- let t8;
270
- $[12] === Symbol.for("react.memo_cache_sentinel") ? (t8 = () => {
271
- setOpen(_temp$1), setShouldFocus(null);
272
- }, $[12] = t8) : t8 = $[12];
273
- let handleButtonClick = t8, t9;
274
- $[13] === open ? t9 = $[14] : (t9 = (event) => {
275
- open && event.preventDefault();
276
- }, $[13] = open, $[14] = t9);
277
- let handleMouseDown = t9, t10;
278
- $[15] === Symbol.for("react.memo_cache_sentinel") ? (t10 = (event_0) => {
279
- if (event_0.key === "ArrowDown" || event_0.key === "Enter" || event_0.key === " ") {
280
- event_0.preventDefault(), setOpen(!0), setShouldFocus("first");
281
- return;
282
- }
283
- if (event_0.key === "ArrowUp") {
284
- event_0.preventDefault(), setOpen(!0), setShouldFocus("last");
285
- return;
286
- }
287
- }, $[15] = t10) : t10 = $[15];
288
- let handleButtonKeyDown = t10, t11;
289
- $[16] !== buttonElement || $[17] !== menuElements ? (t11 = (event_1) => {
290
- let target = event_1.target;
291
- if (target instanceof Node && (!buttonElement || target !== buttonElement && !buttonElement.contains(target))) {
292
- for (let el of menuElements) if (target === el || el.contains(target)) return;
293
- setOpen(!1);
294
- }
295
- }, $[16] = buttonElement, $[17] = menuElements, $[18] = t11) : t11 = $[18];
296
- let handleMenuClickOutside = t11, t12;
297
- $[19] !== buttonElement || $[20] !== disableRestoreFocusOnClose ? (t12 = () => {
298
- setOpen(!1), !disableRestoreFocusOnClose && buttonElement && buttonElement.focus();
299
- }, $[19] = buttonElement, $[20] = disableRestoreFocusOnClose, $[21] = t12) : t12 = $[21];
300
- let handleMenuEscape = t12, t13;
301
- $[22] === menuElements ? t13 = $[23] : (t13 = (event_2) => {
302
- let target_0 = event_2.relatedTarget;
303
- if (target_0 instanceof Node) {
304
- for (let el_0 of menuElements) if (el_0 === target_0 || el_0.contains(target_0)) return;
305
- setOpen(!1);
306
- }
307
- }, $[22] = menuElements, $[23] = t13);
308
- let handleBlur = t13, t14;
309
- $[24] !== buttonElement || $[25] !== disableRestoreFocusOnClose ? (t14 = () => {
310
- setOpen(!1), !disableRestoreFocusOnClose && buttonElement && buttonElement.focus();
311
- }, $[24] = buttonElement, $[25] = disableRestoreFocusOnClose, $[26] = t14) : t14 = $[26];
312
- let handleItemClick = t14, t15;
313
- $[27] === Symbol.for("react.memo_cache_sentinel") ? (t15 = (el_1) => (setChildMenuElements((els) => els.concat([el_1])), () => setChildMenuElements((els_0) => els_0.filter((_el) => _el !== el_1))), $[27] = t15) : t15 = $[27];
314
- let registerElement = t15, t16;
315
- $[28] !== buttonElement || $[29] !== handleBlur || $[30] !== handleItemClick || $[31] !== handleMenuClickOutside || $[32] !== handleMenuEscape || $[33] !== id || $[34] !== menuProp || $[35] !== shouldFocus ? (t16 = menuProp && cloneElement(menuProp, {
316
- "aria-labelledby": id,
317
- onBlurCapture: handleBlur,
318
- onClickOutside: handleMenuClickOutside,
319
- onEscape: handleMenuEscape,
320
- onItemClick: handleItemClick,
321
- originElement: buttonElement,
322
- registerElement,
323
- shouldFocus
324
- }), $[28] = buttonElement, $[29] = handleBlur, $[30] = handleItemClick, $[31] = handleMenuClickOutside, $[32] = handleMenuEscape, $[33] = id, $[34] = menuProp, $[35] = shouldFocus, $[36] = t16) : t16 = $[36];
325
- let menu = t16, t17;
326
- $[37] !== buttonProp || $[38] !== handleMouseDown || $[39] !== id || $[40] !== open ? (t17 = buttonProp && cloneElement(buttonProp, {
327
- "data-ui": "MenuButton",
328
- id,
329
- onClick: handleButtonClick,
330
- onKeyDown: handleButtonKeyDown,
331
- onMouseDown: handleMouseDown,
332
- "aria-haspopup": !0,
333
- "aria-expanded": open,
334
- ref: setButtonElement,
335
- selected: buttonProp.props.selected ?? open
336
- }), $[37] = buttonProp, $[38] = handleMouseDown, $[39] = id, $[40] = open, $[41] = t17) : t17 = $[41];
337
- let button = t17, t18, t19;
338
- $[42] === buttonElement ? (t18 = $[43], t19 = $[44]) : (t18 = () => buttonElement, t19 = [buttonElement], $[42] = buttonElement, $[43] = t18, $[44] = t19), useImperativeHandle(forwardedRef, t18, t19);
339
- let t20;
340
- $[45] === popover ? t20 = $[46] : (t20 = popover || {}, $[45] = popover, $[46] = t20);
341
- let t21;
342
- $[47] === t20 ? t21 = $[48] : (t21 = {
343
- overflow: "auto",
344
- portal: !0,
345
- ...t20
346
- }, $[47] = t20, $[48] = t21);
347
- let popoverProps = t21, t22;
348
- $[49] === button ? t22 = $[50] : (t22 = button || /* @__PURE__ */ jsx(Fragment$1, {}), $[49] = button, $[50] = t22);
349
- let t23;
350
- return $[51] !== menu || $[52] !== open || $[53] !== popoverProps || $[54] !== t22 ? (t23 = /* @__PURE__ */ jsx(Popover, {
351
- "data-ui": "MenuButton__popover",
352
- ...popoverProps,
353
- content: menu,
354
- open,
355
- children: t22
356
- }), $[51] = menu, $[52] = open, $[53] = popoverProps, $[54] = t22, $[55] = t23) : t23 = $[55], t23;
357
- }
358
- function _temp$1(v) {
359
- return !v;
360
- }
361
- var menuDivider = "_17s3sc10";
362
- function MenuDividerComponent(props) {
363
- let $ = c(12), className, ref, restProps, t0;
364
- $[0] === props ? (className = $[1], ref = $[2], restProps = $[3], t0 = $[4]) : ({as: t0, className, ref, ...restProps} = props, $[0] = props, $[1] = className, $[2] = ref, $[3] = restProps, $[4] = t0);
365
- let Component = t0 === void 0 ? "hr" : t0, t1;
366
- $[5] === className ? t1 = $[6] : (t1 = clsx(menuDivider, className), $[5] = className, $[6] = t1);
367
- let t2;
368
- return $[7] !== Component || $[8] !== ref || $[9] !== restProps || $[10] !== t1 ? (t2 = /* @__PURE__ */ jsx(Component, {
369
- "data-ui": "MenuDivider",
370
- className: t1,
371
- ref,
372
- ...restProps
373
- }), $[7] = Component, $[8] = ref, $[9] = restProps, $[10] = t1, $[11] = t2) : t2 = $[11], t2;
374
- }
375
- /**
376
- * @public
377
- */
378
- const MenuDivider = MenuDividerComponent;
379
- function selectableBaseStyle() {
380
- return css`background-color:inherit;color:inherit;&[data-as='button']{-webkit-font-smoothing:inherit;appearance:none;outline:none;font:inherit;text-align:inherit;border:0;width:-moz-available;width:-webkit-fill-available;width:stretch;}&[data-as='a']{text-decoration:none;}`;
381
- }
382
- function selectableColorStyle(props) {
383
- let { $tone } = props, { color, style } = getTheme_v2(props.theme), tone = color.selectable[$tone];
384
- return css`${_cardColorStyle(color, tone.enabled)} background-color:var(--card-bg-color);color:var(--card-fg-color);outline:none;&[data-as='button']{&:disabled{${_cardColorStyle(color, tone.disabled)}}&:not(:disabled){&[aria-pressed='true']{${_cardColorStyle(color, tone.pressed)}}&[data-selected],&[aria-selected='true'] > &{${_cardColorStyle(color, tone.selected)}}@media (hover:hover){&:not([data-selected]){&[data-hovered],&:hover{${_cardColorStyle(color, tone.hovered)}}&:active{${_cardColorStyle(color, tone.pressed)}}}}}}&[data-as='a']{&[data-disabled]{${_cardColorStyle(color, tone.disabled)}}&:not([data-disabled]){&[data-pressed]{${_cardColorStyle(color, tone.pressed)}}&[data-selected]{${_cardColorStyle(color, tone.selected)}}@media (hover:hover){&:not([data-selected]){&[data-hovered],&:hover{${_cardColorStyle(color, tone.hovered)}}&:active{${_cardColorStyle(color, tone.pressed)}}}}}}${style?.card?.root}`;
385
- }
386
- /**
387
- * @internal
388
- */
389
- const Selectable = /* @__PURE__ */ styled(Box).withConfig({
390
- displayName: "Selectable",
391
- componentId: "sc-71o6vd-0"
392
- })(responsiveRadiusStyle, selectableBaseStyle, selectableColorStyle);
393
- function useMenu() {
394
- let value = useContext(MenuContext);
395
- if (!value) throw Error("useMenu(): missing context value");
396
- if (!isRecord(value) || value.version !== 2) throw Error("useMenu(): the context value is not compatible");
397
- return value;
398
- }
399
- /**
400
- * @public
401
- */
402
- const MenuGroup = function MenuGroup(props) {
403
- let $ = c(81), IconComponent, children, menuProps, onClick, popover, restProps, t0, t1, t2, t3, t4, t5, text;
404
- $[0] === props ? (IconComponent = $[1], children = $[2], menuProps = $[3], onClick = $[4], popover = $[5], restProps = $[6], t0 = $[7], t1 = $[8], t2 = $[9], t3 = $[10], t4 = $[11], t5 = $[12], text = $[13]) : ({as: t0, children, fontSize: t1, icon: IconComponent, menu: menuProps, onClick, padding: t2, popover, radius: t3, gap: t4, text, tone: t5, ...restProps} = props, $[0] = props, $[1] = IconComponent, $[2] = children, $[3] = menuProps, $[4] = onClick, $[5] = popover, $[6] = restProps, $[7] = t0, $[8] = t1, $[9] = t2, $[10] = t3, $[11] = t4, $[12] = t5, $[13] = text);
405
- let as = t0 === void 0 ? "button" : t0, fontSize = t1 === void 0 ? 1 : t1, padding = t2 === void 0 ? 3 : t2, radius = t3 === void 0 ? 2 : t3, gap = t4 === void 0 ? 3 : t4, tone = t5 === void 0 ? "default" : t5, menu = useMenu(), { scheme } = useRootTheme(), { activeElement, mount, onClickOutside, onEscape, onItemClick, onItemMouseEnter: _onItemMouseEnter, registerElement } = menu, onItemMouseEnter = _onItemMouseEnter ?? menu.onItemMouseEnter, [rootElement, setRootElement] = useState(null), [open, setOpen] = useState(!1), [shouldFocus, setShouldFocus] = useState(null), active = !!activeElement && activeElement === rootElement, [withinMenu, setWithinMenu] = useState(!1), t6;
406
- $[14] === onItemMouseEnter ? t6 = $[15] : (t6 = (event) => {
407
- setWithinMenu(!1), onItemMouseEnter(event), setOpen(!0);
408
- }, $[14] = onItemMouseEnter, $[15] = t6);
409
- let handleMouseEnter = t6, t7;
410
- $[16] === rootElement ? t7 = $[17] : (t7 = (event_0) => {
411
- event_0.key === "ArrowLeft" && (event_0.stopPropagation(), setOpen(!1), requestAnimationFrame(() => {
412
- rootElement?.focus();
413
- }));
414
- }, $[16] = rootElement, $[17] = t7);
415
- let handleMenuKeyDown = t7, t8;
416
- $[18] === onClick ? t8 = $[19] : (t8 = (event_1) => {
417
- onClick?.(event_1), setShouldFocus("first"), setOpen(!0);
418
- }, $[18] = onClick, $[19] = t8);
419
- let handleClick = t8, t9;
420
- $[20] === onItemClick ? t9 = $[21] : (t9 = () => {
421
- setOpen(!1), onItemClick?.();
422
- }, $[20] = onItemClick, $[21] = t9);
423
- let handleChildItemClick = t9, t10;
424
- $[22] === Symbol.for("react.memo_cache_sentinel") ? (t10 = () => setWithinMenu(!0), $[22] = t10) : t10 = $[22];
425
- let handleMenuMouseEnter = t10, t11, t12;
426
- $[23] !== mount || $[24] !== rootElement ? (t11 = () => mount(rootElement), t12 = [mount, rootElement], $[23] = mount, $[24] = rootElement, $[25] = t11, $[26] = t12) : (t11 = $[25], t12 = $[26]), useEffect(t11, t12);
427
- let t13, t14;
428
- $[27] === active ? (t13 = $[28], t14 = $[29]) : (t13 = () => {
429
- active || setOpen(!1);
430
- }, t14 = [active], $[27] = active, $[28] = t13, $[29] = t14), useEffect(t13, t14);
431
- let t15, t16;
432
- $[30] === open ? (t15 = $[31], t16 = $[32]) : (t15 = () => {
433
- open || setWithinMenu(!1);
434
- }, t16 = [open], $[30] = open, $[31] = t15, $[32] = t16), useEffect(t15, t16);
435
- let t17, t18;
436
- $[33] === shouldFocus ? (t17 = $[34], t18 = $[35]) : (t17 = () => {
437
- if (!shouldFocus) return;
438
- let rafId = requestAnimationFrame(() => setShouldFocus(null));
439
- return () => cancelAnimationFrame(rafId);
440
- }, t18 = [shouldFocus], $[33] = shouldFocus, $[34] = t17, $[35] = t18), useEffect(t17, t18);
441
- let t19;
442
- $[36] !== children || $[37] !== handleChildItemClick || $[38] !== handleMenuKeyDown || $[39] !== menuProps || $[40] !== onClickOutside || $[41] !== onEscape || $[42] !== registerElement || $[43] !== shouldFocus ? (t19 = /* @__PURE__ */ jsx(Menu, {
443
- ...menuProps,
444
- onClickOutside,
445
- onEscape,
446
- onItemClick: handleChildItemClick,
447
- onKeyDown: handleMenuKeyDown,
448
- onMouseEnter: handleMenuMouseEnter,
449
- registerElement,
450
- shouldFocus,
451
- children
452
- }), $[36] = children, $[37] = handleChildItemClick, $[38] = handleMenuKeyDown, $[39] = menuProps, $[40] = onClickOutside, $[41] = onEscape, $[42] = registerElement, $[43] = shouldFocus, $[44] = t19) : t19 = $[44];
453
- let childMenu = t19, t20;
454
- $[45] === Symbol.for("react.memo_cache_sentinel") ? (t20 = (event_2) => {
455
- let target = event_2.currentTarget;
456
- if (document.activeElement === target && event_2.key === "ArrowRight") {
457
- setShouldFocus("first"), setOpen(!0), setWithinMenu(!0);
458
- return;
459
- }
460
- }, $[45] = t20) : t20 = $[45];
461
- let handleKeyDown = t20, t21 = as === "button" ? withinMenu : void 0, t22 = as === "button" ? void 0 : withinMenu, t23 = !withinMenu && active ? "" : void 0, t24;
462
- $[46] === radius ? t24 = $[47] : (t24 = _getArrayProp(radius), $[46] = radius, $[47] = t24);
463
- let t25 = as === "button" ? "button" : void 0, t26;
464
- $[48] !== IconComponent || $[49] !== fontSize ? (t26 = IconComponent && /* @__PURE__ */ jsxs(Text, {
465
- size: fontSize,
466
- children: [isValidElement(IconComponent) && IconComponent, isValidElementType(IconComponent) && /* @__PURE__ */ jsx(IconComponent, {})]
467
- }), $[48] = IconComponent, $[49] = fontSize, $[50] = t26) : t26 = $[50];
468
- let t27;
469
- $[51] !== fontSize || $[52] !== text ? (t27 = /* @__PURE__ */ jsx(Box, {
470
- flex: 1,
471
- children: /* @__PURE__ */ jsx(Text, {
472
- size: fontSize,
473
- textOverflow: "ellipsis",
474
- weight: "medium",
475
- children: text
476
- })
477
- }), $[51] = fontSize, $[52] = text, $[53] = t27) : t27 = $[53];
478
- let t28;
479
- $[54] === Symbol.for("react.memo_cache_sentinel") ? (t28 = /* @__PURE__ */ jsx(ChevronRightIcon, {}), $[54] = t28) : t28 = $[54];
480
- let t29;
481
- $[55] === fontSize ? t29 = $[56] : (t29 = /* @__PURE__ */ jsx(Text, {
482
- size: fontSize,
483
- children: t28
484
- }), $[55] = fontSize, $[56] = t29);
485
- let t30;
486
- $[57] !== gap || $[58] !== padding || $[59] !== t26 || $[60] !== t27 || $[61] !== t29 ? (t30 = /* @__PURE__ */ jsxs(Flex, {
487
- gap,
488
- padding,
489
- children: [
490
- t26,
491
- t27,
492
- t29
493
- ]
494
- }), $[57] = gap, $[58] = padding, $[59] = t26, $[60] = t27, $[61] = t29, $[62] = t30) : t30 = $[62];
495
- let t31;
496
- $[63] !== as || $[64] !== handleClick || $[65] !== handleMouseEnter || $[66] !== restProps || $[67] !== scheme || $[68] !== t21 || $[69] !== t22 || $[70] !== t23 || $[71] !== t24 || $[72] !== t25 || $[73] !== t30 || $[74] !== tone ? (t31 = /* @__PURE__ */ jsx(Selectable, {
497
- "data-as": as,
498
- "data-ui": "MenuGroup",
499
- forwardedAs: as,
500
- ...restProps,
501
- "aria-pressed": t21,
502
- "data-pressed": t22,
503
- "data-selected": t23,
504
- $radius: t24,
505
- $tone: tone,
506
- $scheme: scheme,
507
- onClick: handleClick,
508
- onKeyDown: handleKeyDown,
509
- onMouseEnter: handleMouseEnter,
510
- ref: setRootElement,
511
- tabIndex: -1,
512
- type: t25,
513
- children: t30
514
- }), $[63] = as, $[64] = handleClick, $[65] = handleMouseEnter, $[66] = restProps, $[67] = scheme, $[68] = t21, $[69] = t22, $[70] = t23, $[71] = t24, $[72] = t25, $[73] = t30, $[74] = tone, $[75] = t31) : t31 = $[75];
515
- let t32;
516
- return $[76] !== childMenu || $[77] !== open || $[78] !== popover || $[79] !== t31 ? (t32 = /* @__PURE__ */ jsx(Popover, {
517
- ...popover,
518
- content: childMenu,
519
- "data-ui": "MenuGroup__popover",
520
- open,
521
- children: t31
522
- }), $[76] = childMenu, $[77] = open, $[78] = popover, $[79] = t31, $[80] = t32) : t32 = $[80], t32;
523
- }, MenuItem = function MenuItem(props) {
524
- let $ = c(76), IconComponent, IconRightComponent, children, disabled, forwardedRef, hotkeys, onClick, paddingBottom, paddingLeft, paddingRight, paddingTop, paddingX, paddingY, pressed, restProps, selectedProp, t0, t1, t2, t3, t4, t5, text;
525
- $[0] === props ? (IconComponent = $[1], IconRightComponent = $[2], children = $[3], disabled = $[4], forwardedRef = $[5], hotkeys = $[6], onClick = $[7], paddingBottom = $[8], paddingLeft = $[9], paddingRight = $[10], paddingTop = $[11], paddingX = $[12], paddingY = $[13], pressed = $[14], restProps = $[15], selectedProp = $[16], t0 = $[17], t1 = $[18], t2 = $[19], t3 = $[20], t4 = $[21], t5 = $[22], text = $[23]) : ({as: t0, children, disabled, fontSize: t1, hotkeys, icon: IconComponent, iconRight: IconRightComponent, onClick, padding: t2, paddingX, paddingY, paddingTop, paddingRight, paddingBottom, paddingLeft, pressed, radius: t3, ref: forwardedRef, selected: selectedProp, gap: t4, text, tone: t5, ...restProps} = props, $[0] = props, $[1] = IconComponent, $[2] = IconRightComponent, $[3] = children, $[4] = disabled, $[5] = forwardedRef, $[6] = hotkeys, $[7] = onClick, $[8] = paddingBottom, $[9] = paddingLeft, $[10] = paddingRight, $[11] = paddingTop, $[12] = paddingX, $[13] = paddingY, $[14] = pressed, $[15] = restProps, $[16] = selectedProp, $[17] = t0, $[18] = t1, $[19] = t2, $[20] = t3, $[21] = t4, $[22] = t5, $[23] = text);
526
- let as = t0 === void 0 ? "button" : t0, fontSize = t1 === void 0 ? 1 : t1, padding = t2 === void 0 ? 3 : t2, radius = t3 === void 0 ? 2 : t3, gap = t4 === void 0 ? 3 : t4, tone = t5 === void 0 ? "default" : t5, { scheme } = useRootTheme(), menu = useMenu(), { activeElement, mount, onItemClick, onItemMouseEnter: _onItemMouseEnter, onItemMouseLeave: _onItemMouseLeave } = menu, onItemMouseEnter = _onItemMouseEnter ?? menu.onItemMouseEnter, onItemMouseLeave = _onItemMouseLeave ?? menu.onItemMouseLeave, [rootElement, setRootElement] = useState(null), active = !!activeElement && activeElement === rootElement, ref = useRef(null), t6;
527
- $[24] === Symbol.for("react.memo_cache_sentinel") ? (t6 = () => ref.current, $[24] = t6) : t6 = $[24], useImperativeHandle(forwardedRef, t6);
528
- let t7, t8;
529
- $[25] !== mount || $[26] !== rootElement || $[27] !== selectedProp ? (t7 = () => mount(rootElement, selectedProp), t8 = [
530
- mount,
531
- rootElement,
532
- selectedProp
533
- ], $[25] = mount, $[26] = rootElement, $[27] = selectedProp, $[28] = t7, $[29] = t8) : (t7 = $[28], t8 = $[29]), useEffect(t7, t8);
534
- let t9;
535
- $[30] !== disabled || $[31] !== onClick || $[32] !== onItemClick ? (t9 = (event) => {
536
- disabled || (onClick && onClick(event), onItemClick && onItemClick());
537
- }, $[30] = disabled, $[31] = onClick, $[32] = onItemClick, $[33] = t9) : t9 = $[33];
538
- let handleClick = t9, t10;
539
- $[34] !== padding || $[35] !== paddingBottom || $[36] !== paddingLeft || $[37] !== paddingRight || $[38] !== paddingTop || $[39] !== paddingX || $[40] !== paddingY ? (t10 = {
540
- padding,
541
- paddingX,
542
- paddingY,
543
- paddingTop,
544
- paddingRight,
545
- paddingBottom,
546
- paddingLeft
547
- }, $[34] = padding, $[35] = paddingBottom, $[36] = paddingLeft, $[37] = paddingRight, $[38] = paddingTop, $[39] = paddingX, $[40] = paddingY, $[41] = t10) : t10 = $[41];
548
- let paddingProps = t10, t11;
549
- $[42] === fontSize ? t11 = $[43] : (t11 = _getArrayProp(fontSize).map(_temp), $[42] = fontSize, $[43] = t11);
550
- let hotkeysFontSize = t11, t12;
551
- $[44] === Symbol.for("react.memo_cache_sentinel") ? (t12 = (el) => {
552
- ref.current = el, setRootElement(el);
553
- }, $[44] = t12) : t12 = $[44];
554
- let setRef = t12, t13 = as !== "button" && pressed ? "" : void 0, t14 = active ? "" : void 0, t15 = disabled ? "" : void 0, t16;
555
- $[45] === radius ? t16 = $[46] : (t16 = _getArrayProp(radius), $[45] = radius, $[46] = t16);
556
- let t17;
557
- $[47] === Symbol.for("react.memo_cache_sentinel") ? (t17 = _getArrayProp(0), $[47] = t17) : t17 = $[47];
558
- let t18 = disabled ? "default" : tone, t19 = as === "button" ? "button" : void 0, t20;
559
- $[48] !== IconComponent || $[49] !== IconRightComponent || $[50] !== fontSize || $[51] !== gap || $[52] !== hotkeys || $[53] !== hotkeysFontSize || $[54] !== paddingProps || $[55] !== text ? (t20 = (IconComponent || text || IconRightComponent) && /* @__PURE__ */ jsxs(Flex, {
560
- as: "span",
561
- gap,
562
- align: "center",
563
- ...paddingProps,
564
- children: [
565
- IconComponent && /* @__PURE__ */ jsxs(Text, {
566
- size: fontSize,
567
- children: [isValidElement(IconComponent) && IconComponent, isValidElementType(IconComponent) && /* @__PURE__ */ jsx(IconComponent, {})]
568
- }),
569
- text && /* @__PURE__ */ jsx(Box, {
570
- flex: 1,
571
- children: /* @__PURE__ */ jsx(Text, {
572
- size: fontSize,
573
- textOverflow: "ellipsis",
574
- weight: "medium",
575
- children: text
576
- })
577
- }),
578
- hotkeys && /* @__PURE__ */ jsx(Hotkeys, {
579
- fontSize: hotkeysFontSize,
580
- keys: hotkeys,
581
- style: {
582
- marginTop: -4,
583
- marginBottom: -4
584
- }
585
- }),
586
- IconRightComponent && /* @__PURE__ */ jsxs(Text, {
587
- size: fontSize,
588
- children: [isValidElement(IconRightComponent) && IconRightComponent, isValidElementType(IconRightComponent) && /* @__PURE__ */ jsx(IconRightComponent, {})]
589
- })
590
- ]
591
- }), $[48] = IconComponent, $[49] = IconRightComponent, $[50] = fontSize, $[51] = gap, $[52] = hotkeys, $[53] = hotkeysFontSize, $[54] = paddingProps, $[55] = text, $[56] = t20) : t20 = $[56];
592
- let t21;
593
- $[57] !== children || $[58] !== paddingProps ? (t21 = children && /* @__PURE__ */ jsx(Box, {
594
- as: "span",
595
- ...paddingProps,
596
- children
597
- }), $[57] = children, $[58] = paddingProps, $[59] = t21) : t21 = $[59];
598
- let t22;
599
- return $[60] !== as || $[61] !== disabled || $[62] !== handleClick || $[63] !== onItemMouseEnter || $[64] !== onItemMouseLeave || $[65] !== restProps || $[66] !== scheme || $[67] !== t13 || $[68] !== t14 || $[69] !== t15 || $[70] !== t16 || $[71] !== t18 || $[72] !== t19 || $[73] !== t20 || $[74] !== t21 ? (t22 = /* @__PURE__ */ jsxs(Selectable, {
600
- "data-ui": "MenuItem",
601
- role: "menuitem",
602
- ...restProps,
603
- "data-pressed": t13,
604
- "data-selected": t14,
605
- "data-disabled": t15,
606
- forwardedAs: as,
607
- $radius: t16,
608
- $padding: t17,
609
- $tone: t18,
610
- $scheme: scheme,
611
- disabled,
612
- onClick: handleClick,
613
- onMouseEnter: onItemMouseEnter,
614
- onMouseLeave: onItemMouseLeave,
615
- ref: setRef,
616
- tabIndex: -1,
617
- type: t19,
618
- children: [t20, t21]
619
- }), $[60] = as, $[61] = disabled, $[62] = handleClick, $[63] = onItemMouseEnter, $[64] = onItemMouseLeave, $[65] = restProps, $[66] = scheme, $[67] = t13, $[68] = t14, $[69] = t15, $[70] = t16, $[71] = t18, $[72] = t19, $[73] = t20, $[74] = t21, $[75] = t22) : t22 = $[75], t22;
620
- };
621
- function _temp(s) {
622
- return s - 1;
623
- }
624
- export { Menu, MenuButton, MenuDivider, MenuGroup, MenuItem };
625
-
626
- //# sourceMappingURL=menu.js.map