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

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 (324) hide show
  1. package/README.md +30 -10
  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 +10 -2
  35. package/dist/FormControl.d.cts +9 -2
  36. package/dist/FormControl.d.mts +9 -2
  37. package/dist/FormControl.mjs +10 -2
  38. package/dist/FormHelperText.d.cts +1 -1
  39. package/dist/FormHelperText.d.mts +1 -1
  40. package/dist/FormLabel.cjs +9 -1
  41. package/dist/FormLabel.d.cts +2 -2
  42. package/dist/FormLabel.d.mts +2 -2
  43. package/dist/FormLabel.mjs +10 -2
  44. package/dist/Grid.d.cts +1 -3
  45. package/dist/Grid.d.mts +1 -3
  46. package/dist/{Icon-CH3asUJu.mjs → Icon-BihOAP4u.mjs} +52 -2
  47. package/dist/{Icon-CI6q2Eyi.cjs → Icon-D-EWsBVg.cjs} +52 -2
  48. package/dist/Icon.cjs +1 -1
  49. package/dist/Icon.d.cts +1 -1
  50. package/dist/Icon.d.mts +1 -1
  51. package/dist/Icon.mjs +1 -1
  52. package/dist/Image.d.cts +1 -2
  53. package/dist/Image.d.mts +1 -2
  54. package/dist/InputRange.cjs +675 -0
  55. package/dist/InputRange.d.cts +79 -0
  56. package/dist/InputRange.d.mts +79 -0
  57. package/dist/InputRange.mjs +673 -0
  58. package/dist/LinearProgress.d.cts +2 -3
  59. package/dist/LinearProgress.d.mts +2 -3
  60. package/dist/Link.cjs +1 -1
  61. package/dist/Link.d.cts +1 -1
  62. package/dist/Link.d.mts +1 -1
  63. package/dist/Link.mjs +1 -1
  64. package/dist/Menu/ContextMenu.cjs +146 -0
  65. package/dist/Menu/ContextMenu.d.cts +52 -0
  66. package/dist/Menu/ContextMenu.d.mts +52 -0
  67. package/dist/Menu/ContextMenu.mjs +145 -0
  68. package/dist/Menu/Menu.cjs +3 -0
  69. package/dist/Menu/Menu.d.cts +2 -0
  70. package/dist/Menu/Menu.d.mts +2 -0
  71. package/dist/Menu/Menu.mjs +2 -0
  72. package/dist/Menu/MenuDivider.cjs +29 -0
  73. package/dist/Menu/MenuDivider.d.cts +12 -0
  74. package/dist/Menu/MenuDivider.d.mts +12 -0
  75. package/dist/Menu/MenuDivider.mjs +28 -0
  76. package/dist/Menu/MenuItems.cjs +29 -0
  77. package/dist/Menu/MenuItems.d.cts +2 -0
  78. package/dist/Menu/MenuItems.d.mts +2 -0
  79. package/dist/Menu/MenuItems.mjs +28 -0
  80. package/dist/Menu/MenuList.cjs +3 -0
  81. package/dist/Menu/MenuList.d.cts +38 -0
  82. package/dist/Menu/MenuList.d.mts +38 -0
  83. package/dist/Menu/MenuList.mjs +2 -0
  84. package/dist/Menu-Cgg-sX4W.cjs +173 -0
  85. package/dist/Menu-CrzHc_cn.mjs +168 -0
  86. package/dist/Menu.cjs +13 -0
  87. package/dist/Menu.d.cts +7 -0
  88. package/dist/Menu.d.mts +7 -0
  89. package/dist/Menu.mjs +6 -0
  90. package/dist/MenuItem-BTP7Ijwi.cjs +673 -0
  91. package/dist/MenuItem-DUn4IZKK.mjs +649 -0
  92. package/dist/MenuItem.cjs +2 -148
  93. package/dist/MenuItem.d.cts +2 -52
  94. package/dist/MenuItem.d.mts +2 -52
  95. package/dist/MenuItem.mjs +1 -147
  96. package/dist/MenuList-B7msJ1IG.mjs +187 -0
  97. package/dist/MenuList-D4imLXAa.cjs +223 -0
  98. package/dist/MenuListContext-DKUOhNyw.d.cts +21 -0
  99. package/dist/MenuListContext-x-7lH4CH.d.mts +21 -0
  100. package/dist/Modal.d.cts +1 -1
  101. package/dist/Modal.d.mts +1 -1
  102. package/dist/NativeSelect.cjs +9 -8
  103. package/dist/NativeSelect.d.cts +3 -4
  104. package/dist/NativeSelect.d.mts +3 -4
  105. package/dist/NativeSelect.mjs +9 -8
  106. package/dist/NumberField.cjs +476 -0
  107. package/dist/NumberField.d.cts +74 -0
  108. package/dist/NumberField.d.mts +74 -0
  109. package/dist/NumberField.mjs +474 -0
  110. package/dist/Pagination/PaginationItem.cjs +1 -1
  111. package/dist/Pagination/PaginationItem.d.cts +1 -1
  112. package/dist/Pagination/PaginationItem.d.mts +1 -1
  113. package/dist/Pagination/PaginationItem.mjs +1 -1
  114. package/dist/Pagination.d.cts +2 -2
  115. package/dist/Pagination.d.mts +2 -2
  116. package/dist/Paper.cjs +1 -1
  117. package/dist/Paper.d.cts +2 -1
  118. package/dist/Paper.d.mts +2 -1
  119. package/dist/Paper.mjs +1 -1
  120. package/dist/{Popover-TpwRSORC.cjs → Popover-CiZfgiKE.cjs} +5 -125
  121. package/dist/Popover-QjM5Z1CR.mjs +133 -0
  122. package/dist/Popover.cjs +1 -1
  123. package/dist/Popover.d.cts +6 -7
  124. package/dist/Popover.d.mts +6 -7
  125. package/dist/Popover.mjs +1 -1
  126. package/dist/Pressable.cjs +1 -1
  127. package/dist/Pressable.d.cts +1 -1
  128. package/dist/Pressable.d.mts +1 -1
  129. package/dist/Pressable.mjs +1 -1
  130. package/dist/Quote.d.cts +2 -3
  131. package/dist/Quote.d.mts +2 -3
  132. package/dist/Radio.d.cts +1 -2
  133. package/dist/Radio.d.mts +1 -2
  134. package/dist/Rating.cjs +373 -0
  135. package/dist/Rating.d.cts +57 -0
  136. package/dist/Rating.d.mts +57 -0
  137. package/dist/Rating.mjs +371 -0
  138. package/dist/Select.cjs +5 -4
  139. package/dist/Select.d.cts +3 -4
  140. package/dist/Select.d.mts +3 -4
  141. package/dist/Select.mjs +7 -6
  142. package/dist/Sidebar/Sidebar.d.cts +1 -1
  143. package/dist/Sidebar/Sidebar.d.mts +1 -1
  144. package/dist/Sidebar/SidebarItem.cjs +1 -1
  145. package/dist/Sidebar/SidebarItem.d.cts +3 -4
  146. package/dist/Sidebar/SidebarItem.d.mts +3 -4
  147. package/dist/Sidebar/SidebarItem.mjs +3 -3
  148. package/dist/Skeleton.d.cts +1 -2
  149. package/dist/Skeleton.d.mts +1 -2
  150. package/dist/Switch.cjs +23 -16
  151. package/dist/Switch.d.cts +2 -3
  152. package/dist/Switch.d.mts +2 -3
  153. package/dist/Switch.mjs +25 -18
  154. package/dist/Table/Table.d.cts +2 -3
  155. package/dist/Table/Table.d.mts +2 -3
  156. package/dist/Table/TableBody.d.cts +1 -2
  157. package/dist/Table/TableBody.d.mts +1 -2
  158. package/dist/Table/TableCell.d.cts +1 -1
  159. package/dist/Table/TableCell.d.mts +1 -1
  160. package/dist/Table/TableContainer.d.cts +1 -3
  161. package/dist/Table/TableContainer.d.mts +1 -3
  162. package/dist/Table/TableControl.d.cts +1 -1
  163. package/dist/Table/TableControl.d.mts +1 -1
  164. package/dist/Table/TableControl.mjs +2 -2
  165. package/dist/Table/TableFooter.d.cts +1 -2
  166. package/dist/Table/TableFooter.d.mts +1 -2
  167. package/dist/Table/TableHead.d.cts +1 -2
  168. package/dist/Table/TableHead.d.mts +1 -2
  169. package/dist/Table/TablePagination.d.cts +2 -2
  170. package/dist/Table/TablePagination.d.mts +2 -2
  171. package/dist/Table/TablePaginationActions.cjs +1 -1
  172. package/dist/Table/TablePaginationActions.d.cts +1 -1
  173. package/dist/Table/TablePaginationActions.d.mts +1 -1
  174. package/dist/Table/TablePaginationActions.mjs +1 -1
  175. package/dist/Table/TableRow.d.cts +1 -2
  176. package/dist/Table/TableRow.d.mts +1 -2
  177. package/dist/Table/TableSortLabel.cjs +1 -1
  178. package/dist/Table/TableSortLabel.d.cts +1 -1
  179. package/dist/Table/TableSortLabel.d.mts +1 -1
  180. package/dist/Table/TableSortLabel.mjs +1 -1
  181. package/dist/Table/hooks.d.cts +1 -1
  182. package/dist/Table/hooks.d.mts +1 -1
  183. package/dist/Table.d.cts +5 -5
  184. package/dist/Table.d.mts +5 -5
  185. package/dist/{TableContext-BeCxbtHH.d.cts → TableContext-DhuRf6Wy.d.mts} +1 -1
  186. package/dist/{TableContext-BiRiYkVZ.d.mts → TableContext-Duj1nVG7.d.cts} +1 -1
  187. package/dist/Tabs/Tab.cjs +306 -0
  188. package/dist/Tabs/Tab.d.cts +62 -0
  189. package/dist/Tabs/Tab.d.mts +62 -0
  190. package/dist/Tabs/Tab.mjs +305 -0
  191. package/dist/Tabs/TabContext.cjs +34 -0
  192. package/dist/Tabs/TabContext.d.cts +20 -0
  193. package/dist/Tabs/TabContext.d.mts +20 -0
  194. package/dist/Tabs/TabContext.mjs +33 -0
  195. package/dist/Tabs/TabList.cjs +31 -0
  196. package/dist/Tabs/TabList.d.cts +11 -0
  197. package/dist/Tabs/TabList.d.mts +11 -0
  198. package/dist/Tabs/TabList.mjs +30 -0
  199. package/dist/Tabs/TabPanel.cjs +40 -0
  200. package/dist/Tabs/TabPanel.d.cts +27 -0
  201. package/dist/Tabs/TabPanel.d.mts +27 -0
  202. package/dist/Tabs/TabPanel.mjs +38 -0
  203. package/dist/Tabs/TabScrollButton.cjs +93 -0
  204. package/dist/Tabs/TabScrollButton.d.cts +2 -0
  205. package/dist/Tabs/TabScrollButton.d.mts +2 -0
  206. package/dist/Tabs/TabScrollButton.mjs +91 -0
  207. package/dist/Tabs/Tabs.cjs +3 -0
  208. package/dist/Tabs/Tabs.d.cts +3 -0
  209. package/dist/Tabs/Tabs.d.mts +3 -0
  210. package/dist/Tabs/Tabs.mjs +2 -0
  211. package/dist/Tabs-BTNOJx5v.mjs +634 -0
  212. package/dist/Tabs-D4tWCq78.cjs +646 -0
  213. package/dist/Tabs.cjs +13 -0
  214. package/dist/Tabs.d.cts +8 -0
  215. package/dist/Tabs.d.mts +8 -0
  216. package/dist/Tabs.mjs +7 -0
  217. package/dist/TabsContext-B_XHbjcS.d.cts +6 -0
  218. package/dist/TabsContext-Dn2kqUwr.d.mts +6 -0
  219. package/dist/TabsValueContext-D40zGCpE.cjs +19 -0
  220. package/dist/TabsValueContext-DvL3inf7.mjs +8 -0
  221. package/dist/TextInput.cjs +4 -4
  222. package/dist/TextInput.d.cts +2 -3
  223. package/dist/TextInput.d.mts +2 -3
  224. package/dist/TextInput.mjs +4 -4
  225. package/dist/ToggleButton/ToggleButton.cjs +1 -1
  226. package/dist/ToggleButton/ToggleButton.d.cts +1 -1
  227. package/dist/ToggleButton/ToggleButton.d.mts +1 -1
  228. package/dist/ToggleButton/ToggleButton.mjs +1 -1
  229. package/dist/ToggleButton/ToggleButtonGroup.cjs +1 -1
  230. package/dist/ToggleButton/ToggleButtonGroup.d.cts +1 -1
  231. package/dist/ToggleButton/ToggleButtonGroup.d.mts +1 -1
  232. package/dist/ToggleButton/ToggleButtonGroup.mjs +1 -1
  233. package/dist/TransferList.cjs +356 -0
  234. package/dist/TransferList.d.cts +67 -0
  235. package/dist/TransferList.d.mts +67 -0
  236. package/dist/TransferList.mjs +354 -0
  237. package/dist/Typography.cjs +1 -1
  238. package/dist/Typography.d.cts +2 -2
  239. package/dist/Typography.d.mts +2 -2
  240. package/dist/Typography.mjs +1 -1
  241. package/dist/View.d.cts +1 -1
  242. package/dist/View.d.mts +1 -1
  243. package/dist/catalog.cjs +4568 -0
  244. package/dist/catalog.d.cts +90 -0
  245. package/dist/catalog.d.mts +90 -0
  246. package/dist/catalog.mjs +4567 -0
  247. package/dist/computePopoverPosition-BIprs_xo.mjs +123 -0
  248. package/dist/computePopoverPosition-DiyEOHnU.cjs +128 -0
  249. package/dist/dividerLine-BNljcGlv.cjs +66 -0
  250. package/dist/dividerLine-FahY-M6_.mjs +31 -0
  251. package/dist/engine.d.cts +1 -1
  252. package/dist/engine.d.mts +1 -1
  253. package/dist/index-B1RFybA_.d.mts +72 -0
  254. package/dist/index-B4TeaB7b.d.cts +72 -0
  255. package/dist/{index-BUoVTCqX.d.mts → index-BGbTuHP9.d.mts} +1 -2
  256. package/dist/{index-Celm-8iN.d.cts → index-BHKgEOZJ.d.cts} +2 -3
  257. package/dist/{index-Chg6pSrr.d.mts → index-BQWjh4rK.d.mts} +2 -3
  258. package/dist/{index-B78VkB0-.d.cts → index-BelFIizY.d.cts} +2 -3
  259. package/dist/index-BkzZxHVj.d.mts +35 -0
  260. package/dist/{index-DbEnSf2m.d.cts → index-BrgwkY6z.d.mts} +3 -4
  261. package/dist/{index-Wnv6jCR3.d.mts → index-Bx0-6yeX.d.mts} +1 -2
  262. package/dist/index-BxVTIMnB.d.cts +1 -0
  263. package/dist/{index-BfZuh9c2.d.mts → index-ByYxVl9O.d.mts} +2 -3
  264. package/dist/index-CE5JG1us.d.mts +34 -0
  265. package/dist/{index-BhibLnZ0.d.cts → index-CG_1uPrD.d.mts} +2 -3
  266. package/dist/{themes-RX2UX5gD.d.mts → index-CJhK7JND.d.mts} +265 -8
  267. package/dist/{index-BB-dLv5V.d.mts → index-CQfJZADG.d.cts} +3 -4
  268. package/dist/{index-CxUsrlg1.d.cts → index-CUz2h5xY.d.mts} +2 -3
  269. package/dist/{index-Bid71KeF.d.cts → index-CbFaWtjK.d.mts} +2 -2
  270. package/dist/{index-DdqdSOct.d.cts → index-ChXeKJCk.d.cts} +1 -2
  271. package/dist/index-CknoXDLQ.d.cts +35 -0
  272. package/dist/{index-BSqet8aO.d.cts → index-ClZyaZrR.d.mts} +2 -3
  273. package/dist/{index-DXvQ-JVZ.d.mts → index-DAwcmIjN.d.cts} +2 -3
  274. package/dist/index-DGnXJwLj.d.mts +72 -0
  275. package/dist/{themes-Kbk9h5cN.d.cts → index-DJ0f69wh.d.cts} +262 -5
  276. package/dist/index-DWjz5ZzG.d.cts +72 -0
  277. package/dist/{index-DNwF3DUX.d.cts → index-DYF8sRE-.d.cts} +2 -3
  278. package/dist/index-DaIIo5QU.d.mts +1 -0
  279. package/dist/{index-CrN4MSUF.d.cts → index-DchHf5cF.d.cts} +1 -1
  280. package/dist/{index-S-ClM6WM.d.mts → index-DtYjdBvO.d.cts} +2 -2
  281. package/dist/{index-Ctqajtac.d.cts → index-Dv_fk1_F.d.cts} +27 -3
  282. package/dist/{index-smqjMLAZ.d.mts → index-K5exjvnX.d.cts} +2 -3
  283. package/dist/index-KnXhlKMr.d.cts +34 -0
  284. package/dist/index-WHFhjfgy.d.cts +98 -0
  285. package/dist/{index-GpnmW6vu.d.mts → index-YKrfFC_I.d.cts} +2 -3
  286. package/dist/index-bpnLB_4K.d.mts +98 -0
  287. package/dist/{index-VOsBSWEu.d.mts → index-h4dYtVrp.d.mts} +1 -1
  288. package/dist/{index-DO9J-Fla.d.mts → index-ha1WjSZ5.d.mts} +27 -3
  289. package/dist/{index-Belxmt1X.d.cts → index-nqUA_6J_.d.cts} +1 -2
  290. package/dist/{index-nc4Sxiy9.d.mts → index-pTNq3iQn.d.mts} +2 -3
  291. package/dist/index.d.cts +1 -2
  292. package/dist/index.d.mts +1 -2
  293. package/dist/isRtl-BJDtm86G.mjs +7 -0
  294. package/dist/isRtl-DTkYHRPo.cjs +12 -0
  295. package/dist/precision-B1lhxnnO.mjs +25 -0
  296. package/dist/precision-B58cTPB2.cjs +48 -0
  297. package/dist/style.cjs +1 -1
  298. package/dist/style.d.cts +2 -2
  299. package/dist/style.d.mts +2 -2
  300. package/dist/style.mjs +1 -1
  301. package/dist/surfaceSystem-BGQBoXv_.cjs +38 -0
  302. package/dist/surfaceSystem-D8TbmKy3.mjs +21 -0
  303. package/dist/theme-BxXuXRgQ.cjs +137 -0
  304. package/dist/theme-Z9_QludW.mjs +102 -0
  305. package/dist/theme.cjs +25 -24
  306. package/dist/theme.d.cts +3 -3
  307. package/dist/theme.d.mts +3 -3
  308. package/dist/theme.mjs +2 -1
  309. package/dist/{theme-CDVxig_g.mjs → themes-L-dE7_ck.mjs} +10 -110
  310. package/dist/{theme-BXlAP3xf.cjs → themes-gd6tcmqS.cjs} +0 -136
  311. package/dist/useControlled-C666KpQ0.cjs +18 -0
  312. package/dist/useControlled-CBRLsO-H.mjs +13 -0
  313. package/dist/{useTablePagination-COTiNH_8.d.mts → useTablePagination-C-u3ru4N.d.cts} +1 -1
  314. package/dist/{useTablePagination-WFkaUZu8.d.cts → useTablePagination-D-39ZmQh.d.mts} +1 -1
  315. package/package.json +83 -2
  316. package/dist/Popover-DwnSLpp1.mjs +0 -253
  317. package/dist/index-B_dKjEDR.d.mts +0 -23
  318. package/dist/index-C1WqEDtQ.d.mts +0 -69
  319. package/dist/index-CA7HnbtH.d.cts +0 -21
  320. package/dist/index-CKZaErxJ.d.mts +0 -21
  321. package/dist/index-DBUwu65Z.d.cts +0 -69
  322. package/dist/index-DzQJSYIh.d.cts +0 -23
  323. package/dist/index-cuv3o-L7.d.mts +0 -34
  324. package/dist/index-nB94D7UM.d.cts +0 -34
