@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,223 @@
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
+ let react = require("react");
5
+ let react_jsx_runtime = require("react/jsx-runtime");
6
+ let _soroush_tech_styled_system_should_forward_prop = require("@soroush.tech/styled-system/should-forward-prop");
7
+ //#region src/Menu/MenuActivationContext.ts
8
+ /**
9
+ * Set by a `Menu` around its lists: told when any row anywhere in the menu is chosen, with
10
+ * or without a `value`, so the whole menu can close. Internal - not exported from the
11
+ * subpath.
12
+ */
13
+ const MenuActivationContext = (0, react.createContext)(null);
14
+ //#endregion
15
+ //#region src/Menu/MenuListContext.ts
16
+ /**
17
+ * Present inside a `MenuList`. A `MenuItem` that finds it renders as a menu row
18
+ * (`menuitem`); without it, the row is `Select`'s `option`.
19
+ */
20
+ const MenuListContext = (0, react.createContext)(null);
21
+ const useMenuListContext = () => (0, react.useContext)(MenuListContext);
22
+ //#endregion
23
+ //#region src/Menu/MenuList/utils/getOwnRows.ts
24
+ const ROW_SELECTOR = "[role=\"menuitem\"], [role=\"menuitemradio\"], [role=\"menuitemcheckbox\"]";
25
+ /**
26
+ * The rows that belong to `list` itself, in document order. A nested submenu is a
27
+ * `role="menu"` of its own inside the list, so a row counts only when its nearest
28
+ * `role="menu"` is `list` - no per-list index state is kept anywhere.
29
+ */
30
+ function getOwnRows(list) {
31
+ return Array.from(list.querySelectorAll(ROW_SELECTOR)).filter((row) => row.closest("[role=\"menu\"]") === list);
32
+ }
33
+ /** Whether a row can take focus and be chosen. */
34
+ function isRowEnabled(row) {
35
+ return row.getAttribute("aria-disabled") !== "true";
36
+ }
37
+ //#endregion
38
+ //#region src/Menu/MenuList/utils/getNextRow.ts
39
+ /**
40
+ * The enabled row a key moves to from `current` (which may be absent from `rows`, as when
41
+ * focus is still on the list itself). Disabled rows are skipped; `shouldWrap` carries
42
+ * `next` past the last row to the first and `previous` before the first to the last.
43
+ */
44
+ function getNextRow(rows, current, step, shouldWrap) {
45
+ const enabled = rows.filter(isRowEnabled);
46
+ if (step === "first") return enabled[0];
47
+ if (step === "last") return enabled.at(-1);
48
+ const index = enabled.indexOf(current);
49
+ if (index === -1) return step === "next" ? enabled[0] : enabled.at(-1);
50
+ const target = index + (step === "next" ? 1 : -1);
51
+ if (target >= 0 && target < enabled.length) return enabled[target];
52
+ if (!shouldWrap) return void 0;
53
+ return target < 0 ? enabled.at(-1) : enabled[0];
54
+ }
55
+ //#endregion
56
+ //#region src/Menu/MenuList/utils/findRowByText.ts
57
+ /** A row's label text, without its icon, shortcut or note. */
58
+ function getRowText(row) {
59
+ return (row.querySelector("[data-menu-label]") ?? row).textContent.trim().toLowerCase();
60
+ }
61
+ /**
62
+ * The row type-ahead moves to. One key typed again and again (`r`, `r`, `r`) cycles
63
+ * through the rows starting with it; distinct keys typed together (`re`) build a prefix,
64
+ * matched from the current row onward so typing on stays where it is while it matches.
65
+ */
66
+ function findRowByText(rows, current, typed) {
67
+ const enabled = rows.filter(isRowEnabled);
68
+ const query = typed.toLowerCase();
69
+ const isRepeating = [...query].every((key) => key === query[0]);
70
+ const start = enabled.indexOf(current);
71
+ const from = isRepeating ? start + 1 : Math.max(start, 0);
72
+ const ordered = [...enabled.slice(from), ...enabled.slice(0, from)];
73
+ const prefix = isRepeating ? query[0] : query;
74
+ return ordered.find((row) => getRowText(row).startsWith(prefix));
75
+ }
76
+ //#endregion
77
+ //#region src/Menu/MenuList/MenuList.tsx
78
+ const STEP_BY_KEY = {
79
+ ArrowDown: "next",
80
+ ArrowUp: "previous",
81
+ Home: "first",
82
+ End: "last"
83
+ };
84
+ const TYPEAHEAD_TIMEOUT = 500;
85
+ const shouldForwardProp = (0, _soroush_tech_styled_system_should_forward_prop.createShouldForwardProp)([..._soroush_tech_styled_system_should_forward_prop.props]);
86
+ const layoutWithoutSize = (styleProps) => (0, require_src.src_exports.layout)({
87
+ ...styleProps,
88
+ size: void 0
89
+ });
90
+ const MenuListRoot = require_src.styled("ul", {
91
+ name: "MenuList",
92
+ label: "MenuList",
93
+ shouldForwardProp,
94
+ systemProps: [require_src.src_exports.space, layoutWithoutSize]
95
+ })(({ theme }) => ({
96
+ listStyle: "none",
97
+ margin: 0,
98
+ paddingLeft: 0,
99
+ paddingRight: 0,
100
+ paddingTop: theme.space[.5],
101
+ paddingBottom: theme.space[.5],
102
+ outline: "none",
103
+ "&:focus-visible": {
104
+ outline: `${theme.borderWidths.base} solid ${theme.palette[require_themeDefault.themeDefault(theme, "color", "primary")].main}`,
105
+ outlineOffset: `-${theme.borderWidths.base}`
106
+ }
107
+ }));
108
+ const isPrintableKey = (event) => event.key.length === 1 && !event.ctrlKey && !event.metaKey && !event.altKey;
109
+ /**
110
+ * @description A `role="menu"` list that owns the keyboard: the arrow keys, Home and End
111
+ * move focus between its own rows, skipping disabled ones; typing jumps to a row by its
112
+ * label. Rows are found in the DOM by their nearest `role="menu"`, so a nested submenu's
113
+ * rows are never this list's. Renders in place - `Menu` floats one next to a trigger.
114
+ */
115
+ function MenuList({ children, onSelect, shouldWrap: shouldWrapProp, shouldAutoFocus = false, color, textColor, size, dense, onKeyDown, ...rest }) {
116
+ const listRef = (0, react.useRef)(null);
117
+ const typed = (0, react.useRef)({
118
+ keys: "",
119
+ time: 0
120
+ });
121
+ const onMenuActivate = (0, react.useContext)(MenuActivationContext);
122
+ const parent = useMenuListContext();
123
+ const dp = require_theme.useDefaultProps("MenuList");
124
+ const shouldWrap = shouldWrapProp ?? dp.shouldWrap ?? true;
125
+ const rowColor = color ?? parent?.color ?? dp.color;
126
+ const rowTextColor = textColor ?? parent?.textColor ?? dp.textColor;
127
+ const rowSize = size ?? parent?.size ?? dp.size;
128
+ const rowDense = dense ?? parent?.dense ?? dp.dense;
129
+ (0, react.useEffect)(() => {
130
+ const list = listRef.current;
131
+ if (!shouldAutoFocus || !list) return;
132
+ const rows = getOwnRows(list).filter(isRowEnabled);
133
+ (rows.find((row) => row.getAttribute("aria-checked") === "true") ?? rows[0] ?? list).focus();
134
+ }, [shouldAutoFocus]);
135
+ const context = (0, react.useMemo)(() => ({
136
+ onActivate: (value, event) => {
137
+ if (value !== void 0) onSelect?.(value);
138
+ if (parent) parent.onActivate(value, event);
139
+ else onMenuActivate?.(value, event);
140
+ },
141
+ color: rowColor,
142
+ textColor: rowTextColor,
143
+ size: rowSize,
144
+ dense: rowDense
145
+ }), [
146
+ onSelect,
147
+ onMenuActivate,
148
+ parent,
149
+ rowColor,
150
+ rowTextColor,
151
+ rowSize,
152
+ rowDense
153
+ ]);
154
+ const handleKeyDown = (event) => {
155
+ const list = event.currentTarget;
156
+ if (event.target.closest("[role=\"menu\"]") !== list) return;
157
+ const rows = getOwnRows(list);
158
+ const current = list.ownerDocument.activeElement;
159
+ const step = STEP_BY_KEY[event.key];
160
+ let target;
161
+ if (step) target = getNextRow(rows, current, step, shouldWrap);
162
+ else if (isPrintableKey(event)) {
163
+ const now = Date.now();
164
+ const isFresh = now - typed.current.time > TYPEAHEAD_TIMEOUT;
165
+ typed.current = {
166
+ keys: (isFresh ? "" : typed.current.keys) + event.key,
167
+ time: now
168
+ };
169
+ target = findRowByText(rows, current, typed.current.keys);
170
+ }
171
+ if (step || target) event.preventDefault();
172
+ target?.focus();
173
+ onKeyDown?.(event);
174
+ };
175
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(MenuListContext.Provider, {
176
+ value: context,
177
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(MenuListRoot, {
178
+ ...rest,
179
+ ref: listRef,
180
+ role: "menu",
181
+ tabIndex: -1,
182
+ onKeyDown: handleKeyDown,
183
+ children
184
+ })
185
+ });
186
+ }
187
+ //#endregion
188
+ Object.defineProperty(exports, "MenuActivationContext", {
189
+ enumerable: true,
190
+ get: function() {
191
+ return MenuActivationContext;
192
+ }
193
+ });
194
+ Object.defineProperty(exports, "MenuList", {
195
+ enumerable: true,
196
+ get: function() {
197
+ return MenuList;
198
+ }
199
+ });
200
+ Object.defineProperty(exports, "MenuListContext", {
201
+ enumerable: true,
202
+ get: function() {
203
+ return MenuListContext;
204
+ }
205
+ });
206
+ Object.defineProperty(exports, "getNextRow", {
207
+ enumerable: true,
208
+ get: function() {
209
+ return getNextRow;
210
+ }
211
+ });
212
+ Object.defineProperty(exports, "getOwnRows", {
213
+ enumerable: true,
214
+ get: function() {
215
+ return getOwnRows;
216
+ }
217
+ });
218
+ Object.defineProperty(exports, "useMenuListContext", {
219
+ enumerable: true,
220
+ get: function() {
221
+ return useMenuListContext;
222
+ }
223
+ });
@@ -0,0 +1,21 @@
1
+ import { W as Theme } from "./index-DJ0f69wh.cjs";
2
+ import "./index-DchHf5cF.cjs";
3
+ import { SyntheticEvent } from "react";
4
+ //#region src/Menu/MenuListContext.d.ts
5
+ type MenuItemValue = string | number;
6
+ interface MenuListContextValue {
7
+ /** Fired when a row is chosen, with its `value` when it has one. */
8
+ onActivate: (value: MenuItemValue | undefined, event: SyntheticEvent) => void;
9
+ color?: keyof Theme['palette'];
10
+ textColor?: keyof Theme['text'];
11
+ size?: keyof Theme['sizes'];
12
+ dense?: boolean;
13
+ }
14
+ /**
15
+ * Present inside a `MenuList`. A `MenuItem` that finds it renders as a menu row
16
+ * (`menuitem`); without it, the row is `Select`'s `option`.
17
+ */
18
+ declare const MenuListContext: import("react").Context<MenuListContextValue | null>;
19
+ declare const useMenuListContext: () => MenuListContextValue | null;
20
+ //#endregion
21
+ export { useMenuListContext as i, MenuListContext as n, MenuListContextValue as r, MenuItemValue as t };
@@ -0,0 +1,21 @@
1
+ import { W as Theme } from "./index-CJhK7JND.mjs";
2
+ import "./index-h4dYtVrp.mjs";
3
+ import { SyntheticEvent } from "react";
4
+ //#region src/Menu/MenuListContext.d.ts
5
+ type MenuItemValue = string | number;
6
+ interface MenuListContextValue {
7
+ /** Fired when a row is chosen, with its `value` when it has one. */
8
+ onActivate: (value: MenuItemValue | undefined, event: SyntheticEvent) => void;
9
+ color?: keyof Theme['palette'];
10
+ textColor?: keyof Theme['text'];
11
+ size?: keyof Theme['sizes'];
12
+ dense?: boolean;
13
+ }
14
+ /**
15
+ * Present inside a `MenuList`. A `MenuItem` that finds it renders as a menu row
16
+ * (`menuitem`); without it, the row is `Select`'s `option`.
17
+ */
18
+ declare const MenuListContext: import("react").Context<MenuListContextValue | null>;
19
+ declare const useMenuListContext: () => MenuListContextValue | null;
20
+ //#endregion
21
+ export { useMenuListContext as i, MenuListContext as n, MenuListContextValue as r, MenuItemValue as t };
package/dist/Modal.d.cts CHANGED
@@ -1,2 +1,2 @@
1
- import { a as hideFromAria, c as ModalScroll, d as UseModalReturnValue, f as useModal, i as exposeToAria, l as ModalCloseReason, n as ManagedModalProps, o as Modal, r as ModalManager, s as ModalProps, t as ManagedModal, u as UseModalParameters } from "./index-Belxmt1X.cjs";
1
+ import { a as hideFromAria, c as ModalScroll, d as UseModalReturnValue, f as useModal, i as exposeToAria, l as ModalCloseReason, n as ManagedModalProps, o as Modal, r as ModalManager, s as ModalProps, t as ManagedModal, u as UseModalParameters } from "./index-nqUA_6J_.cjs";
2
2
  export { ManagedModal, ManagedModalProps, Modal, ModalCloseReason, ModalManager, ModalProps, ModalScroll, UseModalParameters, UseModalReturnValue, exposeToAria, hideFromAria, useModal };
