@soroush.tech/design-system 2.0.0-rc.1 → 2.0.0-rc.2

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 (299) hide show
  1. package/README.md +17 -1
  2. package/dist/AppBar.d.cts +1 -3
  3. package/dist/AppBar.d.mts +1 -3
  4. package/dist/Avatar.cjs +1 -1
  5. package/dist/Avatar.d.cts +1 -3
  6. package/dist/Avatar.d.mts +1 -3
  7. package/dist/Avatar.mjs +1 -1
  8. package/dist/Backdrop.d.cts +1 -1
  9. package/dist/Backdrop.d.mts +1 -1
  10. package/dist/Breadcrumbs.cjs +132 -0
  11. package/dist/Breadcrumbs.d.cts +40 -0
  12. package/dist/Breadcrumbs.d.mts +40 -0
  13. package/dist/Breadcrumbs.mjs +131 -0
  14. package/dist/Button.cjs +1 -1
  15. package/dist/Button.d.cts +1 -1
  16. package/dist/Button.d.mts +1 -1
  17. package/dist/Button.mjs +1 -1
  18. package/dist/ButtonGroup.d.cts +1 -1
  19. package/dist/ButtonGroup.d.mts +1 -1
  20. package/dist/Card.cjs +3 -3
  21. package/dist/Card.d.cts +4 -3
  22. package/dist/Card.d.mts +4 -3
  23. package/dist/Card.mjs +3 -3
  24. package/dist/Checkbox.d.cts +1 -2
  25. package/dist/Checkbox.d.mts +1 -2
  26. package/dist/CircularProgress.d.cts +2 -3
  27. package/dist/CircularProgress.d.mts +2 -3
  28. package/dist/Drawer.d.cts +3 -2
  29. package/dist/Drawer.d.mts +3 -2
  30. package/dist/Flex.d.cts +1 -1
  31. package/dist/Flex.d.mts +1 -1
  32. package/dist/Form.d.cts +1 -1
  33. package/dist/Form.d.mts +1 -1
  34. package/dist/FormControl.cjs +1 -1
  35. package/dist/FormControl.d.cts +1 -2
  36. package/dist/FormControl.d.mts +1 -2
  37. package/dist/FormControl.mjs +1 -1
  38. package/dist/FormHelperText.d.cts +1 -1
  39. package/dist/FormHelperText.d.mts +1 -1
  40. package/dist/FormLabel.d.cts +1 -1
  41. package/dist/FormLabel.d.mts +1 -1
  42. package/dist/Grid.d.cts +1 -3
  43. package/dist/Grid.d.mts +1 -3
  44. package/dist/{Icon-CI6q2Eyi.cjs → Icon-Cvuhp9ek.cjs} +12 -2
  45. package/dist/{Icon-CH3asUJu.mjs → Icon-DlheCTJb.mjs} +12 -2
  46. package/dist/Icon.cjs +1 -1
  47. package/dist/Icon.d.cts +1 -1
  48. package/dist/Icon.d.mts +1 -1
  49. package/dist/Icon.mjs +1 -1
  50. package/dist/Image.d.cts +1 -2
  51. package/dist/Image.d.mts +1 -2
  52. package/dist/LinearProgress.d.cts +2 -3
  53. package/dist/LinearProgress.d.mts +2 -3
  54. package/dist/Link.cjs +1 -1
  55. package/dist/Link.d.cts +1 -1
  56. package/dist/Link.d.mts +1 -1
  57. package/dist/Link.mjs +1 -1
  58. package/dist/Menu/ContextMenu.cjs +146 -0
  59. package/dist/Menu/ContextMenu.d.cts +52 -0
  60. package/dist/Menu/ContextMenu.d.mts +52 -0
  61. package/dist/Menu/ContextMenu.mjs +145 -0
  62. package/dist/Menu/Menu.cjs +3 -0
  63. package/dist/Menu/Menu.d.cts +2 -0
  64. package/dist/Menu/Menu.d.mts +2 -0
  65. package/dist/Menu/Menu.mjs +2 -0
  66. package/dist/Menu/MenuDivider.cjs +29 -0
  67. package/dist/Menu/MenuDivider.d.cts +12 -0
  68. package/dist/Menu/MenuDivider.d.mts +12 -0
  69. package/dist/Menu/MenuDivider.mjs +28 -0
  70. package/dist/Menu/MenuItems.cjs +29 -0
  71. package/dist/Menu/MenuItems.d.cts +2 -0
  72. package/dist/Menu/MenuItems.d.mts +2 -0
  73. package/dist/Menu/MenuItems.mjs +28 -0
  74. package/dist/Menu/MenuList.cjs +3 -0
  75. package/dist/Menu/MenuList.d.cts +38 -0
  76. package/dist/Menu/MenuList.d.mts +38 -0
  77. package/dist/Menu/MenuList.mjs +2 -0
  78. package/dist/Menu-BkKPTOfh.cjs +172 -0
  79. package/dist/Menu-tECbAEFj.mjs +167 -0
  80. package/dist/Menu.cjs +13 -0
  81. package/dist/Menu.d.cts +7 -0
  82. package/dist/Menu.d.mts +7 -0
  83. package/dist/Menu.mjs +6 -0
  84. package/dist/MenuItem-BR7ingQx.mjs +654 -0
  85. package/dist/MenuItem-CfdN4axw.cjs +684 -0
  86. package/dist/MenuItem.cjs +2 -148
  87. package/dist/MenuItem.d.cts +2 -52
  88. package/dist/MenuItem.d.mts +2 -52
  89. package/dist/MenuItem.mjs +1 -147
  90. package/dist/MenuList-B7msJ1IG.mjs +187 -0
  91. package/dist/MenuList-D4imLXAa.cjs +223 -0
  92. package/dist/MenuListContext-Dml16k0X.d.mts +21 -0
  93. package/dist/MenuListContext-vujGcRk9.d.cts +21 -0
  94. package/dist/Modal.d.cts +1 -1
  95. package/dist/Modal.d.mts +1 -1
  96. package/dist/NativeSelect.cjs +2 -2
  97. package/dist/NativeSelect.d.cts +2 -3
  98. package/dist/NativeSelect.d.mts +2 -3
  99. package/dist/NativeSelect.mjs +2 -2
  100. package/dist/Pagination/PaginationItem.cjs +1 -1
  101. package/dist/Pagination/PaginationItem.d.cts +1 -1
  102. package/dist/Pagination/PaginationItem.d.mts +1 -1
  103. package/dist/Pagination/PaginationItem.mjs +1 -1
  104. package/dist/Pagination.d.cts +2 -2
  105. package/dist/Pagination.d.mts +2 -2
  106. package/dist/Paper.cjs +1 -1
  107. package/dist/Paper.d.cts +2 -1
  108. package/dist/Paper.d.mts +2 -1
  109. package/dist/Paper.mjs +1 -1
  110. package/dist/{Popover-TpwRSORC.cjs → Popover-CiZfgiKE.cjs} +5 -125
  111. package/dist/Popover-QjM5Z1CR.mjs +133 -0
  112. package/dist/Popover.cjs +1 -1
  113. package/dist/Popover.d.cts +6 -7
  114. package/dist/Popover.d.mts +6 -7
  115. package/dist/Popover.mjs +1 -1
  116. package/dist/Pressable.cjs +1 -1
  117. package/dist/Pressable.d.cts +1 -1
  118. package/dist/Pressable.d.mts +1 -1
  119. package/dist/Pressable.mjs +1 -1
  120. package/dist/Quote.d.cts +2 -3
  121. package/dist/Quote.d.mts +2 -3
  122. package/dist/Radio.d.cts +1 -2
  123. package/dist/Radio.d.mts +1 -2
  124. package/dist/Select.cjs +3 -3
  125. package/dist/Select.d.cts +2 -3
  126. package/dist/Select.d.mts +2 -3
  127. package/dist/Select.mjs +3 -3
  128. package/dist/Sidebar/Sidebar.d.cts +1 -1
  129. package/dist/Sidebar/Sidebar.d.mts +1 -1
  130. package/dist/Sidebar/SidebarItem.cjs +1 -1
  131. package/dist/Sidebar/SidebarItem.d.cts +3 -4
  132. package/dist/Sidebar/SidebarItem.d.mts +3 -4
  133. package/dist/Sidebar/SidebarItem.mjs +1 -1
  134. package/dist/Skeleton.d.cts +1 -2
  135. package/dist/Skeleton.d.mts +1 -2
  136. package/dist/Switch.cjs +1 -1
  137. package/dist/Switch.d.cts +1 -2
  138. package/dist/Switch.d.mts +1 -2
  139. package/dist/Switch.mjs +1 -1
  140. package/dist/Table/Table.d.cts +2 -3
  141. package/dist/Table/Table.d.mts +2 -3
  142. package/dist/Table/TableBody.d.cts +1 -2
  143. package/dist/Table/TableBody.d.mts +1 -2
  144. package/dist/Table/TableCell.d.cts +1 -1
  145. package/dist/Table/TableCell.d.mts +1 -1
  146. package/dist/Table/TableContainer.d.cts +1 -3
  147. package/dist/Table/TableContainer.d.mts +1 -3
  148. package/dist/Table/TableControl.d.cts +1 -1
  149. package/dist/Table/TableControl.d.mts +1 -1
  150. package/dist/Table/TableFooter.d.cts +1 -2
  151. package/dist/Table/TableFooter.d.mts +1 -2
  152. package/dist/Table/TableHead.d.cts +1 -2
  153. package/dist/Table/TableHead.d.mts +1 -2
  154. package/dist/Table/TablePagination.d.cts +2 -2
  155. package/dist/Table/TablePagination.d.mts +2 -2
  156. package/dist/Table/TablePaginationActions.cjs +1 -1
  157. package/dist/Table/TablePaginationActions.d.cts +1 -1
  158. package/dist/Table/TablePaginationActions.d.mts +1 -1
  159. package/dist/Table/TablePaginationActions.mjs +1 -1
  160. package/dist/Table/TableRow.d.cts +1 -2
  161. package/dist/Table/TableRow.d.mts +1 -2
  162. package/dist/Table/TableSortLabel.cjs +1 -1
  163. package/dist/Table/TableSortLabel.d.cts +1 -1
  164. package/dist/Table/TableSortLabel.d.mts +1 -1
  165. package/dist/Table/TableSortLabel.mjs +1 -1
  166. package/dist/Table/hooks.d.cts +1 -1
  167. package/dist/Table/hooks.d.mts +1 -1
  168. package/dist/Table.d.cts +5 -5
  169. package/dist/Table.d.mts +5 -5
  170. package/dist/{TableContext-BeCxbtHH.d.cts → TableContext-6PgGpUzM.d.mts} +1 -1
  171. package/dist/{TableContext-BiRiYkVZ.d.mts → TableContext-CBGk-Lh8.d.cts} +1 -1
  172. package/dist/Tabs/Tab.cjs +306 -0
  173. package/dist/Tabs/Tab.d.cts +62 -0
  174. package/dist/Tabs/Tab.d.mts +62 -0
  175. package/dist/Tabs/Tab.mjs +305 -0
  176. package/dist/Tabs/TabContext.cjs +34 -0
  177. package/dist/Tabs/TabContext.d.cts +20 -0
  178. package/dist/Tabs/TabContext.d.mts +20 -0
  179. package/dist/Tabs/TabContext.mjs +33 -0
  180. package/dist/Tabs/TabList.cjs +31 -0
  181. package/dist/Tabs/TabList.d.cts +11 -0
  182. package/dist/Tabs/TabList.d.mts +11 -0
  183. package/dist/Tabs/TabList.mjs +30 -0
  184. package/dist/Tabs/TabPanel.cjs +40 -0
  185. package/dist/Tabs/TabPanel.d.cts +27 -0
  186. package/dist/Tabs/TabPanel.d.mts +27 -0
  187. package/dist/Tabs/TabPanel.mjs +38 -0
  188. package/dist/Tabs/TabScrollButton.cjs +93 -0
  189. package/dist/Tabs/TabScrollButton.d.cts +2 -0
  190. package/dist/Tabs/TabScrollButton.d.mts +2 -0
  191. package/dist/Tabs/TabScrollButton.mjs +91 -0
  192. package/dist/Tabs/Tabs.cjs +3 -0
  193. package/dist/Tabs/Tabs.d.cts +3 -0
  194. package/dist/Tabs/Tabs.d.mts +3 -0
  195. package/dist/Tabs/Tabs.mjs +2 -0
  196. package/dist/Tabs-D_wkX-Jb.cjs +645 -0
  197. package/dist/Tabs-YfCUbkQV.mjs +633 -0
  198. package/dist/Tabs.cjs +13 -0
  199. package/dist/Tabs.d.cts +8 -0
  200. package/dist/Tabs.d.mts +8 -0
  201. package/dist/Tabs.mjs +7 -0
  202. package/dist/TabsContext-C2agsLBN.d.cts +6 -0
  203. package/dist/TabsContext-DqyxdmGW.d.mts +6 -0
  204. package/dist/TabsValueContext-D40zGCpE.cjs +19 -0
  205. package/dist/TabsValueContext-DvL3inf7.mjs +8 -0
  206. package/dist/TextInput.cjs +1 -1
  207. package/dist/TextInput.d.cts +1 -2
  208. package/dist/TextInput.d.mts +1 -2
  209. package/dist/TextInput.mjs +1 -1
  210. package/dist/ToggleButton/ToggleButton.cjs +1 -1
  211. package/dist/ToggleButton/ToggleButton.d.cts +1 -1
  212. package/dist/ToggleButton/ToggleButton.d.mts +1 -1
  213. package/dist/ToggleButton/ToggleButton.mjs +1 -1
  214. package/dist/ToggleButton/ToggleButtonGroup.cjs +1 -1
  215. package/dist/ToggleButton/ToggleButtonGroup.d.cts +1 -1
  216. package/dist/ToggleButton/ToggleButtonGroup.d.mts +1 -1
  217. package/dist/ToggleButton/ToggleButtonGroup.mjs +1 -1
  218. package/dist/Typography.cjs +1 -1
  219. package/dist/Typography.d.cts +2 -2
  220. package/dist/Typography.d.mts +2 -2
  221. package/dist/Typography.mjs +1 -1
  222. package/dist/View.d.cts +1 -1
  223. package/dist/View.d.mts +1 -1
  224. package/dist/catalog.cjs +4110 -0
  225. package/dist/catalog.d.cts +90 -0
  226. package/dist/catalog.d.mts +90 -0
  227. package/dist/catalog.mjs +4109 -0
  228. package/dist/computePopoverPosition-BIprs_xo.mjs +123 -0
  229. package/dist/computePopoverPosition-DiyEOHnU.cjs +128 -0
  230. package/dist/dividerLine-BNljcGlv.cjs +66 -0
  231. package/dist/dividerLine-FahY-M6_.mjs +31 -0
  232. package/dist/engine.d.cts +1 -1
  233. package/dist/engine.d.mts +1 -1
  234. package/dist/index-B3LIhqHR.d.cts +98 -0
  235. package/dist/{index-DbEnSf2m.d.cts → index-B8DNxyEw.d.mts} +3 -4
  236. package/dist/{index-CxUsrlg1.d.cts → index-BCnKYNlZ.d.cts} +1 -2
  237. package/dist/{index-BUoVTCqX.d.mts → index-BFruxTHv.d.cts} +2 -3
  238. package/dist/{index-BSqet8aO.d.cts → index-BSA6SKao.d.mts} +2 -3
  239. package/dist/{index-CrN4MSUF.d.cts → index-BVPrG1L0.d.mts} +1 -1
  240. package/dist/{index-Celm-8iN.d.cts → index-BbgFYfX_.d.mts} +3 -4
  241. package/dist/{index-B78VkB0-.d.cts → index-Bhdn4KTy.d.cts} +2 -3
  242. package/dist/{index-Chg6pSrr.d.mts → index-BiVvxOvj.d.cts} +3 -4
  243. package/dist/index-BjPX49XA.d.mts +34 -0
  244. package/dist/{index-BB-dLv5V.d.mts → index-BjfPEP_5.d.cts} +3 -4
  245. package/dist/{index-Bid71KeF.d.cts → index-BlLH6rlE.d.cts} +2 -2
  246. package/dist/{index-Ctqajtac.d.cts → index-BqpS_Huq.d.mts} +12 -4
  247. package/dist/{index-BhibLnZ0.d.cts → index-Bxd9NOWb.d.mts} +2 -3
  248. package/dist/index-C3KrFPCj.d.mts +35 -0
  249. package/dist/{themes-RX2UX5gD.d.mts → index-CVNJEUwJ.d.mts} +217 -8
  250. package/dist/index-CWnbCxgw.d.cts +72 -0
  251. package/dist/index-Cj5Rhh_9.d.mts +72 -0
  252. package/dist/index-CoEqjFYn.d.mts +98 -0
  253. package/dist/{index-S-ClM6WM.d.mts → index-CrIxI8Na.d.mts} +2 -2
  254. package/dist/index-DBteSahY.d.cts +1 -0
  255. package/dist/index-DCmH5f9I.d.cts +72 -0
  256. package/dist/{index-VOsBSWEu.d.mts → index-DDJuUfL5.d.cts} +1 -1
  257. package/dist/{index-DdqdSOct.d.cts → index-DIC7HKpP.d.mts} +2 -3
  258. package/dist/{index-BfZuh9c2.d.mts → index-DJCpnTH3.d.mts} +2 -3
  259. package/dist/index-DQcnJ5H4.d.cts +35 -0
  260. package/dist/{index-DNwF3DUX.d.cts → index-DXhMkjQ6.d.cts} +2 -3
  261. package/dist/index-DckSub2J.d.mts +72 -0
  262. package/dist/{index-nc4Sxiy9.d.mts → index-DeDxYlSQ.d.mts} +2 -3
  263. package/dist/{themes-Kbk9h5cN.d.cts → index-DmJ7yWWi.d.cts} +214 -5
  264. package/dist/{index-Wnv6jCR3.d.mts → index-DqjXDutI.d.mts} +1 -2
  265. package/dist/{index-GpnmW6vu.d.mts → index-DrVYWt-X.d.mts} +1 -2
  266. package/dist/{index-Belxmt1X.d.cts → index-DuVNRXP4.d.cts} +1 -2
  267. package/dist/{index-smqjMLAZ.d.mts → index-IdMqR82e.d.cts} +2 -3
  268. package/dist/{index-DXvQ-JVZ.d.mts → index-XxydXX8l.d.cts} +2 -3
  269. package/dist/index-_G1osn09.d.mts +1 -0
  270. package/dist/index-gnh-Oe0n.d.cts +34 -0
  271. package/dist/{index-DO9J-Fla.d.mts → index-qlfNErNd.d.cts} +12 -4
  272. package/dist/index.d.cts +1 -2
  273. package/dist/index.d.mts +1 -2
  274. package/dist/style.cjs +1 -1
  275. package/dist/style.d.cts +2 -2
  276. package/dist/style.d.mts +2 -2
  277. package/dist/style.mjs +1 -1
  278. package/dist/surfaceSystem-BGQBoXv_.cjs +38 -0
  279. package/dist/surfaceSystem-D8TbmKy3.mjs +21 -0
  280. package/dist/theme-BxXuXRgQ.cjs +137 -0
  281. package/dist/theme-Z9_QludW.mjs +102 -0
  282. package/dist/theme.cjs +25 -24
  283. package/dist/theme.d.cts +3 -3
  284. package/dist/theme.d.mts +3 -3
  285. package/dist/theme.mjs +2 -1
  286. package/dist/{theme-CDVxig_g.mjs → themes-L-dE7_ck.mjs} +10 -110
  287. package/dist/{theme-BXlAP3xf.cjs → themes-gd6tcmqS.cjs} +0 -136
  288. package/dist/{useTablePagination-COTiNH_8.d.mts → useTablePagination-C5VKtqDp.d.cts} +1 -1
  289. package/dist/{useTablePagination-WFkaUZu8.d.cts → useTablePagination-C6LSlt3w.d.mts} +1 -1
  290. package/package.json +43 -2
  291. package/dist/Popover-DwnSLpp1.mjs +0 -253
  292. package/dist/index-B_dKjEDR.d.mts +0 -23
  293. package/dist/index-C1WqEDtQ.d.mts +0 -69
  294. package/dist/index-CA7HnbtH.d.cts +0 -21
  295. package/dist/index-CKZaErxJ.d.mts +0 -21
  296. package/dist/index-DBUwu65Z.d.cts +0 -69
  297. package/dist/index-DzQJSYIh.d.cts +0 -23
  298. package/dist/index-cuv3o-L7.d.mts +0 -34
  299. package/dist/index-nB94D7UM.d.cts +0 -34