package/dist/Link.d.cts CHANGED
@@ -1,4 +1,4 @@
1
- import { a as TypographyProps } from "./index-BSqet8aO.cjs";
1
+ import { a as TypographyProps } from "./index-K5exjvnX.cjs";
2
2
  import { AnchorHTMLAttributes } from "react";
3
3
  //#region src/Link/Link.d.ts
4
4
  type LinkUnderline = 'always' | 'hover' | 'none';
package/dist/Link.d.mts CHANGED
@@ -1,4 +1,4 @@
1
- import { a as TypographyProps } from "./index-smqjMLAZ.mjs";
1
+ import { a as TypographyProps } from "./index-ClZyaZrR.mjs";
2
2
  import { AnchorHTMLAttributes } from "react";
3
3
  //#region src/Link/Link.d.ts
4
4
  type LinkUnderline = 'always' | 'hover' | 'none';
package/dist/Link.mjs CHANGED
@@ -1,6 +1,6 @@
1
1
  import { o as styled } from "./src-DLGYOJMh.mjs";
2
2
  import { t as themeDefault } from "./themeDefault-Z3KmyIbm.mjs";
3
- import { r as useTheme } from "./theme-CDVxig_g.mjs";
3
+ import { r as useTheme } from "./theme-Z9_QludW.mjs";
4
4
  import { Typography } from "./Typography.mjs";