package/dist/Modal.d.mts CHANGED
@@ -1,2 +1,2 @@
1
- import { a as hideFromAria, c as ModalScroll, d as UseModalReturnValue, f as useModal, i as exposeToAria, l as ModalCloseReason, n as ManagedModalProps, o as Modal, r as ModalManager, s as ModalProps, t as ManagedModal, u as UseModalParameters } from "./index-Wnv6jCR3.mjs";
1
+ import { a as hideFromAria, c as ModalScroll, d as UseModalReturnValue, f as useModal, i as exposeToAria, l as ModalCloseReason, n as ManagedModalProps, o as Modal, r as ModalManager, s as ModalProps, t as ManagedModal, u as UseModalParameters } from "./index-Bx0-6yeX.mjs";
2
2
  export { ManagedModal, ManagedModalProps, Modal, ModalCloseReason, ModalManager, ModalProps, ModalScroll, UseModalParameters, UseModalReturnValue, exposeToAria, hideFromAria, useModal };
@@ -1,8 +1,8 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_src = require("./src-DU81aGy9.cjs");
3
3
  const require_themeDefault = require("./themeDefault-Cebi08Cv.cjs");
4
- const require_theme = require("./theme-BXlAP3xf.cjs");
5
- const require_Icon = require("./Icon-CI6q2Eyi.cjs");
4
+ const require_theme = require("./theme-BxXuXRgQ.cjs");
5
+ const require_Icon = require("./Icon-D-EWsBVg.cjs");
6
6
  const require_FormControl = require("./FormControl.cjs");
