@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
@@ -0,0 +1,38 @@
1
+ import { W as Theme } from "../index-CJhK7JND.mjs";
2
+ import { t as MenuItemValue } from "../MenuListContext-x-7lH4CH.mjs";
3
+ import { LayoutProps, SpaceProps } from "@soroush.tech/styled-system";
4
+ import { KeyboardEvent, ReactNode } from "react";
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 };
@@ -0,0 +1,2 @@
1
+ import { t as MenuList } from "../MenuList-B7msJ1IG.mjs";
2
+ export { MenuList };
@@ -0,0 +1,173 @@
1
+ const require_src = require("./src-DU81aGy9.cjs");
2
+ const require_theme = require("./theme-BxXuXRgQ.cjs");
3
+ const require_isRtl = require("./isRtl-DTkYHRPo.cjs");
4
+ const require_MenuList = require("./MenuList-D4imLXAa.cjs");
5
+ const require_MenuItem = require("./MenuItem-BTP7Ijwi.cjs");
6
+ const require_Menu_MenuItems = require("./Menu/MenuItems.cjs");
7
+ let react = require("react");
8
+ let react_jsx_runtime = require("react/jsx-runtime");
9
+ //#region src/Menu/utils/assignRef.ts
10
+ /** Hands `value` to a ref of either kind - a callback, or an object - when there is one. */
11
+ function assignRef(ref, value) {
12
+ if (typeof ref === "function") ref(value);
13
+ else if (ref) ref.current = value;
14
+ }
15
+ //#endregion
16
+ //#region src/Menu/Menu/Menu.tsx
17
+ const MenuRoot = require_src.styled("div", {
18
+ name: "Menu",
19
+ label: "Menu"
20
+ })({ display: "inline-flex" });
21
+ /** The menu's trigger: the element given, as the button that opens the list. */
22
+ function MenuTrigger({ element, id, elementRef, isOpen, listId, onClick, onKeyDown }) {
23
+ return (0, react.cloneElement)(element, {
24
+ id,
25
+ ref: elementRef,
26
+ "aria-haspopup": "menu",
27
+ "aria-expanded": isOpen,
28
+ "aria-controls": isOpen ? listId : void 0,
29
+ onClick,
30
+ onKeyDown
31
+ });
32
+ }
33
+ /**
34
+ * @description A trigger and the `MenuList` it opens. Not modal: no focus trap, no scroll
35
+ * lock, nothing laid over the page, so the pointer passes over it freely. The list is
36
+ * placed `position: fixed` in the window next to the trigger, so a panel's overflow
37
+ * can't clip it, but stays inside the menu's own box in the DOM. Escape or a chosen row
38
+ * closes it and returns focus to the trigger; focus leaving it closes it where it went.
39
+ */
40
+ function Menu({ trigger, children, items, isOpen: isOpenProp, defaultOpen = false, onOpen, onClose, onStep, onSelect, align: alignProp, marginThreshold: marginThresholdProp, elevation: elevationProp, layer: layerProp, emptyLabel, color: colorProp, textColor: textColorProp, size: sizeProp, dense: denseProp, "aria-label": ariaLabel, className, "data-testid": dataTestid }) {
41
+ const dp = require_theme.useDefaultProps("Menu");
42
+ const align = alignProp ?? dp.align ?? "start";
43
+ const marginThreshold = marginThresholdProp ?? dp.marginThreshold ?? 2;
44
+ const elevation = elevationProp ?? dp.elevation ?? 8;
45
+ const layer = layerProp ?? dp.layer ?? "modal";
46
+ const color = colorProp ?? dp.color;
47
+ const textColor = textColorProp ?? dp.textColor;
48
+ const size = sizeProp ?? dp.size;
49
+ const dense = denseProp ?? dp.dense;
50
+ const theme = require_theme.useTheme();
51
+ const isControlled = isOpenProp !== void 0;
52
+ const [isOpenState, setIsOpenState] = (0, react.useState)(defaultOpen);
53
+ const isOpen = isControlled ? isOpenProp : isOpenState;
54
+ const rootRef = (0, react.useRef)(null);
55
+ const triggerRef = (0, react.useRef)(null);
56
+ const surfaceRef = (0, react.useRef)(null);
57
+ const listId = (0, react.useId)();
58
+ const fallbackTriggerId = (0, react.useId)();
59
+ const triggerId = trigger.props.id ?? fallbackTriggerId;
60
+ const margin = Number.parseFloat(String(theme.space[marginThreshold]));
61
+ const menuContext = (0, react.useMemo)(() => ({
62
+ align,
63
+ margin,
64
+ elevation,
65
+ layer
66
+ }), [
67
+ align,
68
+ margin,
69
+ elevation,
70
+ layer
71
+ ]);
72
+ require_MenuItem.useMenuPlacement({
73
+ isOpen,
74
+ anchorRef: rootRef,
75
+ surfaceRef,
76
+ placement: "below",
77
+ align,
78
+ margin
79
+ });
80
+ const open = () => {
81
+ if (!isControlled) setIsOpenState(true);
82
+ onOpen?.();
83
+ };
84
+ const close = (0, react.useCallback)((event, reason) => {
85
+ if (!isControlled) setIsOpenState(false);
86
+ onClose?.(event, reason);
87
+ if (reason !== "blur") triggerRef.current?.focus();
88
+ }, [isControlled, onClose]);
89
+ const triggerProps = trigger.props;
90
+ const setTriggerRef = (0, react.useCallback)((element) => {
91
+ triggerRef.current = element;
92
+ assignRef(triggerProps.ref, element);
93
+ }, [triggerProps]);
94
+ const handleActivate = (0, react.useCallback)((_value, event) => close(event, "select"), [close]);
95
+ const handleTriggerClick = (event) => {
96
+ trigger.props.onClick?.(event);
97
+ if (isOpen) close(event, "triggerClick");
98
+ else open();
99
+ };
100
+ const handleTriggerKeyDown = (event) => {
101
+ trigger.props.onKeyDown?.(event);
102
+ if (!isOpen && (event.key === "ArrowDown" || event.key === "ArrowUp")) {
103
+ event.preventDefault();
104
+ open();
105
+ }
106
+ };
107
+ const handleSurfaceKeyDown = (event) => {
108
+ if (event.key === "Escape") {
109
+ event.preventDefault();
110
+ close(event, "escapeKey");
111
+ } else if (onStep && (event.key === "ArrowLeft" || event.key === "ArrowRight")) {
112
+ event.preventDefault();
113
+ const step = event.key === "ArrowRight" ? 1 : -1;
114
+ onStep(require_isRtl.isRtl(event.currentTarget) ? -step : step);
115
+ }
116
+ };
117
+ const handleBlur = (event) => {
118
+ const next = event.relatedTarget;
119
+ if (isOpen && !event.currentTarget.contains(next)) close(event, "blur");
120
+ };
121
+ const hasRows = items ? items.length > 0 : react.Children.toArray(children).length > 0;
122
+ const rows = items ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_Menu_MenuItems.MenuItems, { items }) : children;
123
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(MenuRoot, {
124
+ ref: rootRef,
125
+ className,
126
+ "data-testid": dataTestid,
127
+ onBlur: handleBlur,
128
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(MenuTrigger, {
129
+ element: trigger,
130
+ id: triggerId,
131
+ elementRef: setTriggerRef,
132
+ isOpen,
133
+ listId,
134
+ onClick: handleTriggerClick,
135
+ onKeyDown: handleTriggerKeyDown
136
+ }), isOpen && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_MenuItem.MenuPaper, {
137
+ ref: surfaceRef,
138
+ elevation,
139
+ layer,
140
+ margin,
141
+ onKeyDown: handleSurfaceKeyDown,
142
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_MenuItem.MenuContext.Provider, {
143
+ value: menuContext,
144
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_MenuList.MenuActivationContext.Provider, {
145
+ value: handleActivate,
146
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_MenuList.MenuList, {
147
+ id: listId,
148
+ "aria-label": ariaLabel,
149
+ "aria-labelledby": ariaLabel ? void 0 : triggerId,
150
+ shouldAutoFocus: true,
151
+ onSelect,
152
+ color,
153
+ textColor,
154
+ size,
155
+ dense,
156
+ width: "100%",
157
+ children: hasRows ? rows : emptyLabel != null && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_MenuItem.MenuItem, {
158
+ disabled: true,
159
+ children: emptyLabel
160
+ })
161
+ })
162
+ })
163
+ })
164
+ })]
165
+ });
166
+ }
167
+ //#endregion
168
+ Object.defineProperty(exports, "Menu", {
169
+ enumerable: true,
170
+ get: function() {
171
+ return Menu;
172
+ }
173
+ });
@@ -0,0 +1,168 @@
1
+ import { o as styled } from "./src-DLGYOJMh.mjs";
2
+ import { n as useDefaultProps, r as useTheme } from "./theme-Z9_QludW.mjs";
3
+ import { t as isRtl } from "./isRtl-BJDtm86G.mjs";
4
+ import { o as MenuActivationContext, t as MenuList } from "./MenuList-B7msJ1IG.mjs";
5
+ import { i as MenuPaper, n as useMenuPlacement, r as MenuContext, t as MenuItem } from "./MenuItem-DUn4IZKK.mjs";
6
+ import { MenuItems } from "./Menu/MenuItems.mjs";
7
+ import { Children, cloneElement, useCallback, useId, useMemo, useRef, useState } from "react";
8
+ import { jsx, jsxs } from "react/jsx-runtime";
9
+ //#region src/Menu/utils/assignRef.ts
10
+ /** Hands `value` to a ref of either kind - a callback, or an object - when there is one. */
11
+ function assignRef(ref, value) {
12
+ if (typeof ref === "function") ref(value);
13
+ else if (ref) ref.current = value;
14
+ }
15
+ //#endregion
16
+ //#region src/Menu/Menu/Menu.tsx
17
+ const MenuRoot = styled("div", {
18
+ name: "Menu",
19
+ label: "Menu"
20
+ })({ display: "inline-flex" });
21
+ /** The menu's trigger: the element given, as the button that opens the list. */
22
+ function MenuTrigger({ element, id, elementRef, isOpen, listId, onClick, onKeyDown }) {
23
+ return cloneElement(element, {
24
+ id,
25
+ ref: elementRef,
26
+ "aria-haspopup": "menu",
27
+ "aria-expanded": isOpen,
28
+ "aria-controls": isOpen ? listId : void 0,
29
+ onClick,
30
+ onKeyDown
31
+ });
32
+ }
33
+ /**
34
+ * @description A trigger and the `MenuList` it opens. Not modal: no focus trap, no scroll
35
+ * lock, nothing laid over the page, so the pointer passes over it freely. The list is
36
+ * placed `position: fixed` in the window next to the trigger, so a panel's overflow
37
+ * can't clip it, but stays inside the menu's own box in the DOM. Escape or a chosen row
38
+ * closes it and returns focus to the trigger; focus leaving it closes it where it went.
39
+ */
40
+ function Menu({ trigger, children, items, isOpen: isOpenProp, defaultOpen = false, onOpen, onClose, onStep, onSelect, align: alignProp, marginThreshold: marginThresholdProp, elevation: elevationProp, layer: layerProp, emptyLabel, color: colorProp, textColor: textColorProp, size: sizeProp, dense: denseProp, "aria-label": ariaLabel, className, "data-testid": dataTestid }) {
41
+ const dp = useDefaultProps("Menu");
42
+ const align = alignProp ?? dp.align ?? "start";
43
+ const marginThreshold = marginThresholdProp ?? dp.marginThreshold ?? 2;
44
+ const elevation = elevationProp ?? dp.elevation ?? 8;
45
+ const layer = layerProp ?? dp.layer ?? "modal";
46
+ const color = colorProp ?? dp.color;
47
+ const textColor = textColorProp ?? dp.textColor;
48
+ const size = sizeProp ?? dp.size;
49
+ const dense = denseProp ?? dp.dense;
50
+ const theme = useTheme();
51
+ const isControlled = isOpenProp !== void 0;
52
+ const [isOpenState, setIsOpenState] = useState(defaultOpen);
53
+ const isOpen = isControlled ? isOpenProp : isOpenState;
54
+ const rootRef = useRef(null);
55
+ const triggerRef = useRef(null);
56
+ const surfaceRef = useRef(null);
57
+ const listId = useId();
58
+ const fallbackTriggerId = useId();
59
+ const triggerId = trigger.props.id ?? fallbackTriggerId;
60
+ const margin = Number.parseFloat(String(theme.space[marginThreshold]));
61
+ const menuContext = useMemo(() => ({
62
+ align,
63
+ margin,
64
+ elevation,
65
+ layer
66
+ }), [
67
+ align,
68
+ margin,
69
+ elevation,
70
+ layer
71
+ ]);
72
+ useMenuPlacement({
73
+ isOpen,
74
+ anchorRef: rootRef,
75
+ surfaceRef,
76
+ placement: "below",
77
+ align,
78
+ margin
79
+ });
80
+ const open = () => {
81
+ if (!isControlled) setIsOpenState(true);
82
+ onOpen?.();
83
+ };
84
+ const close = useCallback((event, reason) => {
85
+ if (!isControlled) setIsOpenState(false);
86
+ onClose?.(event, reason);
87
+ if (reason !== "blur") triggerRef.current?.focus();
88
+ }, [isControlled, onClose]);
89
+ const triggerProps = trigger.props;
90
+ const setTriggerRef = useCallback((element) => {
91
+ triggerRef.current = element;
92
+ assignRef(triggerProps.ref, element);
93
+ }, [triggerProps]);
94
+ const handleActivate = useCallback((_value, event) => close(event, "select"), [close]);
95
+ const handleTriggerClick = (event) => {
96
+ trigger.props.onClick?.(event);
97
+ if (isOpen) close(event, "triggerClick");
98
+ else open();
99
+ };
100
+ const handleTriggerKeyDown = (event) => {
101
+ trigger.props.onKeyDown?.(event);
102
+ if (!isOpen && (event.key === "ArrowDown" || event.key === "ArrowUp")) {
103
+ event.preventDefault();
104
+ open();
105
+ }
106
+ };
107
+ const handleSurfaceKeyDown = (event) => {
108
+ if (event.key === "Escape") {
109
+ event.preventDefault();
110
+ close(event, "escapeKey");
111
+ } else if (onStep && (event.key === "ArrowLeft" || event.key === "ArrowRight")) {
112
+ event.preventDefault();
113
+ const step = event.key === "ArrowRight" ? 1 : -1;
114
+ onStep(isRtl(event.currentTarget) ? -step : step);
115
+ }
116
+ };
117
+ const handleBlur = (event) => {
118
+ const next = event.relatedTarget;
119
+ if (isOpen && !event.currentTarget.contains(next)) close(event, "blur");
120
+ };
121
+ const hasRows = items ? items.length > 0 : Children.toArray(children).length > 0;
122
+ const rows = items ? /* @__PURE__ */ jsx(MenuItems, { items }) : children;
123
+ return /* @__PURE__ */ jsxs(MenuRoot, {
124
+ ref: rootRef,
125
+ className,
126
+ "data-testid": dataTestid,
127
+ onBlur: handleBlur,
128
+ children: [/* @__PURE__ */ jsx(MenuTrigger, {
129
+ element: trigger,
130
+ id: triggerId,
131
+ elementRef: setTriggerRef,
132
+ isOpen,
133
+ listId,
134
+ onClick: handleTriggerClick,
135
+ onKeyDown: handleTriggerKeyDown
136
+ }), isOpen && /* @__PURE__ */ jsx(MenuPaper, {
137
+ ref: surfaceRef,
138
+ elevation,
139
+ layer,
140
+ margin,
141
+ onKeyDown: handleSurfaceKeyDown,
142
+ children: /* @__PURE__ */ jsx(MenuContext.Provider, {
143
+ value: menuContext,
144
+ children: /* @__PURE__ */ jsx(MenuActivationContext.Provider, {
145
+ value: handleActivate,
146
+ children: /* @__PURE__ */ jsx(MenuList, {
147
+ id: listId,
148
+ "aria-label": ariaLabel,
149
+ "aria-labelledby": ariaLabel ? void 0 : triggerId,
150
+ shouldAutoFocus: true,
151
+ onSelect,
152
+ color,
153
+ textColor,
154
+ size,
155
+ dense,
156
+ width: "100%",
157
+ children: hasRows ? rows : emptyLabel != null && /* @__PURE__ */ jsx(MenuItem, {
158
+ disabled: true,
159
+ children: emptyLabel
160
+ })
161
+ })
162
+ })
163
+ })
164
+ })]
165
+ });
166
+ }
167
+ //#endregion
168
+ export { Menu as t };
package/dist/Menu.cjs ADDED
@@ -0,0 +1,13 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_MenuList = require("./MenuList-D4imLXAa.cjs");
3
+ const require_Menu_MenuDivider = require("./Menu/MenuDivider.cjs");
4
+ const require_Menu_MenuItems = require("./Menu/MenuItems.cjs");
5
+ const require_Menu_ContextMenu = require("./Menu/ContextMenu.cjs");
6
+ const require_Menu = require("./Menu-Cgg-sX4W.cjs");
7
+ exports.ContextMenu = require_Menu_ContextMenu.ContextMenu;
8
+ exports.Menu = require_Menu.Menu;
9
+ exports.MenuDivider = require_Menu_MenuDivider.MenuDivider;
10
+ exports.MenuItems = require_Menu_MenuItems.MenuItems;
11
+ exports.MenuList = require_MenuList.MenuList;
12
+ exports.MenuListContext = require_MenuList.MenuListContext;
13
+ exports.useMenuListContext = require_MenuList.useMenuListContext;
@@ -0,0 +1,7 @@
1
+ import { i as useMenuListContext, n as MenuListContext, r as MenuListContextValue, t as MenuItemValue } from "./MenuListContext-DKUOhNyw.cjs";
2
+ import { a as MenuItemsProps, i as MenuItems, n as MenuItemData, r as MenuItemRowData, t as MenuDividerData } from "./index-CknoXDLQ.cjs";
3
+ import { a as MenuAlign, i as MenuStep, n as MenuCloseReason, r as MenuProps, t as Menu } from "./index-DWjz5ZzG.cjs";
4
+ import { ContextMenu, ContextMenuProps } from "./Menu/ContextMenu.cjs";
5
+ import { MenuDivider, MenuDividerProps } from "./Menu/MenuDivider.cjs";
6
+ import { MenuList, MenuListProps } from "./Menu/MenuList.cjs";
7
+ export { ContextMenu, ContextMenuProps, Menu, type MenuAlign, MenuCloseReason, MenuDivider, MenuDividerData, MenuDividerProps, MenuItemData, MenuItemRowData, MenuItemValue, MenuItems, MenuItemsProps, MenuList, MenuListContext, MenuListContextValue, MenuListProps, MenuProps, MenuStep, useMenuListContext };
@@ -0,0 +1,7 @@
1
+ import { i as useMenuListContext, n as MenuListContext, r as MenuListContextValue, t as MenuItemValue } from "./MenuListContext-x-7lH4CH.mjs";
2
+ import { a as MenuItemsProps, i as MenuItems, n as MenuItemData, r as MenuItemRowData, t as MenuDividerData } from "./index-BkzZxHVj.mjs";
3
+ import { a as MenuAlign, i as MenuStep, n as MenuCloseReason, r as MenuProps, t as Menu } from "./index-DGnXJwLj.mjs";
4
+ import { ContextMenu, ContextMenuProps } from "./Menu/ContextMenu.mjs";
5
+ import { MenuDivider, MenuDividerProps } from "./Menu/MenuDivider.mjs";
6
+ import { MenuList, MenuListProps } from "./Menu/MenuList.mjs";
7
+ export { ContextMenu, ContextMenuProps, Menu, type MenuAlign, MenuCloseReason, MenuDivider, MenuDividerData, MenuDividerProps, MenuItemData, MenuItemRowData, MenuItemValue, MenuItems, MenuItemsProps, MenuList, MenuListContext, MenuListContextValue, MenuListProps, MenuProps, MenuStep, useMenuListContext };
package/dist/Menu.mjs ADDED
@@ -0,0 +1,6 @@
1
+ import { a as useMenuListContext, i as MenuListContext, t as MenuList } from "./MenuList-B7msJ1IG.mjs";
2
+ import { MenuDivider } from "./Menu/MenuDivider.mjs";
3
+ import { MenuItems } from "./Menu/MenuItems.mjs";
4
+ import { ContextMenu } from "./Menu/ContextMenu.mjs";
5
+ import { t as Menu } from "./Menu-CrzHc_cn.mjs";
6
+ export { ContextMenu, Menu, MenuDivider, MenuItems, MenuList, MenuListContext, useMenuListContext };