5
5
  import "react";
6
6
  import { jsx } from "react/jsx-runtime";
@@ -0,0 +1,146 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_src = require("../src-DU81aGy9.cjs");
3
+ const require_theme = require("../theme-BxXuXRgQ.cjs");
4
+ const require_MenuList = require("../MenuList-D4imLXAa.cjs");
5
+ const require_MenuItem = require("../MenuItem-BTP7Ijwi.cjs");
6
+ const require_Menu_MenuItems = require("./MenuItems.cjs");
7
+ let react = require("react");
8
+ let react_jsx_runtime = require("react/jsx-runtime");
9
+ //#region src/Menu/ContextMenu/ContextMenu.tsx
10
+ const ContextMenuPaper = require_src.styled(require_MenuItem.MenuPaper, {
11
+ name: "ContextMenu",
12
+ slot: "paper",
13
+ label: "ContextMenuPaper"
14
+ })();
15
+ const ContextMenuRoot = require_src.styled("div", {
16
+ name: "ContextMenu",
17
+ label: "ContextMenu"
18
+ })({ display: "contents" });
19
+ const isMenuKey = (event) => event.key === "ContextMenu" || event.key === "F10" && event.shiftKey;
20
+ /** The element given, listening for a right-click and the context-menu keys. */
21
+ function ContextMenuTarget({ element, onContextMenu, onKeyDown }) {
22
+ return (0, react.cloneElement)(element, {
23
+ onContextMenu,
24
+ onKeyDown
25
+ });
26
+ }
27
+ /**
28
+ * @description A `MenuList` opened at the pointer by a right-click over its target, or at
29
+ * the focused element by the context-menu key or Shift+F10. It is placed and closes as
30
+ * `Menu` does - Escape, a chosen row or focus leaving - and gives focus back to where it
31
+ * was. The browser's own menu is held back only when this one opens.
32
+ */
33
+ function ContextMenu({ target, children, items, onClose, onSelect, marginThreshold: marginThresholdProp, elevation: elevationProp, layer: layerProp, emptyLabel, color: colorProp, textColor: textColorProp, size: sizeProp, dense: denseProp, "aria-label": ariaLabel, className, "data-testid": dataTestid }) {
34
+ const dp = require_theme.useDefaultProps("ContextMenu");
35
+ const marginThreshold = marginThresholdProp ?? dp.marginThreshold ?? 2;
36
+ const elevation = elevationProp ?? dp.elevation ?? 8;
37
+ const layer = layerProp ?? dp.layer ?? "modal";
38
+ const color = colorProp ?? dp.color;
39
+ const textColor = textColorProp ?? dp.textColor;
40
+ const size = sizeProp ?? dp.size;
41
+ const dense = denseProp ?? dp.dense;
42
+ const theme = require_theme.useTheme();
43
+ const [point, setPoint] = (0, react.useState)(null);
44
+ const isOpen = point !== null;
45
+ const rootRef = (0, react.useRef)(null);
46
+ const surfaceRef = (0, react.useRef)(null);
47
+ const returnFocusRef = (0, react.useRef)(null);
48
+ const listId = (0, react.useId)();
49
+ const margin = Number.parseFloat(String(theme.space[marginThreshold]));
50
+ const menuContext = (0, react.useMemo)(() => ({
51
+ align: "start",
52
+ margin,
53
+ elevation,
54
+ layer
55
+ }), [
56
+ margin,
57
+ elevation,
58
+ layer
59
+ ]);
60
+ require_MenuItem.useMenuPlacement({
61
+ isOpen,
62
+ anchorRef: rootRef,
63
+ anchorPosition: point,
64
+ surfaceRef,
65
+ placement: "below",
66
+ align: "start",
67
+ margin
68
+ });
69
+ const openAt = (top, left) => {
70
+ returnFocusRef.current = document.activeElement;
71
+ setPoint({
72
+ top,
73
+ left
74
+ });
75
+ };
76
+ const close = (0, react.useCallback)((event, reason) => {
77
+ setPoint(null);
78
+ onClose?.(event, reason);
79
+ if (reason !== "blur") returnFocusRef.current.focus();
80
+ }, [onClose]);
81
+ const handleActivate = (0, react.useCallback)((_value, event) => close(event, "select"), [close]);
82
+ const handleContextMenu = (event) => {
83
+ target.props.onContextMenu?.(event);
84
+ event.preventDefault();
85
+ openAt(event.clientY, event.clientX);
86
+ };
87
+ const handleKeyDown = (event) => {
88
+ target.props.onKeyDown?.(event);
89
+ if (!isMenuKey(event)) return;
90
+ event.preventDefault();
91
+ const { bottom, left } = event.target.getBoundingClientRect();
92
+ openAt(bottom, left);
93
+ };
94
+ const handleSurfaceKeyDown = (event) => {
95
+ if (event.key === "Escape") {
96
+ event.preventDefault();
97
+ close(event, "escapeKey");
98
+ }
99
+ };
100
+ const handleBlur = (event) => {
101
+ const next = event.relatedTarget;
102
+ if (isOpen && !event.currentTarget.contains(next)) close(event, "blur");
103
+ };
104
+ const hasRows = items ? items.length > 0 : react.Children.toArray(children).length > 0;
105
+ const rows = items ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_Menu_MenuItems.MenuItems, { items }) : children;
106
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(ContextMenuRoot, {
107
+ ref: rootRef,
108
+ className,
109
+ "data-testid": dataTestid,
110
+ onBlur: handleBlur,
111
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(ContextMenuTarget, {
112
+ element: target,
113
+ onContextMenu: handleContextMenu,
114
+ onKeyDown: handleKeyDown
115
+ }), isOpen && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ContextMenuPaper, {
116
+ ref: surfaceRef,
117
+ elevation,
118
+ layer,
119
+ margin,
120
+ onKeyDown: handleSurfaceKeyDown,
121
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_MenuItem.MenuContext.Provider, {
122
+ value: menuContext,
123
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_MenuList.MenuActivationContext.Provider, {
124
+ value: handleActivate,
125
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_MenuList.MenuList, {
126
+ id: listId,
127
+ "aria-label": ariaLabel,
128
+ shouldAutoFocus: true,
129
+ onSelect,
130
+ color,
131
+ textColor,
132
+ size,
133
+ dense,
134
+ width: "100%",
135
+ children: hasRows ? rows : emptyLabel != null && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_MenuItem.MenuItem, {
136
+ disabled: true,
137
+ children: emptyLabel
138
+ })
139
+ })
140
+ })
141
+ })
142
+ })]
143
+ });
144
+ }
145
+ //#endregion
146
+ exports.ContextMenu = ContextMenu;
@@ -0,0 +1,52 @@
1
+ import { Gt as PaperElevation, W as Theme } from "../index-DJ0f69wh.cjs";
2
+ import "../index-BxVTIMnB.cjs";
3
+ import { t as MenuItemValue } from "../MenuListContext-DKUOhNyw.cjs";
4
+ import { n as MenuItemData } from "../index-CknoXDLQ.cjs";
5
+ import { n as MenuCloseReason } from "../index-DWjz5ZzG.cjs";
6
+ import { KeyboardEvent, MouseEvent, ReactElement, ReactNode, SyntheticEvent } from "react";
7
+ //#region src/Menu/ContextMenu/ContextMenu.d.ts
8
+ interface TargetProps {
9
+ onContextMenu?: (event: MouseEvent<HTMLElement>) => void;
10
+ onKeyDown?: (event: KeyboardEvent<HTMLElement>) => void;
11
+ }
12
+ interface ContextMenuProps {
13
+ /** The element whose right-click opens the menu - the canvas, a row, a card. Its own `onContextMenu` / `onKeyDown` still run. */
14
+ target: ReactElement<TargetProps>;
15
+ /** `MenuItem` rows and `MenuDivider`s. */
16
+ children?: ReactNode;
17
+ /** The rows as data, in place of `children`. */
18
+ items?: readonly MenuItemData[];
19
+ /** Fired when the menu asks to close, with why. */
20
+ onClose?: (event: SyntheticEvent, reason: MenuCloseReason) => void;
21
+ /** Fired with a row's `value` when a row that has one is chosen. */
22
+ onSelect?: (value: MenuItemValue) => void;
23
+ /** The least room between the list and the window's edge - a `theme.space` key. Default: `2`. */
24
+ marginThreshold?: keyof Theme['space'];
25
+ /** Shadow depth of the surface. Default: `8`. */
26
+ elevation?: PaperElevation;
27
+ /** Stacking layer from `theme.zOrder`. Default: `'modal'`. */
28
+ layer?: keyof Theme['zOrder'];
29
+ /** Shown as one disabled row when the menu has no rows. Without it, the list stays empty. */
30
+ emptyLabel?: ReactNode;
31
+ /** Accent color for every row - resolves to `theme.palette[color]`. */
32
+ color?: keyof Theme['palette'];
33
+ /** Base text color for every row - resolves against `theme.text`. */
34
+ textColor?: keyof Theme['text'];
35
+ /** Density token for every row - resolves against `theme.sizes`. */
36
+ size?: keyof Theme['sizes'];
37
+ /** Compact vertical padding for every row. */
38
+ dense?: boolean;
39
+ /** Names the list. */
40
+ 'aria-label'?: string;
41
+ className?: string;
42
+ 'data-testid'?: string;
43
+ }
44
+ /**
45
+ * @description A `MenuList` opened at the pointer by a right-click over its target, or at
46
+ * the focused element by the context-menu key or Shift+F10. It is placed and closes as
47
+ * `Menu` does - Escape, a chosen row or focus leaving - and gives focus back to where it
48
+ * was. The browser's own menu is held back only when this one opens.
49
+ */
50
+ declare function ContextMenu({ target, children, items, onClose, onSelect, marginThreshold: marginThresholdProp, elevation: elevationProp, layer: layerProp, emptyLabel, color: colorProp, textColor: textColorProp, size: sizeProp, dense: denseProp, 'aria-label': ariaLabel, className, 'data-testid': dataTestid }: Readonly<ContextMenuProps>): import("react").JSX.Element;
51
+ //#endregion
52
+ export { ContextMenu, ContextMenuProps };
@@ -0,0 +1,52 @@
1
+ import { Gt as PaperElevation, W as Theme } from "../index-CJhK7JND.mjs";
2
+ import "../index-DaIIo5QU.mjs";
3
+ import { t as MenuItemValue } from "../MenuListContext-x-7lH4CH.mjs";
4
+ import { n as MenuItemData } from "../index-BkzZxHVj.mjs";
5
+ import { n as MenuCloseReason } from "../index-DGnXJwLj.mjs";
6
+ import { KeyboardEvent, MouseEvent, ReactElement, ReactNode, SyntheticEvent } from "react";
7
+ //#region src/Menu/ContextMenu/ContextMenu.d.ts
8
+ interface TargetProps {
9
+ onContextMenu?: (event: MouseEvent<HTMLElement>) => void;
10
+ onKeyDown?: (event: KeyboardEvent<HTMLElement>) => void;
11
+ }
12
+ interface ContextMenuProps {
13
+ /** The element whose right-click opens the menu - the canvas, a row, a card. Its own `onContextMenu` / `onKeyDown` still run. */
14
+ target: ReactElement<TargetProps>;
15
+ /** `MenuItem` rows and `MenuDivider`s. */
16
+ children?: ReactNode;
17
+ /** The rows as data, in place of `children`. */
18
+ items?: readonly MenuItemData[];
19
+ /** Fired when the menu asks to close, with why. */
20
+ onClose?: (event: SyntheticEvent, reason: MenuCloseReason) => void;
21
+ /** Fired with a row's `value` when a row that has one is chosen. */
22
+ onSelect?: (value: MenuItemValue) => void;
23
+ /** The least room between the list and the window's edge - a `theme.space` key. Default: `2`. */
24
+ marginThreshold?: keyof Theme['space'];
25
+ /** Shadow depth of the surface. Default: `8`. */
26
+ elevation?: PaperElevation;
27
+ /** Stacking layer from `theme.zOrder`. Default: `'modal'`. */
28
+ layer?: keyof Theme['zOrder'];
29
+ /** Shown as one disabled row when the menu has no rows. Without it, the list stays empty. */
30
+ emptyLabel?: ReactNode;
31
+ /** Accent color for every row - resolves to `theme.palette[color]`. */
32
+ color?: keyof Theme['palette'];
33
+ /** Base text color for every row - resolves against `theme.text`. */
34
+ textColor?: keyof Theme['text'];
35
+ /** Density token for every row - resolves against `theme.sizes`. */
36
+ size?: keyof Theme['sizes'];
37
+ /** Compact vertical padding for every row. */
38
+ dense?: boolean;
39
+ /** Names the list. */
40
+ 'aria-label'?: string;
41
+ className?: string;
42
+ 'data-testid'?: string;
43
+ }
44
+ /**
45
+ * @description A `MenuList` opened at the pointer by a right-click over its target, or at
46
+ * the focused element by the context-menu key or Shift+F10. It is placed and closes as
47
+ * `Menu` does - Escape, a chosen row or focus leaving - and gives focus back to where it
48
+ * was. The browser's own menu is held back only when this one opens.
49
+ */
50
+ declare function ContextMenu({ target, children, items, onClose, onSelect, marginThreshold: marginThresholdProp, elevation: elevationProp, layer: layerProp, emptyLabel, color: colorProp, textColor: textColorProp, size: sizeProp, dense: denseProp, 'aria-label': ariaLabel, className, 'data-testid': dataTestid }: Readonly<ContextMenuProps>): import("react").JSX.Element;
51
+ //#endregion
52
+ export { ContextMenu, ContextMenuProps };
@@ -0,0 +1,145 @@
1
+ import { o as styled } from "../src-DLGYOJMh.mjs";
2
+ import { n as useDefaultProps, r as useTheme } from "../theme-Z9_QludW.mjs";
3
+ import { o as MenuActivationContext, t as MenuList } from "../MenuList-B7msJ1IG.mjs";
4
+ import { i as MenuPaper, n as useMenuPlacement, r as MenuContext, t as MenuItem } from "../MenuItem-DUn4IZKK.mjs";
5
+ import { MenuItems } from "./MenuItems.mjs";
6
+ import { Children, cloneElement, useCallback, useId, useMemo, useRef, useState } from "react";
7
+ import { jsx, jsxs } from "react/jsx-runtime";
8
+ //#region src/Menu/ContextMenu/ContextMenu.tsx
9
+ const ContextMenuPaper = styled(MenuPaper, {
10
+ name: "ContextMenu",
11
+ slot: "paper",
12
+ label: "ContextMenuPaper"
13
+ })();
14
+ const ContextMenuRoot = styled("div", {
15
+ name: "ContextMenu",
16
+ label: "ContextMenu"
17
+ })({ display: "contents" });
18
+ const isMenuKey = (event) => event.key === "ContextMenu" || event.key === "F10" && event.shiftKey;
19
+ /** The element given, listening for a right-click and the context-menu keys. */
20
+ function ContextMenuTarget({ element, onContextMenu, onKeyDown }) {
21
+ return cloneElement(element, {
22
+ onContextMenu,
23
+ onKeyDown
24
+ });
25
+ }
26
+ /**
27
+ * @description A `MenuList` opened at the pointer by a right-click over its target, or at
28
+ * the focused element by the context-menu key or Shift+F10. It is placed and closes as
29
+ * `Menu` does - Escape, a chosen row or focus leaving - and gives focus back to where it
30
+ * was. The browser's own menu is held back only when this one opens.
31
+ */
32
+ function ContextMenu({ target, children, items, onClose, onSelect, marginThreshold: marginThresholdProp, elevation: elevationProp, layer: layerProp, emptyLabel, color: colorProp, textColor: textColorProp, size: sizeProp, dense: denseProp, "aria-label": ariaLabel, className, "data-testid": dataTestid }) {
33
+ const dp = useDefaultProps("ContextMenu");
34
+ const marginThreshold = marginThresholdProp ?? dp.marginThreshold ?? 2;
35
+ const elevation = elevationProp ?? dp.elevation ?? 8;
36
+ const layer = layerProp ?? dp.layer ?? "modal";
37
+ const color = colorProp ?? dp.color;
38
+ const textColor = textColorProp ?? dp.textColor;
39
+ const size = sizeProp ?? dp.size;
40
+ const dense = denseProp ?? dp.dense;
41
+ const theme = useTheme();
42
+ const [point, setPoint] = useState(null);
43
+ const isOpen = point !== null;
44
+ const rootRef = useRef(null);
45
+ const surfaceRef = useRef(null);
46
+ const returnFocusRef = useRef(null);
47
+ const listId = useId();
48
+ const margin = Number.parseFloat(String(theme.space[marginThreshold]));
49
+ const menuContext = useMemo(() => ({
50
+ align: "start",
51
+ margin,
52
+ elevation,
53
+ layer
54
+ }), [
55
+ margin,
56
+ elevation,
57
+ layer
58
+ ]);
59
+ useMenuPlacement({
60
+ isOpen,
61
+ anchorRef: rootRef,
62
+ anchorPosition: point,
63
+ surfaceRef,
64
+ placement: "below",
65
+ align: "start",
66
+ margin
67
+ });
68
+ const openAt = (top, left) => {
69
+ returnFocusRef.current = document.activeElement;
70
+ setPoint({
71
+ top,
72
+ left
73
+ });
74
+ };
75
+ const close = useCallback((event, reason) => {
76
+ setPoint(null);
77
+ onClose?.(event, reason);
78
+ if (reason !== "blur") returnFocusRef.current.focus();
79
+ }, [onClose]);
80
+ const handleActivate = useCallback((_value, event) => close(event, "select"), [close]);
81
+ const handleContextMenu = (event) => {
82
+ target.props.onContextMenu?.(event);
83
+ event.preventDefault();
84
+ openAt(event.clientY, event.clientX);
85
+ };
86
+ const handleKeyDown = (event) => {
87
+ target.props.onKeyDown?.(event);
88
+ if (!isMenuKey(event)) return;
89
+ event.preventDefault();
90
+ const { bottom, left } = event.target.getBoundingClientRect();
91
+ openAt(bottom, left);
92
+ };
93
+ const handleSurfaceKeyDown = (event) => {
94
+ if (event.key === "Escape") {
95
+ event.preventDefault();
96
+ close(event, "escapeKey");
97
+ }
98
+ };
99
+ const handleBlur = (event) => {
100
+ const next = event.relatedTarget;
101
+ if (isOpen && !event.currentTarget.contains(next)) close(event, "blur");
102
+ };
103
+ const hasRows = items ? items.length > 0 : Children.toArray(children).length > 0;
104
+ const rows = items ? /* @__PURE__ */ jsx(MenuItems, { items }) : children;
105
+ return /* @__PURE__ */ jsxs(ContextMenuRoot, {
106
+ ref: rootRef,
107
+ className,
108
+ "data-testid": dataTestid,
109
+ onBlur: handleBlur,
110
+ children: [/* @__PURE__ */ jsx(ContextMenuTarget, {
111
+ element: target,
112
+ onContextMenu: handleContextMenu,
113
+ onKeyDown: handleKeyDown
114
+ }), isOpen && /* @__PURE__ */ jsx(ContextMenuPaper, {
115
+ ref: surfaceRef,
116
+ elevation,
117
+ layer,
118
+ margin,
119
+ onKeyDown: handleSurfaceKeyDown,
120
+ children: /* @__PURE__ */ jsx(MenuContext.Provider, {
121
+ value: menuContext,
122
+ children: /* @__PURE__ */ jsx(MenuActivationContext.Provider, {
123
+ value: handleActivate,
124
+ children: /* @__PURE__ */ jsx(MenuList, {
125
+ id: listId,
126
+ "aria-label": ariaLabel,
127
+ shouldAutoFocus: true,
128
+ onSelect,
129
+ color,
130
+ textColor,
131
+ size,
132
+ dense,
133
+ width: "100%",
134
+ children: hasRows ? rows : emptyLabel != null && /* @__PURE__ */ jsx(MenuItem, {
135
+ disabled: true,
136
+ children: emptyLabel
137
+ })
138
+ })
139
+ })
140
+ })
141
+ })]
142
+ });
143
+ }
144
+ //#endregion
145
+ export { ContextMenu };
@@ -0,0 +1,3 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_Menu = require("../Menu-Cgg-sX4W.cjs");
3
+ exports.Menu = require_Menu.Menu;
@@ -0,0 +1,2 @@
1
+ import { a as MenuAlign, i as MenuStep, n as MenuCloseReason, r as MenuProps, t as Menu } from "../index-DWjz5ZzG.cjs";
2
+ export { Menu, type MenuAlign, MenuCloseReason, MenuProps, MenuStep };
@@ -0,0 +1,2 @@
1
+ import { a as MenuAlign, i as MenuStep, n as MenuCloseReason, r as MenuProps, t as Menu } from "../index-DGnXJwLj.mjs";
2
+ export { Menu, type MenuAlign, MenuCloseReason, MenuProps, MenuStep };
@@ -0,0 +1,2 @@
1
+ import { t as Menu } from "../Menu-CrzHc_cn.mjs";
2
+ export { Menu };
@@ -0,0 +1,29 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_src = require("../src-DU81aGy9.cjs");
3
+ let react_jsx_runtime = require("react/jsx-runtime");
4
+ //#region src/Menu/MenuDivider/MenuDivider.tsx
5
+ const MenuDividerRoot = require_src.styled("li", {
6
+ name: "MenuDivider",
7
+ label: "MenuDivider"
8
+ })(({ theme }) => ({
9
+ listStyle: "none",
10
+ height: 0,
11
+ marginTop: theme.space[.5],
12
+ marginBottom: theme.space[.5],
13
+ borderTopWidth: theme.borderWidths.thin,
14
+ borderTopStyle: "solid",
15
+ borderTopColor: (0, require_src.src_exports.get)(theme, "border.light")
16
+ }));
17
+ /**
18
+ * @description A `role="separator"` line between groups of rows in a `MenuList`. The
19
+ * arrow keys pass over it.
20
+ */
21
+ function MenuDivider({ className, "data-testid": dataTestid }) {
22
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(MenuDividerRoot, {
23
+ role: "separator",
24
+ className,
25
+ "data-testid": dataTestid
26
+ });
27
+ }
28
+ //#endregion
29
+ exports.MenuDivider = MenuDivider;
@@ -0,0 +1,12 @@
1
+ //#region src/Menu/MenuDivider/MenuDivider.d.ts
2
+ interface MenuDividerProps {
3
+ className?: string;
4
+ 'data-testid'?: string;
5
+ }
6
+ /**
7
+ * @description A `role="separator"` line between groups of rows in a `MenuList`. The
8
+ * arrow keys pass over it.
9
+ */
10
+ declare function MenuDivider({ className, 'data-testid': dataTestid }: Readonly<MenuDividerProps>): import("react").JSX.Element;
11
+ //#endregion
12
+ export { MenuDivider, MenuDividerProps };
@@ -0,0 +1,12 @@
1
+ //#region src/Menu/MenuDivider/MenuDivider.d.ts
2
+ interface MenuDividerProps {
3
+ className?: string;
4
+ 'data-testid'?: string;
5
+ }
6
+ /**
7
+ * @description A `role="separator"` line between groups of rows in a `MenuList`. The
8
+ * arrow keys pass over it.
9
+ */
10
+ declare function MenuDivider({ className, 'data-testid': dataTestid }: Readonly<MenuDividerProps>): import("react").JSX.Element;
11
+ //#endregion
12
+ export { MenuDivider, MenuDividerProps };
@@ -0,0 +1,28 @@
1
+ import { a as src_exports, o as styled } from "../src-DLGYOJMh.mjs";
2
+ import { jsx } from "react/jsx-runtime";
3
+ //#region src/Menu/MenuDivider/MenuDivider.tsx
4
+ const MenuDividerRoot = styled("li", {
5
+ name: "MenuDivider",
6
+ label: "MenuDivider"
7
+ })(({ theme }) => ({
8
+ listStyle: "none",
9
+ height: 0,
10
+ marginTop: theme.space[.5],
11
+ marginBottom: theme.space[.5],
12
+ borderTopWidth: theme.borderWidths.thin,
13
+ borderTopStyle: "solid",
14
+ borderTopColor: (0, src_exports.get)(theme, "border.light")
15
+ }));
16
+ /**
17
+ * @description A `role="separator"` line between groups of rows in a `MenuList`. The
18
+ * arrow keys pass over it.
19
+ */
20
+ function MenuDivider({ className, "data-testid": dataTestid }) {
21
+ return /* @__PURE__ */ jsx(MenuDividerRoot, {
22
+ role: "separator",
23
+ className,
24
+ "data-testid": dataTestid
25
+ });
26
+ }
27
+ //#endregion
28
+ export { MenuDivider };
@@ -0,0 +1,29 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_MenuItem = require("../MenuItem-BTP7Ijwi.cjs");
3
+ const require_Menu_MenuDivider = require("./MenuDivider.cjs");
4
+ let react_jsx_runtime = require("react/jsx-runtime");
5
+ //#region src/Menu/MenuItems/MenuItems.tsx
6
+ const isDivider = (item) => "type" in item && item.type === "divider";
7
+ /**
8
+ * @description Menu rows from data: each entry a `MenuItem` (its label as `label`, its
9
+ * submenu as more entries) or `{ type: 'divider' }`. It renders the same rows JSX children
10
+ * would, so the two behave alike - inside a `MenuList`, a `Menu` or a `ContextMenu`.
11
+ */
12
+ function MenuItems({ items }) {
13
+ let dividers = 0;
14
+ return items.map((item, index) => {
15
+ if (isDivider(item)) {
16
+ dividers += 1;
17
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_Menu_MenuDivider.MenuDivider, {}, `divider-${dividers}`);
18
+ }
19
+ const { label, submenu, ...row } = item;
20
+ const submenuRows = submenu?.length ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(MenuItems, { items: submenu }) : null;
21
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_MenuItem.MenuItem, {
22
+ ...row,
23
+ submenu: submenu === void 0 ? void 0 : submenuRows,
24
+ children: label
25
+ }, item.value ?? `row-${index}`);
26
+ });
27
+ }
28
+ //#endregion
29
+ exports.MenuItems = MenuItems;
@@ -0,0 +1,2 @@
1
+ import { a as MenuItemsProps, i as MenuItems, n as MenuItemData, r as MenuItemRowData, t as MenuDividerData } from "../index-CknoXDLQ.cjs";
2
+ export { MenuDividerData, MenuItemData, MenuItemRowData, MenuItems, MenuItemsProps };
@@ -0,0 +1,2 @@
1
+ import { a as MenuItemsProps, i as MenuItems, n as MenuItemData, r as MenuItemRowData, t as MenuDividerData } from "../index-BkzZxHVj.mjs";
2
+ export { MenuDividerData, MenuItemData, MenuItemRowData, MenuItems, MenuItemsProps };
@@ -0,0 +1,28 @@
1
+ import { t as MenuItem } from "../MenuItem-DUn4IZKK.mjs";
2
+ import { MenuDivider } from "./MenuDivider.mjs";
3
+ import { jsx } from "react/jsx-runtime";
4
+ //#region src/Menu/MenuItems/MenuItems.tsx
5
+ const isDivider = (item) => "type" in item && item.type === "divider";
6
+ /**
7
+ * @description Menu rows from data: each entry a `MenuItem` (its label as `label`, its
8
+ * submenu as more entries) or `{ type: 'divider' }`. It renders the same rows JSX children
9
+ * would, so the two behave alike - inside a `MenuList`, a `Menu` or a `ContextMenu`.
10
+ */
11
+ function MenuItems({ items }) {
12
+ let dividers = 0;
13
+ return items.map((item, index) => {
14
+ if (isDivider(item)) {
15
+ dividers += 1;
16
+ return /* @__PURE__ */ jsx(MenuDivider, {}, `divider-${dividers}`);
17
+ }
18
+ const { label, submenu, ...row } = item;
19
+ const submenuRows = submenu?.length ? /* @__PURE__ */ jsx(MenuItems, { items: submenu }) : null;
20
+ return /* @__PURE__ */ jsx(MenuItem, {
21
+ ...row,
22
+ submenu: submenu === void 0 ? void 0 : submenuRows,
23
+ children: label
24
+ }, item.value ?? `row-${index}`);
25
+ });
26
+ }
27
+ //#endregion
28
+ export { MenuItems };
@@ -0,0 +1,3 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_MenuList = require("../MenuList-D4imLXAa.cjs");
3
+ exports.MenuList = require_MenuList.MenuList;
@@ -0,0 +1,38 @@
1
+ import { W as Theme } from "../index-DJ0f69wh.cjs";
2
+ import { t as MenuItemValue } from "../MenuListContext-DKUOhNyw.cjs";
3
+ import { KeyboardEvent, ReactNode } from "react";
4
+ import { LayoutProps, SpaceProps } from "@soroush.tech/styled-system";
5
+ //#region src/Menu/MenuList/MenuList.d.ts
6
+ interface MenuListProps extends SpaceProps<Theme>, LayoutProps<Theme> {
7
+ /** `MenuItem` rows and `MenuDivider`s. */
8
+ children?: ReactNode;
9
+ /** Fired with a row's `value` when a row that has one is chosen. */
10
+ onSelect?: (value: MenuItemValue) => void;
11
+ /** Carry the arrow keys past the last row to the first, and back. Default: `true`. */
12
+ shouldWrap?: boolean;
13
+ /** Focus the selected row, or the first enabled one, on mount. Default: `false`. */
14
+ shouldAutoFocus?: boolean;
15
+ /** Accent color for every row - resolves to `theme.palette[color]`. A row's own value wins. */
16
+ color?: keyof Theme['palette'];
17
+ /** Base text color for every row - resolves against `theme.text`. A row's own value wins. */
18
+ textColor?: keyof Theme['text'];
19
+ /** Density token for every row - resolves against `theme.sizes`. A row's own value wins. */
20
+ size?: keyof Theme['sizes'];
21
+ /** Compact vertical padding for every row. */
22
+ dense?: boolean;
23
+ onKeyDown?: (event: KeyboardEvent<HTMLElement>) => void;
24
+ id?: string;
25
+ className?: string;
26
+ 'aria-label'?: string;
27
+ 'aria-labelledby'?: string;
28
+ 'data-testid'?: string;
29
+ }
30
+ /**
31
+ * @description A `role="menu"` list that owns the keyboard: the arrow keys, Home and End
32
+ * move focus between its own rows, skipping disabled ones; typing jumps to a row by its
33
+ * label. Rows are found in the DOM by their nearest `role="menu"`, so a nested submenu's
34
+ * rows are never this list's. Renders in place - `Menu` floats one next to a trigger.
35
+ */
36
+ declare function MenuList({ children, onSelect, shouldWrap: shouldWrapProp, shouldAutoFocus, color, textColor, size, dense, onKeyDown, ...rest }: Readonly<MenuListProps>): import("react").JSX.Element;
37
+ //#endregion
38
+ export { type MenuItemValue, MenuList, MenuListProps };