7
7
  const require_inputVariantStyles = require("./inputVariantStyles-BBkkYQtE.cjs");
8
8
  require("react");
@@ -24,10 +24,10 @@ const baseStyle = {
24
24
  alignItems: "center",
25
25
  transition: "border-color 0.15s ease"
26
26
  };
27
- const backgroundStyle = ({ theme, textColor = require_themeDefault.themeDefault(theme, "accentTextColor", "primary"), bg = require_themeDefault.themeDefault(theme, "inputBg", "terminal") }) => {
27
+ const backgroundStyle = ({ theme, textColor, color = require_themeDefault.themeDefault(theme, "color", "primary"), bg = require_themeDefault.themeDefault(theme, "inputBg", "terminal") }) => {
28
28
  return {
29
29
  backgroundColor: (0, require_src.src_exports.get)(theme, `background.${bg}`),
30
- color: (0, require_src.src_exports.get)(theme, `text.${textColor}`),
30
+ color: textColor ? (0, require_src.src_exports.get)(theme, `text.${textColor}`) : (0, require_src.src_exports.get)(theme, `palette.${color}.main`),
31
31
  fontFamily: (0, require_src.src_exports.get)(theme, "fonts.body"),
32
32
  fontSize: (0, require_src.src_exports.get)(theme, "fontSizes.1"),
33
33
  lineHeight: (0, require_src.src_exports.get)(theme, "lineHeights.base")
@@ -71,7 +71,7 @@ const NativeSelectRoot = require_src.styled("div", {
71
71
  shouldForwardProp,
72
72
  systemProps: [require_src.src_exports.space, widthStyles]
73
73
  })(baseStyle, require_inputVariantStyles.inputVariantStyles, borderRadiusStyle, colorBorder, focusWithinColor, focusVisibleRing, backgroundStyle, layoutStyles);
74
- const shouldForwardNativeSelectProps = (prop) => prop !== "sizeToken" && prop !== "bg" && prop !== "textColor";
74
+ const shouldForwardNativeSelectProps = (prop) => prop !== "sizeToken" && prop !== "bg" && prop !== "textColor" && prop !== "accent";
75
75
  const sizeVariants = ({ theme, sizeToken }) => {
76
76
  const s = theme.sizes[sizeToken];
77
77
  return {
@@ -82,9 +82,9 @@ const sizeVariants = ({ theme, sizeToken }) => {
82
82
  fontSize: theme.fontSizes[s.fontSize]
83
83
  };
84
84
  };
85
- const selectSurface = ({ theme, bg = require_themeDefault.themeDefault(theme, "inputBg", "terminal"), textColor }) => {
85
+ const selectSurface = ({ theme, bg = require_themeDefault.themeDefault(theme, "inputBg", "terminal"), textColor, accent }) => {
86
86
  const backgroundColor = (0, require_src.src_exports.get)(theme, `background.${bg}`);
87
- const color = (0, require_src.src_exports.get)(theme, `text.${textColor}`);
87
+ const color = textColor ? (0, require_src.src_exports.get)(theme, `text.${textColor}`) : (0, require_src.src_exports.get)(theme, `palette.${accent}.main`);
88
88
  return {
89
89
  backgroundColor,
90
90
  color,
@@ -137,7 +137,7 @@ function NativeSelect({ options, value, defaultValue, onChange, placeholder, bor
137
137
  const { id, error, disabled, required, size, fullWidth } = fc;
138
138
  const theme = require_theme.useTheme();
139
139
  const color = fc.color ?? require_themeDefault.themeDefault(theme, "color", "primary");
140
- const textColor = fc.textColor ?? require_themeDefault.themeDefault(theme, "accentTextColor", "primary");
140
+ const textColor = fc.textColor;
141
141
  const variant = variantProp ?? require_themeDefault.themeDefault(theme, "inputVariant", "default");
142
142
  const handleChange = (event) => {
143
143
  const match = options.find((option) => String(option.value) === event.target.value);
@@ -165,6 +165,7 @@ function NativeSelect({ options, value, defaultValue, onChange, placeholder, bor
165
165
  sizeToken: size,
166
166
  bg,
167
167
  textColor,
168
+ accent: color,
168
169
  value,
169
170
  defaultValue: uncontrolledDefault,
170
171
  onChange: handleChange,
@@ -1,6 +1,5 @@
1
- import { T as Theme } from "./themes-Kbk9h5cN.cjs";
2
- import "./index-DBUwu65Z.cjs";
3
- import { n as IconProps, r as IconName } from "./index-Ctqajtac.cjs";
1
+ import { W as Theme } from "./index-DJ0f69wh.cjs";
2
+ import { n as IconProps, r as IconName } from "./index-Dv_fk1_F.cjs";
4
3
  import { SelectHTMLAttributes } from "react";
5
4
  import { LayoutProps, SpaceProps } from "@soroush.tech/styled-system";
6
5
  //#region src/NativeSelect/NativeSelect.d.ts
@@ -28,7 +27,7 @@ interface NativeSelectProps extends SpaceProps<Theme>, Pick<LayoutProps<Theme>,
28
27
  borderRadius?: keyof Theme['radii'];
29
28
  /** Focus/active border color - resolves to `theme.palette[color].main`. Default: 'primary', overridable via `theme.defaults.color`. */
30
29
  color?: NativeSelectColor;
31
- /** Text color of the selected value - resolves against `theme.text`. Default: 'primary', overridable via `theme.defaults.accentTextColor`. */
30
+ /** Text color of the selected value - resolves against `theme.text`. Default: the accent `color`'s `main`. */
32
31
  textColor?: NativeSelectTextColor;
33
32
  /** Background color - resolves against `theme.background`. Default: `'terminal'`. */
34
33
  bg?: NativeSelectBackgroundToken;
@@ -1,6 +1,5 @@
1
- import { T as Theme } from "./themes-RX2UX5gD.mjs";
2
- import "./index-C1WqEDtQ.mjs";
3
- import { n as IconProps, r as IconName } from "./index-DO9J-Fla.mjs";
1
+ import { W as Theme } from "./index-CJhK7JND.mjs";
2
+ import { n as IconProps, r as IconName } from "./index-ha1WjSZ5.mjs";
4
3
  import { LayoutProps, SpaceProps } from "@soroush.tech/styled-system";
5
4
  import { SelectHTMLAttributes } from "react";
6
5
  //#region src/NativeSelect/NativeSelect.d.ts
@@ -28,7 +27,7 @@ interface NativeSelectProps extends SpaceProps<Theme>, Pick<LayoutProps<Theme>,
28
27
  borderRadius?: keyof Theme['radii'];
29
28
  /** Focus/active border color - resolves to `theme.palette[color].main`. Default: 'primary', overridable via `theme.defaults.color`. */
30
29
  color?: NativeSelectColor;
31
- /** Text color of the selected value - resolves against `theme.text`. Default: 'primary', overridable via `theme.defaults.accentTextColor`. */
30
+ /** Text color of the selected value - resolves against `theme.text`. Default: the accent `color`'s `main`. */
32
31
  textColor?: NativeSelectTextColor;
33
32
  /** Background color - resolves against `theme.background`. Default: `'terminal'`. */
34
33
  bg?: NativeSelectBackgroundToken;
@@ -1,7 +1,7 @@
1
1
  import { a as src_exports, i as props, o as styled, t as createShouldForwardProp } from "./src-DLGYOJMh.mjs";
2
2
  import { t as themeDefault } from "./themeDefault-Z3KmyIbm.mjs";
3
- import { r as useTheme } from "./theme-CDVxig_g.mjs";
4
- import { t as Icon } from "./Icon-CH3asUJu.mjs";
3
+ import { r as useTheme } from "./theme-Z9_QludW.mjs";
4
+ import { t as Icon } from "./Icon-BihOAP4u.mjs";
5
5
  import { useFormControl } from "./FormControl.mjs";
6
6
  import { t as inputVariantStyles } from "./inputVariantStyles-CcqpGfuP.mjs";
7
7
  import "react";
@@ -22,10 +22,10 @@ const baseStyle = {
22
22
  alignItems: "center",
23
23
  transition: "border-color 0.15s ease"
24
24
  };
25
- const backgroundStyle = ({ theme, textColor = themeDefault(theme, "accentTextColor", "primary"), bg = themeDefault(theme, "inputBg", "terminal") }) => {
25
+ const backgroundStyle = ({ theme, textColor, color = themeDefault(theme, "color", "primary"), bg = themeDefault(theme, "inputBg", "terminal") }) => {
26
26
  return {
27
27
  backgroundColor: (0, src_exports.get)(theme, `background.${bg}`),
28
- color: (0, src_exports.get)(theme, `text.${textColor}`),
28
+ color: textColor ? (0, src_exports.get)(theme, `text.${textColor}`) : (0, src_exports.get)(theme, `palette.${color}.main`),
29
29
  fontFamily: (0, src_exports.get)(theme, "fonts.body"),
30
30
  fontSize: (0, src_exports.get)(theme, "fontSizes.1"),
31
31
  lineHeight: (0, src_exports.get)(theme, "lineHeights.base")
@@ -69,7 +69,7 @@ const NativeSelectRoot = styled("div", {
69
69
  shouldForwardProp,
70
70
  systemProps: [src_exports.space, widthStyles]
71
71
  })(baseStyle, inputVariantStyles, borderRadiusStyle, colorBorder, focusWithinColor, focusVisibleRing, backgroundStyle, layoutStyles);
72
- const shouldForwardNativeSelectProps = (prop) => prop !== "sizeToken" && prop !== "bg" && prop !== "textColor";
72
+ const shouldForwardNativeSelectProps = (prop) => prop !== "sizeToken" && prop !== "bg" && prop !== "textColor" && prop !== "accent";
73
73
  const sizeVariants = ({ theme, sizeToken }) => {
74
74
  const s = theme.sizes[sizeToken];
75
75
  return {
@@ -80,9 +80,9 @@ const sizeVariants = ({ theme, sizeToken }) => {
80
80
  fontSize: theme.fontSizes[s.fontSize]
81
81
  };
82
82
  };
83
- const selectSurface = ({ theme, bg = themeDefault(theme, "inputBg", "terminal"), textColor }) => {
83
+ const selectSurface = ({ theme, bg = themeDefault(theme, "inputBg", "terminal"), textColor, accent }) => {
84
84
  const backgroundColor = (0, src_exports.get)(theme, `background.${bg}`);
85
- const color = (0, src_exports.get)(theme, `text.${textColor}`);
85
+ const color = textColor ? (0, src_exports.get)(theme, `text.${textColor}`) : (0, src_exports.get)(theme, `palette.${accent}.main`);
86
86
  return {
87
87
  backgroundColor,
88
88
  color,
@@ -135,7 +135,7 @@ function NativeSelect({ options, value, defaultValue, onChange, placeholder, bor
135
135
  const { id, error, disabled, required, size, fullWidth } = fc;
136
136
  const theme = useTheme();
137
137
  const color = fc.color ?? themeDefault(theme, "color", "primary");
138
- const textColor = fc.textColor ?? themeDefault(theme, "accentTextColor", "primary");
138
+ const textColor = fc.textColor;
139
139
  const variant = variantProp ?? themeDefault(theme, "inputVariant", "default");
140
140
  const handleChange = (event) => {
141
141
  const match = options.find((option) => String(option.value) === event.target.value);
@@ -163,6 +163,7 @@ function NativeSelect({ options, value, defaultValue, onChange, placeholder, bor
163
163
  sizeToken: size,
164
164
  bg,
165
165
  textColor,
166
+ accent: color,
166
167
  value,
167
168
  defaultValue: uncontrolledDefault,
168
169
  onChange: handleChange,