@@ -0,0 +1,684 @@
1
+ const require_src = require("./src-DU81aGy9.cjs");
2
+ const require_themeDefault = require("./themeDefault-Cebi08Cv.cjs");
3
+ const require_theme = require("./theme-BxXuXRgQ.cjs");
4
+ const require_Icon = require("./Icon-Cvuhp9ek.cjs");
5
+ const require_MenuList = require("./MenuList-D4imLXAa.cjs");
6
+ const require_computePopoverPosition = require("./computePopoverPosition-DiyEOHnU.cjs");
7
+ let react = require("react");
8
+ let react_jsx_runtime = require("react/jsx-runtime");
9
+ let _soroush_tech_styled_system_should_forward_prop = require("@soroush.tech/styled-system/should-forward-prop");
10
+ //#region src/Menu/MenuPaper.ts
11
+ const elevationSystem = (0, require_src.src_exports.system)({ elevation: {
12
+ property: "boxShadow",
13
+ scale: "shadows"
14
+ } });
15
+ const MenuPaper = require_src.styled("div", {
16
+ name: "Menu",
17
+ slot: "paper",
18
+ label: "MenuPaper",
19
+ shouldForwardProp: (prop) => ![
20
+ "elevation",
21
+ "layer",
22
+ "margin"
23
+ ].includes(prop)
24
+ })(({ theme, layer, margin }) => ({
25
+ position: "fixed",
26
+ top: 0,
27
+ left: 0,
28
+ zIndex: theme.zOrder[layer],
29
+ minWidth: "10rem",
30
+ maxHeight: `calc(100vh - ${2 * margin}px)`,
31
+ overflowY: "auto",
32
+ backgroundColor: (0, require_src.src_exports.get)(theme, `background.${require_themeDefault.themeDefault(theme, "surfaceBg", "paper")}`),
33
+ borderRadius: theme.radii.sm,
34
+ visibility: "hidden"
35
+ }), elevationSystem);
36
+ //#endregion
37
+ //#region src/Menu/MenuContext.ts
38
+ /** Set by a `Menu`. */
39
+ const MenuContext = (0, react.createContext)(null);
40
+ /** The surrounding menu's settings - or, for a `MenuList` on its own, `Menu`'s defaults. */
41
+ function useMenuContext() {
42
+ const theme = require_theme.useTheme();
43
+ return (0, react.useContext)(MenuContext) ?? {
44
+ align: "start",
45
+ margin: Number.parseFloat(String(theme.space[2])),
46
+ elevation: 8,
47
+ layer: "modal"
48
+ };
49
+ }
50
+ //#endregion
51
+ //#region src/Menu/utils/getMenuOrigins.ts
52
+ /**
53
+ * The anchor and transform origins `computePopoverPosition` places a list with. `align`
54
+ * is logical - in a right-to-left page `start` is the right edge. Below its trigger, the
55
+ * list lines up with that edge; beside its row, it opens past the row's other edge (to
56
+ * the right for a start-aligned menu in a left-to-right page). The placement flips to the
57
+ * other side on its own where the window has no room.
58
+ */
59
+ function getMenuOrigins(placement, align, isRtl) {
60
+ const isStartLeft = align === "start" !== isRtl;
61
+ const edge = isStartLeft ? "left" : "right";
62
+ if (placement === "below") return {
63
+ anchorOrigin: {
64
+ vertical: "bottom",
65
+ horizontal: edge
66
+ },
67
+ transformOrigin: {
68
+ vertical: "top",
69
+ horizontal: edge
70
+ }
71
+ };
72
+ return {
73
+ anchorOrigin: {
74
+ vertical: "top",
75
+ horizontal: isStartLeft ? "right" : "left"
76
+ },
77
+ transformOrigin: {
78
+ vertical: "top",
79
+ horizontal: edge
80
+ }
81
+ };
82
+ }
83
+ //#endregion
84
+ //#region src/Menu/utils/hasRoomBeside.ts
85
+ /**
86
+ * Whether a list `width` wide fits on either side of its row and still keeps `margin` from
87
+ * the window's edges - so a submenu can open beside the row at all.
88
+ */
89
+ function hasRoomBeside(anchorRect, width, viewportWidth, margin) {
90
+ const roomBefore = anchorRect.left - margin;
91
+ const roomAfter = viewportWidth - margin - (anchorRect.left + anchorRect.width);
92
+ return width <= Math.max(roomBefore, roomAfter);
93
+ }
94
+ //#endregion
95
+ //#region src/utils/isRtl.ts
96
+ /** Whether an element sits in a right-to-left context - its nearest `dir` says so. */
97
+ function isRtl(element) {
98
+ return element.closest("[dir]")?.getAttribute("dir") === "rtl";
99
+ }
100
+ //#endregion
101
+ //#region src/Menu/hooks/useMenuPlacement.ts
102
+ /**
103
+ * Places a menu's `position: fixed` surface in the window, next to its anchor - so a
104
+ * scrolling panel's overflow never clips it, while it stays in the menu's own box in the
105
+ * DOM. Placed before paint on every render while open, and again on resize and on any
106
+ * scroll. The surface starts `visibility: hidden` and is shown here, as it is placed - in
107
+ * the same layout pass, so it is visible by the time anything inside it takes focus.
108
+ * Returns whether a list beside its row opened on the other side for want of room.
109
+ */
110
+ function useMenuPlacement({ isOpen, anchorRef, surfaceRef, placement, align, margin, anchorPosition = null }) {
111
+ const [isFlipped, setIsFlipped] = (0, react.useState)(false);
112
+ const pointTop = anchorPosition?.top;
113
+ const pointLeft = anchorPosition?.left ?? 0;
114
+ const place = (0, react.useCallback)(() => {
115
+ const anchor = anchorRef.current;
116
+ const surface = surfaceRef.current;
117
+ if (!anchor || !surface) return;
118
+ const isPoint = pointTop !== void 0;
119
+ const anchorRect = anchor.getBoundingClientRect();
120
+ const paperRect = {
121
+ width: surface.offsetWidth,
122
+ height: surface.offsetHeight
123
+ };
124
+ const viewport = {
125
+ width: window.innerWidth,
126
+ height: window.innerHeight
127
+ };
128
+ const isCramped = placement === "beside" && !hasRoomBeside(anchorRect, paperRect.width, viewport.width, margin);
129
+ const { top, left } = require_computePopoverPosition.computePopoverPosition({
130
+ anchorReference: isPoint ? "anchorPosition" : "anchorEl",
131
+ anchorPosition: isPoint ? {
132
+ top: pointTop,
133
+ left: pointLeft
134
+ } : void 0,
135
+ anchorRect,
136
+ paperRect,
137
+ ...getMenuOrigins(isCramped ? "below" : placement, align, isRtl(anchor)),
138
+ viewport,
139
+ marginThreshold: margin
140
+ });
141
+ surface.style.top = `${top}px`;
142
+ surface.style.left = `${left}px`;
143
+ const landed = surface.getBoundingClientRect();
144
+ const isOwnBox = paperRect.width > 0 && Math.round(landed.width) === paperRect.width;
145
+ const shiftTop = Math.round(landed.top - top);
146
+ const shiftLeft = Math.round(landed.left - left);
147
+ if (isOwnBox && (shiftTop !== 0 || shiftLeft !== 0)) {
148
+ surface.style.top = `${top - shiftTop}px`;
149
+ surface.style.left = `${left - shiftLeft}px`;
150
+ }
151
+ surface.style.visibility = "visible";
152
+ if (placement === "beside") {
153
+ const isOpeningRight = left + paperRect.width / 2 > anchorRect.left + anchorRect.width / 2;
154
+ const isRightPreferred = align === "start" !== isRtl(anchor);
155
+ setIsFlipped(!isCramped && isOpeningRight !== isRightPreferred);
156
+ }
157
+ }, [
158
+ anchorRef,
159
+ surfaceRef,
160
+ placement,
161
+ align,
162
+ margin,
163
+ pointTop,
164
+ pointLeft
165
+ ]);
166
+ (0, react.useLayoutEffect)(() => {
167
+ if (isOpen) place();
168
+ });
169
+ (0, react.useEffect)(() => {
170
+ if (!isOpen) return void 0;
171
+ window.addEventListener("resize", place);
172
+ window.addEventListener("scroll", place, true);
173
+ return () => {
174
+ window.removeEventListener("resize", place);
175
+ window.removeEventListener("scroll", place, true);
176
+ };
177
+ }, [isOpen, place]);
178
+ return isFlipped;
179
+ }
180
+ //#endregion
181
+ //#region src/MenuItem/Submenu.tsx
182
+ /**
183
+ * A row's submenu: a `MenuList` on its own surface, placed beside the row the way its menu
184
+ * places its list (`align`, the window margin), and drawn on the menu's layer.
185
+ */
186
+ function Submenu({ anchorRef, listId, labelledBy, children }) {
187
+ const menu = useMenuContext();
188
+ const { align, margin, elevation, layer } = menu;
189
+ const surfaceRef = (0, react.useRef)(null);
190
+ const isFlipped = useMenuPlacement({
191
+ isOpen: true,
192
+ anchorRef,
193
+ surfaceRef,
194
+ placement: "beside",
195
+ align,
196
+ margin
197
+ });
198
+ const flippedAlign = align === "start" ? "end" : "start";
199
+ const context = (0, react.useMemo)(() => ({
200
+ ...menu,
201
+ align: isFlipped ? flippedAlign : align
202
+ }), [
203
+ menu,
204
+ isFlipped,
205
+ flippedAlign,
206
+ align
207
+ ]);
208
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(MenuPaper, {
209
+ ref: surfaceRef,
210
+ elevation,
211
+ layer,
212
+ margin,
213
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(MenuContext.Provider, {
214
+ value: context,
215
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_MenuList.MenuList, {
216
+ id: listId,
217
+ "aria-labelledby": labelledBy,
218
+ width: "100%",
219
+ children
220
+ })
221
+ })
222
+ });
223
+ }
224
+ //#endregion
225
+ //#region src/MenuItem/useSubmenu.ts
226
+ /**
227
+ * A row's submenu, opened while the row or anything in its submenu has focus. The pointer
228
+ * moves focus as it goes, so hovering a row opens its submenu and hovering a sibling closes
229
+ * it - the pointer and the keys never disagree. Right goes in and Left comes back, swapped
230
+ * in a right-to-left page.
231
+ */
232
+ function useSubmenu(rowRef, isEnabled) {
233
+ const [isOpen, setIsOpen] = (0, react.useState)(false);
234
+ const entryRef = (0, react.useRef)(null);
235
+ const listId = (0, react.useId)();
236
+ const isEnteringRef = (0, react.useRef)(false);
237
+ const focusFirstRow = () => {
238
+ const list = document.getElementById(listId);
239
+ require_MenuList.getNextRow(require_MenuList.getOwnRows(list), null, "first", false)?.focus();
240
+ };
241
+ (0, react.useEffect)(() => {
242
+ if (isOpen && isEnteringRef.current) {
243
+ isEnteringRef.current = false;
244
+ focusFirstRow();
245
+ }
246
+ });
247
+ const handleRowFocus = () => {
248
+ if (isEnabled) setIsOpen(true);
249
+ };
250
+ const handleRowKeyDown = (event) => {
251
+ const inward = isRtl(event.currentTarget) ? "ArrowLeft" : "ArrowRight";
252
+ if (!isEnabled || ![
253
+ inward,
254
+ "Enter",
255
+ " "
256
+ ].includes(event.key)) return false;
257
+ event.preventDefault();
258
+ event.stopPropagation();
259
+ if (isOpen) focusFirstRow();
260
+ else {
261
+ isEnteringRef.current = true;
262
+ setIsOpen(true);
263
+ }
264
+ return true;
265
+ };
266
+ const handleEntryKeyDown = (event) => {
267
+ const list = document.getElementById(listId);
268
+ if (event.target.closest("[role=\"menu\"]") !== list) return;
269
+ const outward = isRtl(event.currentTarget) ? "ArrowRight" : "ArrowLeft";
270
+ if (event.key !== outward && event.key !== "Escape") return;
271
+ event.preventDefault();
272
+ event.stopPropagation();
273
+ rowRef.current.focus();
274
+ setIsOpen(false);
275
+ };
276
+ const handleEntryBlur = (event) => {
277
+ if (!event.currentTarget.contains(event.relatedTarget)) setIsOpen(false);
278
+ };
279
+ return {
280
+ isOpen,
281
+ entryRef,
282
+ listId,
283
+ handleRowFocus,
284
+ handleRowKeyDown,
285
+ handleEntryKeyDown,
286
+ handleEntryBlur
287
+ };
288
+ }
289
+ //#endregion
290
+ //#region src/MenuItem/MenuItem.tsx
291
+ const shouldForwardProp = (0, _soroush_tech_styled_system_should_forward_prop.createShouldForwardProp)([
292
+ "color",
293
+ "textColor",
294
+ "sizeToken",
295
+ "selected",
296
+ "highlighted",
297
+ "disabled",
298
+ "dense",
299
+ "disableGutters",
300
+ "divider",
301
+ "isMenu"
302
+ ]);
303
+ const baseStyle = ({ theme }) => ({
304
+ display: "flex",
305
+ alignItems: "center",
306
+ gap: theme.space[1],
307
+ cursor: "pointer",
308
+ fontFamily: theme.fonts.body,
309
+ lineHeight: theme.lineHeights.base,
310
+ listStyle: "none",
311
+ userSelect: "none",
312
+ whiteSpace: "nowrap",
313
+ transition: "background-color 0.12s ease",
314
+ outline: "none"
315
+ });
316
+ const sizeVariants = ({ theme, sizeToken, dense, disableGutters }) => {
317
+ const s = theme.sizes[sizeToken];
318
+ const verticalPadding = dense ? theme.space[.5] : void 0;
319
+ return {
320
+ paddingTop: verticalPadding ?? theme.space[s.paddingTop],
321
+ paddingBottom: verticalPadding ?? theme.space[s.paddingBottom],
322
+ paddingLeft: disableGutters ? 0 : theme.space[s.paddingLeft],
323
+ paddingRight: disableGutters ? 0 : theme.space[s.paddingRight],
324
+ fontSize: theme.fontSizes[s.fontSize]
325
+ };
326
+ };
327
+ const dividerStyle = ({ theme, divider }) => divider ? {
328
+ borderBottomWidth: theme.borderWidths.thin,
329
+ borderBottomStyle: "solid",
330
+ borderBottomColor: (0, require_src.src_exports.get)(theme, "border.light")
331
+ } : {};
332
+ const menuStyles = ({ theme, color, textColor, disabled }) => {
333
+ if (disabled) return {
334
+ color: (0, require_src.src_exports.get)(theme, "text.disabled"),
335
+ cursor: "default"
336
+ };
337
+ const main = (0, require_src.src_exports.get)(theme, `palette.${color}.main`);
338
+ const highlight = { backgroundColor: `${main}1F` };
339
+ return {
340
+ color: textColor ? (0, require_src.src_exports.get)(theme, `text.${textColor}`) : main,
341
+ "&:focus": highlight,
342
+ "&:focus-visible": {
343
+ outline: `${theme.borderWidths.base} solid ${main}`,
344
+ outlineOffset: `-${theme.borderWidths.base}`
345
+ },
346
+ "&[aria-expanded=\"true\"]": highlight
347
+ };
348
+ };
349
+ const interactionStyles = (props) => {
350
+ const { theme, color, textColor, selected, highlighted, disabled, isMenu } = props;
351
+ if (isMenu) return menuStyles(props);
352
+ const main = (0, require_src.src_exports.get)(theme, `palette.${color}.main`);
353
+ const hoverBg = `${main}1F`;
354
+ const selectedBg = `${main}29`;
355
+ const activeSelectedBg = `${main}3D`;
356
+ if (disabled) return {
357
+ color: (0, require_src.src_exports.get)(theme, "text.disabled"),
358
+ cursor: "not-allowed",
359
+ pointerEvents: "none"
360
+ };
361
+ const baseColor = textColor ? (0, require_src.src_exports.get)(theme, `text.${textColor}`) : main;
362
+ return {
363
+ color: selected ? main : baseColor,
364
+ backgroundColor: selected ? highlighted ? activeSelectedBg : selectedBg : highlighted ? hoverBg : "transparent",
365
+ "&:hover": { backgroundColor: selected ? activeSelectedBg : hoverBg }
366
+ };
367
+ };
368
+ const MenuItemRoot = require_src.styled("li", {
369
+ name: "MenuItem",
370
+ label: "MenuItem",
371
+ shouldForwardProp
372
+ })(baseStyle, sizeVariants, dividerStyle, interactionStyles);
373
+ const CheckSlot = require_src.styled("span", {
374
+ name: "MenuItem",
375
+ slot: "check",
376
+ label: "MenuItemCheck"
377
+ })({
378
+ display: "inline-flex",
379
+ width: "1.125rem",
380
+ flexShrink: 0
381
+ });
382
+ const StartIconSlot = require_src.styled("span", {
383
+ name: "MenuItem",
384
+ slot: "startIcon",
385
+ label: "MenuItemStartIcon"
386
+ })(({ theme }) => ({
387
+ display: "inline-flex",
388
+ alignItems: "center",
389
+ justifyContent: "center",
390
+ width: theme.icon.sm,
391
+ height: theme.icon.sm,
392
+ flexShrink: 0
393
+ }));
394
+ const LabelSlot = require_src.styled("span", {
395
+ name: "MenuItem",
396
+ slot: "label",
397
+ label: "MenuItemLabel"
398
+ })({
399
+ flex: 1,
400
+ minWidth: 0
401
+ });
402
+ const ShortcutSlot = require_src.styled("span", {
403
+ name: "MenuItem",
404
+ slot: "shortcut",
405
+ label: "MenuItemShortcut"
406
+ })(({ theme }) => ({
407
+ marginLeft: theme.space[3],
408
+ color: (0, require_src.src_exports.get)(theme, "text.secondary"),
409
+ fontSize: "0.875em"
410
+ }));
411
+ const SubmenuIconSlot = require_src.styled("span", {
412
+ name: "MenuItem",
413
+ slot: "submenuIcon",
414
+ label: "MenuItemSubmenuIcon"
415
+ })(({ theme }) => ({
416
+ display: "inline-flex",
417
+ marginLeft: theme.space[2],
418
+ "[dir=\"rtl\"] &": { transform: "scaleX(-1)" }
419
+ }));
420
+ const EntrySlot = require_src.styled("li", {
421
+ name: "MenuItem",
422
+ slot: "entry",
423
+ label: "MenuItemEntry",
424
+ shouldForwardProp: (0, _soroush_tech_styled_system_should_forward_prop.createShouldForwardProp)(["hasSecondaryAction"])
425
+ })(({ hasSecondaryAction }) => ({
426
+ listStyle: "none",
427
+ ...hasSecondaryAction && {
428
+ display: "flex",
429
+ alignItems: "center",
430
+ "& > [role^=\"menuitem\"]": {
431
+ flex: "1 1 auto",
432
+ minWidth: 0
433
+ }
434
+ }
435
+ }));
436
+ const SecondaryActionSlot = require_src.styled("span", {
437
+ name: "MenuItem",
438
+ slot: "secondaryAction",
439
+ label: "MenuItemSecondaryAction"
440
+ })(({ theme }) => ({
441
+ display: "inline-flex",
442
+ alignItems: "center",
443
+ flexShrink: 0,
444
+ paddingInlineEnd: theme.space[1]
445
+ }));
446
+ function isKeyboardFocus(element) {
447
+ try {
448
+ return element.matches(":focus-visible");
449
+ } catch {
450
+ return false;
451
+ }
452
+ }
453
+ function useRowLook(own, menu) {
454
+ const theme = require_theme.useTheme();
455
+ const dp = require_theme.useDefaultProps("MenuItem");
456
+ return {
457
+ color: own.color ?? menu?.color ?? dp.color ?? require_themeDefault.themeDefault(theme, "color", "primary"),
458
+ size: own.size ?? menu?.size ?? dp.size ?? require_themeDefault.themeDefault(theme, "size", "md"),
459
+ textColor: own.textColor ?? menu?.textColor ?? dp.textColor,
460
+ dense: own.dense ?? menu?.dense ?? dp.dense ?? false
461
+ };
462
+ }
463
+ const getRowAria = (state) => ({
464
+ "aria-haspopup": state.hasSubmenu ? "menu" : void 0,
465
+ "aria-expanded": state.hasSubmenu ? state.isSubmenuOpen : void 0,
466
+ "aria-controls": state.isSubmenuOpen ? state.submenuId : void 0,
467
+ "aria-checked": state.role === "menuitem" ? void 0 : state.selected,
468
+ "aria-keyshortcuts": typeof state.shortcut === "string" ? state.shortcut : void 0,
469
+ "aria-describedby": state.note ? state.noteId : void 0
470
+ });
471
+ const joinClassNames = (...names) => names.filter(Boolean).join(" ") || void 0;
472
+ /**
473
+ * @description A row of a list. Inside a `MenuList` it is a menu row - a `menuitem`
474
+ * (or `menuitemradio` / `menuitemcheckbox`) with a leading icon column, its label and a
475
+ * trailing shortcut, chosen by a click, Enter or Space. Anywhere else it is `Select`'s
476
+ * `<li role="option">` (override via `as`), whose selection, highlight and density props
477
+ * `Select` injects; used on its own it renders a static, styled row.
478
+ */
479
+ function MenuItem({ value, children, as, disabled = false, selected = false, highlighted = false, multiple = false, color: colorProp, textColor: textColorProp, size: sizeProp, dense: denseProp, disableGutters = false, divider = false, autoFocus = false, focusVisibleClassName, onSelect, role = "menuitem", startIcon, shortcut, note, onClick, submenu, emptyLabel, secondaryAction, id, className, "data-testid": dataTestid }) {
480
+ const menu = require_MenuList.useMenuListContext();
481
+ const isMenu = menu !== null;
482
+ const { color, size, textColor, dense } = useRowLook({
483
+ color: colorProp,
484
+ size: sizeProp,
485
+ textColor: textColorProp,
486
+ dense: denseProp
487
+ }, menu);
488
+ const rootRef = (0, react.useRef)(null);
489
+ const [isFocusVisible, setIsFocusVisible] = (0, react.useState)(false);
490
+ const noteId = (0, react.useId)();
491
+ const fallbackId = (0, react.useId)();
492
+ const hasSubmenu = isMenu && submenu !== void 0;
493
+ const { isOpen: isSubmenuOpen, entryRef, listId: submenuId, handleRowFocus, handleRowKeyDown, handleEntryKeyDown, handleEntryBlur } = useSubmenu(rootRef, hasSubmenu && !disabled);
494
+ (0, react.useEffect)(() => {
495
+ if (autoFocus) rootRef.current?.focus();
496
+ }, [autoFocus]);
497
+ const choose = (event) => {
498
+ if (disabled || hasSubmenu) return;
499
+ if (menu) {
500
+ onClick?.(event);
501
+ menu.onActivate(value, event);
502
+ } else if (value !== void 0) onSelect?.(value);
503
+ };
504
+ const handleMouseDown = (event) => {
505
+ if (!isMenu) event.preventDefault();
506
+ };
507
+ const handleKeyDown = (event) => {
508
+ if (handleRowKeyDown(event)) return;
509
+ if (event.key === "Enter") {
510
+ event.preventDefault();
511
+ choose(event);
512
+ } else if (event.key === " ") event.preventDefault();
513
+ };
514
+ const handleKeyUp = (event) => {
515
+ if (event.key === " ") choose(event);
516
+ };
517
+ const handlePointerMove = (event) => {
518
+ const row = event.currentTarget;
519
+ if (!disabled && row.ownerDocument.activeElement !== row) row.focus();
520
+ };
521
+ const handleFocus = (event) => {
522
+ handleRowFocus();
523
+ if (focusVisibleClassName && isKeyboardFocus(event.currentTarget)) setIsFocusVisible(true);
524
+ };
525
+ const handleBlur = () => {
526
+ setIsFocusVisible(false);
527
+ };
528
+ const rootClassName = joinClassNames(className, isFocusVisible && focusVisibleClassName);
529
+ const rootProps = {
530
+ as,
531
+ ref: rootRef,
532
+ id,
533
+ tabIndex: -1,
534
+ "aria-disabled": disabled || void 0,
535
+ "data-value": value,
536
+ color,
537
+ textColor,
538
+ sizeToken: size,
539
+ selected,
540
+ highlighted,
541
+ disabled,
542
+ dense,
543
+ disableGutters,
544
+ divider,
545
+ isMenu,
546
+ className: rootClassName,
547
+ "data-testid": dataTestid,
548
+ onMouseDown: handleMouseDown,
549
+ onClick: choose,
550
+ onFocus: handleFocus,
551
+ onBlur: handleBlur
552
+ };
553
+ if (!isMenu) return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(MenuItemRoot, {
554
+ ...rootProps,
555
+ role: "option",
556
+ "aria-selected": selected,
557
+ children: [multiple && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(CheckSlot, {
558
+ "aria-hidden": true,
559
+ children: selected && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_Icon.Icon, {
560
+ name: "check",
561
+ size: "1.125rem",
562
+ color: "inherit"
563
+ })
564
+ }), children]
565
+ });
566
+ const tick = role !== "menuitem" && selected ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_Icon.Icon, {
567
+ name: "check",
568
+ size: "sm",
569
+ color: "inherit"
570
+ }) : null;
571
+ const rowId = id ?? fallbackId;
572
+ const hasSecondaryAction = secondaryAction != null;
573
+ const row = /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(MenuItemRoot, {
574
+ ...rootProps,
575
+ as: hasSubmenu || hasSecondaryAction ? "div" : as,
576
+ id: rowId,
577
+ role,
578
+ ...getRowAria({
579
+ role,
580
+ selected,
581
+ hasSubmenu,
582
+ isSubmenuOpen,
583
+ submenuId,
584
+ shortcut,
585
+ note,
586
+ noteId
587
+ }),
588
+ title: note,
589
+ onKeyDown: handleKeyDown,
590
+ onKeyUp: handleKeyUp,
591
+ onPointerMove: handlePointerMove,
592
+ children: [
593
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(StartIconSlot, {
594
+ "aria-hidden": true,
595
+ children: startIcon ?? tick
596
+ }),
597
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(LabelSlot, {
598
+ "data-menu-label": true,
599
+ children
600
+ }),
601
+ shortcut != null && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ShortcutSlot, {
602
+ "aria-hidden": true,
603
+ children: shortcut
604
+ }),
605
+ hasSubmenu && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(SubmenuIconSlot, {
606
+ "aria-hidden": true,
607
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_Icon.Icon, {
608
+ name: "chevron_right",
609
+ size: "sm",
610
+ color: "inherit"
611
+ })
612
+ }),
613
+ note && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
614
+ id: noteId,
615
+ hidden: true,
616
+ children: note
617
+ })
618
+ ]
619
+ });
620
+ if (!hasSubmenu && !hasSecondaryAction) return row;
621
+ if (!hasSubmenu) return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(EntrySlot, {
622
+ role: "none",
623
+ hasSecondaryAction: true,
624
+ children: [row, /* @__PURE__ */ (0, react_jsx_runtime.jsx)(SecondaryActionSlot, {
625
+ "aria-hidden": true,
626
+ children: secondaryAction
627
+ })]
628
+ });
629
+ const hasRows = react.Children.toArray(submenu).length > 0;
630
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(EntrySlot, {
631
+ ref: entryRef,
632
+ role: "none",
633
+ hasSecondaryAction,
634
+ onKeyDown: handleEntryKeyDown,
635
+ onBlur: handleEntryBlur,
636
+ children: [
637
+ row,
638
+ hasSecondaryAction && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(SecondaryActionSlot, {
639
+ "aria-hidden": true,
640
+ children: secondaryAction
641
+ }),
642
+ isSubmenuOpen && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Submenu, {
643
+ anchorRef: entryRef,
644
+ listId: submenuId,
645
+ labelledBy: rowId,
646
+ children: hasRows ? submenu : emptyLabel != null && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(MenuItem, {
647
+ disabled: true,
648
+ children: emptyLabel
649
+ })
650
+ })
651
+ ]
652
+ });
653
+ }
654
+ //#endregion
655
+ Object.defineProperty(exports, "MenuContext", {
656
+ enumerable: true,
657
+ get: function() {
658
+ return MenuContext;
659
+ }
660
+ });
661
+ Object.defineProperty(exports, "MenuItem", {
662
+ enumerable: true,
663
+ get: function() {
664
+ return MenuItem;
665
+ }
666
+ });
667
+ Object.defineProperty(exports, "MenuPaper", {
668
+ enumerable: true,
669
+ get: function() {
670
+ return MenuPaper;
671
+ }
672
+ });
673
+ Object.defineProperty(exports, "isRtl", {
674
+ enumerable: true,
675
+ get: function() {
676
+ return isRtl;
677
+ }
678
+ });
679
+ Object.defineProperty(exports, "useMenuPlacement", {
680
+ enumerable: true,
681
+ get: function() {
682
+ return useMenuPlacement;
683
+ }
684
+ });